I made some changes to my /etc/defaults/grub file, then ran mikinitcpio -P , update-grub, and reboot.
The Issue
On boot, the message error: attempt to read or write outside of partition repeats down the screen. The system then boots normally without me doing anything. (No grub rescue prompt, no other error messages, all partitions are mounted correctly)
I have tried
Reverting the changes I made and rerunning grub-install and grub-mkconfig.
…it’s /etc/default/grub
not: /etc/defaults/grub
probably a typo
What changes did you make?
What is currently there can be shown with: grep GRUB_CMDLINE_LINUX_DEFAULT /etc/default/grub
doesn’t grub-install need some parameters?
It is also a command used to reinstall the grub boot loader (likely not needed at all).
It’s not the same or even similar as update-grub
… as does grub-mkconfig
It usually is: grub-mkconfig -o /boot/grub/grub.cfg
So:
you did multiple things - hopefully the shell history (or your memory) contains all of them, in order …
…it’s /etc/default/grub
not: /etc/defaults/grub
probably a typo
Yes, my mistake.
Currently it looks like this GRUB_CMDLINE_LINUX_DEFAULT="udev.log_priority=3"
It is also a command used to reinstall the grub boot loader (likely not needed at all).
After failing for an hour to understand what was wrong I hoped that reinstalling would fix it. Obviously I don’t understand how grub works.
Apologies for not including the parameters. They were grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=Manjaro
and grub-mkconfig -o /boot/grub/grub.cfg
Which filesystem is used for the boot partition? xfs is known to have this issue …
The EFI partition is FAT32, the root partition (including /boot) is xfs.
But it seemed to be working fine beforehand, and it didn’t happen following an update.
As @philm said, grub has a long history of not working well with xfs — then it works, and then it doesn’t. So you’ve got three options…
Reinstall your system and reformat your root filesystem as ext4.
Create an extra ext4 partition — its size will depend on how many kernels you intend to keep around, but about 512 MiB should be enough for at least two kernels — and mount that as /boot. You will need to move all of the contents of your existing /boot onto this new partition and reinstall grub, of course — hint: mount the new partition at /mnt for copying/moving over the stuff from your existing /boot, then unmount it, remount it as /boot, and add a record for it in your /etc/fstab.
Switch to systemd-boot instead of grub. This will require you to copy your kernels over into /boot/efi.