

Here’s what those variables look like on my Lenovo workstation:įirst, we can see the Boot* variables of interest, including six different boot entries.

Boot0000, Boot0001, etc.) define each of the boot entries, and then another variable named BootOrder defines the order that those entries are normally considered (where the first one to successfully boot something wins). Variables with names that start with Boot and then a four hex digit number (e.g. It may look something like this:īehind the scenes, this is just a representation of a bunch of UEFI variables. Perfectly clear, right? Basically, it’s the thing that loads Windows or Linux, and also the thing that can present a boot menu (usually when you press a certain key combination when the device is powering up) for you to choose from available options, including OSes, PXE, HTTP boot, CD/media boot, etc. The boot manager is then responsible for determining what to loadĪnd any interactions with the user that may be required to make such a decision.” Once compliant firmware is initialized, it “The boot manager is a component in firmware conforming to this specification that determines whichĭrivers and applications should be explicitly loaded and when. So what’s the UEFI boot manager? Here’s how the UEFI 2.9 spec describes it: This was the last time I updated the UEFIv2 PowerShell module.

It’s useful to start with some background reading, for those that haven’t read my previous UEFI articles, since this builds on top of those: The task sounded simple enough: If you’ve got a UEFI-based machine that is currently running Windows, how can you force it to reboot into a Linux environment? But of course Windows doesn’t really want to make this easy, so it’s more work than it sounds. It seems like every time I need to work with UEFI, it turns into a multi-day affair involving reading spec documents and source code examples.
