![]() |
Добрый вечер!
Вот добрался до компиляции ядра ;) Система при выполнении make bzImage выдала то, что вы видите внизу. Не подскажете в чем тут дело? make[1]: Вход в каталог `/usr/src/linux-2.4.18-3' kallsyms pass 1 ld -m elf_i386 -T /usr/src/linux-2.4.18-3/arch/i386/vmlinux.lds -e stext arch/i386/kernel/head.o arch/i386/kernel/init_task.o init/main.o init/version.o init/do_mounts.o --start-group arch/i386/kernel/kernel.o arch/i386/mm/mm.o kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.o drivers/char/char.o drivers/block/block.o drivers/misc/misc.o drivers/net/net.o drivers/media/media.o drivers/char/drm/drm.o drivers/net/fc/fc.o drivers/atm/atm.o drivers/ide/idedriver.o drivers/cdrom/driver.o drivers/pci/driver.o drivers/net/wireless/wireless_net.o drivers/pnp/pnp.o drivers/video/video.o drivers/usb/usbdrv.o drivers/md/mddev.o drivers/sensors/sensor.o net/network.o abi/abi.o /usr/src/linux-2.4.18-3/arch/i386/lib/lib.a /usr/src/linux-2.4.18-3/lib/lib.a /usr/src/linux-2.4.18-3/arch/i386/lib/lib.a --end-group -o .tmp_vmlinux1 init/main.o: In function `smp_init': init/main.o(.text.init+0x5f1): undefined reference to `skip_ioapic_setup' arch/i386/kernel/kernel.o: In function `broken_pirq': arch/i386/kernel/kernel.o(.text.init+0x34fb): undefined reference to `skip_ioapic_setup' make[1]: *** [kallsyms] Ошибка 1 make[1]: Выход из каталог `/usr/src/linux-2.4.18-3' make: *** [vmlinux] Ошибка 2 Заранее благодарен |
для двухпроцессорной машины собираеш?
|
Цитата:
Какая-то ошибка с кокфигурацией в ядре "apic" |
Цитата:
Не подскажете, где я так сильно облажался при конфигурации ядра? Что это за "apic" такой? Где что исправить можно? |
Ты просто собираеш ядро под двух проц. машину...
Выруби параметр smp для ядра твоего... make menuconfig - настройки ядра - и там отключи... |
Цитата:
С компиляцией я разобрался -- у меня SMP было выключено, но вот всякие другие фичи этого раздела типа "Local APIC support on uniprocessors" были включены, отсюда , видимо, и "росли ноги". Как только все прикрыл -- ядро скомпилилось беспрекословно!!! :) Но это полбеды... Теперь у меня в процессе make modules_install система пишет следующе (что-то из раздела символьных устройств): ... make[1]: Выход из каталог `/usr/src/linux-2.4.18-3/arch/i386/lib' cd /lib/modules/2.4.18-3custom; \ mkdir -p pcmcia; \ find kernel -path '*/pcmcia/*' -name '*.o' | xargs -i -r ln -sf ../{} pcmcia if [ -r System.map ]; then /sbin/depmod -ae -F System.map 2.4.18-3custom; fi depmod: *** Unresolved symbols in /lib/modules/2.4.18-3custom/kernel/drivers/char/drm/sis.o depmod: sis_malloc_Ra3329ed5 depmod: sis_free_Rced25333 make: *** [_modinst_post] Ошибка 1 Вот у меня вопрос -- можно это как-то поправить, не перенастраивая и не перекомпилируя ядро? |
Junior Penguin
А это уже перебор с включёнными в ядро драйверами для pcmci устройств. Они на ноутбуках живут, на десктопах их нет. Придётся при конфигурации отключить эти устройства и перекомпилять... :( |
Перво наперво берёшь файл /where/you/build/kernel/source/ include/linux/modsetver.h
и в нём где-нибудь в начале вставляешь строчку #include <linux/rhconfig.h> при этом у тебя будут нормально компилиться модули, а далее см. сообщение shurikan |
sergleo
А не подскажешь (или где почитать) описание что делают make modules и make modules_install? Т.е. что делают, в какие директории что пишут. README в /usr/src/linux-# читал и малость не въехал. |
Make modules - собирает(компилит модули) указанные при make menuconfig И после make dep (выбора зависимостей)...
make modules_install - устанавливает их в взависимости какое ядро ты компилиш(номер ядра) в воответствуещую директорию. Например: для ядра RH9 2.4.20-8 Если ты ставиш переменную EXTRAVERSION = -8-2 в файле Makefile исходников ядра, то модули он положит в директорию /lib/modules/2.4.20-8-2 после модулес инсталл. Описание только в doc кернела.... и в инете... извени ссылки на память не помню :( |
shurikan
sergleo Спасибо за помощь!!! :) С Третьей попытки ядро скомпилилось, модули установились и система корректно загрузилась-таки. Осталось ее протестировать как-нить... Меня вот вопросы мучают... Как я это вижу, для того, чтобы новое ядро грузиться начало нужно его в рут девайс загрузить и System.map (???) туда же, а еще, чтобы скомпиленные модули встали в директорию /lib/modules/2.x.x-x-x... -- это все?! А что тогда делают файлы в /boot/ типа modules-info, config-2.x.x-x-x? Зачем они нужны? |
Ты их смотрел? В них расписаны девайсы которые система знает + адреса памяти и вендоры(производители) устройств с наименованием
________________ by sergleo |
Цитата:
|
ruslandh
А-га... Т.е. как я понимаю эти файлы (boot/modules-info, config-2.x.x-x-x) грузятся и изменяются только один раз -- при инсталляции системы и далее используются только как справочный материал при добавлениях и удалениях модулей из системы? А как можно динамически без перекомпиляции загрузить / удалить модули из текущей конфигурации не подскажешь (или ссылочку)? |
Ну модули ядра и так загружаются динамически, (см modules.conf), а вот параметры (опции) модулей ядра вроде можно менять :)
|
Вот есть вопросик...
Делал тоже, что и автор первого поста - и выпадают ошибки... if [ -r System.map ]; then /sbin/depmod -ae -F System.map 2.6.11my; fi WARNING: /lib/modules/2.6.11my/kernel/3rdparty/mod_marvel/mga_core.ko needs unknown symbol matroxfb_register_driver WARNING: /lib/modules/2.6.11my/kernel/3rdparty/mod_marvel/mga_core.ko needs unknown symbol matroxfb_unregister_driver make: *** [_modinst_post] Ошибка 1 [root@localhost linux]# И все ( Не подскажете? |
sda-a
А видеокарта у вас Matrox? Если нет, то надо при конфигурировании ядра поддержку Matrox framebuffer отключить |
Цитата:
Цитата:
|
Здрасте!!!
Пришел на форум за советом... Собрал свое ядро, откомпилилось нормально, только make dep выполнится нормально не может (подскажите в чем может быть дело и смертельно ли это), но ядро собралось... Загружаясь система сообщает что init дошел до 5 уровня =)и осуществляется переход в "Пассивную загрузку", после этого компьютер ни начто не реагирует :=((( |
Spaik
Ядро какой версии? initrd не забыли? |
Система Mandrake10.1 собираю ядро 2.6.14
Цитата:
|
После сборки ядра пишете make modules, make modules_install, далее:
mkinitrd /boot/initrd-2.6.14-extraversion 2.6.14-extraversion extraversion пишется в makefile до сборки ядра, это может быть любая удобная строка, чтобы отличить новое ядро от старого далее - в grub дублируем пункт загрузки основного ядра и меняем названия файлов на наши, опять же не забывая про initrd, а то не запустится... удачи! ;) |
Цитата:
|
Время: 06:10. |
Время: 06:10.
© OSzone.net 2001-