目前我正在建立一個磁碟映像檔(使用 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
現在您可以引用路徑 as($root)/bzImage.efi
或簡單地引用路徑/bzImage.efi
,因為 $root 會自動套用於所有路徑參考。
不要忘記root=
相應地更新 Linux 參數。使用 initramfs 時,它需要是 initramfs 能夠理解的格式。 (什麼時候不是使用 initramfs,唯一的選擇是root=PARTUUID=
。