Не собирается ядро
Недавно добыл gemtoo 2004.3 в сборке от XORa
Сейчас не могу пересобрать ядро
Делал я это при помщи genkernel --menuconfig
Вот что выводиться в файле /var/log/genkernel.log
* Gentoo Linux Genkernel; Version 3.1.0c[0m* Compiling Linux Kernel 2.4.28-gentoo-r4-sergei1[0m for x86[0m...
* 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[0m* 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
Вот его содержимое
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" )
Большое вам спасибо за ответ, но к сожелению мне не очень понятно
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
Я так попробую.
Мне не очень понятно ну --bootsplash - это графическая загрузка а --gensplash он для чего нужен.
Тем более я заметил когда запускаеться genkernel вот что выводиться
Т.е .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
он завершился ошибкой
Я тут подумал - выходит все дело в том , я что то напортачил в параметрах ядра?? и мне что надо заново вводить все параметры??
Как показывает практика bootsplash без gensplasha неработает. При сборке ядра используются совершенно другие флаги, и определены они в одном из make файлов в каталоге с исходниками.
Подобная ошибка при компиляции означает, что в usbdrv.c была определена импортируемая функция, а линкер её не нашёл. Как такое могло случиться? Естественно предположить, что модуль в котором эта функция определена не был скомплирован, а это могло случиться если Вы не указали сборку этого модуля.
Уважаемый ArtSh большое ВАМ спасибо за помощь
Я начал отрабатывать версию что накосячил с указанием параметров сборки ядра
Я сделал вот что - запустил такую команду
genkernel --menuconfig all
модули и bzimage собрались без проблем - что доказывает что ошибка всетаки была допущена мною в в указании параметров компиляции ядра
Но появилась новая ошибка
Вот что вывелось в коце файла genkernel.log
И тут я в недоумении - а с чем связана эта ошибка??
Я попробовал сделать вот что - посколько когда я проверил каталог /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?
hda5 у меня занят fedora core 2 и именно в ней установлен загрузчик - grub
hda6 я предназначил для gentoo
Вот параметры grub для запуска gentoo
Вот параметры fstab
Ну так вот - вывелось вот что
И что делать?
Помогите пожалуйста в этом разобраться
зачем путатся через какой-то непонятный автоматизатор genkernel - заходите в директорию, прописываете линк "linux" на ваши исходники ядра, далее меню-конфиг и тд, незабывая перед компиляцией делать make clean или make mrproper - а если ошибки - так уберите птичку в ядре напротив проблемного драйвера и собирайте без него, а там разбирайтесь что конкретно не так, ну и потом конечно не забудьте grub.conf подкорректировать что-бы он ваше ядро грузил, ато иногда оно само его не корректирует. я долго смотрел сегодня на генкернел но так и не понял - зачем он нужен?
превидите последние 15-20 строчек файла /var/log/genkernel.log
Большое спасибо ВАМ за помощь
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!
1
Я благодарю всех кто мне помог.
Сегодня я сделал вот что
- пробовал собрать ядро убирая поддержку usb устройств.
В конце концов ( после ряда экспериментов) при самой минимальном включении в ядро поддержки usb при помощи genkernela все собралось
Вот что выводилось
К сожелению при попытку запустить gentoo система валится с сообщением kernel panik
Вот параметры с какими я пробовал запустить ее из groob-a
Это fstab gentoo
А все остальное о месторасполежении gentoo я привел выше ( в других сообщениях)
Уж и не знаю что делать?
соответственно:
Уважаемый ArtSh большое ВАМ спасибо за помощь
Я сделал вот так
Но в ответ выводиться такая ошибка
Я пробовал всякие вариации - типа указания такой строчки
Честно сказать я уже слегка запутался.
Пожалуйста помогите разобраться - как я понял он почему то не может смонтировать раздел root, что делать??
Уважаеый cub спасибо Вас за ответ
Я посмотрел в .config
Этих опциий я не нашел ( а другие опции уже были включены), что они задают, или их можно просто вставить в .config
чтоб initrd отдельно потом не делать. ИМХО удобней сразу в ядро впихнуть. У меня они в Device Drivers >> Block Devices
Поддержка каких файловых систем вкомпилированы в ядро?
я так понял, что товарищ хочет грузится с initrd'a...
поэтому
#genkernel ...... --menuconfig ..... --install all
указываете там драйвера ide/sata usb, файлосистемы как модули
и вперед...
может что забыл... но если честно - не юзайте генкернел, а вкомпилите все в ядро, что необходимо системе для загрузки и закоментируйте в grub.conf строчку с initrd-*
_________________
Blame!
Уважаемые Killy, ArtSh, cub большое вам спасибо за помощь
Если бы я знал что нужно - такое ощущение что при сборке ядра я просто гдето пропустил какойто пунктик, а какой?
Я сегодня сделал вот что - взял старый ( предыдущий с минимумом usb ) запукстил genkernel c menuconfigom . Зашел в block device - янашел там пункт parallel port IDE device support - все из него включил модулями, ядро собралось - начал загружаться (с параметрами которые написал ArtSh) - но выводиться таже ошибка.
Все по умолчанию - рейзер фс тоже включен.
cub написал
А разве можно без него обойтись.
Мне лично всеравно есть он или нет - главное чтоб система запустилась