Войти

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


Страниц : [1] 2

Junior Penguin
26-09-2003, 17:39
Добрый вечер!
Вот добрался до компиляции ядра ;)
Система при выполнении 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

Заранее благодарен

Guest
26-09-2003, 18:24
для двухпроцессорной машины собираеш?

ruslandh
27-09-2003, 08:42
/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'

Почему smp_init - это двухпроц. машина ?
Какая-то ошибка с кокфигурацией в ядре "apic"

Junior Penguin
29-09-2003, 08:21
Почему smp_init - это двухпроц. машина ?
Какая-то ошибка с кокфигурацией в ядре "apic"

Да нет, машина что ни на есть обыкновенная - Celeron (M/b -i810). Проблема в том, что я "еще не Волшебник, а только учус..." :о)
Не подскажете, где я так сильно облажался при конфигурации ядра? Что это за "apic" такой? Где что исправить можно?

sergleo
29-09-2003, 11:09
Ты просто собираеш ядро под двух проц. машину...
Выруби параметр smp для ядра твоего...
make menuconfig - настройки ядра - и там отключи...

Junior Penguin
29-09-2003, 17:44
Ты просто собираеш ядро под двух проц. машину...
Выруби параметр smp для ядра твоего...
make menuconfig - настройки ядра - и там отключи...

Спасибо Вам, Друзья, что не бросаете начинающих "волшебников" в трудную для них минуту.:) :up:
С компиляцией я разобрался -- у меня 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

Вот у меня вопрос -- можно это как-то поправить, не перенастраивая и не перекомпилируя ядро?

shurikan
29-09-2003, 18:04
Junior Penguin
А это уже перебор с включёнными в ядро драйверами для pcmci устройств. Они на ноутбуках живут, на десктопах их нет. Придётся при конфигурации отключить эти устройства и перекомпилять... :(

sergleo
29-09-2003, 19:13
Перво наперво берёшь файл /where/you/build/kernel/source/ include/linux/modsetver.h
и в нём где-нибудь в начале вставляешь строчку
#include <linux/rhconfig.h>

при этом у тебя будут нормально компилиться модули, а далее см. сообщение shurikan

Junior Penguin
30-09-2003, 09:39
sergleo

А не подскажешь (или где почитать) описание что делают make modules и make modules_install? Т.е. что делают, в какие директории что пишут. README в /usr/src/linux-# читал и малость не въехал.

sergleo
30-09-2003, 13:13
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 кернела.... и в инете... извени ссылки на память не помню :(

Junior Penguin
01-10-2003, 13:00
shurikan
sergleo

Спасибо за помощь!!! :)
С Третьей попытки ядро скомпилилось, модули установились и система корректно загрузилась-таки. Осталось ее протестировать как-нить...

Меня вот вопросы мучают... Как я это вижу, для того, чтобы новое ядро грузиться начало нужно его в рут девайс загрузить и System.map (???) туда же, а еще, чтобы скомпиленные модули встали в директорию /lib/modules/2.x.x-x-x... -- это все?!
А что тогда делают файлы в /boot/ типа modules-info, config-2.x.x-x-x? Зачем они нужны?  

Guest
01-10-2003, 19:54
Ты их смотрел? В них расписаны девайсы которые система знает + адреса памяти и вендоры(производители) устройств с наименованием
________________
by sergleo

ruslandh
01-10-2003, 19:55
А что тогда делают файлы в /boot/ типа modules-info, config-2.x.x-x-x? Зачем они нужны?  

Я так понимаю для динамического (без перекомпиляции) изминения параметров загрузки модулей ядра.

Junior Penguin
02-10-2003, 09:26
ruslandh
А-га... Т.е. как я понимаю эти файлы (boot/modules-info, config-2.x.x-x-x) грузятся и изменяются только один раз -- при инсталляции системы и далее используются только как справочный материал при добавлениях и удалениях модулей из системы?

А как можно динамически без перекомпиляции загрузить / удалить модули из текущей конфигурации не подскажешь (или ссылочку)?

ruslandh
02-10-2003, 19:24
Ну модули ядра и так загружаются динамически, (см modules.conf), а вот параметры (опции)  модулей ядра вроде можно менять :)

sda-a
13-11-2005, 16:23
Вот есть вопросик...
Делал тоже, что и автор первого поста - и выпадают ошибки...

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]#

И все (
Не подскажете?

dmitryst
14-11-2005, 11:21
sda-a
А видеокарта у вас Matrox? Если нет, то надо при конфигурировании ядра поддержку Matrox framebuffer отключить

sergleo
14-11-2005, 14:27
Делал тоже, что и автор первого поста у автора 1-го поста система была RH9. Непопутайте... для ядра 2.6.11 и другой ситемы неприемлемо... Но принцип тот-же...

Spaik
16-11-2005, 15:45
Здрасте!!!

Пришел на форум за советом...
Собрал свое ядро, откомпилилось нормально, только make dep выполнится нормально не может (подскажите в чем может быть дело и смертельно ли это), но ядро собралось...

Загружаясь система сообщает что init дошел до 5 уровня =)и осуществляется переход в "Пассивную загрузку", после этого компьютер ни начто не реагирует :=(((

dmitryst
16-11-2005, 22:04
Spaik
Ядро какой версии? initrd не забыли?




© OSzone.net 2001-2012