Fixing EFI Bootloader after Windows 10 Upgrade

(TLDR: bootctl --path=/path/to/esp-partition install)

Besides my Arch Linux installation, I have a partition that runs Windows (primarily to play Age of Empires II). Today I upgraded to Windows 10, which – as expected – overwrote the EFI bootloader.

This guide will work if you’re using either Gummiboot or systemd-boot. (Gummiboot was merged into systemd-boot, so by running the following commands you’re doing an upgrade as well.)

How to fix the bootloader:

  • Download the current Arch Linux ISO: https://www.archlinux.org/download/
  • Flash it to an USB drive: dd if=path-to-iso.img of=/path/to/usb-drive bs=8M
  • Boot from the USB drive (choose the EFI option in the boot menu)
  • Find your EFI partition using fdisk -l. You will recognize it by the partition type, which is EFI System.
  • Create a mountpoint for the partition: mkdir /efi
  • Mount the partition: mount /path/to/efi-partition /efi
  • Make sure that the now mounted /efi directory contains the EFI subdirectory.
  • (Re-)Install systemd-boot: bootctl --path=/efi install
  • Reboot

In my case, everything worked again.

Note that if you were a Gummiboot user, you should probably read through https://wiki.archlinux.org/index.php/Systemd-boot. Among other interesting things, it’s important to know that updates are not applied automatically via post_install anymore. Instead, run bootctl update after updating systemd-boot.