The recent bump of Grub in Arch Linux caused booting problems for some (I stumbled over posts on r/archlinux). A workaround was published, i.e. re-installing grub and re-building the grub.cfg file. I had not yet upgraded, but after I did, I executed the suggested actions:
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB # grub-mkconfig -o /boot/grub/grub.cfg
On reboot, no grub was presented; just a cursor displayed about a
third of the way down the screen. After about 20s the system
booted. I tried tinkering around in /etc/defaults/grub
,
but none of the changes I made improved the situation.
In a fit of pique, I decided to replace grub by systemd-boot.
To install, run this command:
bootctl install
The status of efi booting can be checked by running the command:
efibootmgr --verbose
There should be an entry for "Linux Boot Manager".
Next, edit /boot/efi/loader/loader.conf
. Replace contents with
default arch timeout 3
Then create a file /boot/efi/loader/entries/arch.conf
with
title Arch Linux linux /vmlinuz-linux initrd /initramfs-linux.img options root=UUID=<UUID of root partition>
This setup didn't work. bootctl status
reported that
the linux and initrd files could not be found. Turns out this is
because the files should be located on the root of the efi partition
(i.e. /boot/efi as I had originally set it up), but they are
actually in /boot (that's where Arch puts them). Therefore changed
the mount for the efi partion from /boot/efi to /boot. This removed
the error and the machine could be successfully booted.
So, in the instructions above, replace /boot/efi
by
/boot
.
After the successful boot, grub can be removed:
sudo pacman -Rcnsu grub sudo rm -rf /boot/grub
Probably should also delete the now redundant efiboot entry, by somthing along the lines of:
efibootmgr -B -b 0<