Derzeit erstelle ich eine Disk-Image-Datei (mithilfe von mtools und parted), die Grub und ein Dateisystem enthält und einen Linux-Kernel bootet.
Die grub.cfg die ich dafür verwende sieht folgendermaßen aus:
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
}
Dabei wird jedoch immer davon ausgegangen, dass das Gerät (hd0,gpt1) das richtige Gerät ist. Aus diesem Grund möchte ich der img-Datei eine UUID hinzufügen, damit das Startgerät immer dasselbe sein kann.
Wie füge ich der Partitionstabelle eine UUID hinzu? Ich kann keine Root-Berechtigungen verwenden.
Antwort1
GPT-Partitionstabellen haben bereits eine. Ihr Root-Dateisystem hat auch eine. Führen Sie blkid disk.img
sie aus, um sie aufzulisten – es werden die Dateisystem-UUIDs als UUID=
und die Partitions-UUIDs als angezeigt PARTUUID=
.
Leider scheinen aktuelle GRUB-Versionennoch nicht unterstützenmithilfe von Partitions-UUIDs. Wenn die Unterstützung hinzugefügt wird, ist sie unter dem search.partuuid
Befehl verfügbar.
In der Zwischenzeit müssen Sie stattdessen wahrscheinlich eine Dateisystem-UUID verwenden:
search.fs_uuid --no-floppy --set=root e9ad79d7-...-e3c445c7f4e9
Jetzt können Sie Pfade als ($root)/bzImage.efi
oder einfach durch referenzieren /bzImage.efi
, da $root automatisch auf alle Pfadreferenzen angewendet wird.
Vergessen Sie nicht, den Linux- root=
Parameter entsprechend zu aktualisieren. Wenn Sie ein initramfs verwenden, muss es ein Format sein, das Ihr initramfs versteht. (WennnichtBei Verwendung eines Initramfs ist die einzige Option root=PARTUUID=
.)