Questions About Librem Device Boot Chain

I’m trying to understand more about the boot process in the Librem devices and PureOS, though I guess also just computers in general.

Coreboot

This seems like Step 1. This stage initializes the hardware in some way (I don’t know the details), and then passes it off to the payload (Heads in the case of PureBoot, SeaBIOS otherwise). I think there is no user interaction within Coreboot. Is that right? Like, by the time you’re presented with text on a screen allowing you say change the boot device, etc, you’re already in the payload?

Payloads

Heads

Heads is the PureBoot payload which presents all the options of checking boot file integrity, etc. You can do all your Librem Key verification stuff, etc, here. Maybe also does some additional hardware initialization?

SeaBIOS

SeaBIOS maybe does some additional hardware initialization? Otherwise it just seems to be a minimal stage to get you to your operating system by choosing a boot disk.

Booting the OS

As far as I can tell from messing around with VMs, SeaBIOS needs to pass off to a bootloader (GRUB), which then boots Linux. It seems like the bootloader needs to be installed on a Master Boot Record (even if the disk is using GPT partitioning, in which case it seems to have a protective MBR sector at the start), and not for example in /boot. It’s been a while since I’ve tested this, but I’m pretty sure things failed to boot otherwise.

So do I have this right, and if so, why does SeaBIOS need the bootloader on the MBR sector and not in /boot? And is Heads the same?

Any help understanding these systems is appreciated.

Here is a highly detailed article explaining PureBoot and its history surrounding it.

2 Likes

Thanks! I’ll be sure to give this a read

1 Like