我的存储设置相当复杂。就这个问题而言,重要的是我有一个 MBR 中带有 GRUB 的 SSD、三个分区(其中第一个标记为可启动)和一堆 LUKS 全盘加密存储设备(SSD 和 HDD),它们位于混合控制器(板载和板外)上。
主板是华硕 M5A97 Pro,运行 UEFI BIOS 修订版 1604。操作系统是 Debian Wheezy。
当我在 BIOS 启动顺序中列出所有设备并正常启动时,系统会在短暂的延迟后正常加载 GRUB 并向我显示 GRUB 菜单。完美,除了可能扫描大量驱动器和 BIOS 设置可能令人困惑。而且我通常喜欢干净的配置。
如果我从启动顺序中删除所有设备除了对于在 MBR 中保存 GRUB 第一阶段加载器的 SSD(我想要从中启动,并且连接到板载 SATA 控制器),然后重新启动,我看到以下消息:
Reboot and Select proper Boot device
or Insert Boot Media in selected Boot device and press a key_
其中_
表示闪烁的光标。如果此时我只需按下一个键(例如空格键),则该消息会在空白行后重复,行为相同:
Reboot and Select proper Boot device
or Insert Boot Media in selected Boot device and press a key
Reboot and Select proper Boot device
or Insert Boot Media in selected Boot device and press a key_
如果我强制系统尝试从 SSD 启动,我会得到相同的错误行为。
如果我将所有设备重新添加至启动设备顺序,则系统将正常启动。
GRUB
我已经确认,在所有设备中,只有我想要用作启动设备的 SSD 的前 512 个字节中存储了字符串。我已经使用 确认了该设备的分区表布局fdisk -l
。
所有其他设备都用作全盘 LUKS 容器,甚至不包含有效的 MBR,更不用说任何有效的启动代码了。所有存储设备boot device
在前 16 KiB 内都没有(不区分大小写),所以这不是 LUKS 的问题。Google 还表示,该消息相当常见,从命中率来看,它来自 BIOS,与 Linux 无关。
我已经运行了grub-mkdevicemap
,其输出显示(hd0)
我想要从中启动的 SSD,然后重新安装了 GRUB(我想我是使用 完成此操作的dpkg-reconfigure grub-pc
,但我对此并不确定)。
这是怎么回事?为什么当我明确告诉 BIOS 时,它不会从它最终明确要启动的一个设备启动?我怎样才能让它只从这一个 SSD 启动,而不必在启动顺序中列出所有内容?
答案1
这可能只是固件的一个设计缺陷。由于它是 UEFI,因此它很可能期望(要求)启动菜单中存在带有 EFI 引导加载程序的 GPT 磁盘(甚至可能是启动菜单中的第一个条目)。
我只是猜测,但无论谁设计了固件,可能都没有想到如果唯一可启动的设备是(传统 BIOS)MBR 磁盘,您会在 UEFI 模式下使用它。毕竟,Windows 不会以这种方式启动,而且 Windows 是唯一重要的操作系统,对吧?;-)
首先尝试一下:确保 grub 分区标记为“活动”。我个人似乎总是忘记这一步(因为 UEFI 不在乎)。
除此之外,请尝试在菜单中添加另一个 UEFI 启动项,看看它是否能解决您的问题。如果能,那么这就是您面临的问题。然后,您要么必须将 GRUB 磁盘转换为 GPT,要么将固件置于传统 BIOS 模式。请记住,Windows 将拒绝从传统 BIOS 上的 GPT 磁盘启动。听起来你不太在意。
仅供参考... UEFI 并非“更好”,因此不要觉得切换回“传统 BIOS”模式会失去什么。它所做的只是改变固件处理驱动器的方式以及 Windows 启动的方式(因为 Linux 并不关心)。