minoca / os

Minoca operating system
Other
2.71k stars 232 forks source link

Question about the minimal UEFI implementation #125

Closed Melab closed 7 years ago

Melab commented 7 years ago

This is about the layer of code that is meant to emulate on platforms that don't have it (i.e., Veyron, legacy BIOS, etc.). What features does it implement? What is missing? How does it provide runtime services when the OS is running (especially if there is no SMM on ARM)?

evangreen commented 7 years ago

Hi Melab, Our core UEFI implementation contains basically the bare essentials needed by Minoca's boot loader to get up and running. Namely it can:

Our UEFI implementations are compiled per platform into a single blob, so they act as an encapsulation of all the platform-specific stuff so that our boot manager and OS loader don't change at all from platform to platform. Our implementation is far from complete, however. Off the top of my head big ticket items that we don't do:

UEFI runtime services are just a function table that the OS calls into. Subtracting update capsules, UEFI runtime services basically come down to Get/SetTime, Get/SetWakeupTime, and ResetSystem, which we implement per platform. I'm not a BIOS expert, but the services I think of that live behind SMM mode are more like fan control and PS/2 emulation over USB, which our implementations so far haven't had to provide.

Hope that helps. Is there a project you're thinking about?