我已通过 安装了 Arch Linux archinstall
。它已设置为使用安全启动(我按照 Arch Wiki 上的“统一可扩展固件接口/安全启动”指南,使用“3.1.3 使用 sbctl 的辅助进程”方法进行了设置)。
我的磁盘设置如下:
├─ nvme0n1 <-- This is my Windows drive
│ ├─ nvme0n1p1 (16M)
│ └─ nvme0n1p2 (1.8T)
└─ nvme1n1 <-- This is my Linux drive
├─ nvme1n1p1 (512M) <-- /boot EFI system
├─ nvme1n1p2 (20G) <-- /
└─ nvme1n1p3 (911G) <-- /home
我的文件夹如下所示/boot/EFI
:
└─ /boot/EFI
├─ BOOT
│ └─ BOOTX64.EFI
├─ Linux
│ └─ <empty>
├─ Microsoft
│ ├─ Boot
│ └─ Recovery
└─ systemd
└─ systemd-bootx64.efi
我只使用 Windows 玩游戏,而且我不喜欢每次启动计算机时都必须在启动管理器上选择操作系统,因此我会在周末手动更改启动顺序以启动 Windows,然后再将其更改回 Linux。但是在我的主板(MSI PRO Z690-A DDR4,现在的固件版本为 7D25v1J)上进行固件更新后,我再也看不到 Linux 安装的选项了。
经过一番研究,我发现有人建议重新安装启动管理器,但我不太确定这是否适合我的情况。我试图避免这样做,因为 1) 我不知道它是否会扰乱我的安全启动设置,2) 运行bootctl status
显示:
所以我认为这可能需要或需要通过 UEFI 软件来解决。但我不知道在这种情况下我应该怎么做。
我尝试chroot
安装并运行,bootctl update
希望问题能够自行解决,但没有成功。
现在,我想了解固件更新后发生了什么(做了哪些更改以及在哪里做了更改),以及这是否是我需要在 UEFI 端或启动管理器端处理的问题。我对 Arch 和整个启动过程的工作原理还不熟悉,老实说,我还不太清楚如何从这里继续下去。任何指导都值得感激。
附言:对于屏幕图片,我深感抱歉,但我现在手边没有任何工具可以捕捉屏幕。
创建此条目是(重新)安装启动管理器的一部分。EFI 不会自动从文件中发现操作系统 - 它要求在主板的 NVRAM(即保存固件设置的“CMOS 内存”)中单独创建每个操作系统条目。
对此有两个例外:1)
EFI\BOOT\BOOTX64.EFI
文件,当没有条目存在时,或者当您要求固件启动整个磁盘(例如在 BIOS 时代)时,它充当“默认”引导加载程序;2)一些制造商试图提供帮助并专门检测 Windows,这样如果您清除固件设置,您将自动获得 Windows 条目(但通常没有其他内容)。因此,如果您运行
bootctl install
它,在它将其所有文件重新复制到 EFI 分区后,它确实会重新创建“Linux Boot Manager”NVRAM 启动项,grub-install 或 bcdboot.exe 也会执行相同的操作。如果您已手动为安全启动签名这些文件,请重新运行sbctl sign
以再次签名。另一个选项是手动
efibootmgr
创建启动项:...以及使用 将其添加到“启动顺序”中
efibootmgr --bootorder 000x,000y
。这是使用另一个 EFI 功能的好地方 - “BootNext”变量,它允许您从 Linux直接重新启动到 Windows,而无需直接与启动管理器(EFI 或任何其他)交互。请参阅旧线程。