В моей системе установлены две копии 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
and initrd
вместо linuxefi
and initrdefi
)
Я думаю, это из-за четырех строк в /etc/grub.d/30_os-prober
like linux ${LKERNEL} ${LPARAMS}
(etc.) - но почему это так? Почему os-prober предполагает, что другие копии Linux всегда должны запускаться с помощью linux
вместо linuxefi
?
Может быть, я упускаю какую-то настройку или переопределение, которые могли бы это исправить?
На данный момент я просто изменил эти строки на 30_os-prober
have linuxefi
и initrdefi
, но это больше похоже на хак.