继“免维护”问题在这里,我知道有一些方法可以自动生成 grub2 菜单项,但我需要不时手动编辑/添加它们,例如
- 到实时 Linux 系统,或者
- 添加新的 ISO 启动项(存在于另一个磁盘上)时。
几乎所有 grub2 介绍文档都使用以下形式
set root=(hd2,gpt7)
我知道这在我的情况下会失败,因为我需要不时地在我的机器之间移动我的硬盘,并且当发生这种情况时,上述格式肯定会被破坏。
尽管有可能我无法使用 UUID 指定我的根文件系统(和在这里失败了太),我也不想使用UUID,因为当我格式化分区时(安装新操作系统时),该分区的UUID将会改变。
那么更好的选择是什么?
- 最重要的是,GPT 分区标签是最好的候选者,因为我可以确保它们在我的所有机器中都是唯一的,即使当我四处移动我的硬盘时也是如此。然而,这样做似乎有问题:“我无法使用 PARTLABEL 安装设备”。
但是,它应该是有希望的,因为我可以看
从 4.20 开始,还支持 PARTLABEL <github.com/torvalds/linux/blob/v4.20/init/do_mounts.c>,我认为这非常方便。也许更新答案。 – equaeghe 1 月 20 日
- 第二好的是
PARTUUID
。然而,互联网上流传着一些令人困惑/相互矛盾的答案。
那么,是否可以使用PARTLABEL
最新PARTUUID
的 grub2?
答案1
检查 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
}