LINUX.ORG.RU

Ядро некорректно определяет UUID

 ,


0

3

GRUB2 генерирует пункты меню для Gentoo, при этом ядру передаётся параметр root=UUID=365bd074-a4b7-4626-b7cb-3e2881bc8119. Это - UUID, который показывает ls -l /dev/disk/by-uuid а так же утилиты работы с дисками.

Но ядро с этим параметром не грузится, говорит, что не может найти указанный UUID и выдаёт список возможных. В этом списке для моего раздела выдаётся другой UUID, которого в системе по мнению ls -l /dev/disk/by-uuid вообще нет. Кто виноват и как лечить?

★★

Кто виноват

initramfs. Что-то у вас там вашей генте поломато суть UUID то что оно уникально и никак не может изментся.

В этом списке для моего раздела выдаётся другой UUID

Для файловой системы, а не раздела. И так не бывает он один раз записался в суперблок и не изменится пока не сделаешь новый mkfs.

naszar
()

root=UUID будет работать только при загрузке с initramfs. Если хочешь грузить сразу ядро, надо делать root=PARTUUID. Для диска с MBD разметкой это 32-битный ID диска + 2-значный номер раздела. Например, у меня:

root=PARTUUID=000be4ff-02
Узнать disk identifier можно через fdisk -l.

mtk
()

Есть один нюанс, пункты меню с PARTUUID не получится генерировать через grub-mkconfig.

Не поверишь, буквально 10 минут назад решил изучить этот вопрос (надоело руками менять /dev/sd{a,b,c} после перетыкания дисков), нашел баг: http://savannah.gnu.org/bugs/?35937.

Grub2 can boot with root=UUID but needs an initrd.

Currently it's possible to boot with «root=PARTUUID=» and I'm doing it on my system.

The only culprit is that 'grub-mkconfig -o', '10_linux' script and '/etc/default/grub' does not make the proper input into grub.cfg ;)

Только фиксить его никто не собирается.

mtk
()
Ответ на: комментарий от mtk

Понял, спасибо. У меня GPT, смотрю через gdisk. Что из этого меня интересует?

Partition GUID code: 0FC63DAF-8483-4772-8E79-3D69D8477DE4 (Linux filesystem)
Partition unique GUID: 1A01E047-4E0D-4CDC-BB4E-C518281E369C
Valdor ★★
() автор топика

как полумера: в файле

/etc/default/grub
раскомментируй
GRUB_DISABLE_LINUX_UUID=true
ну и потом
grub2-mkconfig -o /boot/grub/grub.cfg
соответственно.

Waldo-de-Kard ★★
()
Последнее исправление: Waldo-de-Kard (всего исправлений: 1)
Ответ на: комментарий от Valdor

Тебе нужен Partition unique GUID, этот идентификатор прописан в самом GPT и ядро его подхватит через PARTUUID. GUID code хранится, насколько я понимаю, на разделе, и соответствует /dev/disk/by-uuid/*.

mtk
()
Ответ на: комментарий от Valdor

раскомментируй

GRUB_DISABLE_LINUX_UUID=true

Будь готов к тому, что система станет незагружаемой после перетыкания дисков - надо будет лезть в grub editor и исправить, например, root=/dev/sda на root=/dev/sdb. Хотя это не проблема в случае ноутбука.

mtk
()
Ответ на: комментарий от mtk

Да, я знаю про это, но я пока не планирую менять диски - всего хватает.

Valdor ★★
() автор топика
Ответ на: комментарий от mtk

после перетыкания дисков

Глазами не видел, но злые языки поговаривают, что UUID было придумано из-за того что устройства именуются по порядку определения.. т.е. не факт что то что было /dev/sda во время данной загрузки не станет /dev/sdb при следующей. У тебя есть 100% уверенность, что имена типа /dev/sdX - инвариант?

naszar
()
Ответ на: комментарий от naszar

на моих двух компах всегда один порядок

anonymous
()
Ответ на: комментарий от naszar

В том-то и дело, что sda/sdb меняются, а grub-mkconfig (у меня) генерирует всегда root=/dev/sdXY (не умеет в PARTUUID), соответственно, приходится иногда при загрузке лезть в редактор меню, исправлять и запускать руками. Вариант с root=UUID=.. не канает ибо нету initramfs (религия).

mtk
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.