免維護的 Grub2 菜單
繼這裡的“免維護”問題之後,我知道有一些方法可以自動生成 grub2 菜單條目,但我需要不時手動編輯/添加它們,比如
- 到實時 Linux 系統,或
- 添加新的 ISO 引導條目(存在於另一個磁碟上)時。
幾乎所有 grub2 介紹文件都使用以下形式
set root=(hd2,gpt7)
我知道在我的情況下會失敗,因為我需要不時在我的機器之間移動我的 HD,並且當發生這種情況時,上述格式肯定會中斷。
儘管我可能無法使用 UUID 指定我的 root fs(在這裡也失敗了),但我也不想使用 UUID,因為當我格式化分區時(安裝新作業系統時),該分區的 UUID 將改變。
那麼更好的選擇是什麼?
- 最重要的是,GPT 分區標籤是最好的候選者,因為我可以確保它們在我所有的機器中都是唯一的,即使我在我的 HD 周圍移動時也是如此。但是,這樣做似乎有問題:“我無法使用 PARTLABEL 安裝設備”。
但是,它應該是有希望的,正如我所看到的
從 4.20 開始,還支持 PARTLABEL <github.com/torvalds/linux/blob/v4.20/init/do_mounts.c>,我認為這非常方便。也許更新答案。– equaeghe 1 月 20 日
- 第二好的是**
PARTUUID
**。但是,網際網路上有一些令人困惑/相互矛盾的答案。
- 這裡它說格式是
PARTUUID=SSSSSSSS-PP
,但它沒有舉例說明它到底是什麼樣子,- 下一個答案給出了一個例子,但它說格式是
root=PARTUUID=666c2eee-193d-42db-a490-4c444342bd4e
那麼,是否會使用
PARTLABEL
或PARTUUID
可能使用最新的 grub2?
檢查 grub2 的配置文件類型文件和條目。
在為新的 ISO 編輯它時,我總是忘記執行 sudo update-grub。所以我將所有條目移動到我的 ISO 文件夾中的一個文本文件和標準 grub 40_custom 中的一個配置文件條目。然後我只需要編輯文本文件。
有關配置文件的詳細資訊,請參見 6.5 https://www.gnu.org/software/grub/manual/grub/grub.html#Multi_002dboot-manual-config 使用標籤和配置文件來引導另一個安裝
顯示一個 40_custom 配置文件到 ISO 文件夾中的文本文件中,一個在 hd0 上,另一個在 hd1 上。我在一個驅動器上有 ISO,可以安裝到另一個驅動器,問題較少。
https://ubuntuforums.org/showthread.php?t=2076205&p=13788092#post13788092
https://www.gnu.org/software/grub/manual/grub/grub.html#Multi_002dboot-manual-config
40_custom 中的典型條目,從不更改:
menuentry 'Live ISOs on SSD' { search --set=root --label iso_ssd --hint hd1,gpt5 configfile /livecdimage.cfg }
然後在 livecdimage.cfg 或您想要的任何文件中,複製完整的 grub2 引導節以進行 ISO 或其他安裝。任何 grub 節都可以在文本文件中。
另一個例子:
https://ubuntuforums.org/showthread.php?t=2076205&p=14020961#post14020961
我的名為 livecdimage.cfg 的配置文件範例,通常在 ISO 文件夾中有多個條目或許多 ISO:
# livecdimage.cfg menuentry "Kubuntu 21.10 Impish Live ISO" { set isofile="/ISO/kubuntu-21.10-desktop-amd64.iso" loopback loop (hd1,5)$isofile linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile toram noeject initrd (loop)/casper/initrd }