I'm interested in building a toy OS, and the modern way of building one seems to be using UEFI. There are a few tutorials for writing a simple UEFI OS, but most of them use either GNU-EFI or EDK2, and I'd like to build one from scratch using only a C compiler, assembler, and linker. I tried getting clang to produce a PE32+ executable (I'm on Linux), but was unsuccessful. Any tutorials or places to find good documentation on this? (wiki.osdev.org has much more about legacy boot than UEFI)
I wrote this: <a href="https://github.com/tqh/efi-example" rel="nofollow">https://github.com/tqh/efi-example</a>
It's using the linker script and headers from GNU-EFI. Also check Zircon bootloader <a href="https://github.com/fuchsia-mirror/zircon/tree/master/bootloader" rel="nofollow">https://github.com/fuchsia-mirror/zircon/tree/master/bootloa...</a> It is Googles UEFI loader that works on x86-64 and arm-64. It's quite new, and has it's own linker script.