информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаГде водятся OGRыПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / beginners
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
ты точно уверен что каталоге /lib/modules/`uname... 19.12.03 12:03  Число просмотров: 1962
Автор: ZaDNiCa <indeed ZaDNiCa> Статус: Elderman
<"чистая" ссылка>
ты точно уверен что каталоге /lib/modules/`uname -r`/build/include
лежат сырцы от того ядра на котором ты сейчас работаешь?
<beginners>
модуль ядра Линукса 18.12.03 22:27  
Автор: руд Статус: Незарегистрированный пользователь
<"чистая" ссылка>

Я собрал второй пример из книги Померанца
$gcc -DMODULE -D__KERNEL__ -DLINUX -O2 -W -Wall -Wstrict-prototypes -Wmissing-prototypes -isystem /lib/modules/`uname -r`/build/include -c h1.c

#insmod h1.o
h1.o: unresolved symbol module_unregister_chrdev
h1.o: unresolved symbol module_register_chrdev
h1.o:
Hint: You are trying to load a module without a GPL compatible license
and it has unresolved symbols. Contact the module supplier for
assistance, only they can help you.

Почему у меня такая ошибка ?

ЗЫ: Порекомендуйте какие-нибудь ресурсы (рус,англ) по данной тематике.
ЗЗЫ: Ось у меня мандрейк 9
Версии модулей? 19.12.03 15:02  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
В make menuconfig в одном из первых меню лежит

> h1.o: unresolved symbol module_unregister_chrdev
> h1.o: unresolved symbol module_register_chrdev

> Почему у меня такая ошибка ?
Выражается в том, что такие вот имена манглятся: в конец добавляется разный мусор. Причем мусор разный для разных версий ядра. Это приводит к тому, что динамический линкер просто не может связать модули из разных версий ядер.

Для начала попробуй включить эту опцию. Лучше всего после этого пересобрать ядро и тестировать новые модули в нем, чтобы быть уверенным, что и исходники и конфигурация те что надо.

> ЗЫ: Порекомендуйте какие-нибудь ресурсы (рус,англ) по
> данной тематике.
> ЗЗЫ: Ось у меня мандрейк 9
Всем спасибо. 20.12.03 14:52  
Автор: руд Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Всем спасибо.
Заменил module_register_chrdev на register_chrdev - заработало (модуль загрузился).

2 amirul - я недоконца понял твою идею в части
/*
В make menuconfig в одном из первых меню лежит
Выражается в том, что такие вот имена манглятся: в конец добавляется разный мусор. Причем мусор разный для разных версий ядра. Это приводит к тому, что динамический линкер просто не может связать модули из разных версий ядер.
Для начала попробуй включить эту опцию.
*/

Ты об этом говоришь ?
h1.c:38: warning: implicit declaration of function `printk_R1b7d4074'
h1.c:41: warning: implicit declaration of function `sprintf_R1d26aa98'

Ты не мог бы переформулирофать/пояснить свою мысль.

ЗЫ: А типа DDK в Линуксе что ?
Попробую 21.12.03 17:01  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Всем спасибо.
> Заменил module_register_chrdev на register_chrdev -
> заработало (модуль загрузился).
Тогда точно не из за версий модулей.

> 2 amirul - я недоконца понял твою идею в части
> /*
> В make menuconfig в одном из первых меню лежит
При конфигурировании ядра в самом начале идут вопросы о поддержке модулей. Так вот кроме собственно поддержки там есть еще и Module Versioning (кажется так) который и приводит к этому эффекту

> Ты об этом говоришь ?
> h1.c:38: warning: implicit declaration of function
> `printk_R1b7d4074'
> h1.c:41: warning: implicit declaration of function
> `sprintf_R1d26aa98'
Ага. В тексте программы это обычные printk/sprintf, но они подключают файл modversion.h (тоже кажется так - пишу по памяти) в котором определяются макросы препроцессора, которые и производят такую замену. Идея в том, что в разных ядрах мусор, идущий после "_R" разные. И поэтому даже если ядро одной версии экспортирует printk, а ядро другой версии импортирует ее же, то в бинарный файл printk попадет под разными именами и следовательно модули от разных версий не свяжутся

> Ты не мог бы переформулирофать/пояснить свою мысль.
Надеюсь понятно выразился. Но так как проблема решилась совершенно другим способом, то скорее всего дело было не в ней. Но довольно большая вероятность, что в том, что установленное ядро отличалось от ядра сконфигурированного там, где указал ZaDNiCa

> ЗЫ: А типа DDK в Линуксе что ?
А ничего. Для разработки модулей ядра нужно поставить исходники ядра и читать документацию.
ты точно уверен что каталоге /lib/modules/`uname... 19.12.03 12:03  
Автор: ZaDNiCa <indeed ZaDNiCa> Статус: Elderman
<"чистая" ссылка>
ты точно уверен что каталоге /lib/modules/`uname -r`/build/include
лежат сырцы от того ядра на котором ты сейчас работаешь?
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach