[SOLVED]И снова GRUB2 vs UUID...
Доброго времени суток!
Устанавливаю я Gentoo на новый компьютер. При загрузке с LiveCD_minimal жёсткие диски определяются следующим образом:
# parted -l Модель: ATA ST3000DM001-1CH1 (scsi) Диск /dev/sda: 3001GB Размер сектора (логич./физич.): 512B/4096B Таблица разделов: gpt Disk Flags: Номер Начало Конец Размер Файловая система Имя Флаги 1 1049kB 3146kB 2097kB grub bios_grub 2 3146kB 137MB 134MB ext2 boot 3 137MB 21,1GB 21,0GB ext4 rootfs 4 21,1GB 3001GB 2979GB ext4 storage Модель: ATA Hitachi HDS72101 (scsi) Диск /dev/sdb: 1000GB Размер сектора (логич./физич.): 512B/512B Таблица разделов: msdos Disk Flags: Номер Начало Конец Размер Тип Файловая система Флаги 1 32,3kB 1000GB 1000GB primary xfs
Cоответственно, при формировании конфига груба grub2-mkconfig -o /boot/grub/grub.cfg
в конфиге появляются такие строки
echo 'Загружается Linux 3.15.5-hardened-r2 …' linux /vmlinuz-3.15.5-hardened-r2 root=/dev/sda3
При загрузке новоустановленной системы ядро паникует (не находит корень) из-за того, что теперь (в этой новой системе) /dev/sda - уже диск 1TB.
Если перед загрузкой в меню груба руками изменить строчку
linux /vmlinuz-3.15.5-hardened-r2 root=/dev/sda3
на
linux /vmlinuz-3.15.5-hardened-r2 root=/dev/sdb3
то всё нормально загружается.
Если снова загрузиться с LiveCD_minimal, то диски снова именуются 3TB - /dev/sda, 1TB - /dev/sdb.
Теперь вопрос, если загрузка системы напрямую зависит от строки, где раздел указывается как /dev/sd*, то какой толк тогда от UUID?
Ладно первый груб не использовал UUID для загрузки ядра, но почему второй груб тоже этого не делает?
- Для комментирования войдите или зарегистрируйтесь
.
Есть мнение, что здесь на UUID (или может лучше сразу LABEL) нужно переписать и
/etc/fstab
.:wq
--
Live free or die
Anarchist написал(а): Есть
Дык он то переписан (fstab) и там всё ок, но какое отношение он имеет? груб чихал на fstab с высокой колокольни...
Вообще, по умолчанию
Вообще, по умолчанию grub2-mkconfig при генерации Linux конфигураций для указания корневого раздела использует UUID, есть даже соответствующий параметр для отключения использования UUID (GRUB_DISABLE_LINUX_UUID=true), его нужно прописывать в /etc/default/grub, что бы использовать /dev/sdXY для именования корня.
Но ядро само по себе не умеет определять корень по UUID, для этого нужно использовать initramfs (initrd), чего у тебя видимо нет, поэтому grub2-mkconfig и не стал прописывать корень через UUID.
Отсюда вывод: не читаешь ты документацию, если читаешь - то не понимаешь, если понимаешь - то не так.
В общем, если тебе нужен UUID в конфиге GRUB2, то используй initramfs, а до тех пор ССЗБ.
Иди читай документацию прежде, чем кричать, что всё криво работает. По криво работаешь ты сам.
kostik87 написал(а): Но ядро
Ага, теперь всё ясно. За 10 лет ничего не изменилось. А я надеялся, эх...
Костик, ты не совсем прав.
Костик, ты не совсем прав. Еще и другого в кривизне упрекаешь. Ядро таки умеет UUID без инитрамы (правда таки PARTUUID), но в свете вопроса – монтирования корня по идентификатору без инитрамы – это несущественно.
Да, спасибо за то, что
Да, спасибо за то, что поправили.
т.е. мне нужно прописать в
т.е. мне нужно прописать в /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="root=PARTUUID=XXXXXXXXXXXXXX"
я правильно понял?
я навскидку не помню в какую
я навскидку не помню в какую переменную вписывать, но верно. можно еще добавить rootfstype= и rootflags= по необходимости.
Ну, в общем, это
Ну, в общем, это
GRUB_CMDLINE_LINUX_DEFAULT="root=PARTUUID=XXXXXXXXXXXXXX"
работает, но по сути - костыль, т.к. просто добавляет значение в конец строки. Получается что-то типаlinux /vmlinuz-3.15.5-r2 root=/dev/sda3 ro root=PARTUUID=ХХХХХХХХХХХХХХХХХХ
Пробовал из меню самого груба изменять
root=/dev/sda3
на разные значения - загружается, т.е. последняя директиваroot=
перебивает первую.Как правильно, всё-таки?
Цитата: Как правильно,
Редактируй конфиг grub.cfg руками.
Как правильно?Вариантов
Как правильно?
Вариантов масса. я для себя сделал в grub.cfg скриптоту, которая сама читает из файла список ядер и их параметров и формирует меню динамически. Можно еще освоить-таки параметры грабовской генерилки.
Да, и стоит указать, что несмотря на логичность решения root=PARTLABEL, оно не поддерживается – что бы ни писали в интернетах.
kostik87
годы идут, софт развивается ...а мы всё по старинке, руками правим
что-то не кажется мне этот способ правильным, по крайней мере по отношению к grub2
почему?
>>по старинке Ну да, в metro
>>по старинке
Ну да, в metro удобнее наверное. «ничего не править руками» это явно даже не только не в этот дистро, но даже и не в ту ОС. Когда автоматизация от апстрима не устраивает – пишем ее сами. Никакое решение не удовлетворит всех и каждого.
>>не кажется мне этот способ правильным
а нафига тогда у граба2 есть (убогенький конечно), но таки интертрепатор? почему бы им и не пользоваться?
>>почему?
почему _что_именно_ ?
sspphheerraa
Например, сейчас у меня:
Поэтому правлю руками, т.к. в 99% случаях исправление - смена версии ядра или раздела с корнем
имхо, нету смысла тратить времени на автоматизацию
Beelzebubbie
почему_вот_это
просто интересно
да я и запретил. просто так.
да я и запретил. просто так. :D
…
вероятно, кто-то счел лишним соответствующий код – поскольку LABEL это неТРУЪ, ибо может запомнить каждый. ну и несколько сотен байтов опять же сэкономили.
Только учти, что UUID и
Только учти, что UUID и PARTUUID - это разные вещи. UUID - это идентификатор файловой системы, а PARTUUID - это идентификатор раздела. Причем последний присутствует только если диск разбит с помощью GPT: при использовании MBR никаких PARTUUID нет.
Цитата: Причем последний
Вы не правы:
# blkid /dev/sda1: LABEL="PQSERVICE" UUID="12E6EF4FE6EF3221" TYPE="ntfs" PARTUUID="9293a969-01" /dev/sda2: LABEL="Acer" UUID="944A6F2B4A6F0976" TYPE="ntfs" PARTUUID="9293a969-02" /dev/sda3: UUID="B0EAE837EAE7F78C" TYPE="ntfs" PARTUUID="9293a969-03" /dev/sda4: UUID="Yy2Xfp-GRwj-ozYm-TFJQ-oYfo-p1A4-WpVgka" TYPE="LVM2_member" PARTUUID="9293a969-04" # fdisk -l /dev/sda Disk /dev/sda: 931,5 GiB, 1000204886016 bytes, 1953525168 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: dos Disk identifier: 0x9293a969 Устр-во Загрузочный Start Конец Blocks Id System /dev/sda1 2048 33556479 16777216 27 Hidden NTFS WinRE /dev/sda2 * 33556480 369100799 167772160 7 HPFS/NTFS/exFAT /dev/sda3 369100800 998246399 314572800 7 HPFS/NTFS/exFAT /dev/sda4 998246400 1953525167 477639384 8e Linux LVM
Ну, допустим
А не соизволите ли показать вывод
ls -l /dev/disk/by-partuuid/
?
Его нет и тем не менее, в
Его нет и тем не менее, в выводе blkid есть partuuid, другая система, где я не использую LVM (на работе) как раз монтирует корень по PARTUUID, с обычным mbr, завтра вам покажу gif`ку или запись с экрана.
Можете сами проверить то, что я написал просто вызвав утилиту
Вот выдержка из http://wiki.gentoo.org/wiki/GRUB
Перевод от google:
Так что на MBR так же есть PARTUUID.
Интересная информация.
Интересная информация. Кстати, а какие утилитки умеют назначать сей UUID/идентификатор диска? fdisk как-то давно в руки не брал, но не припомню там такого… да и вообще не попадалось.
Да, проверил, действительно
Да, проверил, действительно работает и с MBR. Признаю, что, действительно, ошибался. Гифку можешь не показывать. :)
зачем вообще grub?
$subj! есть же UEFI… если комп не особо старый
Итак, спустя 3 года,
Итак, спустя 3 года, резюмирую. Чтобы не было чехарды с разделами при загрузке, в системах без
initramfs
, необходимо задавать:в
/etc/default/grub
в
/etc/fstab
Ну и ну!
Вот это терпение!