> From: Peter Robinson <pbrobin...@gmail.com> > Date: Sat, 2 Mar 2024 10:54:36 +0000
Hi Peter, > The EFI spec states that the ESP can be any of FAT12/16/32 but for > compatibility doesn't necssarily require the partition to be the > EFI partition table ID of 0xef. A number of arm devices will not > find their firmware on a FAT partition with an ID of 0xef so also > allow the original FAT12/16/32 partition IDs as they are also > permissable for an ESP. > > Signed-off-by: Peter Robinson <pbrobin...@gmail.com> > --- > > v2: > - Add 0x0c option > - Make hex constants consistent > - Move from if to switch statement > v3: > - Fix switch brain fart Sorry, still not quite right... > disk/part_dos.c | 15 +++++++++++++-- > 1 file changed, 13 insertions(+), 2 deletions(-) > > diff --git a/disk/part_dos.c b/disk/part_dos.c > index 567ead7511d..97f4ce32bed 100644 > --- a/disk/part_dos.c > +++ b/disk/part_dos.c > @@ -40,10 +40,21 @@ static int get_bootable(dos_partition_t *p) > { > int ret = 0; > > - if (p->sys_ind == 0xef) > + switch (p->sys_ind) { > + case 0x01: > + case 0x06: > + case 0x0b: > + case 0x0c: > + case 0xef: > ret |= PART_EFI_SYSTEM_PARTITION; > - if (p->boot_ind == 0x80) The boot flag is part of p->boot_ind but the switch is for p->sys_ind (the partition type). You can't handle the boot flag in the same switch! Probably best to keep the if-statement for that bit. > + break; > + case 0x80: > ret |= PART_BOOTABLE; > + break; > + default: > + break; > + } > + > return ret; > } > > -- > 2.44.0 > >