I've followed the classic procedure to install Windows and Linux in dual boot. First I installed Windows in UEFI mode, then I use a bootable PopOS key to resize the main Windows partition; I created a Linux partition as well as a 500MB
/boot/efi partition in the remaining space.
My problem is,
systemd-boot can't seem to detect the Windows bootloader.
When I display the systemd-boot menu, it only lists PopOS as a possible boot option, even though I can launch Windows from my BIOS menu with no problem.
When I run
bootctl, I get the following output:
System: Firmware: UEFI 2.70 (American Megatrends 5.14) Secure Boot: disabled Setup Mode: setup Current Boot Loader: Product: systemd-boot 245.4-4ubuntu3.1pop0~1590695674~20.04~eaac747 Features: ✓ Boot counting ✓ Menu timeout control ✓ One-shot menu timeout control ✓ Default entry control ✓ One-shot entry control ✓ Support for XBOOTLDR partition ✓ Support for passing random seed to OS ✓ Boot loader sets ESP partition information ESP: /dev/disk/by-partuuid/585919b8-7f1b-4f94-a0b1-6ff195d07515 File: └─/EFI/SYSTEMD/SYSTEMD-BOOTX64.EFI Random Seed: Passed to OS: yes System Token: set Exists: yes Available Boot Loaders on ESP: ESP: /boot/efi (/dev/disk/by-partuuid/585919b8-7f1b-4f94-a0b1-6ff195d07515) File: └─/EFI/systemd/systemd-bootx64.efi (systemd-boot 245.4-4ubuntu3.1pop0~1590695> File: └─/EFI/BOOT/BOOTX64.EFI (systemd-boot 245.4-4ubuntu3.1pop0~1590695674~20.04~e> Boot Loaders Listed in EFI Variables: Title: Linux Boot Manager ID: 0x0003 Status: active, boot-order Partition: /dev/disk/by-partuuid/585919b8-7f1b-4f94-a0b1-6ff195d07515 File: └─/EFI/SYSTEMD/SYSTEMD-BOOTX64.EFI Title: Windows Boot Manager ID: 0x0000 Status: active, boot-order Partition: /dev/disk/by-partuuid/42f0d8f0-13e0-41cf-bc36-ac80dccc54fd File: └─/EFI/MICROSOFT/BOOT/BOOTMGFW.EFI Title: UEFI OS ID: 0x0009 Status: active, boot-order Partition: /dev/disk/by-partuuid/585919b8-7f1b-4f94-a0b1-6ff195d07515 File: └─/EFI/BOOT/BOOTX64.EFI Boot Loader Entries: $BOOT: /boot/efi (/dev/disk/by-partuuid/585919b8-7f1b-4f94-a0b1-6ff195d07515) Default Boot Loader Entry: title: Pop!_OS id: Pop_OS-current.conf source: /boot/efi/loader/entries/Pop_OS-current.conf linux: /EFI/Pop_OS-3ce60b75-530a-4cad-9e80-5156a8e6bb56/vmlinuz.efi initrd: /EFI/Pop_OS-3ce60b75-530a-4cad-9e80-5156a8e6bb56/initrd.img options: root=UUID=3ce60b75-530a-4cad-9e80-5156a8e6bb56 ro quiet loglevel=0 systemd.sh>
Windows Boot Manager entry under
Boot Loaders Listed in EFI Variables. It seems systemd-boot is somewhat aware that my Windows partition exists, it just won't detect it as something that can be booted from.
bootctl install doesn't seem to change anything)
/boot/efi/ directories look like this:
/boot/efi/EFI ├── BOOT │ └── BOOTX64.EFI ├── Linux ├── Pop_OS-3ce60b75-530a-4cad-9e80-5156a8e6bb56 │ ├── cmdline │ ├── initrd.img │ └── vmlinuz.efi └── systemd └── systemd-bootx64.efi
/boot/efi/loader/entries/ └── Pop_OS-current.conf
So the directories that should have been populated with the Windows Bootloader somehow aren't.
How can I diagnose this problem, and add Windows as a startup option to systemd-boot?