如何将 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) 是正确的设备。这就是为什么我想在 img 文件中添加一个 UUID,以便启动设备始终相同。

如何将 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=。)

相关内容