Решено: ядро (GRUB) игнорирует root=/dev/sdXX (перенос системы на другой раздел)

Sabayon, Calculate, Funtoo, Exherbo

Модератор: /dev/random

Аватара пользователя
landgraf
Сообщения: 2143
Статус: *бунту ненавистник
ОС: linux

Решено: ядро (GRUB) игнорирует root=/dev/sdXX

Сообщение landgraf »

Собственно проблема указана в топике.
Удалил один из разделов (sda5) после чего раздел с Gentoo стал (sda6 -> sda5), поменял grub.conf, но ядро все равно пытается монтировать block(8,6) - sda6. Перед паникой ядро выдает список разделов sda1 (/boot), sda3 (Extended), sda5 (/)
для проверки передавал ему другие параметры (sda2(3,4,7,9)) - все рано полный ноль. Ядро самосборное без initramfs (ФС и контроллер включены в ядро).
Такая же трабла была при переносе Gentoo на другой комп, но тогда я подумал, что где-то натупил.

Собстрвенно вопрос, откуда ядро берет информацию о корневом разделе, и как ее изменить? и почему игнорируется root=/dev/sdaX?
Спасибо сказали:
Eraser
Сообщения: 224
ОС: Gentoo Linux

Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX

Сообщение Eraser »

Покажите grub.conf
У меня там явно указно root=/dev/sdXN. Копия рабочей системы нажодится еще на USB-HDD, там root, естественно другой, и все работает.
По-моему, если не указать root, ядро считает корнем тот раздел, который был корнем при компиляции ядра. Править это в ядре можно, вроде, при помощи rdev.
Вот мой grub.conf

Код: Выделить всё

timeout 15
default 0
splashimage /boot/grub/splash.xpm.gz

title Gentoo Linux
        root (hd0,0)
        kernel /boot/vmlinuz video=uvesafb:1024x768-24@85,ywrap,mtrr:3 root=/dev/sda1
Спасибо сказали:
Аватара пользователя
landgraf
Сообщения: 2143
Статус: *бунту ненавистник
ОС: linux

Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX

Сообщение landgraf »

Код: Выделить всё

timeout 10
color black/cyan yellow/cyan
gfxmenu (hd0,0)/gfxmenu
default 0

title gentoo
kernel (hd0,0)/gentoo-304 root=/dev/sda5


явно указано
Спасибо сказали:
Аватара пользователя
Nikky
Сообщения: 339
ОС: Debian GNU/Linux

Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX

Сообщение Nikky »

Ядро самосборное без initramfs


Вот эта часть вызывает подозрения. Какая версия ядра? Что используется вместо initramfs?

http://blog.r000n.net/2007/11/24/78 


Посмотрите, может это поможет.
Арфы нет - возьмите бубен...
Спасибо сказали:
Аватара пользователя
landgraf
Сообщения: 2143
Статус: *бунту ненавистник
ОС: linux

Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX

Сообщение landgraf »

Код: Выделить всё

uname -r
2.6.30-gentoo-r4print


Драйвер файловой системы и контроллера включен в ядро (не модулем). То есть некое подобие initramfs вкомпилено в ядро? так получается? и как это проверить?

Сейчас выражение ”root=” просто не дает достаточной информации. Даже если предусматривать множество случаев поведения в ядре, это никак не может помочь при нумерации устройств, ключей шифрования или удаленного входа по сети, которые могут сильно варьироваться от системы к системе.

но в моем случае ядро прекрасно видит разделы и их номера... но пытается монтировать block(8,6)
Спасибо сказали:
Аватара пользователя
Nikky
Сообщения: 339
ОС: Debian GNU/Linux

Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX

Сообщение Nikky »

Я не специалист, но посмотрите ещё http://rus-linux.net/kos.php?name=papers/b...t-03initrd.html
Арфы нет - возьмите бубен...
Спасибо сказали:
Аватара пользователя
landgraf
Сообщения: 2143
Статус: *бунту ненавистник
ОС: linux

Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX

Сообщение landgraf »

Nikky
я читал кучу доков по initramfs, и как я это понимаю:
в случае если в ядро включены драйвера корневой ФС и контроллера ЖД - оно само монтирует корень (указанный как раз парамером root=) и ищет там процесс init - передает ему управление и поехали
в случае если в ядро драйвера не включены (выполнены в виде модулей) то делается initramfs - некий образ диска, из которого ядро берет инфу.
В моем случае драйвера сожержатся в ядре, посему необходимости в создании initramfs нет. Собственно система так и работает в настоящий момент (c /dev/sda6). кстати, если ядру не передать параметр root=/dev/sda6 вообще - оно все равно загрузится и смонтирует этот самый корень....
Спасибо сказали:
Аватара пользователя
Nikky
Сообщения: 339
ОС: Debian GNU/Linux

Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX

Сообщение Nikky »

в случае если в ядро включены драйвера корневой ФС и контроллера ЖД - оно само монтирует корень (указанный как раз парамером root=)


Похоже, что нет. Откуда на данном этапе ядро может знать где искать корневую ФС? Параметр root сохраняется, видимо, для совместимости. 

Формат initramfs используется по умолчанию для всех ядер, начиная с версии 2.6.15.


Прочтите все-же Костромина, материал по-моему довольно интересный. 

Код:

Листинг 4. Содержимое файла init в дистрибутиве ASP Linux версии 11. #!/bin/nash mount -t proc /proc /proc setquiet echo Mounted /proc filesystem echo Mounting sysfs mount -t sysfs /sys /sys echo Creating /dev mount -o mode=0755 -t tmpfs /dev /dev mknod /dev/console c 5 1 mknod /dev/null c 1 3 mknod /dev/zero c 1 5 mkdir /dev/pts mkdir /dev/shm echo Starting udev /sbin/udevstart echo -n "/sbin/hotplug" > /proc/sys/kernel/hotplug echo "Loading jbd.ko module" insmod /lib/jbd.ko echo "Loading ext3.ko module" insmod /lib/ext3.ko /sbin/udevstart echo Creating root device mkrootdev /dev/root echo Mounting root filesystem mount -o defaults,errors=remount-ro --ro -t ext3 /dev/root /sysroot echo Switching to new root switchroot --movedev /sysroot
Арфы нет - возьмите бубен...
Спасибо сказали:
Аватара пользователя
landgraf
Сообщения: 2143
Статус: *бунту ненавистник
ОС: linux

Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX

Сообщение landgraf »

Nikky писал(а):
19.08.2009 11:41
Откуда на данном этапе ядро может знать где искать корневую ФС?

как раз из параметра root=
Спасибо сказали:
abs-o-lut
Сообщения: 420

Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX

Сообщение abs-o-lut »

Код: Выделить всё

# cat /etc/fstab
Спасибо сказали:
Аватара пользователя
landgraf
Сообщения: 2143
Статус: *бунту ненавистник
ОС: linux

Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX

Сообщение landgraf »

а при чем тут fstab?

Код: Выделить всё

/dev/sda1               /boot           ext3            noauto,noatime  1 2
/dev/sda5               /               ext3            noatime         0 1
/dev/sdb2               none            swap            sw              0 0
/dev/cdrom              /mnt/cdrom      auto            noauto,ro       0 0
shm                     /dev/shm        tmpfs           nodev,nosuid,noexec    0 0
UUID=471D-C443           /mnt/cowon                vfat    defaults,noauto,noexec,fmask=111,dmask=000,codepage=866  0       0

кстати, сейчас корень на sda6 и все нормально работает, а с sda5 даже правильная строчка не катит

конфиг ядра
Спасибо сказали:
abs-o-lut
Сообщения: 420

Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX

Сообщение abs-o-lut »

Ну и каша, я запутался даже не начав разбираться.

Можно, геометрию диска, например

Код: Выделить всё

# fdisk -l


Потом, скажите на каком разделе корневой каталог, на каком разделе /boot, grub.conf и fstab, при которых ядро впадает в панику.
И эта, точно ext3 в ядре включено?
Спасибо сказали:
Аватара пользователя
proDOOMman
Сообщения: 284

Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX

Сообщение proDOOMman »

Попробуйте так:

Код: Выделить всё

title=Gentoo Linux
root (hd0,4)
kernel (hd0,0)/gentoo-304 root=/dev/sda5
Ubuntu LL x86 on Acer Extensa 5635G
Спасибо сказали:
Аватара пользователя
landgraf
Сообщения: 2143
Статус: *бунту ненавистник
ОС: linux

Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX

Сообщение landgraf »

И эта, точно ext3 в ядре включено?

Да, это же ядро работает с этой же самой ФС когда раздел называется sda6. Когда раздел меняет номер, ядро ни под каким соусом не хочет даже пытаться его смонтировать (Unable to mount root fs on onknown block (8,6)) 8,6 - бывший sda6
Спасибо сказали:
Аватара пользователя
landgraf
Сообщения: 2143
Статус: *бунту ненавистник
ОС: linux

Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX

Сообщение landgraf »

Проблема решена выключением опции "builtin cmdline" в конфиге ядра. При включении этой опции ядро не принимает параметров извне!
Спасибо сказали:
Аватара пользователя
razum
Сообщения: 189
ОС: Gentoo 64

Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX

Сообщение razum »

landgraf писал(а):
20.08.2009 21:12
Проблема решена выключением опции "builtin cmdline" в конфиге ядра. При включении этой опции ядро не принимает параметров извне!

Херакс новость. А оно ИИ обзавелось? Как оно корень-то ищет?!

Поищите из make menuconfig "cmdl" - там не только

Код: Выделить всё

Symbol: CMDLINE
Prompt: Built-in kernel command string

но и

Код: Выделить всё

Symbol: CMDLINE_OVERRIDE [=n]
Prompt: Built-in command line overrides boot loader arguments


Виноват, думается, второй. Но проверять желания нет - у меня оба "n"
Спасибо сказали:
Аватара пользователя
Xaktyc
Сообщения: 604
ОС: Gentoo 2008.0, WinXP

Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX

Сообщение Xaktyc »

Я особо не парился и указал у себя при таком случае
kernel (hd0,4)/2.6.30-gentoo-r5-1 root=/dev/sda6
Тоесть, мне кажется, и рут тут так же можно указать.

UPD: Сорь, не въехал в тему.
У меня эта штукень выключена. Однако, когда перетащил раздел, тоже не грузилось, спасло "грубовское" указание разделов.
Спасибо сказали: