(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.