Решено: ядро (GRUB) игнорирует root=/dev/sdXX (перенос системы на другой раздел)
Модератор: /dev/random
-
landgraf
- Сообщения: 2143
- Статус: *бунту ненавистник
- ОС: linux
Решено: ядро (GRUB) игнорирует root=/dev/sdXX
Собственно проблема указана в топике.
Удалил один из разделов (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?
Удалил один из разделов (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
Покажите grub.conf
У меня там явно указно root=/dev/sdXN. Копия рабочей системы нажодится еще на USB-HDD, там root, естественно другой, и все работает.
По-моему, если не указать root, ядро считает корнем тот раздел, который был корнем при компиляции ядра. Править это в ядре можно, вроде, при помощи rdev.
Вот мой 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
Код: Выделить всё
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
Ядро самосборное без initramfs
Вот эта часть вызывает подозрения. Какая версия ядра? Что используется вместо initramfs?
http://blog.r000n.net/2007/11/24/78
Посмотрите, может это поможет.
Арфы нет - возьмите бубен...
-
landgraf
- Сообщения: 2143
- Статус: *бунту ненавистник
- ОС: linux
Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX
Код: Выделить всё
uname -r
2.6.30-gentoo-r4printДрайвер файловой системы и контроллера включен в ядро (не модулем). То есть некое подобие initramfs вкомпилено в ядро? так получается? и как это проверить?
Сейчас выражение ”root=” просто не дает достаточной информации. Даже если предусматривать множество случаев поведения в ядре, это никак не может помочь при нумерации устройств, ключей шифрования или удаленного входа по сети, которые могут сильно варьироваться от системы к системе.
но в моем случае ядро прекрасно видит разделы и их номера... но пытается монтировать block(8,6)
-
Nikky
- Сообщения: 339
- ОС: Debian GNU/Linux
Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX
Я не специалист, но посмотрите ещё http://rus-linux.net/kos.php?name=papers/b...t-03initrd.html
Арфы нет - возьмите бубен...
-
landgraf
- Сообщения: 2143
- Статус: *бунту ненавистник
- ОС: linux
Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX
Nikky
я читал кучу доков по initramfs, и как я это понимаю:
в случае если в ядро включены драйвера корневой ФС и контроллера ЖД - оно само монтирует корень (указанный как раз парамером root=) и ищет там процесс init - передает ему управление и поехали
в случае если в ядро драйвера не включены (выполнены в виде модулей) то делается initramfs - некий образ диска, из которого ядро берет инфу.
В моем случае драйвера сожержатся в ядре, посему необходимости в создании initramfs нет. Собственно система так и работает в настоящий момент (c /dev/sda6). кстати, если ядру не передать параметр root=/dev/sda6 вообще - оно все равно загрузится и смонтирует этот самый корень....
я читал кучу доков по initramfs, и как я это понимаю:
в случае если в ядро включены драйвера корневой ФС и контроллера ЖД - оно само монтирует корень (указанный как раз парамером root=) и ищет там процесс init - передает ему управление и поехали
в случае если в ядро драйвера не включены (выполнены в виде модулей) то делается initramfs - некий образ диска, из которого ядро берет инфу.
В моем случае драйвера сожержатся в ядре, посему необходимости в создании initramfs нет. Собственно система так и работает в настоящий момент (c /dev/sda6). кстати, если ядру не передать параметр root=/dev/sda6 вообще - оно все равно загрузится и смонтирует этот самый корень....
-
Nikky
- Сообщения: 339
- ОС: Debian GNU/Linux
Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX
в случае если в ядро включены драйвера корневой ФС и контроллера ЖД - оно само монтирует корень (указанный как раз парамером 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
как раз из параметра root=
-
abs-o-lut
- Сообщения: 420
Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX
Код: Выделить всё
# cat /etc/fstab-
landgraf
- Сообщения: 2143
- Статус: *бунту ненавистник
- ОС: linux
Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX
а при чем тут fstab?
кстати, сейчас корень на sda6 и все нормально работает, а с sda5 даже правильная строчка не катит
конфиг ядра
Код: Выделить всё
/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
Ну и каша, я запутался даже не начав разбираться.
Можно, геометрию диска, например
Потом, скажите на каком разделе корневой каталог, на каком разделе /boot, grub.conf и fstab, при которых ядро впадает в панику.
И эта, точно ext3 в ядре включено?
Можно, геометрию диска, например
Код: Выделить всё
# fdisk -lПотом, скажите на каком разделе корневой каталог, на каком разделе /boot, grub.conf и fstab, при которых ядро впадает в панику.
И эта, точно ext3 в ядре включено?
-
proDOOMman
- Сообщения: 284
Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX
Попробуйте так:
Код: Выделить всё
title=Gentoo Linux
root (hd0,4)
kernel (hd0,0)/gentoo-304 root=/dev/sda5Ubuntu LL x86 on Acer Extensa 5635G
-
landgraf
- Сообщения: 2143
- Статус: *бунту ненавистник
- ОС: linux
Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX
И эта, точно ext3 в ядре включено?
Да, это же ядро работает с этой же самой ФС когда раздел называется sda6. Когда раздел меняет номер, ядро ни под каким соусом не хочет даже пытаться его смонтировать (Unable to mount root fs on onknown block (8,6)) 8,6 - бывший sda6
-
landgraf
- Сообщения: 2143
- Статус: *бунту ненавистник
- ОС: linux
Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX
Проблема решена выключением опции "builtin cmdline" в конфиге ядра. При включении этой опции ядро не принимает параметров извне!
-
razum
- Сообщения: 189
- ОС: Gentoo 64
Re: Решено: ядро (GRUB) игнорирует root=/dev/sdXX
Херакс новость. А оно ИИ обзавелось? Как оно корень-то ищет?!
Поищите из 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
Я особо не парился и указал у себя при таком случае
kernel (hd0,4)/2.6.30-gentoo-r5-1 root=/dev/sda6
Тоесть, мне кажется, и рут тут так же можно указать.
UPD: Сорь, не въехал в тему.
У меня эта штукень выключена. Однако, когда перетащил раздел, тоже не грузилось, спасло "грубовское" указание разделов.
kernel (hd0,4)/2.6.30-gentoo-r5-1 root=/dev/sda6
Тоесть, мне кажется, и рут тут так же можно указать.
UPD: Сорь, не въехал в тему.
У меня эта штукень выключена. Однако, когда перетащил раздел, тоже не грузилось, спасло "грубовское" указание разделов.