Windows doesn't show up in systemd-boot entries
I had this problem too.
I have 2 SSDs: one for Linux and one for Windows.
I use Linux as my main OS and right now I’m using systemd-boot
as bootloader.
Everything was working except I needed to enter the firmware menu everytime I needed to boot Windows because it didn’t show up in the startup entries. This is the only way I solved it.
1. Find the partition containing the Windows boot.
In my case is nvme0n1p1
.
[deafgod@chronos]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
zram0 253:0 0 4G 0 disk [SWAP]
nvme1n1 259:0 0 1.8T 0 disk
├─nvme1n1p1 259:1 0 511M 0 part /boot
└─nvme1n1p2 259:2 0 1.8T 0 part
└─luksdev 254:0 0 1.8T 0 crypt /
nvme0n1 259:3 0 1.8T 0 disk
├─nvme0n1p1 259:4 0 100M 0 part
├─nvme0n1p2 259:5 0 16M 0 part
├─nvme0n1p3 259:6 0 1.8T 0 part
└─nvme0n1p4 259:7 0 674M 0 part
2. Mount it on a folder.
In my case:
sudo mount /dev/nvme0n1p1 /home/deafgod/win_boot/
Now in the folder where you mounted the partition you can see this structure:
[deafgod@chronos deafgod]$ tree /home/deafgod/win_boot/ -L 3
win_boot/
├── EFI
│ ├── Boot
│ │ └── bootx64.efi
│ └── Microsoft
│ ├── Boot
│ └── Recovery
└── System Volume Information
7 directories, 1 file
3. You need to copy the EFI/Microsoft/
folder in /boot/EFI/
of your linux disk that is used by systemd-boot
.
WARNING: I used the /boot/EFI
folder because my Linux boot partition is mounted on the /boot
folder as you can see from the output of the previous lsblk
command.
In my case:
sudo cp -r /home/deafgod/win_boot/EFI/Microsoft /boot/EFI
Now your /boot/EFI
folder should have this structure:
/boot/EFI
├── BOOT
│ └── BOOTX64.EFI
├── Linux
├── Microsoft
│ ├── Boot
│ └── Recovery
└── systemd
└── systemd-bootx64.efi
7 directories, 2 files
If you reboot your computer, there should be a new entry in the bootloader.