BIOS 3.22 update unable to boot

I updated my 11th gen Framework Laptop 13 and it was successful but it reset/cleared the EFI NVRAM and it wouldn’t boot saying there was no bootable device. To make along story short, with the help of a bot I was able to identify and fix the problem. Here are the steps I took:

  • Created a bootable arch linux install usb stick and booted it
  • Use efibootmgr to confirm there was no boot device from the NVME ssd:
root@archiso ~ # efibootmgr
BootCurrent: 0000
Timeout: 3 seconds
BootOrder: 2001,2002,2003
Boot0000* EFI USB Device (SanDisk Extreme)	UsbWwid(781,5580,0,AA01111014115131278)/CDROM(1,0x1ff800,0x57840)RC
Boot2001* EFI USB Device	RC
Boot2002* EFI DVD/CDROM	RC
Boot2003* EFI Network	RC
root@archiso ~ #
  • Verify the nvme devices was available and the partitions were fine using parted:
root@archiso ~ # parted -l
Model: SanDisk Extreme (scsi)
Disk /dev/sda: 16.0GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size   Type     File system  Flags
 2      1073MB  1256MB  184MB  primary  fat32        esp


Model: WDS500G3X0C-00SJG0 (nvme)
Disk /dev/nvme0n1: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size   File system  Name     Flags
 1      1049kB  537MB  536MB  fat32        ESP      boot, esp
 2      537MB   500GB  500GB  ext4         primary


root@archiso ~ # 
  • mounted nvme0n1p2 to /mnt and nvme0n1p1 /mnt/boot and verified the expected contents. In particular it shows I was booting using grub as we:
root@archiso ~ # mount /dev/nvme0n1p2 /mnt
root@archiso ~ # mount /dev/nvme0n1p1 /mnt/boot
root@archiso ~ # arch-chroot /mnt
[root@archiso /]# cd boot
[root@archiso boot]# ls -l
total 177116
drwxr-xr-x 5 root root      4096 Jun  1  2024 EFI
drwxr-xr-x 6 root root      4096 Jun 22  2023 grub
-rwxr-xr-x 1 root root 134492927 May 28 20:49 initramfs-linux-fallback.img
-rwxr-xr-x 1 root root  18104560 May 28 20:49 initramfs-linux.img
-rwxr-xr-x 1 root root  13286400 May 12 10:56 intel-ucode.img
-rwxr-xr-x 1 root root  15462912 May 28 20:49 vmlinuz-linux
[root@archiso boot]# ls -l grub/
total 68
drwxr-xr-x 2 root root  4096 Oct 14  2021 fonts
-rwxr-xr-x 1 root root  4605 Jun 22  2023 grub.cfg
-rwxr-xr-x 1 root root  1024 Oct 14  2021 grubenv
drwxr-xr-x 2 root root  8192 Jun  1  2024 locale
drwxr-xr-x 3 root root  4096 Oct 14  2021 themes
drwxr-xr-x 2 root root 40960 Jun  1  2024 x86_64-efi
[root@archiso boot]#
  • I then executed grub-install followed by efibootmgr to verify the NVRAM was updated:
[root@archiso boot]# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
Installing for x86_64-efi platform.
Installation finished. No error reported.
[root@archiso boot]# efibootmgr
BootCurrent: 0000
Timeout: 3 seconds
BootOrder: 0001,2001,2002,2003
Boot0000* EFI USB Device (SanDisk Extreme)	UsbWwid(781,5580,0,AA01111014115131278)/CDROM(1,0x1ff800,0x57840)RC
Boot0001* GRUB	HD(1,GPT,2e4dcc40-0206-4ca7-94fd-9e025b24f853,0x800,0xff800)/\EFI\GRUB\grubx64.efi
Boot2001* EFI USB Device	RC
Boot2002* EFI DVD/CDROM	RC
Boot2003* EFI Network	RC
[root@archiso boot]#

To be sure grub.cfg was going to be correct I executed grub-mkconfig and executed efibootmgr to be sure it was still good:

[root@archiso boot]# grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/intel-ucode.img /boot/initramfs-linux.img
Found fallback initrd image(s) in /boot:  intel-ucode.img initramfs-linux-fallback.img
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
Adding boot menu entry for UEFI Firmware Settings ...
done
[root@archiso boot]# efibootmgr
BootCurrent: 0000
Timeout: 3 seconds
BootOrder: 0001,2001,2002,2003
Boot0000* EFI USB Device (SanDisk Extreme)	UsbWwid(781,5580,0,AA01111014115131278)/CDROM(1,0x1ff800,0x57840)RC
Boot0001* GRUB	HD(1,GPT,2e4dcc40-0206-4ca7-94fd-9e025b24f853,0x800,0xff800)/\EFI\GRUB\grubx64.efi
Boot2001* EFI USB Device	RC
Boot2002* EFI DVD/CDROM	RC
Boot2003* EFI Network	RC
[root@archiso boot]#
  • Now with fingers crossed I exited the chroot and rebooted
[root@archiso boot]# exit
exit
root@archiso ~ # reboot
  • And it worked

Maybe this will help someone else, but I do wonder if I did something wrong or there is a problem with my laptop or the updating process.

Yeah - that is a classic. The EFi list holds the devices to boot.
Recreating it is usually the only solution. Well done on that :slight_smile:
I tend to propose installing The rEFInd Boot Manager for those when it is too difficult.
Boot from rescue disk, install refind, and it will implant itself and perform a boot-device detection on every boot :slight_smile:
PS: Look cooler than grub too :smiley:

Put a copy of a valid EFI stub (for example, rEFInd) in the fallback location to avoid this issue in the future.

I’m my case that fallback location is /boot/EFI/boot/ . The file is called bootx64.efi , but it’s just a direct copy of the rEFInd installed .EFI file.

It won’t read the rEFInd config file(s), but at least it’ll boot and you can chain load your normal bootloader after a BIOS upgrade erase your NVRAM list.