I've just installed Arch Linux on to a new set of partitions on my Windows 8 machine. In doing so, I created a new 512MB EFI partition for Linux to load from, leaving the existing Windows EFI partition untouched. (I'm not sure if this was the right thing to do.)

Now systemd-boot isn't recognizing my Windows installation. It's not a huge problem, since I can still get into the Linux bootloader from within Windows, but I'd like to be able to stick to one bootloader if possible.

How can I get systemd-boot to recognize my Windows bootloader? Is it matter of copying files across from one partition to the other? Or do I need to combine them in some way?


First of all, you must not have several ESPs. The one and only ESP in your system can contain any number of bootloaders in form of EFI applications.

Now you need to stick with one EFI System Partition, copy there all files from the other one and then delete the other one.

After that, re-install systemd-boot (or any other EFI boot manager of your choice) on that partition and you're all set. If we're speaking about systemd-boot (or gummiboot) specifically, then it should be able to detect the Microsoft Boot Manager on the same partition without any further configuration.

Alternatively, if your firmware is not dumb and has its own boot menu, then you can avoid installing a dedicated EFI boot manager and instead add the Linux kernel and the Microsoft Boot Manager directly to the firmware (using efibootmgr utility).

  • Thanks. I'm terrified of messing up my system, so would you mind double checking this set of instructions I made for myself based on your answer? 1) Copy across all files from my new Linux ESP into the original Windows ESP 2) Boot from (Arch ISO) disc. 3) Remove the Linux ESP. 4) Run parted set n boot on for the Windows ESP 4) Rebuild the fstab. 5) Mount the Windows ESP (now the only ESP) to /boot 6) Install systemd on /boot using pacman 7) Reboot. Did I miss anything or get anything the wrong way round? Aug 2 '15 at 12:44
  • @Donkey_2009 You shouldn't need to mark ESP as boot (I assume you are using GPT). Just ensure that it has correct type (EF00 in terms of gdisk). Next, you've probably meant sd-boot and bootctl, not systemd and pacman, haven't you?
    – intelfx
    Aug 2 '15 at 14:09
  • @Donkey_2009 Also, you will need to reinstall linux (that is, the kernel package) on the new /boot and double-check the systemd-boot's config (/boot/loader/*).
    – intelfx
    Aug 2 '15 at 14:13
  • Sorry, I'm new to this and it's going over my head a bit. Should I start by cp -ring everything from /dev/sda8 (new ESP) to /dev/sda2 (original ESP)? And are you saying that I don't need to run parted set 2 boot on? But I should still mount sda2 to /mnt/boot? Aug 2 '15 at 15:14
  • And then how do I install sd-boot using bootctl? Do I install linux with bootctl too? Aug 2 '15 at 15:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.