Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по Linux (http://forum.oszone.net/forumdisplay.php?f=9)
-   -   Ошибка при компиляции ядра (http://forum.oszone.net/showthread.php?t=13760)

Junior Penguin 26-09-2003 17:39 73669

Добрый вечер!
Вот добрался до компиляции ядра ;)
Система при выполнении 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 73670

для двухпроцессорной машины собираеш?

ruslandh 27-09-2003 08:42 73671

Цитата:

/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 73672

Цитата:

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


sergleo 29-09-2003 11:09 73673

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

Junior Penguin 29-09-2003 17:44 73674

Цитата:

Ты просто собираеш ядро под двух проц. машину...
Выруби параметр 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 73675

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

sergleo 29-09-2003 19:13 73676

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

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

Junior Penguin 30-09-2003 09:39 73677

sergleo

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

sergleo 30-09-2003 13:13 73678

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 73679

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 73680

Ты их смотрел? В них расписаны девайсы которые система знает + адреса памяти и вендоры(производители) устройств с наименованием
________________
by sergleo

ruslandh 01-10-2003 19:55 73681

Цитата:

А что тогда делают файлы в /boot/ типа modules-info, config-2.x.x-x-x? Зачем они нужны?  
Я так понимаю для динамического (без перекомпиляции) изминения параметров загрузки модулей ядра.

Junior Penguin 02-10-2003 09:26 73682

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

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



ruslandh 02-10-2003 19:24 73683

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

sda-a 13-11-2005 16:23 373486

Вот есть вопросик...
Делал тоже, что и автор первого поста - и выпадают ошибки...

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 373695

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

sergleo 14-11-2005 14:27 373770

Цитата:

Делал тоже, что и автор первого поста
у автора 1-го поста система была RH9. Непопутайте... для ядра
Цитата:

2.6.11
и другой ситемы неприемлемо... Но принцип тот-же...

Spaik 16-11-2005 15:45 374535

Здрасте!!!

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

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

dmitryst 16-11-2005 22:04 374655

Spaik
Ядро какой версии? initrd не забыли?

Spaik 18-11-2005 16:19 375334

Система Mandrake10.1 собираю ядро 2.6.14

Цитата:

initrd
что сие есть я не знаю (Линь стоит недавно), поэтому сказать ничего не могу

dmitryst 19-11-2005 11:13 375637

После сборки ядра пишете make modules, make modules_install, далее:
mkinitrd /boot/initrd-2.6.14-extraversion 2.6.14-extraversion

extraversion пишется в makefile до сборки ядра, это может быть любая удобная строка, чтобы отличить новое ядро от старого
далее - в grub дублируем пункт загрузки основного ядра и меняем названия файлов на наши, опять же не забывая про initrd, а то не запустится...

удачи! ;)

sergleo 21-11-2005 11:01 376143

Цитата:

что сие есть я не знаю
initrd - нужен при скази дисках и (или) при раиде и (или) при больших LVG в тч наверное и при sata (может и ошибся народ поправит)


Время: 06:10.

Время: 06:10.
© OSzone.net 2001-