双启动 Arch Linux 与 Windows 10

Irs*_*had 2 bootloader arch-linux multi-boot windows-10

在我的 Acer 笔记本电脑上,我安装了 Windows 10 /dev/sda4,ESP 分区是/dev/sda2.

初学者指南中所述,我在新创建的分区上安装了 Arch Linux,/dev/sda5/dev/sda6与 Windows 10 创建的 ESP 交换/dev/sda2/boot.

作为引导加载程序,我选择systemd-boot了指南推荐的引导程序,如果主板是 UEFI(它是)。

我配置/boot/loader/loader.conf如下:

timeout 10
default arch
Run Code Online (Sandbox Code Playgroud)

我为arch.confat创建了一个条目,/boot/loader/entries/arch.conf如下所示;

title          Arch Linux
linux          /vmlinuz-linux
initrd         /initramfs-linux.img
options        root=/dev/sda5 rw
Run Code Online (Sandbox Code Playgroud)

但是在重新启动 Windows 10 后默认启动。我什至看不到引导加载程序菜单。在引导选项中也没有选择 Linux 引导加载程序的选项。我究竟做错了什么?

注意:fastboot(Windows 10) 和secureboot(UEFI) 均已关闭。

Windows 10 / Linux Dual Boot - Boot-loader Problems 问题中 ,OP 使用 GRUB 作为引导加载程序。就我而言,我正在使用systemd-boot. 在我的设置中,fastbootakafast startup已经被禁用。

#efibootmgr -v返回我所有的启动选项。它在列表中有 Linux 启动管理器,但启动顺序没有指定任何有关它的内容。所以,我手动编辑了启动顺序# efibootmgr -o 1003,1001,2001。但是,问题是一样的。重新启动后,引导顺序将恢复。

Irs*_*had 5

好的,我试过以下

#efibootmgr -v
Run Code Online (Sandbox Code Playgroud)

这将返回我所有的启动选项。它在列表中有 Linux 启动管理器 (1003),但启动顺序没有指定任何关于它的内容。所以,我手动编辑了启动顺序

# efibootmgr -o 1003,1001,2001 
Run Code Online (Sandbox Code Playgroud)

但是,问题是一样的。重新启动后,引导顺序将恢复。所以我检查了 Linux 启动管理器是否可见以bcd存储在 Windows 10 中

bcdedit /enum firmware
Run Code Online (Sandbox Code Playgroud)

bcdstore 包含我的 Linux 启动管理器。所以我跑了

bcdedit /set {bootmgr} path \EFI\systemd\systemd-bootx64.efi
Run Code Online (Sandbox Code Playgroud)

在提升的命令提示符中。此命令将使 Windows 引导加载程序调用 Linux 引导管理器,而无需直接调用 Windows 10。

这确实解决了我的问题。现在我在同一个硬盘上有一个双启动 Windows 10 和 Arch Linux。