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.img
para 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.partuuid
comando.
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.efi
o simplemente /bzImage.efi
porque $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=
.)