[SOLVED] EFI bios update - "cannot find EFI system partition"

I’m trying to update the bios on my framework16 to latest. I’m always shaky when EFI shell tools go awry, but I believe I’ve followed the correct steps. Starting by making a new fat32 drive:

~initialize the disk partition

$ sudo fdisk /dev/sdf  # select [n]ew [p]rimary [1], with size [+1G] and set [t] to [b] for WIN95_FAT32

<fdisk> Command (m for help): p
Disk /dev/sdf: 57.77 GiB, 62026416128 bytes, 121145344 sectors
Disk model: USB DISK 3.2    
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xf890383f

Device     Boot Start     End Sectors Size Id Type
/dev/sdf1        2048 2099199 2097152   1G  b W95 FAT32

make a new fat32 filesystem & mount

$ sudo mkfs.vfat /dev/sdf1
$ mkdir /tmp/usb-1gb-fat32  &&  sudo mount /dev/sdf1 -t vfat /tmp/usb-1gb-fat32

unzip the bios efi zip to the root of the drive:

$ cd /tmp/usb-1gb-fat32
$ unzip ~/Framework_Laptop_16_Amd_Ryzen7040_BIOS_3.05_EFI.zip
Archive:  ~Framework_Laptop_16_Amd_Ryzen7040_BIOS_3.05_EFI.zip
  inflating: CapsuleApp.efi          
   creating: efi/
   creating: efi/boot/
  inflating: efi/boot/BootX64.efi    
  inflating: efi/boot/Startup.nsh    
  inflating: Framework_Laptop_16_Ryzen7040_capsule_signed_allsku_3.05.cap  
  inflating: winux.bin 

$ pwd
/tmp/usb-1gb-fat32

$ ls -l
total 36044
drwxr-xr-x 3 root root     4096 Dec 31  1969 ./
drwxrwxrwt 1 root root    19722 Dec  9 20:12 ../
-rwxr-xr-x 1 root root    87048 Nov 12 19:17 CapsuleApp.efi*
drwxr-xr-x 3 root root     4096 Nov 12 19:17 efi/
-rwxr-xr-x 1 root root 36129956 Nov 12 19:17 Framework_Laptop_16_Ryzen7040_capsule_signed_allsku_3.05.cap*
-rwxr-xr-x 1 root root   676898 Nov 12 19:17 winux.bin*

unmount & boot the drive, results in

live on the device:

# the above image ^
Error: Cannot find a EFI system partition!
CapsuleApp: cannot find a valid system on boot devices. Status = Not Found
...
FS0:\> ls
Directory of FS0:\>
...           CapsuleApp.efi
... <dir> ... efi
...           Framework....3.05.cap
...           winux.bin

If you partition the USB drive using gdisk instead of fdisk, and set the partition type code to ef00 (EFI System Partition), does that help?

The firmware update expects to find a GPT-partitioned disk with an EFI system partition. Usually, it’s looking on your main SSD. Does your main SSD also not have an ESP?

4 Likes

Thanks! yes, fdisk makes mbr only by default. Switching over to gpt works.

NOTE for future readers, I also marked the partition (which has filesystem from mkfs.vfat) as [t]ype code ef00 (EFI system partition) - but I presume this might not be necessary as it boots EFI shell from the drive (?)

update running now, successfully.

4 Likes

Check your secure boot settings

The person you are replying to reported that their issue was resolved.

oopsie :3

secure boot failures also have a very different error; it’s been a while since I’ve forgot to turn it off before booting something unsigned like this, but they don’t present with not finding a partition.