Dasharo / dasharo-issues

The Dasharo issue tracker
https://dasharo.com/
24 stars 0 forks source link

Change DTS boot partition from FAT32 to EFI System Partition type #692

Closed TomaszAIR closed 5 months ago

TomaszAIR commented 7 months ago

The DTS boot partition is standard FAT32, not EFI System Partition type. As a result it cannot be found by ESP scanning in Dasharo firmware.

TomaszAIR commented 6 months ago

In DTS we have FAT32 partition because of using biosplusuefi plugin https://github.com/Dasharo/meta-dts/blob/main/meta-dts-distro/wic/usb-stick-dts.wks.in#L3, it was needed to boot DTS on platforms with legacy BIOS. IIRC correctly we dealt with such one as APU PCEngines. Or maybe it was Dell OptiPlex..

@miczyg1 there are plans to use DES on apu - is there UEFI support? Do we need possibility to boot DTS on legacy platforms?

macpijan commented 6 months ago

there are plans to use DES on apu - is there UEFI support?

It is going to be.

Do we need possibility to boot DTS on legacy platforms?

Yes, that would be preferable that legacy BIOS is still supported.

miczyg1 commented 6 months ago

ESP can still use MBR partitioning scheme to support legacy boot. Just the FAT32 partition type must be of type 0xef EFI (FAT-12/16/32)) instead of 0x0c W95 FAT32 (LBA)


 0  Vide            1e  Hidden W95 FAT1 80  Old Minix       bf  Solaris
 1  FAT12           24  NEC DOS         81  Minix / old Lin c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          82  Linux swap / So c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  83  Linux           c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     84  OS/2 hidden C:  c7  Syrinx
 5  Extended        41  PPC PReP Boot   85  Linux extended  da  Non-FS data
 6  FAT16           42  SFS             86  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set de  Dell Utility
 8  AIX             4e  QNX4.x 2nd part 88  Linux plein tex df  BootIt
 9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       e1  DOS access
 a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e3  DOS R/O
 b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e4  SpeedStor
 c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          eb  BeOS fs
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi ee  GPT
 f  W95 Etendu (LBA 54  OnTrackDM6      a5  FreeBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a6  OpenBSD         f0  Linux/PA-RISC b
11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f1  SpeedStor
12  Compaq diagnost 5c  Priam Edisk     a8  UFS Darwin      f4  SpeedStor
14  Hidden FAT16 <3 61  SpeedStor       a9  NetBSD          f2  DOS secondary
16  Hidden FAT16    63  GNU HURD or Sys ab  Amorce Darwin   fb  VMware VMFS
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep
1c  Hidden W95 FAT3 75  PC/IX           be  Amorce Solaris  ff  BBT
DaniilKl commented 6 months ago

Agree with @miczyg1. From UEFI specification:

If an MBR partition has an OSType field of 0xEF (i.e., UEFI System Partition), then the firmware must add the UEFI System Partition GUID to the handle for the MBR partition using InstallProtocolInterface(). This allows drivers and applications, including OS loaders, to easily search for handles that represent UEFI System Partitions.

DaniilKl commented 6 months ago

It seems (have not found in .wks files documentation) that wic tool has OSType option. So all is needed is to specify correct partition type.

DaniilKl commented 6 months ago

Or it can be configured via --part-type according to .wks file documentation using EFI partion GUID C12A7328-F81F-11D2-BA4B-00A0C93EC93B.

miczyg1 commented 6 months ago

You can't use part type:

This option is a Wic-specific option that specifies the partition type globally unique identifier (GUID) for GPT partitions.

You have MBR partitioning not GPT partitioning

miczyg1 commented 6 months ago

The right option to use is --system-id where you define the HEX number of partition type from the list I linked in previous comments

miczyg1 commented 6 months ago

For reference: https://lists.openembedded.org/g/openembedded-core/topic/72303310?p=%2C%2C%2C20%2C0%2C0%2C0%3A%3A%2C%2C%2C0%2C0%2C0%2C72303310

TomaszAIR commented 5 months ago

Fixed with https://github.com/Dasharo/meta-dts/pull/101#issuecomment-2003696533; will be released in v1.2.20

artur-rs commented 5 months ago

Release v1.2.20 is now live - see the changelog here. Closing.

mkopec commented 5 months ago

With this issue closed, should DTS now be detected by the ESP scanning feature in UEFI? Because it's not working for me on apu4, DTS v1.2.20 on a USB stick

mkopec commented 5 months ago

Ah right we also need https://github.com/Dasharo/edk2/commit/c7584a30aefe8f4e26392be3f1f1b6390beb46ea which isn't in apu2 releases yet

macpijan commented 5 months ago

We will have to live without it in this release then. Unless we will need to include more edk2 changes any way, due to some fixes, then we may consider pulling it as well.