grub shell 中是否有命令可以指示机器是否正在显示 EFI 或 BIOS 固件?
我在 2010 年的 Mac Pro 上使用 GRUB 2.00。这台电脑当然有 EFI 固件。但由于缺少 NVIDIA 显示驱动程序,我已经尝试了几天让它以 BIOS 模拟模式启动 Ubuntu。我的理解是,在 GRUB 运行时,已经做出了使用 EFI 或 BIOS 模拟的决定。那么我该如何从 GRUB 中进行检查呢?
答案1
从 GRUB 2.00 开始,假设 GRUB 运行良好,可以进入正常模式而不是救援模式,echo $grub_platform
GRUB shell 将显示pc
在 BIOS 模式和efi
UEFI 模式下。
BIOS 构建对应于grub-pc
包,而 UEFI 构建对应于grub-efi-amd64
(或不太常见的grub-efi-ia32
)包。
答案2
Grub2 实现了类似 shell 的语法。这将起作用:
if test "${grub_platform}" = "pc"; then
menuentry 'XYZ' {
linux ${linux_params}
initrd ${initrd_params}
}
else
menuentry 'XYZ' {
linuxefi ${linux_params}
initrdefi ${initrd_params}
}
fi
# as well as
if [ "${grub_platform}" = "pc" ] ; then
fi
# or
if [ "${grub_platform}" = "pc" ]
then
fi