Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ядро и модули Linux

243
16 мая 2005 года
pacific_7
1.9K / / 06.09.2004
Ядро 2.4.21 от mdk 9.1
Как правильно выкинуть из ядра поддержку отсутствующего оборудования?

Делаем значить так:
cd /usr/src/linux
vi Makefile
//ставим нужную версию в Makefile
make xconfig - конфигурируем все что надо.
make dep clean
make bzImage modules modules_install
cp System.map /boot/System.map
cd /boot
mkinitrd initrd-2.4.21-xx.img 2.4.21-xx

Ну и понятно, настраиваем загрузчик.

Загвоздка вот в чем - после выполнения make modules_install иногда выскакивают сообщения о неопределенных символах, например unresolved symbol EISA_bus - если отключить в ядре поддрежку EISA (на кой она сдалась?). Та же петрушка со SCSI возникает.
Соответственно после загрузки этого ядра и выполнения команды depmod -e получаем полный список этих символов.
Как можно избежать подобной пакости? Я так понимаю, что на этапе make dep нужно что-то предпринять, но вот что? Сообщений этих я там не видел, а получать их когда уже скомпилировано ядро и модули - огромная трата времени.
Или нужно сделать нечто вроде make dep | grep symbol?(проверять сегодня - уже нет сил) Может есть более простые пути?
Все, что я нашел на эту тему - это вышеприведенные команды и то, что написано в мануалах по командам работы с модулями, но это понятно уже анализ баги, а не ее предупреждение.
Может где-то есть подробная информация или какой-то не найденый мною мануал?
243
17 мая 2005 года
pacific_7
1.9K / / 06.09.2004
Блин, неужели один я такой головной болью страдаю? Кстати команда make dep | grep symbol нифига не выдает, т.е вывод make dep не содержит ни одного слова symbol. Это я проверил уже на печальном опыте: отключил поддержку RAID, скомпилировал - все пучком вроде. Перезагрузился и получил busybox: unresolved symbol gr_is_capable, и далее панику ядра. Счаз полезу смотреть, что это за gr_is_capable.
ЗЫ: RAID'ов у меня естественно нет :)
Кажись понял, это не от RAID'ов а от Grsecurity, которую я включил. Будем копат.
Вопрос про символы остается в силе.
2
17 мая 2005 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by pacific_7
Блин, неужели один я такой головной болью страдаю? Кстати команда make dep | grep symbol нифига не выдает, т.е вывод make dep не содержит ни одного слова symbol. Это я проверил уже на печальном опыте: отключил поддержку RAID, скомпилировал - все пучком вроде. Перезагрузился и получил busybox: unresolved symbol gr_is_capable, и далее панику ядра. Счаз полезу смотреть, что это за gr_is_capable.
ЗЫ: RAID'ов у меня естественно нет :)
Кажись понял, это не от RAID'ов а от Grsecurity, которую я включил. Будем копат.
Вопрос про символы остается в силе.


а что у нас даст
grep -v # /etc/rc.d/rc.modules

243
18 мая 2005 года
pacific_7
1.9K / / 06.09.2004
Перекомпилил, грузимся нормально:
Ура - с проклятой EISA разобрался по топорному: после проведения xconfig нашел в .config все строчки с этой батвой - одна оказалась не закомментирована. Закомментировал вручную, хоть там и написано don't edit - помогло, теперь об EISA мы не беспокоимся.
Зато SCSI меня порадовала в очередной раз:
*** Unresolved symbols in /lib/modules/2.4.21-07/kernel/3rdparty/qla/qla2200.o
Вернее, это некая qla (QLogic ISP2200 and ISP2300) чего-то хочет от несуществующего scsi-модуля.
qla - как я понял из поиска в гугле, это RAID массив базирующийся на scsi. Непонятно тогда, почему он не отключен, если отключена поддержка RAID'ов в общем?
Теперь наверно все строки в конфиге подобные этой: CONFIG_FC_QLA2200=m закомментирую врукопашную.
Это все xconfig'и так коряво работают, или только мандрейковые? В смысле, если качнуть ядро с kernel.org (тяжелое оно сволочь!) - такие загоны будут или нет?

Теперь, ваша метода:
Цитата:
Originally posted by squirL
а что у нас даст
grep -v # /etc/rc.d/rc.modules


Ошибку :) У меня grep понимает решетку только в кавычках.
Воть:

Код:
[root@localhost linux]# grep -v "#" /etc/rc.d/rc.modules

[ -f /etc/modules ] || exit 0

(cat /etc/modules; echo) | while read module args
do
  case "$module" in
  esac
  initlog -s "Loading module: $module"
  modprobe $module $args >/dev/null 2>&1
done

Блин - в скриптах не разбираюсь (сам знаю, что плохо, исправлюсь:)), но чуствую, что лучше привести весь файл:
Код:
[ -f /etc/modules ] || exit 0

# Loop over every line in /etc/modules.
(cat /etc/modules; echo) | while read module args

do
  case "$module" in
      \#*|"") continue ;;
  esac
  initlog -s "Loading module: $module"
  modprobe $module $args >/dev/null 2>&1
done

В файле /etc/modules абсолютно все строки закомментированы.
Вообще - к чему вы ведете? Не понял задумки - разъясните, если не трудно вышу мысль, чувствую что наверняка логична, но понять сути не могу: бага вроде не в инициализации модулей, а внутри самих модулей ссылающихся на другие, несуществующие модули.
ЗЫ Я начинаю приходить к выводу, что config рулит перед всеми *config'ами - точно ничего не пропустишь.
2
18 мая 2005 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by pacific_7
Перекомпилил, грузимся нормально:
Ура - с проклятой EISA разобрался по топорному: после проведения xconfig нашел в .config все строчки с этой батвой - одна оказалась не закомментирована. Закомментировал вручную, хоть там и написано don't edit - помогло, теперь об EISA мы не беспокоимся.
Зато SCSI меня порадовала в очередной раз:
*** Unresolved symbols in /lib/modules/2.4.21-07/kernel/3rdparty/qla/qla2200.o
Вернее, это некая qla (QLogic ISP2200 and ISP2300) чего-то хочет от несуществующего scsi-модуля.
qla - как я понял из поиска в гугле, это RAID массив базирующийся на scsi. Непонятно тогда, почему он не отключен, если отключена поддержка RAID'ов в общем?
Теперь наверно все строки в конфиге подобные этой: CONFIG_FC_QLA2200=m закомментирую врукопашную.
Это все xconfig'и так коряво работают, или только мандрейковые? В смысле, если качнуть ядро с kernel.org (тяжелое оно сволочь!) - такие загоны будут или нет?

Теперь, ваша метода:

Ошибку :) У меня grep понимает решетку только в кавычках.
Воть:
Код:
[root@localhost linux]# grep -v "#" /etc/rc.d/rc.modules

[ -f /etc/modules ] || exit 0

(cat /etc/modules; echo) | while read module args
do
  case "$module" in
  esac
  initlog -s "Loading module: $module"
  modprobe $module $args >/dev/null 2>&1
done

Блин - в скриптах не разбираюсь (сам знаю, что плохо, исправлюсь:)), но чуствую, что лучше привести весь файл:
Код:
[ -f /etc/modules ] || exit 0

# Loop over every line in /etc/modules.
(cat /etc/modules; echo) | while read module args

do
  case "$module" in
      \#*|"") continue ;;
  esac
  initlog -s "Loading module: $module"
  modprobe $module $args >/dev/null 2>&1
done

В файле /etc/modules абсолютно все строки закомментированы.
Вообще - к чему вы ведете? Не понял задумки - разъясните, если не трудно вышу мысль, чувствую что наверняка логична, но понять сути не могу: бага вроде не в инициализации модулей, а внутри самих модулей ссылающихся на другие, несуществующие модули.
ЗЫ Я начинаю приходить к выводу, что config рулит перед всеми *config'ами - точно ничего не пропустишь.


вел к тому, что возможно черех /etc/modules пытались подгрузится отсутствующие модули... с решеткой - обшибся маленько, конечно надо в кавычках. но это ерунда... а ваша проблема в том, что с зависимостями слабо разбираетесь. попробуйте ядро 2.6 - там зависимости отслеживаются :)

243
18 мая 2005 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by squirL
ваша проблема в том, что с зависимостями слабо разбираетесь. попробуйте ядро 2.6 - там зависимости отслеживаются :)


Верно - слабо разбираюсь и не только с зависимостями... И до сих пор не пойму - как можно с ними научиться разбираться, если не методом научного тыка? Т.е. через приобретения опыта таким путем. Если они где-то описаны, то пожалуйста подскажите. В документации - фиг. Там даже про qla нифига не было сказано, вернее было: "см. modules.txt". А modules.txt - ни сном ни духом не ведает, что в нем такое должно быть: ни одной строчки содержащей qla, QLogic и т.п.
Но все же не по людски это имхо - при отключенной поддержке чего-либо включать модуль, который на это "чего-либо" опирается. :)
Ядро 2.6? Возможно и попробую - валяется в дистрибутиве мандрака 10-го. Но мы не ищем легких путей :)
Еще вопросик: Grsecurity - стоит ли эта фича установки, пусть даже в учебно-познавательных целях? Возможности вроде-как интересные предоставляет. Или только гемор от нее?

2
18 мая 2005 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by pacific_7
Grsecurity - стоит ли эта фича установки, пусть даже в учебно-познавательных целях? Возможности вроде-как интересные предоставляет. Или только гемор от нее?


ну на домашней машине оно врядли надо. но в учебно-познавательных - вполне можно поставить. будете в дальнейшем серваки поднимать - пригодится.

243
19 мая 2005 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by squirL
ну на домашней машине оно врядли надо. но в учебно-познавательных - вполне можно поставить. будете в дальнейшем серваки поднимать - пригодится.


Сенк - Grsecurity уже воткнул, работает вроде. И со scsi разобрался - так же вручную закомментировал в .config аж целых четыре строчки. Теперь все на месте.
Спасибо за поддержку

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог