LINUX.ORG.RU

Kernel panic: VFS: Unable to mount root


0

0

Здравствуйте, Это мой первый опыт с Linux. И сразу поставлена задача. Стоит Linux RedHat 9. Требуется сменить ядро 2.4.20-8 родное для RH9 на ядро 2.4.31 скачанное с kernel.org. Пробную попытку делаю на виртуальной машине (VMW). Все по руководствам, что нашел в инете. Установку ядра делаю по такому порядку: Кладу исходники в usr/src/linux. Ничего не конфигурирую через make memuconfig. make dep make clean make install make modules make modules_install. Начинаю править lilo.conf: Добавляю секцию image="/boot/vmlinuz-2.4.31" label="2.4.31" root="/dev/sda1" read-only

В другой секции с vmlinuz-2.4.20-8 нет root= но есть initrd=vmlinuz-2.4.20-8.img.

Далее lilo -v.

Перезагружаюсь и при загрузке нового ядра выдается чтото типа этого: .....Cannot open root device.... Kernel panic: VFS: Unable to mount root fs on 80:01. В чем проблемма.

не делал make menuconfig ??? и откуда тогда уверенность,что в ядре есть поддержка твоей root fs ?

sasha999 ★★★★
()

make menuconfig - просто необходимая вещь. без нее ничего не получится. если уж качаешь ядро в исходниках, то без этого ну никак нельзя. Если уж сложно его правильно сконфигурировать, можешь поискать готовый пакет с уже собранным ядром и модулями для твоего дистрибутива и твоего процессора.

devinull ★★
()

Посмотрел поподробней конфигуратор menuconfig. На мой взгляд там все настроено на среднего пользователя. Рука не поднимается где-то поставить галочку, все вроде ненужное. А где выставляется поддержка root fs в menuconfig ?

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

там же, где подержка всех fs ;-)

PS: стартуйте с готового рабочего конфига (у Вас же ядро от RH уже работает, верно), положите его в директорию с исходниками и обзовите config.

Затем уже make menuconfig && etc Вам в помощь...

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

Для того, чтобы в ядре подцепить конфиг от ДРУГОГО ядра, надо использовать make oldconfig, иначе конфигурация ядра может "потечь".

Читайте доки к ядру.

P.S. конфиг от 2.4 крайне не рекомендуется класть 2.6

Deleted
()

Как должен называться пункт меню указывающий на root fs. Я ищу в File system, но там ничего подобного нет. И где лежит конфиг рабочего ядра RH.

Затем как я понял надо скопировать и переименовать этот конфиг в src/linux, потом команда make oldconfig, а потом make menuconfig если надо чтото подправить.

Извините за тупые вопросы, но я только учусь.

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

Для RedHat'ов акиомой является следующая команда:

cd /usr/src/linux ; cp /boot/config-`uname -r` /usr/src/linux ; make oldconfig

Кто не сделал - не говорите, что вас не предупреждали.

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

cd /usr/src/linux ; cp /boot/config-`uname -r` /usr/src/linux/.config ; make oldconfig

Может, так?

Deleted
()

Скопировал конфигурацию с рабочего ядра. Загрузил ее не по make oldconfig, т.к. выдавалась ошибка (непомю какая), а через меню menuconfig командой "Load an Alternate configuration file". Потом откомпилировал. Этот процес затянулся надолго, особено при сборке модулей. Видимо была включена поддержка большого количества железа, я сам просто не заглядывал, ведь проблема была в другом. Затем отредактировал lilo.conf - добавил загрузку с новым ядром со строкой root=/dev/sda1 и перезагрузился, но опять таже ошибка. Начал дальше. Прочитал FAQ и решил проблемму. Просто раньше читал другой FAQ - kernel-HOWTO. В моем случае файловая система была собрана модулем и необходимо было создать initrd, и прописать в lilo.conf вместо "root=" "initrd = /boot/initrd-2.4.31.img " созданный командой mkinitrd. Прочитал и понял, что использование initrd не желательно, поэтому вопрос: как в конфигураторе ядра отказаться от его использования. Там по видимому надо напротив своей ФС поставить не [M], а [x]. Где надо поставить галки если у меня fs EXT3 ?

Большое СПАСИБО всем за помощь!

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

в корне -- File systems -> (*) Ext3 journalling file system support

но это кстати не все -- тебе еще надо включить в ядро поддержку своего scsi-контролёра

использование initrd вовсе не нежелательно но требует немножко больших телодвижений

anonymous
()
Ответ на: комментарий от jackill

jackill,

в факе не отработан один довольно тонкий момент. когда ставишь на fc2 со скайзи-контроллером новое ядро с кернел.орг там нужно сделать хитрый финт ушами -- по умолчанию mkinitrd создает initrd размером 8 мег, а в ядре с кернел орг дефолтное значение в 4 мега

поэтому надо либо менять параметр в ядре либо давать в груб-лило параметр ramdisk_size=8192

по-моему редхатовцы так еще и не согласовали этот момент

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

А я не рекомендовал нигде ставить на редхатовские дистрибы ядро с кернел.орг. Очень много всего отваливаться и глючить начинает.

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

> конфиг от 2.4 крайне не рекомендуется класть 2.6

А я так на 2.6.7 переходил некогда -)

myhand
()
Ответ на: комментарий от Deleted

> чтобы в ядре подцепить конфиг от ДРУГОГО ядра, надо использовать make oldconfig, иначе конфигурация ядра может "потечь".

"потеч" - это Вы о чем? Примеры есть к-л, просто если взглянут на Makefile, то make menuconfig делает в том числе и те вещи, что make oldconfig

myhand
()

Вы не рекомендуете ставить ядро с kernel.org, а тогда откуда надо брать. Просто в документации к программе которую надо установить на Linux говориться, что для RH надо пересобрать ядро не из его исходников, а с kernel.org.

>в факе не отработан один довольно тонкий момент. когда ставишь на fc2 со скайзи-контроллером новое ядро с кернел.орг там нужно сделать хитрый финт ушами -- по умолчанию mkinitrd создает initrd размером 8 мег, а в ядре с кернел орг дефолтное значение в 4 мега

что такое "fc2", и где в конфигураторе ставиться размер initrd?

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