[Open Mic] UEFI runtime was a bad idea. How to engineer around it in rust in a novel way
Crabefi Is library to implement UEFI, that supports x86, aarch64 and riscv. One problem that kept biting it, was UEFI Set Virtual Address Mode. This runtime command allows the UEFI runtime to be called by the kernel in its preferred memory map. This does mean the runtime needs be able to relocate while running. No programming language has a proper solution for this. It's a huge footgun or in rust terminology, it's very unsafe.
Crabefi works around this in a novel way. The runtime is a standalone binary that does not need to relocate pointers. Rust also avoids unsafe/undefined behavior with panic. Panic is basically a guaranteed footgun, as the kernel calls UEFI in ring 0. This talk will also explain how to avoid these panics in a provable way.
I'm Arthur Heymans. I've always been quite interested in how computers work, however, this interest only fully developed much later. While studying physics and philosophy at the university, I became very interested in the concept of free software via the "about GNU" page in my editor of choice, Emacs. The GNU/Linux OS is very usable as free software these days, however, firmware and some low-level drivers tend to present a different, much more closed story. This led me to discover coreboot, which is a project that offers an alternative to closed-source firmware/BIOS. Fast forward a few years and I'm a regular contributor to coreboot and have learned a great deal from incredible people who were willing to invest time in reviewing my patches. I secured a job at 9elements, which professionally involved me in multiple open-source firmware projects.
These days I'm expanding my horizon with firmware related web applications, rust firmware and FPGA programming.