Cómo agregar UUID a la tabla de partición de archivos de imagen de disco (.img)

Cómo agregar UUID a la tabla de partición de archivos de imagen de disco (.img)

Actualmente estoy creando un archivo de imagen de disco (usando mtools y parted) que incluye grub, un sistema de archivos y arranca un kernel de Linux.

El grub.cfg que uso se ve así:

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
}

Pero esto siempre supone que el dispositivo (hd0,gpt1) es el dispositivo correcto. Es por eso que me gustaría agregar un UUID al archivo img para que el dispositivo de arranque sea siempre el mismo.

¿Cómo agrego un UUID a la tabla de particiones? No puedo usar permisos de root.

Respuesta1

Las tablas de particiones GPT ya tienen una. Su sistema de archivos raíz también tiene uno. Ejecute blkid disk.imgpara enumerarlos; mostrará los UUID del sistema de archivos como UUID=y los UUID de partición como PARTUUID=.

Desafortunadamente, parece que las versiones actuales de GRUBtodavía no apoyoutilizando UUID de partición. Cuando se agregue el soporte, estará disponible bajo el search.partuuidcomando.

Mientras tanto, probablemente tendrás que usar un UUID del sistema de archivos:

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

Ahora puede hacer referencia a rutas como ($root)/bzImage.efio simplemente /bzImage.efiporque $root se aplica automáticamente a todas las referencias de rutas.


No olvide actualizar el root=parámetro de Linux en consecuencia. Cuando se utiliza initramfs, debe ser un formato que su initramfs comprenda. (Cuandonousando initramfs, la única opción es root=PARTUUID=.)

información relacionada