在我的系统上,我安装了两个 CentOS 7 副本和一个 Windows 10 Pro 副本。每个系统都可以启动并正常运行,并且完全是最新的(内核、软件包、功能)。
当我grub2-mkconfig
在 CentOS 的任一副本中运行时(出于某些原因,一个主机名为pingu
,另一个主机pinga
名为 ),都会创建一个新的 grub 配置。其中一部分是通过 os-prober 模板生成的。
grub2-mkconfig
我启动并启动的 CentOS 副本所生成的条目grub2-mkconfig from
是正确的。也就是说,它们具有包含如下行的菜单条目:
linuxefi /vmlinuz-5.4.147-1.el7.elrepo.x86_64 root=/dev/mapper/pinga-root ro crashkernel=auto spectre_v2=retpoline
initrdefi /initramfs-5.4.147-1.el7.elrepo.x86_64.img
但是,为 CentOS 7 的另一个副本生成的条目将如下所示:
linux /vmlinuz-5.4.147-1.el7.elrepo.x86_64 root=/dev/mapper/pingu-root ro crashkernel=auto spectre_v2=retpoline
initrd /initramfs-5.4.147-1.el7.elrepo.x86_64.img
(请注意,用linux
andinitrd
代替linuxefi
and initrdefi
)
/etc/grub.d/30_os-prober
我认为这是由于类似(etc.)中的四行所致linux ${LKERNEL} ${LPARAMS}
- 但为什么会这样呢?为什么 os-prober 假设 Linux 的其他副本应该始终以linux
而不是来启动linuxefi
?
我是否缺少一些可以解决此问题的设置或覆盖?
现在,我只是简单地将这些行改为30_os-prober
具有linuxefi
和initrdefi
,但是感觉有点像是黑客行为。