grub, самосборное ядро и rootfs по uuid

Итак, ядро у меня собранное самостоятельно (без genkernel). Запускалось по

title Gentoo
root (hd0,0)
kernel /boot/kernel root=/dev/sda2

Захотелось мне сделать загрузку по UUID. Естественно, сделал

kernel /boot/kernel root=UUID=rootuuid

где rootuuid - uuid вон того /dev/sda2

Разумеется, система не загрузилась ;) То есть, загрузилось ядро, определило все оборудование, но при переходе к корневому разделу система падала. Весьма естественно, если перед этим почитать этот мануал. Параметр root просто не поддерживает такой фичи, как root. Чисто наугад мне удалось с первого же раза подобрать параметр real_root, который прекрасно заработал с UUID.

Теперь же хочется понять, что он делает (в интернете материалов по этому так и не нашел). Помнится, он использовался при genkernel'ом ядре, но тогда корневая ФС грузилась сначала с initrd, но ядро получало опцию real_root, то есть "мол, настоящий-то корень вот там" и благополучно загружало систему. Но что означает эта опция здесь - для меня пока загадка. Правда, есть идея, что за первый корень загрузчик считает тот раздел, где лежит ядро.

Кто-нибудь может прокомментировать написанное?

UUID && kernel

Я тоже задавался как-то этим вопросом...
Вышел из ситуации путём создания образа initramfs с включенным в него "mini-udev"
Где-то на просторах gentoo-wiki есть статья про создание "самостийного" initramfs.
Ссылку дать не могу - не помню :)

Спасибо, не надо, я же

Спасибо, не надо, я же написал: все работает лишь с

kernel /boot/kernel real_root=UUID=rootuuid

только хочется понять, почему это работает и как.

А по label оно умеет?:)

А по label оно умеет?:)

да

да

Альтернативное решение

Вопрос не стоит как реальзовать, но решил привести еще одно решение:

root=/dev/disk/by-uuid/<UUID>

пока все работает

Хорошее решение, причем можно

Хорошее решение, причем можно было до него догадаться, а я-то не сообразил.

Теперь хочется, понять, чем лучше тот или иной вариант. *Ушел читать искать документацию*

UPD Интересно, а откуда берется файловая система устройств /dev на этапе загрузки ядра до инициализации корневой ФС? Ведь она формируется с помощью udev, как я понимаю, а это программа, которую нужно прочесть с корневой ФС.

# genkernel --no-clean

# genkernel --no-clean --disklabel initrd
# less /usr/share/genkernel/modules/README ; genkernel --help
# genkernel --integrated-initramfs --disklabel --lvm2 all

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Цитата: Но что означает эта

Цитата:
Но что означает эта опция здесь - для меня пока загадка. Правда, есть идея, что за первый корень загрузчик считает тот раздел, где лежит ядро.

загруженому ядру пофиг где оно лежит! ему важно тока знать, где находятся его модули и программа init;-) для этого мы и указываем параметр root.
real_root нужен только тогда, когда необходимо решить задачу типа unzip.zip (проблема яйца и курицы). Такое возникает при использовании initramfs. Например: корень находится на разделе с файловой системой ext3, а поддержка этой файловой системы вынесена в модуль. Тогда необходимый модуль помещается в cpio архив и монтируется в качестве корня, после определения файловой системы рельного корня вступает в силу параметр real_root и корень перемонтируется. Далее всё как обычно.
почему root по UUID не монтируется, а real_root монтируется мне, честно говоря, не понятно пока, ибо

find /usr/src/linux/Documentation/ -type f -exec grep real_root {} \;

говорит, что в документации к ядру про эту опцию ни слова. Однако среди результатов поиска гугля заметил, что между вашими параметрами и паракметрами у других есть одно отличие: там везде udev дописывают к параметрам ядра. Думаю, что стоит попробовать ;-)

Все прекрасно работает и так,

Все прекрасно работает и так, без udev. Проверил список процессов - udev daemon запущен, все в порядке. Да и никаких проблем не замечал.

Интуиция мне подсказывает, что раз опция noudev запрещает udev, то udev должна его принудительно запускать, а у меня это и так происходит.

Пробовать пока не буду, потому что это дело работает на серваке, который находится примерно в 250 км от меня, и мне что-то не хочется экспериментировать ;) (хотя о fallback знаю).

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".