PDA

Показать полную графическую версию : Перекомпиляция ядра...


Mr Dan
20-07-2004, 13:41
Привет народ. Помогите разобраться. Вот решил пересобрать ядро, повыкидывать оттуда ненужные компоненты и т.д., короче говоря занялся оптимизацией. Дистрибутив ASP 9.2 Express. Значит делаю make menuconfig, настраиваю, сохраняю конфигурацию, делаю make dep, make bzImage, make modules, make modules_install
Прописываю в grub.conf ссылку на новое ядро, гружусь...

И тут начинают вылазить сюрпризы. Во-первых при загрузке ругается на то что не удается загрузить usbcore.o, input.o и parport.o. Пишет кучу строк типа: путь_к_модулям/usbcore: undefined symbols тра-ля-ля и т.д.
Остальные службы загружаются нормально, но после того когда логинюсь в систему, делаю lsmod и оказывается что никаких модулей-то и не загружено - пусто. Пытаюсь сделать ручками например insmod путь_к_модулям/input.o. Но ругается как и при загрузке типа путь_к_модулям/input: undefined symbols тра-ля-ля и т.д. и кучу таких строк.
В чем тут может быть дело???
Вот кусок из /var/log/messages

Jul 18 17:57:13 fantom insmod: /lib/modules/2.4.22-1.2154.nptl.asp/kernel/drivers/parport/parport.o: insmod char-major-6 failed
Jul 18 17:57:13 fantom last message repeated 7 times
Jul 18 17:57:13 fantom modprobe: modprobe: Can't locate module char-major-188
Jul 18 17:57:14 fantom last message repeated 15 times
Jul 18 17:57:14 fantom modprobe: modprobe: Can't locate module char-major-180
Jul 18 17:57:14 fantom last message repeated 15 times
Jul 18 17:57:14 fantom insmod: /lib/modules/2.4.22-1.2154.nptl.asp/kernel/drivers/parport/parport.o: insmod char-major-6 failed
Jul 18 17:57:14 fantom last message repeated 3 times
Jul 18 17:57:15 fantom modprobe: modprobe: Can't locate module char-major-180
Jul 18 17:57:15 fantom last message repeated 7 times
Jul 18 17:57:15 fantom insmod: /lib/modules/2.4.22-1.2154.nptl.asp/kernel/drivers/parport/parport.o: insmod char-major-6 failed
Jul 18 17:57:15 fantom last message repeated 3 times
Jul 18 17:57:15 fantom modprobe: modprobe: Can't locate module char-major-180


А вот небольшой кусок сообщений, которые были при компиляции модулей make modules:

In file included from ac.c:26:
/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/kernel.h:60:31: invalid suffix "d5eeb25" on integer constant
In file included from ac.c:26:
/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/kernel.h:60: error: syntax error before numeric constant
/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/kernel.h:60: warning: function declaration isn't a prototype
/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/kernel.h:61:17: invalid suffix "bf0" on integer constant
/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/kernel.h:61: error: syntax error before numeric constant
/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/kernel.h:62: error: `panic_R_ver_str' declared as function returning a function
/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/kernel.h:62: warning: function declaration isn't a prototype
/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/kernel.h:68: error: syntax error before numeric constant
/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/kernel.h:68: error: `simple_strtoul_R_ver_str' declared as function returning a function
/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/kernel.h:68: warning: function declaration isn't a prototype
/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/kernel.h:69:13: invalid suffix "b742fd7" on integer constant

Там их вообще многовато, чего-то мне сдается что это не нормально.

А вот сообщения которые были при make modules_install:

cp: ОЕЧПЪНПЦОП ЧЩРПМОЙФШ stat ДМС `ac.o': No such file or directory
cp: ОЕЧПЪНПЦОП ЧЩРПМОЙФШ stat ДМС `battery.o': No such file or directory
cp: ОЕЧПЪНПЦОП ЧЩРПМОЙФШ stat ДМС `button.o': No such file or directory
cp: ОЕЧПЪНПЦОП ЧЩРПМОЙФШ stat ДМС `fan.o': No such file or directory
cp: ОЕЧПЪНПЦОП ЧЩРПМОЙФШ stat ДМС `processor.o': No such file or directory
cp: ОЕЧПЪНПЦОП ЧЩРПМОЙФШ stat ДМС `thermal.o': No such file or directory
make[2]: *** [_modinst__] Ошибка 1
make[1]: *** [_modinst_acpi] Ошибка 2
make: *** [_modinst_drivers] Ошибка 2

Извиняюсь что в KOI-8...

Кстати, а перед компиляцией модулей нужно удалять содержимое /lib/modules ???
Просвятите плиз....

makaveli lcf
21-07-2004, 08:30
хехе = так у вас ядро с ошибками собралось (вернее модули к нему) = что от него тогда требовать)))
видимо
1) либо вы не очистили исходники перед компиляцией
make mrproper
2) либо убрали из конфигов много лишнего_нужного

Код:


cp: ОЕЧПЪНПЦОП ЧЩРПМОЙФШ stat ДМС `ac.o': No such file or directory
cp: ОЕЧПЪНПЦОП ЧЩРПМОЙФШ stat ДМС `battery.o': No such file or directory
cp: ОЕЧПЪНПЦОП ЧЩРПМОЙФШ stat ДМС `button.o': No such file or directory
cp: ОЕЧПЪНПЦОП ЧЩРПМОЙФШ stat ДМС `fan.o': No such file or directory
cp: ОЕЧПЪНПЦОП ЧЩРПМОЙФШ stat ДМС `processor.o': No such file or directory
cp: ОЕЧПЪНПЦОП ЧЩРПМОЙФШ stat ДМС `thermal.o': No such file or directory
make[2]: *** [_modinst__] Ошибка 1
make[1]: *** [_modinst_acpi] Ошибка 2
make: *** [_modinst_drivers] Ошибка 2

вы для ноутбука ядро собираете??


Добавлено:

а что вы убрали из ядра?

Mr Dan
21-07-2004, 09:17
Нет, не для ноутбука! А почему спросили? Как тогда избавится от того что ругается? Из я дра повыкидывал поддержку Bluetooth, RAID, Radio Adapters, ну и драйвера к ненужным мне чипсетам и т.п. Ничего жизнено важного вроде не трогал. Ну так как тогда собрать модули правильно, чтоб без ошибок. Можно порядок действий или совет какой-нить?! И вы мне так и не ответили на вопрос, нужно ли перед сборкой модулей убивать содержимое /lib/modules? Или это не обязательно?

makaveli lcf
22-07-2004, 10:21
просто я вам прокомментирую = все это модули ACPI (advanced power control interface если не ошибаюсьв )

ac - модуль проверки наличия питания от сети
battery - отвечает за аккумулятор ноутбуков
button - кнопки срежимов ожидания/выключения компьтора
fan - вентилятор
processor - различные дополнительные режимы работы процессора
thermal - температурные датчики

все это обычно собирается под ноутбук, чтобы организовать энергосберегающие режимы = на десктопах я не импользовал ничего кроме button (для выключения компа с помощью acpid нажатием кнопки питания - аналогично /sbin/shutdown -h now)

так что если вы действительно облегчаете ядро = то отключите все это = тем более на некоторых компах acpi вызывает сбои
можно кешно собрать ядро и с acpi, по-любому его можно отключить при загрузке
boot: Linux acpi=off

попробуйте собрать без поддержки acpi = потом пошагово добавите = главное получить рабочую конфигурацию ядра

Mr Dan
22-07-2004, 11:56
Одним из результатов инициативы OnNow является спецификация ACPI 1.0 (Advanced Configuration and Power Interface Version 1.0), которая определяет новый интерфейс между системной платой и BIOS, расширяющий данные Plug and Play путем включения управления электропитанием и других конфигурационных возможностей, осуществляемых под контролем операционной системы. Спецификация ACPI определяет новый интерфейс между операционной системой и компонентами компьютера, обеспечивающими поддержку Plug and Play и управления электропитанием. Это позволяет разработчикам реализовать целый диапазон функций Plug and Play и управления электропитанием для самых разных аппаратных платформ при использовании одного и того же драйвера операционной системы. Помимо этого, ACPI предоставляет общий механизм системных событий для Plug and Play и управления электропитанием.

Т.е. для десктопов это такая же необходимость как и для ноутбуков. Главное, чтобы системная плата поддерживала ACPI. Разве что battery действительно на десктопах вряд ли понадобится.

А тем более как я понимаю конфигурация ядра должна быть рабочей, так как при компиляции ядра ошибок не было. А вот при компиляции модулей выскакивают. :-(

Спасибо, буду пытаться дальше эксперементировать ;-)

makaveli lcf
23-07-2004, 07:40
могу сказать = что выбросив acpi  вы ничего не потеряете))) зато ядро собереться правильно

kosmik
12-08-2004, 15:24
:splat::splat::splat:ЛЮДИ!! ЛЮДИ!!!!:splat::splat::splat:

Веть прежде чем компилять ядро - скопируйте в его каталог дефаулт конфиг от текущей компиляции! Иначе при первом запуске make menuconfig - вы получите как-бы оптимизированный конфиг с кучей вырезанных и него модулей!

Далее, если в конфиге ядра прописано load all symbols from modules - немедленно убрать - иначем хрен скомпиляешь, а если и скомпиляешь - то не один модуль за грузится!

А далее уже сами думайте да хэлпы к пунктам читайте!!!
:dont:

Ge0rge
14-08-2004, 11:51
Скажи мне, любезный, а ты не забыл сделать mkinitrd для нового ядра, и прописать куда следует? Если ты собрал не монолитное ядро, то без этого оно у тебя вообще может уйти в kernel panic.

kosmik
17-08-2004, 01:56
2 SystemZ

Очевидно он забыл :)! Для ентого делается make install, который ЭТО и делает!
Очень хорошо make install дружит с grub!




© OSzone.net 2001-2012