grub の os-prober が `linuxefi` ではなく `linux` でエントリを追加するのはなぜですか

grub の os-prober が `linuxefi` ではなく `linux` でエントリを追加するのはなぜですか

私のシステムには、CentOS 7 のコピーが 2 つと、Windows 10 Pro のコピーが 1 つインストールされています。すべてのシステムは起動可能で、正常に動作し、完全に最新の状態です (カーネル、パッケージ、その他すべて)。

grub2-mkconfigCentOS のいずれかのコピー (理由により、1 つのホストは、pinguもう 1 つのホストは ) を実行すると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

( andの代わりにlinuxandに注意してください)initrdlinuxefiinitrdefi

/etc/grub.d/30_os-proberこれは、などの 4 行が原因だと思いますlinux ${LKERNEL} ${LPARAMS}が、なぜそうなるのでしょうか。os-prober は、他の Linux のコピーは常に ではlinuxなくで起動する必要があると想定するのはなぜですかlinuxefi

これを修正するための設定やオーバーライドが不足しているのでしょうか?

今のところ、 のこれらの行を と に変更しただけです30_os-proberlinuxefiinitrdefiこれはちょっとしたハック以上のもののように感じます。

関連情報