[SOLVED] система не может найти корневой раздел

Доброго времени суток, дамы и господа.

Это далеко не первая установка Gentoo, в том числе и на флешку. Но все когда-то случается в первый раз. Столкнулся с очень странным поведением свежеустановленной системы.

Что ставили: install-amd64-minimal-20140904.iso
Ставили на флешку 8 гиг, разбиение - бутовый раздел (sda1, ext2) и корень (sda2, ext3). Система бездисковая - только флешка.

Ядро - стандартное, 3.14.14-gentoo. Собиралось при помощи genkernel.
GRUB (т.е. GRUB Legacy, не GRUB2) установлен в MBR флешки.

Сначала использовал "стандартный" конфиг для загрузки, с указанием root на рамдиск и real_root на /dev/sda2.

После загрузки initrd получаем сообщение, что /dev/sda2 не является корневым разделом,
Нажмите Enter для повтора,
"shell" для шелла,
"q" для пропуска
или введите раздел вручную
(привожу как можно ближе к тексту. если нужно - могу сделать фотку)

Enter и q - не помогают, shell мне не нужен, но если ручками ввести тот же раздел /dev/sda2, что указан в real_root - система продолжает загрузку.

Пробовал в fstab вместо разделов указывать метки (LABEL=ROOT - именно с такой меткой, ROOT, размечался sda2)
Пробовал при загрузке указывать root=PARTUUID=...
Добавлял ключи doscsi slowusb rootwait
Не помогает ничего.

При этом на приглашение ввести корневой раздел можно вводить и /dev/sda2, и LABEL=ROOT - система загружается дальше (с PARTUUID= не экспериментировал - но, думаю, тоже пройдет)

Подскажите, пожалуйста - в чем проблема?
Почему система грузится только после того, как имя корневого раздела введено вручную?

IVB написал(а): После

IVB написал(а):
После загрузки initrd получаем сообщение, что /dev/sda2 не является корневым разделом

конфиг груба показывайте

sspphheerraa написал(а):IVB

sspphheerraa написал(а):
IVB написал(а):
После загрузки initrd получаем сообщение, что /dev/sda2 не является корневым разделом

конфиг груба показывайте

Вот, последний:

default 0
timeout 5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title Gentoo Linux 3.14.14
root (hd0,0)
kernel /boot/kernel-genkernel-x86_64-3.14.14-gentoo doscsi nodmraid slowusb rootwait root=PARTUUID=190541b6-02
initrd /boot/initramfs-genkernel-x86_64-3.14.14-gentoo

Заодно device.map:

(hd0)   /dev/sda

И на всякий случай:

# fdisk -l

Disk /dev/sda: 7.3 GiB, 7866580992 bytes, 15364416 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x190541b6

Device    Boot     Start       End  Blocks  Id System
/dev/sda1 *         2048    499711  248832  83 Linux
/dev/sda2         499712  15364095 7432192  83 Linux

Вместо

Вместо "root=PARTUUID=190541b6-02" попробуйте указать "real_root=UUID=xxx" (подставьте соотв. UUID)

sspphheerraa

sspphheerraa написал(а):
Вместо "root=PARTUUID=190541b6-02" попробуйте указать "real_root=UUID=xxx" (подставьте соотв. UUID)

Попробовать смогу только завтра, т.к. к KVM'у этот сервак еще не подключен.
Но я на 99.9% уверен, что проблема не в этом.
UUID= (как и LABEL=) я прописывал в fstab - не помогало, причем сообщение выдавалось, что UUID=... - не корневой раздел, т.е. fstab виделся и подчитывался.

Проблема в чем-то другом.

Понять бы только - в чем...

Попробовал. Перебрал все

Попробовал.
Перебрал все варианты - без real_root, с real_root=/dev/sda2, real_root=LABEL=, real_root=PART_UUID=, real_root=UUID=.
Каждый раз после загрузки initrd выдается немного разное сообщение (1-я строка) - но результат один: система не грузится.
Кстати, попробовал в ответ на просьбу ввести раздел вручную - ввести PARTUUID= - не находит (LABEL= - находит).

>с PARTUUID= не

>с PARTUUID= не экспериментировал - но, думаю, тоже пройдет
у Вас MBR же, не GPT? не пройдет :)

Beelzebubbie написал(а): >с

Beelzebubbie написал(а):
>с PARTUUID= не экспериментировал - но, думаю, тоже пройдет
у Вас MBR же, не GPT? не пройдет :)

При наличии initrd - uuid пройдёт.

Beelzebubbie написал(а): >с

Beelzebubbie написал(а):
>с PARTUUID= не экспериментировал - но, думаю, тоже пройдет
у Вас MBR же, не GPT? не пройдет :)

Пройдет!
http://wiki.gentoo.org/wiki/GRUB

Цитата:
Since kernel 3.8 and newer it is possible to use MBR 32-bit UUID, so you can use a MBR partition table as well.
In this case PARTUUID refer to an MBR partition using the format SSSSSSSS-PP, where SSSSSSSS is a zero-filled hex representation of the 32-bit "NT disk signature", and PP is a zero-filled hex representation of the 1-based partition number.

осталось только показать этот

осталось только показать этот фокус на практике. fdisk/parted уже научились виндовые сигнатуры прикручивать? :)

Уже всё проверено:

Уже всё проверено, отсюда: http://gentoo.ru/node/28207#comment-209406 и ниже.

Там я задал такой же вопрос,

Там я задал такой же вопрос, и ответа так и не получил. Из вывода явствует (не более чем!) что ntfs разделы могут иметь PARTUUID на MBR. Однако могут ли произвольные разделы иметь PARTUUID на MBR? И какие из популярных утилит могут манипулировать PARTUUID на MBR?

Тем более что в свете данного треда NTFS, полагаю, не особо при делах :)

в случае с MBR манипулировать

в случае с MBR манипулировать с PARTUUID, естественно, нет возможности, так как это, фактически серийный номер винта+номер раздела. В моем случае ядро находит корень по PARTUUID, хотя udev /dev/disk/by-partuuid/ не заполняет. То есть в fstab все равно приходится прописывать LABEL= или UUID=. Но я не претендую на объективность...

Beelzebubbie

Beelzebubbie написал(а):
осталось только показать этот фокус на практике. fdisk/parted уже научились виндовые сигнатуры прикручивать? :)

# blkid -v
blkid from util-linux 2.24.1  (libblkid 2.24.0, 20-Jan-2013)
# blkid
/dev/sda1: LABEL="BOOT" UUID="16fdf471-10ed-47aa-a8f8-4d32fac0c316" TYPE="ext2" PARTUUID="190541b6-01"
/dev/sda2: LABEL="ROOT" UUID="915e09db-fc36-495b-a79a-769c1cfb5a87" TYPE="ext3" PARTUUID="190541b6-02"

Правда, эксперимент не чистый. Диск разбивался не при установке Gentoo, а при установке Debian 7.6.0 за пару дней до этого. Поскольку менять размеры разделов не было смысла - переразбивать не стал, просто переформатировал.

smartctl -i /dev/sda | grep

smartctl -i /dev/sda | grep '^Serial' показывает 190541b6?

Beelzebubbie

Beelzebubbie написал(а):
smartctl -i /dev/sda | grep '^Serial' показывает 190541b6?

Специально поставил smartmontools, чтобы проверить себя.
Проверка подтвердила - флешка SMART не поддерживает :)

Всё верно. По сути вам нужно

Всё верно. По сути вам нужно только root=/dev/ram0 real_root=UUID=xxx.

sspphheerraa написал(а): Всё

sspphheerraa написал(а):
Всё верно. По сути вам нужно только root=/dev/ram0 real_root=UUID=xxx.

Этот вариант проверялся (я об этом писал).

Так это была флешка (sda)?

Так это была флешка (sda)? Ради пущего обоснования, воткнул какую-то флэшку с MBR и не обнаружил (нисколько не удивившись) там PARTUUID. Вопрос так и остается – откуда он берется и как им управлять.

Beelzebubbie написал(а): Так

Beelzebubbie написал(а):
Так это была флешка (sda)? Ради пущего обоснования, воткнул какую-то флэшку с MBR и не обнаружил (нисколько не удивившись) там PARTUUID. Вопрос так и остается – откуда он берется и как им управлять.

У меня он "взялся" после того, как я разбил флешку при установке Debian 7.6.0 (я об этом уже писал).

давайте без магии – или

давайте без магии – или сообщите, как/чем именно это было сделано или же скажите «не знаю». А то получается что «после утренней каши все заработало».

Beelzebubbie

Beelzebubbie написал(а):
давайте без магии – или сообщите, как/чем именно это было сделано или же скажите «не знаю». А то получается что «после утренней каши все заработало».

OK.
Я не знаю, каким софтом сформирован PARTUUID на флешке.
Чистая флешка была извлечена из упаковки и на нее установлен Debian, с разбиением на разделы при установке.
Через пару дней на нее была установлена Gentoo, флешка при этом не переразбивалась.
В другие компы эта флешка не втыкалась.

Жаль конечно, что сей

Жаль конечно, что сей любопытный вопрос так и не решен до конца. Теория говорит – «да», на практике – подтверждается, но как воспроизвести – пока неизвестно :)

PARTUUID

PARTUUID можно изменить утилитой fdisk (проверялось на версии 2.24.1 со свежего minimal CD)

fdisk /dev/XXX
x
i
0xXXXXXXXX
r
w

Ок, все верно. Благодарю за

Ок, все верно. Благодарю за ответ :)

PARTUUID

При запуске fdisk (util-linux 2.24.1) на "чистый" диск fdisk сообщает, что на диске не распознано никакой таблицы разделов, и создает DOS'овскую таблицу, при этом генерирует случайный идентификатор диска (он же PARTUUID).

У меня такая же фигня с root

У меня такая же фигня с root на LVM, пока не понял как починить. Все грузилось и после обновления перестало.

yaleks написал(а): У меня

yaleks написал(а):
У меня такая же фигня с root на LVM, пока не понял как починить. Все грузилось и после обновления перестало.

Хреново с дому пишут :(
Я думал - я что-то неправильно сделал, а получается - ошибка в последней сборке.
И экспериментировать с сорцами (в данном конкретном случае) крайне неудобно - флешка жутко медленная, ядро собиралось почти целый день...

IVB написал(а): Доброго

IVB написал(а):
Доброго времени суток, дамы и господа.

Это далеко не первая установка Gentoo, в том числе и на флешку. Но все когда-то случается в первый раз. Столкнулся с очень странным поведением свежеустановленной системы.

Что ставили: install-amd64-minimal-20140904.iso
Ставили на флешку 8 гиг, разбиение - бутовый раздел (sda1, ext2) и корень (sda2, ext3). Система бездисковая - только флешка.

Ядро - стандартное, 3.14.14-gentoo. Собиралось при помощи genkernel.
GRUB (т.е. GRUB Legacy, не GRUB2) установлен в MBR флешки.

Сначала использовал "стандартный" конфиг для загрузки, с указанием root на рамдиск и real_root на /dev/sda2.

После загрузки initrd получаем сообщение, что /dev/sda2 не является корневым разделом,
Нажмите Enter для повтора,
"shell" для шелла,
"q" для пропуска
или введите раздел вручную
(привожу как можно ближе к тексту. если нужно - могу сделать фотку)

Enter и q - не помогают, shell мне не нужен, но если ручками ввести тот же раздел /dev/sda2, что указан в real_root - система продолжает загрузку.

Пробовал в fstab вместо разделов указывать метки (LABEL=ROOT - именно с такой меткой, ROOT, размечался sda2)
Пробовал при загрузке указывать root=PARTUUID=...
Добавлял ключи doscsi slowusb rootwait
Не помогает ничего.

При этом на приглашение ввести корневой раздел можно вводить и /dev/sda2, и LABEL=ROOT - система загружается дальше (с PARTUUID= не экспериментировал - но, думаю, тоже пройдет)

Подскажите, пожалуйста - в чем проблема?
Почему система грузится только после того, как имя корневого раздела введено вручную?

Погуглил, подумал, поэкспериментировал.

Проблема решена следующим образом:

1. Пересобрал initrd следующей командой:
genkernel --symlink --splash --no-lvm --no-mdadm --no-dmraid --e2fsprogs --disklabel ramdisk
2. В grub.conf использовал следующие параметры загрузки ядра:
kernel /boot/kernel-genkernel-x86_64-3.14.14-gentoo doscsi nodmraid slowusb rootwait scandelay=30 root=/dev/ram0 real_root=UUID=915e09db-fc36-495b-a79a-769c1cfb5a87 rootfstype=ext3
3. В fstab корневой раздел описан так:
UUID=915e09db-fc36-495b-a79a-769c1cfb5a87 / ext3 noatime 0 1

В п.1 и п.2 часть ключей выполняют другие задачи, а не решают описанную проблему (--symlink --splash --no-lvm --no-mdadm --no-dmraid из п.1 и nodmraid из п.2).

В п.1 и/или п.2 наверняка достаточно будет какого-то одного ключа для решения описанной проблемы, т.е. некоторые ключи являются "лишними". Но на эксперименты, что можно убрать - времени нет. Система грузится.

корневой раздел шифрован,

корневой раздел шифрован, надо полагать?

Beelzebubbie

Beelzebubbie написал(а):
корневой раздел шифрован, надо полагать?

Нет, форматировался стандартной mkfs.ext3 без всяких дополнительных извращений (только метку задал).

исходя из no-* и отсутствия

исходя из no-* и отсутствия шифрования – с какой целью инитрама нужна?

Beelzebubbie

Beelzebubbie написал(а):
исходя из no-* и отсутствия шифрования – с какой целью инитрама нужна?

Вы ж понимаете, что админ - существо ленивое :)
Мне проще при помощи genkernel сделать "стандартное" ядро, в которое, при необходимости, добавляются отсутствующие компоненты (как правило, не часто - обычно хватает "стандартного" набора). А genkernel собирает ядро с initrd.

Ну… гитик тут много, однако

Ну… гитик тут много, однако лишняя сущность может и не сэкономить время, а наоборот. На форуме не раз уже инитрамо-related проблемы обсуждались. Тем более подводные камни и у генкернела и у дракута таки есть и если нет желания на них натыкаться, то можно попробовать и придушить их в зародыше. Ради лени :)

Beelzebubbie написал(а):Ну…

Beelzebubbie написал(а):
Ну… гитик тут много, однако лишняя сущность может и не сэкономить время, а наоборот. На форуме не раз уже инитрамо-related проблемы обсуждались. Тем более подводные камни и у генкернела и у дракута таки есть и если нет желания на них натыкаться, то можно попробовать и придушить их в зародыше. Ради лени :)

[offtopic]
Когда Gentoo стала у нас корпоративным стандартом - установка каждой новой системы начиналась с "вылизывания" ядра, что занимало ощутимое время, т.к. стандарта на железо у нас нет, да и в самом ядре постоянно что-то меняется. Но новые серверы покупались не часто, поэтому затраты времени на общем фоне не выглядели огромными.

Потом мы пришли к тому, что проще вместо одного мощного сервера с кучей сервисов наплодить кучу виртуалок - грубо говоря, по одной на сервис. При этом Gentoo потеряла исключительный статус, т.к. иногда было проще взять чью-то готовую виртуалку с нужным сервисом, чем ставить все с нуля. Да и количество "серверов" резко возросло - тратить время на "вылизывание" каждого стало неразумным.

Так в качестве второй "стандартной" ОС стал Debian, особенно на виртуалках. Естественно, Debian всегда ставился со "стандартным" ядром. И ничего - система работает.

Так мы постепенно "осознали", что, как правило, и "стандартное" ядро нормально работает.

Ну а в случае критичных сервисов (например, выделенный MySQL сервер) - там да, стоИт Gentoo, причем ядро "вылизывалось" довольно тщательно.
[/offtopic]

И в случае с данным конкретным сервером на него сначала был водружен Debian (т.к. ставится при минимальном участии админа), и только после того, как выяснилось, что dvb карточки "стандартное" ядро "не видит", и нужно собирать свое ядро - я решил поставить на него Gentoo.

Ситуация знакомая – «некогда

Ситуация знакомая – «некогда думать, прыгать надо»? Хотя проблема изничтожения аппаратного зоопарка на моей практике решалась успешно не раз. Хотя и с большим скрипом. Таки мешает распилинг/откатинг правильной сборке системы.

IVB написал(а): Beelzebubbie

IVB написал(а):
Beelzebubbie написал(а):
Ну… гитик тут много, однако лишняя сущность может и не сэкономить время, а наоборот. На форуме не раз уже инитрамо-related проблемы обсуждались. Тем более подводные камни и у генкернела и у дракута таки есть и если нет желания на них натыкаться, то можно попробовать и придушить их в зародыше. Ради лени :)

[offtopic]
Когда Gentoo стала у нас корпоративным стандартом - установка каждой новой системы начиналась с "вылизывания" ядра, что занимало ощутимое время, т.к. стандарта на железо у нас нет, да и в самом ядре постоянно что-то меняется. Но новые серверы покупались не часто, поэтому затраты времени на общем фоне не выглядели огромными.

Потом мы пришли к тому, что проще вместо одного мощного сервера с кучей сервисов наплодить кучу виртуалок - грубо говоря, по одной на сервис. При этом Gentoo потеряла исключительный статус, т.к. иногда было проще взять чью-то готовую виртуалку с нужным сервисом, чем ставить все с нуля. Да и количество "серверов" резко возросло - тратить время на "вылизывание" каждого стало неразумным.

Так в качестве второй "стандартной" ОС стал Debian, особенно на виртуалках. Естественно, Debian всегда ставился со "стандартным" ядром. И ничего - система работает.

Так мы постепенно "осознали", что, как правило, и "стандартное" ядро нормально работает.

Ну а в случае критичных сервисов (например, выделенный MySQL сервер) - там да, стоИт Gentoo, причем ядро "вылизывалось" довольно тщательно.
[/offtopic]

И в случае с данным конкретным сервером на него сначала был водружен Debian (т.к. ставится при минимальном участии админа), и только после того, как выяснилось, что dvb карточки "стандартное" ядро "не видит", и нужно собирать свое ядро - я решил поставить на него Gentoo.

т.е помимо неослиянства генты неосилили еще и дебиан - но "корпоративный стандарт" уже завели ;)

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 ;)

Ктулху проснулся?!.. :)

Ктулху проснулся?!.. :)

Ктулху профортунился во сне

Ктулху профортунился во сне ;-S

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 ;)

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

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