Я откомпилировал ядро 2.6.12.1, все прошло без ошибок. Установил. А вот после запуска пингвина со свежим ядром получаю такую ошибку:please append a correct "root=" boot option - ну с этим все ясно, думаю эта строка здесь не причем. Я так понял следующая:
Kernel panic - not syncing VFS: Unable to mount root fs on unknown-block(3,3)
Что это значит? и как с этим бороться?
Заранее спасибо!
>please append a correct "root=" boot option - ну с
>этим все ясно, думаю эта строка здесь не причем. Я так
>понял следующая:ну так написано же: correct "root="
а если correct, то значит такого устройства нет(unknown-block(3,3))>Kernel panic - not syncing VFS: Unable to mount root fs on
>unknown-block(3,3)видимо, устройство, на котором находится root fs, не существует. Причина: либо нужное устройство скомпилировано как модуль и этот модуль не присутствует в initrd.img, либо mkinitrd вообще не запускался(man mkinitrd).
block(3,3) - что это вообще за устройство то такое? поясните...
mkinitrd - что это? и как его запустить?
P.S. нельзя ли в двух словах пояснить, как все это исправить? И чтобы линукс запускался без вопросов?
>block(3,3) - что это вообще за устройство то такое? поясните...Это мажор и минор номерА рутового устройства: 3,3 - это hda3, т.к. мажор hda - 3.
>mkinitrd - что это? и как его запустить?
>P.S. нельзя ли в двух словах пояснить, как все это исправить? И
>чтобы линукс запускался без вопросов?mkinitrd делает initial ramdisk(используемый ядром при старте) и помещает в него необходимые скрипты(в которых, например, создается блочный девайс командой mknod) и модули ядра(если таковые есть) необходимые в процессе загрузки.
чтобы была возможность работать с initrd в ядре должна быть включена поддержка
CONFIG_BLK_DEV_INITRD=yНаиболее часто части ядра, необходимые, в процессе загрузки(такие как драйвера контроллеров жестких дисков) вкомпилируют в ядро, а не собирают в виде модулей.
initrd также нужен в система использующих udev
например, я собираю ядро так
make distclean
make menuconfig
make
make modules_install
makeinitrd --omit-scsi-modules --omit-raid-modules --omit-lvm-modules /path_to_initrd_img X.XX.X-XX.XX.X-X - версия ядра(mkinitrd будет искать модули в /lib/modules/X.XX.X-X)
Набор параметров для mkinitrd у Вас будет свой.
Не смотря на все мои изливания, все же стОит прочитать какой-н. HOWTO по сборке и установке ядра, ну и man mkinitrd(как я уже писал).
вот фрагмент моей конфигурации загрузчика (Grub):
title Linux XP (2.6.12.1)
root (hd0,2)
kernel /boot/vmlinuz-2.6.12 ro root=LABEL=/ hdc=ide-scsi rhgb
initrd /boot/initrd-2.6.12.img
title Linux XP (2.4.22-1.2129.nptl)
root (hd0,2)
kernel /boot/vmlinuz-2.4.22.nptl ro root=LABEL=/ hdc=ide-scsi rhgb
initrd /boot/initrd-2.4.22.nptl.imgЯ в предыдущий раз случайно убрал у строки "kernel /boot/vmlinuz-2.6.12 ro root=LABEL=/ hdc=ide-scsi rhgb" параметры. Сейчас поставил все как было и ошибка теперь такая:
VFS: Cannot open root device "LABEL=\" or unknown - block(0,0)
please append a correct "root=" boot option
Kernel panic - not syncing VFS: Unable to mount root fs on unknown-block(0,0)Почему же когда я загружаю ОС с ядром 2.4.22 такой ошибки не вылезает и загрузка проходит нормально?
И почему block(3,3) заменился на (0,0)?
В grub.conf заменить ВСЕ root=LABEL=/ на root=/dev/hdaX (/dev/hdaX - рельный раздел с root fs). Также заменить соответствующую строку в /etc/fstab
>Kernel panic - not syncing VFS: Unable to mount root fs on
>unknown-block(3,3)Такая проблема получилась после форматирования рутового раздела под reiserfs.
При этом поддержка reiserfs в ядро вкомпилена не была, а стояла модулем. После включения ее в ядро все заработало (make menuconfig в папке /usr/src/<kernel>)