Linux – Dual boot Arch Linux with Windows 10

arch linuxbootloadermulti-bootwindows 10

On my Acer laptop I have Windows 10 installed on /dev/sda4 and the ESP partition is /dev/sda2.

As described in the Beginner's Guide I installed Arch Linux on a newly created partition /dev/sda5 and swap /dev/sda6 with the Windows 10 created ESP /dev/sda2 as /boot.

As the bootloader I chose systemd-boot which is recommended by the guide if the motherboard is UEFI (which it is).

I configured the /boot/loader/loader.conf as follows:

timeout 10
default arch

I created an entry for arch.conf at /boot/loader/entries/arch.conf as follows;

title          Arch Linux
linux          /vmlinuz-linux
initrd         /initramfs-linux.img
options        root=/dev/sda5 rw

But after rebooting Windows 10 boots by default. I couldn't even see the bootloader menu. Also no option to select the Linux boot loader in the boot options. What am I doing wrong?

Note: Both fastboot(Windows 10) and secureboot (UEFI) are off.

In the question Windows 10 / Linux Dual Boot – Boot-loader Problems the OP uses GRUB for the bootloader. In my case I'm using systemd-boot. And in my setup fastboot aka fast startup is already disabled.

#efibootmgr -v returns all my boot options. It has the Linux boot manager in the list, but the boot order didn't specify anything about it. So, I manually edited the boot order by # efibootmgr -o 1003,1001,2001. But, the problem is the same. The boot order is reverted back after an reboot.

Best Answer

OK, I have tried following

#efibootmgr -v

This returns all my boot options. It has Linux boot manager (1003) in the list but boot order didn't specify any thing about it. So, I manually edited the boot order by

# efibootmgr -o 1003,1001,2001 

But, the problem is same. Boot order is reverted back after an reboot. So I checked if Linux boot manager is visible to bcd store in Windows 10

bcdedit /enum firmware

bcd store contains my Linux boot manager. So I ran

bcdedit /set {bootmgr} path \EFI\systemd\systemd-bootx64.efi

in an elevated command prompt. This command will make Windows boot loader to call the Linux boot manager without directly calling Windows 10.

This does solve my problem. Now I've a dual boot Windows 10 and Arch Linux on the same HDD.

Related Question