假设您在 /dev/sda 上有一个“主”GRUB,带有几个 linux 内核,并且在 /dev/sdb2 上还有一个辅助 linux 发行版。
计算机启动到 /dev/sda GRUB。从那里,如何在 /dev/sdb2 中启动内核?
当您在 /dev/sda 中的发行版中更新 grub 时,OS-prober 将检测 /dev/sdb2 中的那些并在(/dev/sda)/boot/grub/grub.cfg
.
但这很不方便,因为当您安装新内核或更改 /dev/sdb2 发行版中的引导选项时,这将更新(/dev/sdb2)/boot/grub/grub.cfg
但不会更新主 grub.cfg。
如何让主 GRUB 读取并合并来自辅助 GRUB 的条目?
有一个 GRUB 命令,手册中没有记录,它精确解析配置文件,提取条目并忽略配置的其余部分:
extract_entries_source
。这样,对二级发行版的 GRUB 菜单条目的任何更改都将自动考虑到主 GRUB 的菜单中。在主(“主机”)分布中
在 中添加自定义条目
/etc/grub.d/40_custom
:分区的(文件系统的)UUID 可以通过
blkid
.您还需要阻止 GRUB 使用 OS-prober 自动填充菜单。这是在某些分区中配置的
/etc/default/grub
,可以全局禁用,也可以选择性地禁用(参见GRUB 手册)。GRUB_DISABLE_OS_PROBER
GRUB_OS_PROBER_SKIP_LIST
然后就可以了
update-grub
。在二次分配中
没有什么可做的,因为
/boot/grub/grub.cfg
文件只会被读取它的条目并且永远不会被实际执行。您可能希望在那里完全禁用 OS-prober,因为当集成到主 GRUB 菜单中时,这些条目将是多余的。