3 ms·
UEFI is a terribly designed system, with a lot of x86-specific quirks. It's really sad other architectures picking it up. While general idea of it is good, a lo
by xvilka 3y ago
UEFI is a terribly designed system, with a lot of x86-specific quirks. It's really sad other architectures picking it up. While general idea of it is good, a lot of design details and implementation specifics are just meh. Take, for example, the need of using PE format. Everywhere outside x86 world it doesn't make any sense. Some vendors invented TE (Terse Executable) which is more appropriate for a firmware, without unnecessary legacy, but it didn't become a standard, and even have multiple incompatible versions without easy way to distinguish them.
- the_panopticon 3y agoRegarding standards, the Terse Executable (TE) is part of the UEFI Platform Initialization Specification https://uefi.org/specs/PI/1.8/V1_TE_Image.html https://uefi.org/specs/PI/1.8/V1_TE_Image.html now. From "Beyond BIOS" https://www.degruyter.com/document/doi/10.1515/9781501505690/html?lang=en https://www.degruyter.com/document/doi/10.1515/9781501505690...: "The advantages of having TE as a subset of PE include the ability to use standard, available tools, such as linkers, which can be used during the development process. Only during the final phases of the FV image creation does the tool chain need to convert the PE image into a TE. This similarity extends to the headers and the relocation records. In order to have an in-situ agent, such as a debugger nub, distinguish between the PE and TE images, the signature field has been slightly modified. For the PE, the signature is “MZ” for Mark Zbikowski, the designer of the Microsoft DOS† image format, the origin of the PE/COFF image. For the TE image, the signature is “VZ”, as found at the end of Volume 1 of the UEFI PI specification: #define EFI_TE_IMAGE_HEADER_SIGNATURE 0x5A56 // "VZ" This one character difference allows for sharing of debug scripts and code that only need to distinguish between the PE and TE via this one character of the signature field. Although the development and design team eschewed use of proper names in code or the resultant binaries, the “VZ” and “Vincent Zimmer” association appeared harmless, especially given the interoperability advantages."