Не собирается ядро

Ядро Linux и поддержка оборудования

Недавно добыл gemtoo 2004.3 в сборке от XORa

Сейчас не могу пересобрать ядро

Делал я это при помщи genkernel --menuconfig

Вот что выводиться в файле /var/log/genkernel.log

Quote:
* Gentoo Linux Genkernel; Version 3.1.0c

* Compiling Linux Kernel 2.4.28-gentoo-r4-sergei1 for x86...
* WARNING: Failed to mount /boot!
* kernel: >> Running mrproper...
COMMAND: make -j2 CC="gcc" LD="ld" AS="as" mrproper
rm -f arch/i386/vmlinux.lds
make[1]: Entering directory `/usr/src/linux-2.4.28-gentoo-r4/arch/i386/boot'
make[1]: предупреждение: сервер задач недоступен: используется -j1.
Добавьте `+' к правилу в родительском make.
rm -f tools/build
rm -f setup bootsect zImage compressed/vmlinux.out
rm -f bsetup bbootsect bzImage compressed/bvmlinux.out
make[2]: Entering directory `/usr/src/linux-2.4.28-gentoo-r4/arch/i386/boot/compressed'
rm -f vmlinux bvmlinux _tmp_*

...
......
........
drivers/usb/usbdrv.o(.text+0xff86): In function `hidinput_hid_event':
: undefined reference to `input_event'
drivers/usb/usbdrv.o(.text+0xfffe): In function `hidinput_hid_event':
: undefined reference to `input_event'
drivers/usb/usbdrv.o(.text+0x1006e): In function `hidinput_hid_event':
: undefined reference to `input_event'
drivers/usb/usbdrv.o(.text+0x100ca): In function `hidinput_hid_event':
: undefined reference to `input_event'
drivers/usb/usbdrv.o(.text+0x1027e): In function `hidinput_connect':
: undefined reference to `input_register_device'
drivers/usb/usbdrv.o(.text+0x102cb): In function `hidinput_connect':
: undefined reference to `input_register_device'
drivers/usb/usbdrv.o(.text+0x10427): In function `hidinput_disconnect':
: undefined reference to `input_unregister_device'
drivers/usb/usbdrv.o(.text+0xffb1): In function `hidinput_hid_event':
: undefined reference to `input_event'
make: *** [vmlinux] Ошибка 1
* Gentoo Linux Genkernel; Version 3.1.0c

* ERROR: Failed to compile the "bzImage" target...
* -- Grepping log... --
* -- End log... --
* Please consult /var/log/genkernel.log for more information and any
* errors that were reported above.
* Report any genkernel bugs to bugs.gentoo.org and
* assign your bug to . Please include
* as much information as you can in your bug report; attaching
* /var/log/genkernel.log so that your issue can be dealt with effectively.
*
* Please do *not* report compilation failures as genkernel bugs!
*

Мне кажеться ?? проблема в make.conf
Вот его содержимое

Quote:
CFLAGS="-O3 -fno-inline-functions -pipe -march=athlon-xp -fomit-frame-pointer -fforce-addr"
CHOST="i686-pc-linux-gnu"
MAKEOPTS="-j2"
CXXFLAGS="${CFLAGS}"
LINGUAS="ru en"
LANGUAGE="ru"
VIDEO_CARDS="nvidia"
USE="nptl nptlonly gpm unicode 3dfx 3dnow alsa -ipv6 -nojoystick 3dnowex X acpi alsa -arts avi dvd dvdread ffmpeg flash freetype gtk2 gtk kde mp3 mpeg nvidia nptl nls ogg oggvorbis -oss qt quicktime truetype vcd -pcmcia png xmms -bluetooth divx4linux gif jpeg pdflib xine -acl "
И почему эта ошибка выскочила именно здесь, ведь я ужу при помощи bootstrap.sh пересобрал все что поставил со stage1?
Буду благодарен всем кто мне поможет разобраться

Make.conf здесь совершенно нипричём, у Вас проблема с там, что нехватает некоторых драйверов. Попробуйте ещё раз пересобрать, посмотрите, может быть у вас не выставлены некоторые зависимости (обычно о них можно узнать нажав кнопку "Help" )

ArtSh пишет:
Make.conf здесь совершенно нипричём, у Вас проблема с там, что нехватает некоторых драйверов. Попробуйте ещё раз пересобрать, посмотрите, может быть у вас не выставлены некоторые зависимости (обычно о них можно узнать нажав кнопку "Help" )
Большое вам спасибо за ответ, но к сожелению мне не очень понятно
1. не хватает некоторых драйверов - Вы имеете в виду что при сборке ядра я не указал некоторые параметры?
2. Пересобирал я 3 ды - в последний раз без параметра --menuconfif - но все таже ошибка ( вдобавок перед этим я заново создавал .configure - в качестве главного справочного средства для пересборки ядра я использовал статью "Ядерная физика для домохозяйки")
3. Что за зависимости вы имели ввиду? - ведь сам пакет genkernel не поставился бы если они не были бы соблюдены.

собирать ядро (если Вы используете genkernel нужно так)

genkernel --menuconfig --bootsplash --gensplash all

если Вы используете udev то надо добавить флаг --udev
далее в появившемся ncurses окне переходите по пунктам и выбираете то что нужно. Например в секции Device dirvers->usb... нужно указать собирать с поддержкой usb (установить * остальное можно собирать как модуль - М), ohci, uhci, usb-storage и т.д...
После этого выходите и происходит автоматическая сборка ядра по указанным параметрам.
А зависимости: так например, ничего хорошего не получиться, если отключить поддержку ohci и uhci и др. хостов, и включить поддержку usb-storage

ArtSh пишет:
собирать ядро (если Вы используете genkernel нужно так)

genkernel --menuconfig --bootsplash --gensplash all

если Вы используете udev то надо добавить флаг --udev
далее в появившемся ncurses окне переходите по пунктам и выбираете то что нужно. Например в секции Device dirvers->usb... нужно указать собирать с поддержкой usb (установить * остальное можно собирать как модуль - М), ohci, uhci, usb-storage и т.д...
После этого выходите и происходит автоматическая сборка ядра по указанным параметрам.
А зависимости: так например, ничего хорошего не получиться, если отключить поддержку ohci и uhci и др. хостов, и включить поддержку usb-storage

Я так попробую.
Мне не очень понятно ну --bootsplash - это графическая загрузка а --gensplash он для чего нужен.
Тем более я заметил когда запускаеться genkernel вот что выводиться
Quote:
* kernel: >> Running mrproper...
Т.е .config лучше держать в другой директории
Пока на данный момент я сделал вот что
1. Я отрабатывал гпотезу о том что все дело в излишней оптимизации
Я изменил параметры в make.conf до таких

CFLAGS="-Os -pipe -march=athlon-xp -fomit-frame-pointer "

Пересобрал систему (scripts/bootstrap.sh и make world ) потом пробовал
собрать ядро такой командой
genkernel --kernel-config=/.config --kerneldir=/usr/src/linux-2.4.28-gentoo-r4 all

.config я создал заранее и убрал на всякий случай в корневой каталог

К сожелению ничего не собралось. Ошибка таже

Тогда я попробовал иначе
Пробовал собирать без genkernela
использовал тот же .config

Вводил
make dep
make bzImage
он завершился ошибкой

Quote:
grsecurity/grsec.o \
/usr/src/linux-2.4.28-gentoo-r4/arch/i386/lib/lib.a /usr/src/linux-2.4.28-gentoo-r4/lib/lib.a /usr/src/linux-2.4.28-gentoo-r4/arch/i386/lib/lib.a \
--end-group \
-o vmlinux
drivers/usb/usbdrv.o(.text+0xff86): In function `hidinput_hid_event':
: undefined reference to `input_event'
drivers/usb/usbdrv.o(.text+0xfffe): In function `hidinput_hid_event':
: undefined reference to `input_event'
drivers/usb/usbdrv.o(.text+0x1006e): In function `hidinput_hid_event':
: undefined reference to `input_event'
drivers/usb/usbdrv.o(.text+0x100ca): In function `hidinput_hid_event':
: undefined reference to `input_event'
drivers/usb/usbdrv.o(.text+0x1027e): In function `hidinput_connect':
: undefined reference to `input_register_device'
drivers/usb/usbdrv.o(.text+0x102cb): In function `hidinput_connect':
: undefined reference to `input_register_device'
drivers/usb/usbdrv.o(.text+0x10427): In function `hidinput_disconnect':
: undefined reference to `input_unregister_device'
drivers/usb/usbdrv.o(.text+0xffb1): In function `hidinput_hid_event':
: undefined reference to `input_event'
make: *** [vmlinux] Error 1

Я тут подумал - выходит все дело в том , я что то напортачил в параметрах ядра?? и мне что надо заново вводить все параметры??

Как показывает практика bootsplash без gensplasha неработает. При сборке ядра используются совершенно другие флаги, и определены они в одном из make файлов в каталоге с исходниками.
Подобная ошибка при компиляции означает, что в usbdrv.c была определена импортируемая функция, а линкер её не нашёл. Как такое могло случиться? Естественно предположить, что модуль в котором эта функция определена не был скомплирован, а это могло случиться если Вы не указали сборку этого модуля.

Уважаемый ArtSh большое ВАМ спасибо за помощь

ArtSh пишет:
Подобная ошибка при компиляции означает, что в usbdrv.c была определена импортируемая функция, а линкер её не нашёл. Как такое могло случиться? Естественно предположить, что модуль в котором эта функция определена не был скомплирован, а это могло случиться если Вы не указали сборку этого модуля.

Я начал отрабатывать версию что накосячил с указанием параметров сборки ядра

Я сделал вот что - запустил такую команду
genkernel --menuconfig all

модули и bzimage собрались без проблем - что доказывает что ошибка всетаки была допущена мною в в указании параметров компиляции ядра

Но появилась новая ошибка

Вот что вывелось в коце файла genkernel.log

Quote:
ld -r -o pwc.o pwc-if.o pwc-misc.o pwc-ctrl.o pwc-uncompress.o
ld -r -o auerswald.o auerbuf.o auerchain.o auerchar.o auermain.o auerisdn.o auerisdn_b.o
make[2]: Leaving directory `/usr/src/linux-2.4.28-gentoo-r4/drivers/usb'
make[1]: Leaving directory `/usr/src/linux-2.4.28-gentoo-r4/drivers'
* Gentoo Linux Genkernel; Version 3.1.0c

* ERROR: Failed to compile the "modules" target...
* -- Grepping log... --
* -- End log... --
* Please consult /var/log/genkernel.log for more information and any
* errors that were reported above.
* Report any genkernel bugs to bugs.gentoo.org and
* assign your bug to . Please include
* as much information as you can in your bug report; attaching
* /var/log/genkernel.log so that your issue can be dealt with effectively.
*
* Please do *not* report compilation failures as genkernel bugs!
*

И тут я в недоумении - а с чем связана эта ошибка??

Я попробовал сделать вот что - посколько когда я проверил каталог /boot и обнаружил в нем kernel-2.4.28-gentoo-r4-sergei1 System.map-2.4.28-gentoo-r4-sergei1 ( т.е. то что я собирал) и в каталоге lib/modules/ каталог 2.4.28-gentoo-r4-sergei1
я попробовал загрузиться с этого ядра
На диске у меня обстановка такая -
это вывелось при вводе команды fdisk -l /dev/hd?

Quote:
Device Boot Start End Blocks Id System
/dev/hda1 * 1 3758 30186103+ c W95 FAT32 (LBA)
/dev/hda2 3759 14593 87032137+ f W95 Ext'd (LBA)
/dev/hda5 3759 12858 73095718+ 83 Linux
/dev/hda6 12859 14502 13205398+ 83 Linux
/dev/hda7 14503 14593 730926 82 Linux swap

hda5 у меня занят fedora core 2 и именно в ней установлен загрузчик - grub
hda6 я предназначил для gentoo

Вот параметры grub для запуска gentoo

Quote:
title Gentoo - kernel 2.4
root (hd0,5)
kernel /boot/kernel-2.4.28-gentoo-r4-sergei1 root=/dev/hda6 devfs=nomount
initrid /boot/System.map-2.4.28-gentoo-r4-sergei1

Вот параметры fstab

Quote:
LABEL=/ / ext2 defaults 1 1
/dev/hda6 / ext2 noatime 0 0
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0
/dev/hda7 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,ro 0 0
/dev/fd0 /mnt/floppy auto noauto,owner 0 0
/dev/cdrom1 /mnt/cdrom1 udf,iso9660 noauto,owner,ro 0 0
/dev/hda1 /mnt/diskC vfat auto,user,ro,iocharset=koi8-r,codepage=866,umask=000 0 0
/dev/hdb1 /mnt/diskD vfat auto,user,ro,iocharset=koi8-r,codepage=866,umask=000 0 0

Ну так вот - вывелось вот что

Quote:
FATAL: kernel too old
Kernel panic : Attemted to kill init

И что делать?
Помогите пожалуйста в этом разобраться

зачем путатся через какой-то непонятный автоматизатор genkernel - заходите в директорию, прописываете линк "linux" на ваши исходники ядра, далее меню-конфиг и тд, незабывая перед компиляцией делать make clean или make mrproper - а если ошибки - так уберите птичку в ядре напротив проблемного драйвера и собирайте без него, а там разбирайтесь что конкретно не так, ну и потом конечно не забудьте grub.conf подкорректировать что-бы он ваше ядро грузил, ато иногда оно само его не корректирует. я долго смотрел сегодня на генкернел но так и не понял - зачем он нужен?

превидите последние 15-20 строчек файла /var/log/genkernel.log

Большое спасибо ВАМ за помощь

ArtSh пишет:
превидите последние 15-20 строчек файла /var/log/genkernel.log
Quote:

-fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=athlon-xp -DMODULE -nostdinc -iwithprefix include -DKBUILD_BASENAME=pwc_if -c -o pwc-if.o pwc-if.c
ld -r -o usbcore.o usb.o usb-debug.o hub.o devio.o inode.o drivers.o devices.o hcd.o
gcc -D__KERNEL__ -I/usr/src/linux-2.4.28-gentoo-r4/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=athlon-xp -DMODULE -nostdinc -iwithprefix include -DKBUILD_BASENAME=auerchar -c -o auerchar.o auerchar.c
gcc -D__KERNEL__ -I/usr/src/linux-2.4.28-gentoo-r4/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=athlon-xp -DMODULE -nostdinc -iwithprefix include -DKBUILD_BASENAME=auermain -c -o auermain.o auermain.c
gcc -D__KERNEL__ -I/usr/src/linux-2.4.28-gentoo-r4/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=athlon-xp -DMODULE -nostdinc -iwithprefix include -DKBUILD_BASENAME=auerisdn -c -o auerisdn.o auerisdn.c
gcc -D__KERNEL__ -I/usr/src/linux-2.4.28-gentoo-r4/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=athlon-xp -DMODULE -nostdinc -iwithprefix include -DKBUILD_BASENAME=auerisdn_b -c -o auerisdn_b.o auerisdn_b.c
ld -r -o pwc.o pwc-if.o pwc-misc.o pwc-ctrl.o pwc-uncompress.o
ld -r -o auerswald.o auerbuf.o auerchain.o auerchar.o auermain.o auerisdn.o auerisdn_b.o
make[2]: Leaving directory `/usr/src/linux-2.4.28-gentoo-r4/drivers/usb'
make[1]: Leaving directory `/usr/src/linux-2.4.28-gentoo-r4/drivers'
* Gentoo Linux Genkernel; Version 3.1.0c

* ERROR: Failed to compile the "modules" target...
* -- Grepping log... --
* -- End log... --
* Please consult /var/log/genkernel.log for more information and any
* errors that were reported above.
* Report any genkernel bugs to bugs.gentoo.org and
* assign your bug to . Please include
* as much information as you can in your bug report; attaching
* /var/log/genkernel.log so that your issue can be dealt with effectively.
*
* Please do *not* report compilation failures as genkernel bugs!
*

re:

зачем genkernel..??????проще:
если есть готовый .config |cp .config /usr/src/linux/
cd /usr/src/linux/
make clean
make modules
make install
у меня бла проблема со сборкой usb serial pl2303 тоже самое:rivers/usb/pl2303.o: In function `hidinput_hid_event':
: undefined reference to `input_event'
я его вытащил из usb и все скомполилось прекрасно!!!!!
может у тебя что-то в usb подключено..???

Человек явно второй раз в жизни линукс увидел а Вы сразу такие рецепты...
К тому же genkernelom можно собрать все ещё проще:
genkernel all
и всё! Всё что надо протестируется и подключиться на этапе загрузки, а если хочется изысков, то тоже надо подходить осторожно к этому вопросу, лучше воспользоваться menuconfig, заодно и много интересного прочитать ;)

Большое спасибо всем кто ответил

извините что пока ничего не делаю, а то я сейчас учусь на курсах и возвращаюсь в 11 часу. Все что вы мне посоветовали попробую сделать на выходных, и о результатах обязательно напишу

новое

а #emerge vanila-sources не судьба сделать?
обновляйтесь, товарищи =)

#rm /usr/src/linux
#ln -sf /usr/src/linux-2.* /usr/src/linux
#cd /usr/src/linux
#make mrproper
#make menuconfig
#make clean && make && make modules_install
#cp arch/*/boot/bzImage /boot/kernel-2.*
#cp .config /boot/config-kernel-2.*
#cp System.map /boot/System.map-kernel=2.*

ручками все надо делать, ручками =)
_________________
Blame!