本文最后更新于 617 天前,其中的信息可能已经有所发展或是发生改变。
我已经在这台机器上用了近 5 年 Linux 了,在原先的系统里一直运转良好,但最近更换了主板之后发现系统无法启动。在尝试解决这个问题的时候,发觉这个疑难问题还算挺有意思的,遂尝试写下来分享一下解决方案。于是便有了这篇文章。
介绍
GRUB(GRand Unified Bootloader,大一统启动加载器),是一个引导加载程序。当前的 GRUB 也被称作 GRUB 2,而原始 GRUB(GRUB Legacy)表示 0.9x 版本。本页只描述 GRUB 2。
——来自Archwiki
注意: 在本文中,
esp 表示 EFI 系统分区(ESP)的挂载点。系统概况
新系统配置如下
Operating System: Arch Linux
KDE Plasma Version: 6.1.5
KDE Frameworks Version: 6.6.0
Qt Version: 6.7.3
Kernel Version: 6.6.52-1-lts (64-bit)
Graphics Platform: X11
Processors: 12 × Intel® Core™ i5-10400F CPU @ 2.90GHz
Memory: 31.3 GiB of RAM
Graphics Processor: NVIDIA GeForce RTX 3060/PCIe/SSE2
Manufacturer: Micro-Star International Co., Ltd.
Product Name: MS-7E05
System Version: 2.0
故障现象
- 按下开机后发现在主板 LOGO 屏之后就黑屏,甚至无法进入 GRUB。
- 主板的侦错 LED 在 BOOT 灯上停留常亮。
故障分析
到现在来看,故障原因似乎已经很清晰了。可能是由于某些原因导致系统没法找到正确的启动项,进而出现无法启动的问题。
进入 BIOS 配置界面查看可以发现主板并没有识别到 GRUB。
于是首先考虑是否是GRUB问题,尝试重新运行 grub-install 重启,依旧没有改变。然后尝试了在 LiveCD 里查看一下 esp 分区,但生成的引导文件完全没有问题。
这时发现了在 ArchWiki1 上的这段话:
提示
提示:如果你使用了
--removable 选项,那 GRUB 将被安装到 esp/EFI/BOOT/BOOTX64.EFI (当使用 i386-efi 时是 esp/EFI/BOOT/BOOTIA32.EFI ),此时即使 EFI 变量被重设或者你把这个驱动器接到其他电脑上,你仍可从这个驱动器上启动。通常来说,你只要像操作 BIOS 设备一样在启动时选择这个驱动器就可以了。如果设备是同时安装了Windows的多引导启动,注意 Windows 通常会在这里安装一个 EFI 可执行程序,该程序的目的是仅重建Windows的UEFI启动项。如果你想在Mac上安装GRUB,那你必须要使用该选项。某些台式机主板只会在此位置寻找 EFI 可执行文件,因此该选项是必需的,尤其是微星(MSI)主板。 如果你更新了UEFI,启动项可能会在更新后丢失。因此可以创建一个“removable”启动项作为后备。问题原因是由于微星主板只会在特定位置寻找启动项,而在安装 GRUB 时没有加 --removeable 参数,导致新主板找不到启动项,从而卡 BOOT 灯无法启动。