LINUX.ORG.RU

Gentoo: ядро не стартуется.


0

1

Приветсвую всех.

Установил Gentoo из под Ubuntu LiveCD
используя этот метод: http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?full=1
и метод установки системы из под другой операционной системы: http://www.gentoo.org/doc/en/altinstall.xml.
Установка прошла гладко, не было косяков на взгляд. Но ядро все же не запустилось.
Для установки использовал ручную установку ядра kernel-2.6.38-r6. Так как установка genkernel, по очень странным причинам не выполняла установку модулей. Initram*.. просто отсуствовал в папке /boot. Я так-же как вариант брал из самого minimalcd загруженного config.gz и скидывал в саму установке genkernel all. Увы и тогда модули не ставились вообще. Вобщем решил все таки вплотную ставить вручную, для гибкости.

Вобщем. Я запустил компьютер, как увидел на клавиатуре что клавиатура внятно стала мигать, а загрузка напрочь встала.
---------------------------------------------------------------------------------------------
Собственно вот:::::::::

Input: AT Translated .. Set keyboard as /devices/...
Input ImPS/2 Generic Wheel Mouse as /devices/platform
md: Waiting for all devices to be available before autodetected.
md: Autodetecting RAID arrays.
md: Scanned 0 and added 0 devices.
md: autorun ...
md: ... autorun DONE.
BOOT-NFS: no NFS server addres .. trying floppy.
VFS: Unable to mount root device «sda6» or unknown-block(2,0)
Please append a correct «root = » boot option: here are the available partitions:
Kernel-Panic - not syncing VFS: Unable to mount
PId: 1: comm: wrapper Not tainted 2.6.38-gentoo-r6 #2
Call Trace:
[<c13550ff>] ? panic+0x4d/0x130
[<c14a8bf5>] ? mount_block_root+0x161/0x175
[<c10031b7>] ? sys_mknod+0x13/0x17
[<c14a8c9f>] ? mount_root+0x96/0x9d
[<c14a8de8>] ? prepare_namespace+0x142/0x172
[<c14a8397>] ? kernel_inid+0x177/0x182
[<c14a8220>] ? kernel_init+0x8/0x182
[<c10033b6>] ? kernel_...._helper+0x6/..
---------------------------------------------------------------------------------------------
Мои попытки(пытки):

1. Я предположил что, что-то в grub.conf настроено не так.
Но увы, настроено как по книге. Даж, копировать-вставить-поправить.

2. Я предположил что что-то не так в /etc/fstab.
Но так-же как по книге.

3. Я преположил, что ядро не было настроено верно.
Но я ставил в точности как по книге, не считая ppp.
Я добавил так-же помимо элементов из книги в ядро (make menuconfig - kernel setup) - Network Device Support (PPP) почти весь и usb support > USB Morem SDMA.
Так-же стаивил vwdial и ppp собственно.
Чтобы иметь интрернет после. (Skylink)
А так-же memtest в отделе (makemenuconfig - kernel - processors... ).

4. Я так-же подумал, что возможно ставить в расширенный раздел систему не стоило. Но я не уверен, так ли это.

5. Я так-же пытался ставить из Minimalcd, но увы. Интернет ppp, чтобы его взять при работе minimalcd нужен хитрый танец и посвящение в него. Которого пока не нашел.

6. Как я уже говорил, что делал по книге. Старые элементы вроде, требующие добавки в kernel я тоже просмотрел, что все правильно. Это поддержка ext4, т.п.

Если конф важен то вот:
Amd Athlon 2400+
1.25GB ram
Nvidia Videocart 7300GT
160HDD SATA (sda )

Добавляю:
Я так-же обратил внимание, что в действительности при помощи uname -m, определил что именно должна быть i686, так и stage был выбран соотвествующий. Но в книге четко указано так: (Handbook>en):

после установки ядра и модулей
cp arch/i386/boot/bzImage /boot/kernel-2.6.34-gentoo-r1

Хотя в /arch нет i686. А x86 нет файла bzImage. Я сделал как указано в книге.
-------------------------------------------------------------------------------------------
Какие у вас идеи, друзья. Как лечить такое? Как запустить систему, как заставить работать ядро.

ЗАРАНЕЕ СПАСИБО ВАМ, И ЗА ВАШЕ ВНИМАНИЕ. :))))


> Установил Gentoo из под Ubuntu LiveCD

0_o

2.6.38-gentoo-r6

Уже есть 2.6.39 и 3.0. Рекомендую использовать обычный способ установки.

ZenitharChampion ★★★★★
()
Ответ на: комментарий от ZenitharChampion

Нет такой возможности

Да, вот только у меня ppp интернет. Я напрочь не могу настроить ppp соединение в minimalcd. (Skylink AnyDATA ADU300A - Mobile Network - ppp)

lofre
() автор топика

1. Используй sysresccd
2. Похоже, у тебя либо нет дров на контроллер харда, либо нет поддержки нужной ФС

определил что именно должна быть i686

Хотя в /arch нет i686



И не должно, архитектура именно i386 (686 - это тулчейн для сборки)

devl547 ★★★★★
()
Ответ на: Нет такой возможности от lofre

Я так делал.

# nano /etc/ppp/peers/BluetoothDialup

debug
noauth
connect "/usr/sbin/chat -v -f /etc/chatscripts/BluetoothDialup"
usepeerdns
/dev/rfcomm0 115200
defaultroute
crtscts
lcp-echo-failure 0

# nano /etc/chatscripts/BluetoothDialup

TIMEOUT 35
ECHO    ON
ABORT   '\nBUSY\r'
ABORT   '\nERROR\r'
ABORT   '\nNO ANSWER\r'
ABORT   '\nNO CARRIER\r'
ABORT   '\nNO DIALTONE\r'
ABORT   '\nRINGING\r\n\r\nRINGING\r'
''      \rAT
OK      'AT+CGDCONT=1,"IP","internet"'
OK      ATD*99***1#
CONNECT ""

По «pon BluetoothDialup» всё соединялось (можно вместо этого длинного слова скрипты назвать единицей), но при переходе в chroot не работало. Тогда я скачивал всё в первом терминале, переносил в /mnt/gentoo/usr/portage/distfiles и во втором терминале устанавилвал. Зря я релиз на нетбуке Gentoo иметь, дома SuSE.

ZenitharChampion ★★★★★
()

>Я преположил, что ядро не было настроено верно.

Но я ставил в точности как по книге, не считая ppp.

4.2. В ядре нет модулей для твоего жёсткого диска. Их надо вкомпилить прямо в ядро, не модулем. Ещё нужны в ядре модули для нужной файловой системы на / и для таблицы разделов (с последним, обычно, проблем нет).

после установки ядра и модулей

cp arch/i386/boot/bzImage /boot/kernel-2.6.34-gentoo-r1

Никогда так не делай. Можно вместо этого сделать make install, и в /boot появятся vmlinuz-$VERSION (ядро), config-$VERSION (конфиг ядра скопируется) и System.map-$VERSION (ненужный файлик такой).

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

Никогда так не делай. Можно вместо этого сделать make install, и в /boot появятся vmlinuz-$VERSION (ядро), config-$VERSION (конфиг ядра скопируется) и System.map-$VERSION (ненужный файлик такой).

гуру, и после каждого апдейта системы /boot/grub/menu.lst апдейтить? ну уж нет

do0dlez ★★
()
VFS: Unable to mount root device "sda6" or unknown-block(2,0)
Please append a correct "root = " boot option: here are the available partitions:
Kernel-Panic - not syncing VFS: Unable to mount

проверяй поддержку твоей таблицы разделов, поддержку контроллера винта, поддержку ФС, и в /boot/grub/grub.cfg укажи верное значение root, передаваемое ядру при загрузке (напр. root=/dev/sda6 , если корень должен находиться там).

cp arch/i386/boot/bzImage /boot/kernel-2.6.34-gentoo-r1

Никогда так не делай

а я делаю ещё круче. накатал небольшой скрипт, который запускает make menuconfig / make / make modules_install , после чего bzImage кидает в /boot/current, а предыдущее ядро кидает в /boot/previous-$(версия). соответственно в меню груба у меня выбор «свежее ядро», «предыдущее ядро», дабы после неуспешного апгрейда было кого грузить. живу таким образом припеваючи уже года два и не советую ТС слушать невнятные советы.

jcd ★★★★★
()
Ответ на: комментарий от jcd

а я делаю ещё круче. накатал небольшой скрипт, который запускает make menuconfig / make / make modules_install , после чего bzImage кидает в /boot/current, а предыдущее ядро кидает в /boot/previous-$(версия). соответственно в меню груба у меня выбор «свежее ядро», «предыдущее ядро», дабы после неуспешного апгрейда было кого грузить. живу таким образом припеваючи уже года два и не советую ТС слушать невнятные советы.

Именно так делают настоящие мужики!

do0dlez ★★
()
Ответ на: комментарий от do0dlez

после каждого апдейта системы /boot/grub/menu.lst апдейтить?

Лолшто? Зачем?

max@laptop ~ $ ls -l /vmlinuz
lrwxrwxrwx 1 root root 32 Июл 25 11:51 /vmlinuz -> boot/vmlinuz-2.6.37-gentoo-r6-03

/sbin/installkernel патчится, чтобы симлинк автоматически обновлялся. В конфиге граба пишем ‘kernel /vmlinuz’. Если /boot зачем-то на отдельном разделе, то симлинк делаем не в /, а в /boot. И ядро ставится одной командой ‘make menuconfig all {modules_,}install’. Ничего руками обновлять не надо.

gentoo_root ★★★★★
()
Ответ на: комментарий от do0dlez

>ЗАЧЕМ?

Чтобы автоматически обновлял симлинк /vmlinuz. Если хочешь руками — можно не патчить.

+таким «способом» засрётся /boot.

Чем он засрётся? Старыми ядрами? Так, как делает ТС (cp arch/i386/boot/bzImage /boot/kernel-2.6.34-gentoo-r1), тоже засрётся. Только файлами не vmlinuz-$VERSION, а kernel-$VERSION. А если надо, чтобы не засралось, можно опять же дописать в /sbin/installkernel удаление всех старых ядер, кроме одного старого и нового. И если делать make install, то выполнятся скрипты из /etc/kernel/postinst.d.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

Чтобы автоматически обновлял симлинк /vmlinuz. Если хочешь руками — можно не патчить.

Может я не хочу трогать что-то, что принадлежит какому-либо пакету. Если, вдруг, пакет обновится, то что будет с моими измениями? куда логичнее сделать альяс/функцию/скрипт, который будет делать всё это, но в соотвествии с твоими требованиями же

do0dlez ★★
()
Ответ на: комментарий от gentoo_root

> Никогда так не делай.
?

make -j4 -s && make modules_install && cp arch/x86/boot/bzImage /boot/

kernel /boot/bzImage root=/dev/ram0 rdinit=/linuxrc real_root=/dev/mapper/crypt_sda2 acpi_osi=Linux


и УМВР.(сорцы для initramfs прописаны в .config)

tn1
()

По убыванию.
1 Корявый menu.lst
2 Нет драйвера для контроллера жёсткого диска.(читай как SATA(в большинстве случаев))
3 Нет драйвера ФС.
4 если не это, то подумаю ещё после menu.lst, .config, /etc/fstab, ls /boot/ на pastebin

tn1
()
Ответ на: комментарий от do0dlez

>Может я не хочу трогать что-то, что принадлежит какому-либо пакету. Если, вдруг, пакет обновится, то что будет с моими измениями? куда логичнее сделать альяс/функцию/скрипт, который будет делать всё это, но в соотвествии с твоими требованиями же

Чтобы не патчить /sbin/installkernel, можно то же самое прописать в скрипте в /etc/kernel/postinst.d/. Так даже лучше.

gentoo_root ★★★★★
()
Ответ на: комментарий от tn1

>cp arch/x86/boot/bzImage /boot/

и УМВР.

Обновится ядро, вдруг не заработает, а /boot/bzImage перезаписан. Нет возможности загрузить старое ядро.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

т.е. по-твоему (пардон за фамильярность), намного лучше залогиниться под рутом (как --- не важно), пойти в /usr/src/linux, выполнить длинную команду, чем от пользователя в любом каталоге выполнить ik (у меня так)?

do0dlez ★★
()
Ответ на: комментарий от tn1

>м.б. root прописан не правильно.

В /etc/fstab можно вообще / не писать, он монтируется раньше, чем есть возможность прочитать /etc/fstab.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

> а /boot/bzImage перезаписан. Нет возможности загрузить старое ядро.
После первой удачной загрузки — mount /boot/ && cp /boot/bzImage /boot/kernel

PS надо будет написать скрипты для сего дела.

tn1
()
Ответ на: комментарий от do0dlez

>выполнить длинную команду, чем от пользователя в любом каталоге выполнить ik (у меня так)?

make install — это длинная команда? o_O Хочешь, повесь на алиас alias ik='make all {modules,}install'. Я просто говорю о том, что руками делать ‘cp arch/x86/boot/bzImage /boot/vmlinuz-`<include/config/kernel.release` && cp .config /boot/config-`<include/config/kernel.release` && cp System.map /boot/System.map-`<include/config/kernel.release`’ — это мегакостыль, если для этого уже написан installkernel и make install. При этом ещё и автоматически всё обновится, и останется старое ядро.

gentoo_root ★★★★★
()
Ответ на: комментарий от sumrak_ss

grub.conf

default 0 timeout 30

splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title Gentoo Linux 2.6.38-r6 root (hd0,0) kernel /boot/kernel-2.6.38-gentoo-r6 root=/dev/sda6

title Gentoo Linux 2.6.34-r1 (rescue) root (hd0,0) kernel /boot/kernel-2.6.38-gentoo-r6 root=/dev/sda6 init=/bin/bb

---------------- Сейчас перекомпилирую ядро с нужными модулями для ФС, таблицы дисков, ну и контроллера.

FSTAB:

/dev/sda1 /boot ext4 defaults.noauto,noatime 1 2 /dev/sda5 none swap sw 0 0 /dev/sda6 none swap noatine 0 1 /dev/cdrom /mnt/cdrom auto noauto,ro 0 0 /dev/fd0 /mnt/floppy auto noauto 0 0

proc /proc proc defaults 0 0 shm /dev/shm tmpfs nodev,nosuid,noexec 0 0

---------------------------------------------------------------------------------------------

lofre
() автор топика
Ответ на: комментарий от tn1

УХ ТЫ, дык как тогда у меня ядро грузится с одного раздела, а корень у меня на другом? дам подсказку, /etc/fstab трогается инитскриптами

do0dlez ★★
()
Ответ на: комментарий от gentoo_root

> это мегакостыль, если для этого уже написан installkernel и make install
1 напиши скрипт.
2 Зачем нужен vmlinuz, System.map(о Config догадываюсь, но считаю ненужным(/proc/config.gz))

tn1
()
Ответ на: комментарий от do0dlez

> УХ ТЫ, дык как тогда у меня ядро грузится с одного раздела, а корень у меня на другом? дам подсказку, /etc/fstab трогается инитскриптами
Эпическое недопонимание. Я намекаю, что он неправильно прописал root в menu.lst, а в fstab -правильно -> на основе этих различий можно будет сделать вывод.

tn1
()
Ответ на: комментарий от delete83

Да уже выложил

Grub.conf я выложил. Так-же fstab. menu.lst аналогичен grub.conf

lofre
() автор топика
Ответ на: grub.conf от lofre

> root=/dev/sda6

/dev/sda6 none swap noatine 0 1

Сделай вдоль. замени на sda5 и пропиши точки монтирования.

tn1
()
Ответ на: комментарий от delete83

Впрочем, подозреваю, что ext4. Загляните, пожалуйста, в конфиг ядра и скажите, как у вас установлена поддержка этой ФС? Варианты: в ядре, в модуле, отсутствует. Должно быть в ядре.

delete83 ★★
()
Ответ на: верно от lofre

На этапе загрузки fstab еще не прочитан и не влияет ни на что. Информация нужна была просто, чтобы узнать в целом таблицу разделов и используемые ФС. А так же предупредить возможные дальнейшие проблемы. На всякий случай.

delete83 ★★
()
Ответ на: комментарий от tn1

>1 напиши скрипт.

Блин, зачем? Этот скрипт уже написан: /sbin/installkernel. Поддерживает расширяемость за счёт дополнительных скриптов в /etc/kernel/postinst.d/.

2 Зачем нужен vmlinuz, System.map

vmlinuz — сжатый образ ядра, конечно, он не нужен =). System.map просто не нужен.

(о Config догадываюсь, но считаю ненужным(/proc/config.gz))

Нужен, если хочется прочитать конфиг другого ядра, а не того, которое запущено. В принципе, можно и /usr/src/linux/scripts/extract-ikconfig, но это работает только если конфиг запакован в ядро. Если выпилить конфиг из ядра, то ни /proc/config.gz не будет, ни extract-ikconfig не поможет.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

> vmlinuz — сжатый образ ядра, конечно, он не нужен =).
Жуткий костыл заместо bzImage.

Этот скрипт уже написан: /sbin/installkernel.

Как заставить его копировать /boot/bzImage -> /boot/kernel и arch/x86/bzImage в /boot? без vmlinuz, systemmap, config.

tn1
()
Ответ на: комментарий от gentoo_root

Блин, зачем? Этот скрипт уже написан: /sbin/installkernel. Поддерживает расширяемость за счёт дополнительных скриптов в /etc/kernel/postinst.d/.

я нахожу это тупостью, вначале этот скрипт копирует ядро/конфиг/карту, потом я скриптом из /etc/kernel/postinst.d/ удаляю конфиг/карту + переименовую скопированное ядро.

do0dlez ★★
()
Ответ на: grub.conf от lofre

Сейчас перекомпилирую ядро с нужными модулями для ФС

файловые системы лучше вкомпилировать в ядро, а не модулями.

sumrak_ss ★★
()
Ответ на: комментарий от tn1

>Жуткий костыл заместо bzImage.

Это и есть bzImage, вообще-то. Кто-то, видимо, никогда не видел бинарные дистрибутивы и не ставил ядро через make install, как полагается. При установке ядра копируется arch/x86/boot/bzImage в /boot/vmlinuz-$VERSION.

Как заставить его копировать /boot/bzImage -> /boot/kernel и arch/x86/bzImage в /boot? без vmlinuz, systemmap, config.

Он копирует по стандартизированным путям: ядро в /boot/vmlinuz-$VERSION, конфиг в /boot/config-$VERSION. Если надо что-то другое, пишем скрипт в /etc/kernel/postinst.d. Лично я использую так: есть симлинк в /vmlinuz -> boot/vmlinuz-$VERSION, который обновляется при make install. Путь /vmlinuz используется в грабе. В бубунте, кстати, так же сделано. Старые ядра тоже можно удалять скриптом в /etc/kernel/postinst.d, например, оставляя 3 самых новых или 3 последних по дате.

// Ты всегда устанавливаешь все пакеты, руками копируя файлы, да ещё и по левым путям, куда попало? Или это только с ядром? Всегда был и есть make install, копирующий автоматически и по правильным путям.

gentoo_root ★★★★★
()
Ответ на: комментарий от do0dlez

>потом я скриптом из /etc/kernel/postinst.d/ удаляю конфиг/карту + переименовую скопированное ядро.

Зачем удалять конфиг? Он так много весит? Если конфиг не запилен в ядро, то файл из /boot — единственный способ его достать. Переименовывать ядро тоже не нужно, версия не очевидна становится. Лучше симлинк, он, к тому же более гибкий, его можно менять хоть 5 раз в минуту, и не запутаешься, а если переименовывать ядро, но уже непонятно, как назад вернуть.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

я вот как-то живу и не путаюсь... и нахожу, что написать скрипт из 5 строчек (в котором и конфигурация, и компеляция, и установка так как нужно именно мне, а не дебианочеловеку) легче, чем исправлять последствия костыля, написанного, собственно, дебианолюдьми.

ps. странно, что ты ещё не начал рекламировать поделиё «погромиста» Леннарта

do0dlez ★★
()
Ответ на: комментарий от gentoo_root

Ты всегда устанавливаешь все пакеты, руками копируя файлы, да ещё и по левым путям, куда попало? Или это только с ядром? Всегда был и есть make install, копирующий автоматически и по правильным путям.

Почти, написал за ~30сек.(мой FM на bash + dmenu посложнее будет)

└[ # cat /root/mkernel.sh 
#!/bin/bash

function mk_kernel {
    make -j4 -s && make modules_install || exit 0
    mount /boot || exit 0
    cp /boot/bzImage /boot/kernel
    cp arch/x86/boot/bzImage /boot/bzImage
    cp .config ../config
}

cd /usr/src/linux

if [ ! -e .config ]; then
    zcat /proc/config.gz > .config || exit 0
    make oldconfig
    mk_kernel
else
    mk_kernel
м.б., что-нить подправлю.

tn1
()
Ответ на: комментарий от do0dlez

> ps. странно, что ты ещё не начал рекламировать поделиё «погромиста» Леннарта
imho, оно хорошее, правда я не осилил расшифровку dmcrypt разделов.

tn1
()
Ответ на: комментарий от gentoo_root

Да, друзья. Вы были правы в menuconfig - kernel. Обнаружил что для контроллера ATA(SATA) вообще ничего не стояло. Он был выключен в menuconfig. Сейчас поставил на добавление его я ядро (не модулем :)). Теперь выполняю компиляцию. Займет более 1 часа... (предварительно удалил старое ядро)

lofre
() автор топика
Ответ на: комментарий от lofre

и ничего...

Добавил SCSI (вплотную), ext4 стоил как полная поддержка.
Скомпилировал быстрее чем думал.
Результат: нулевой. :(

lofre
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.