我最近将系统迁移到 UEFI 启动。
该系统是 HP EliteBook 840 G1,配有 SATA 硬盘。 Ubuntu 是唯一的操作系统。
我将磁盘转换为 GPT,添加了必要的分区,安装grub-efi-amd64
,然后运行grub-install --target=x86_64-efi /dev/sda
。 (根据我的 bash 历史记录——这是不久前完成的。)
当我重新启动系统时,它直接启动到 Ubuntu。
然而,第一次冷启动后,系统无法正常启动:首先尝试从 LAN 启动,然后显示一条消息,提示我没有安装操作系统,并提示我按 F2 进行系统诊断。我这样做了,退出了诊断工具,然后 Ubuntu 出现了。
我尝试弄乱 BIOS 设置中的启动顺序。没有从 SATA 磁盘启动的选项(但有从 M.2 SSD 启动的选项,如果已安装)。因此,我将操作系统启动管理器移至顶部,但无济于事 - 我仍然遇到相同的错误。
是什么赋予了?
答案1
在将分区表与 GParted 中的另一个系统进行比较后,我注意到我的 EFI 系统分区设置了不正确的标志:msftdata
在设置时设置boot
并且esp
丢失。
除此之外,我取消了之前的解决方法尝试,并将操作系统引导加载程序移至引导顺序的顶部。
该系统现已经历多次停机,不再需要每次都进行人工干预。
早期的方法(如下所示)似乎曾经有效,但在下一次尝试时,旧的行为又回来了。
我通过添加具有以下路径的自定义启动条目解决了该问题:
\EFI\ubuntu\grubx64.efi
在您的系统上,情况可能会有所不同;尝试浏览/boot/efi
(应该指向您的 EFI 分区)并.efi
在那里查找文件。去掉首字母/boot/efi
(例如/boot/efi/EFI/ubuntu/grubx64.efi
变为\EFI\ubuntu\grubx64.efi
)并将其配置为自定义启动项。
确保自定义启动项位于您的列表中,最好位于顶部(这样系统就不会意外地尝试从您预期之外的其他项目启动)。
现在,即使在冷启动后,系统也能直接启动到 Ubuntu。
注意:在我的系统上,还有另一个条目\EFI\BOOT\BOOTX64.EFI
;不知道这是否与 grub 条目不同。