3 ms·
It's worth pointing out that EFI is an abstraction layer for hardware environments for the benefit (primarily[1]) of a bootloader and not an OS, which has vanis
by ajross 3y ago
It's worth pointing out that EFI is an abstraction layer for hardware environments for the benefit (primarily[1]) of a bootloader and not an OS, which has vanishing value in a virtualization context. If you're going to boot a kernel into your VM, you know (or should know) exactly what the "hardware" is and how it's configured. Even real mode BIOS is more than you really need, but it's small and understood and there's little value to rocking the boat.
[1] OS use of EFI at runtime is poorly specified and glitchy. On x86 EFI doesn't even document how to set up page tables for it, so doing it robustly requires you walk and enumerate all the pages in use at boot and make sure nothing touches them again. I've seen calls that return with interrupts masked, calls that change UART registers unexpectedly, etc...
- rwmj 3y agoI agree with all that. But the point for OS vendors is we'd prefer to have to support just one firmware type (one less axis on the ol' test matrix), and since physical PC hardware has largely settled on UEFI, that's what virtual machines will use too.