![BIOS 更新后未检测到 Linux 引导加载程序](https://linux22.com/image/75377/BIOS%20%E6%9B%B4%E6%96%B0%E5%90%8E%E6%9C%AA%E6%A3%80%E6%B5%8B%E5%88%B0%20Linux%20%E5%BC%95%E5%AF%BC%E5%8A%A0%E8%BD%BD%E7%A8%8B%E5%BA%8F.png)
我使用联想 y500,购买 250 GB 三星 SSD 后,我决定使用由 Arch Linux 和 Windows 8.1 组成的双操作系统。为了防止启动问题,我后来安装了Arch。我使用 UEFI 并选择 systemd-boot 进行安装。 Linux 引导加载程序运行良好。然而,由于某种原因,启动屏幕与我的屏幕没有正确对齐,我决定更新我的 BIOS(我很遗憾这样做,因为它没有解决问题),因为根据我的搜索,问题与固件有关。
之后,在启动选项中,我看不到Linux启动加载程序。只有 Windows 引导加载程序。检查EFI分区,发现systemd-boot文件确实存在,没有任何变化。
我不明白为什么我的电脑看不到 Linux 引导加载程序。互联网上也没有这方面的信息。所以我的问题是:
- BIOS 更新如何影响我的 EFI 启动?
- 如果问题确实与更新有关,我应该尝试将其回滚吗?
- 对于我的问题,是否可以使用Arch Linux live USB修复EFI?如果是的话,怎么样?
我觉得有必要说 BIOS 更新重新启用了安全启动。我禁用了它,但是,这不起作用。当重新启用安全启动时,更新可能会对 EFI 造成一些影响,但我不确定。
答案1
我对 systemd-boot 也有同样的问题。最近的BIOS补丁后 微星gs40,systemd 引导加载程序已从 BIOS 选项中消失。然而 grub2(ubuntu 的加载程序)和 ms-boot(windows 的)仍然被检测到正常。更新 systemd-boot、切换安全启动或在 BIOS 中进行其他一些随机点击也没有帮助。至于你的问题:
- BIOS 更新如何影响我的 EFI 启动? 该问题似乎与 systemd-boot 对新 EFI bios 版本的支持有关。bugtracker 中仍然没有问题,我懒得创建任何问题。
- 如果问题确实与更新有关,我应该尝试将其回滚吗? 不,根据我的实践,刷新旧的 BIOS 版本可能会将您的笔记本电脑变成砖头。如果没有特殊的方法,您将无法恢复 BIOS 固件程序员。请注意,情况并非总是如此,但我不会冒险
- 对于我的问题,是否可以使用Arch Linux live USB修复EFI?如果是的话,怎么样? 只需切换到 grub2 或任何其他引导装载程序。 Archlinux usb livecd 应该仍然可以在 UEFI 模式下启动。 @younes 的答案会很好。欲了解更多信息,请参阅维基百科
编辑:
好吧,我终于能够从 systemd-boot 启动了。对我来说,重新创建 efi 结构出于某种神奇的原因有所帮助。以下是修复步骤:
- 从任何 linux livecd 启动(archlinux 就可以了)
- 安装启动分区,将其中的所有数据备份到某处
- 擦除启动分区中的所有文件(仅文件,无需对分区进行任何操作)
- 再次安装 systemd boot
bootctl install
,因为您已经以 efi 模式启动并且启动分区已挂载 - 执行
sync
命令刷新缓存并重新启动进入 BIOS。 systemd 启动应该出现在 UEFI 加载程序中。将其标记为第一个。现在重新启动后 systemd 启动应该可用! - 从 livecd 恢复旧的 UEFI 结构。 (将备份的 /boot 复制到分区中新安装的文件中,覆盖它们。)
- 再次重新启动并从系统启动。
我希望这对你有帮助。
答案2
打开提升的命令提示符(按Windows Key
> 类型CMD
> 右键单击命令提示符 > 选择Run as administrator
)并输入以下内容:
bcdedit /set {bootmgr} path \EFI\<<LINUX OS>>\grubx64.efi
(在上面的命令中,替换 <<LINUX OS>>
适用debian
于 Debian 操作系统和ubuntu
Ubuntu 操作系统。例子:bcdedit /set {bootmgr} path \EFI\debian\grubx64.efi
)
答案3
有一个更简单的方法。只需从 Windows 启动选项中输入 UEFI 固件设置即可。更改启动顺序并让 Linux 首先启动。保存更改并退出。重新启动后,grub 将加载,您将能够启动到两个操作系统中的任何一个。
答案4
使用 live CD 或 USB,然后 chroot 到硬盘驱动器上的 Archlinux,然后update-grub
,您可能还需要运行grub-install /dev/sda && update-grub
.
如果您可以提供有关硬盘驱动器的更多信息(分区表、类型和部件方案...)lsblk
和的标准输出sudo fdisk -l