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.