![为什么 grub 的 os-prober 添加带有“linux”而不是“linuxefi”的条目](https://linux22.com/image/770611/%E4%B8%BA%E4%BB%80%E4%B9%88%20grub%20%E7%9A%84%20os-prober%20%E6%B7%BB%E5%8A%A0%E5%B8%A6%E6%9C%89%E2%80%9Clinux%E2%80%9D%E8%80%8C%E4%B8%8D%E6%98%AF%E2%80%9Clinuxefi%E2%80%9D%E7%9A%84%E6%9D%A1%E7%9B%AE.png)
在我的系统上,我安装了两个 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
,但是感觉有点像是黑客行为。