Как добавить UUID в таблицу разделов файла образа диска (.img)

Как добавить UUID в таблицу разделов файла образа диска (.img)

В настоящее время я создаю файл образа диска (используя mtools и parted), который включает grub, файловую систему и загружает ядро ​​Linux.

Используемый мной для этого grub.cfg выглядит так:

insmod part_gpt

menuentry "test image" {
         linux (hd0,gpt1)/bzImage.efi root=/dev/sda1 console=tty console=ttyS0,115200 primary
         initrd (hd0,gpt1)/fs.cpio.gz
}

Но это всегда предполагает, что устройство (hd0,gpt1) является правильным устройством. Вот почему я хотел бы добавить UUID в файл img, чтобы загрузочное устройство всегда могло быть одним и тем же.

Как добавить UUID в таблицу разделов? Я не могу использовать права root.

решение1

Таблицы разделов GPT уже имеют один. У вашей корневой файловой системы тоже есть один. Запустите, blkid disk.imgчтобы получить их список – он покажет UUID файловой системы как UUID=и UUID раздела как PARTUUID=.

К сожалению, похоже, что текущие версии GRUBпока не поддерживаютс использованием UUID разделов. Когда поддержка будет добавлена, она будет доступна по search.partuuidкоманде.

Между тем вам, вероятно, придется использовать вместо этого UUID файловой системы:

search.fs_uuid --no-floppy --set=root e9ad79d7-...-e3c445c7f4e9

Теперь вы можете ссылаться на пути как ($root)/bzImage.efiили просто как , /bzImage.efiпоскольку $root автоматически применяется ко всем ссылкам на пути.


Не забудьте обновить root=параметр Linux соответствующим образом. При использовании initramfs, это должен быть формат, который понимает ваш initramfs. (Когданетпри использовании initramfs единственный вариант — root=PARTUUID=.)

Связанный контент