Introduction
After not seeing a thread dedicated to updating the BIOS and repairing the bootloader on Arch Linux, I have decided to try to assist those who might be somewhat new to this topic by providing a short guide. I am creating this because it only took me about 10 minutes to fully complete (with distractions) but that's not considering the 1+ hour it took of jumping through hoops and trying to base my setup off of the provided Debian rescue guide Framework provided.
NOTE: I am using Arch Linux with the GRUB bootloader. Some steps might be slightly different based on how you setup your system and install. Feel free to ask questions where needed.
Firstly, you’ll need to download the BIOS file from the Framework site and follow the installation instructions they provide. That much is fairly simple, so I will simply link their page on that matter and move on. However, you will need a live-boot Arch Linux USB drive
ENSURE THAT YOU HAVE THE LIVE BOOT DRIVE BEFORE YOU INSTALL THE NEW BIOS UPDATE. Odds are, the update process will wipe your boot entry from the BIOS meaning you will not be able to boot back into your Linux install until we fix it. The data is not gone or removed, the BIOS just simply does not realize it exists.
After the BIOS update finishes, load into your BIOS (pressing F2) and ensure on the first page that your BIOS version is now 3.07.
If your computer boots into your usual Arch install then CONGRATS!! You don’t need to do anything further, but for those of us who get an error stating that there are no boot devices, continue below.
Readding the GRUB Bootloader
Insert your Arch USB drive and boot to that. You might need to change boot orders on the second to last page of the BIOS,, but mine booted into the drive automatically (remember, there won't be an option for your normal install, so the USB will be the only boot device.
Boot into the Arch USB. Once it loads, use something like -
sudo fdisk -l
to list all of the available drives and find the drive that you originally installed Arch on. For me, I have something like /dev/nvme0n1p1/ and /dev/nvme0n1p2, which is my nvme drive with two partitions, the EDI partition and the actual filesystem.
Mount each partitions to your /mnt
directory of the USB drive using something like -
mount /dev/nvme0n1p2 /mnt
which will soft link the entire filesystem to the /mnt directory of your live boot USB drive. Within that file system (use cd or ls to traverse or read directories respectively) find where you originally mounted your EFI partition during the Arch install. Assuming you probably followed the Arch Wiki Installation Guide the directory will probably be under /mnt/mnt/efi
directory, or at least it was for me. (I have two /mnt
's because I’m mounting the filesystem to the USB /mnt
directory, even though on my actual system it looks normal.)
Once both of these partitions are mounted, you’ll need to chroot into the filesystem -
arch-chroot /mnt
and then follow the GRUB instructions for installing an OS as if it was the first install.
My install command looked something like -
grub-install --target=x86_64-efi --efi-directory=/mnt/efi --bootloader-id=GRUB
after this completes (assuming there are no errors) you’ll need to reconstruct the config. Any changes you’ve made to your previous GRUB config will be kept as we’re not changing or modifying any files, it will simply use those old settings again.
grub-mkconfig -o /boot/grub/grub.cfg
For me, this was all that was needed. I shut down the system, removed my USB drive, then started the system and it booted into my OS problem free. Remember to set your battery level somewhere in your BIOS if you feel the desire. Happy hacking!!