Pre-Boot Enviroinment

BIOS

EFI

POST

Read bootable media

Load Master Boot Record

Execute MBR

POST

Read bootable media

Load the GPT table

Mount the EFI system-partition



Load EFI-drivers for the system

Execute MBR

Bootstrap Environment

GRUB (v1)

GRUB (v2) (E)LILO Stage 1 loaded into MBR/EFI and gets executed by BIOS/EFI

Stage 1.5 loaded by Stage 1, including critical drivers

Stage 2, in the boot filesystem, executes

Stage 2 loads the kernel

Stage 1 loaded into MBR/EFI and gets executed by BIOS/EFI

Load first sector of core.img

Continues loading core.img

Loads GRUB config

Loads the kernel Stage1 loaded into MBR (or EFI by ELILO) and executed by BIOS/EFI

Stage 1 loads the first cluster of Stage 2, and executes.



Loads LILO information.

Loads the kernel

Kernel Load

The kernel uncompresses into memory

If configured, the kernel mounts the Initial Ramdisk, which contains needed modules to load the rest of the OS

Mounts the root filesystem, loading any needed modules from initrd

Swaps / from initrd to the actual root filesystem



Executes the specified init process

UID 1 process

Initd

Systemd

Upstart

Launchd

Checks /etc/inittab for loading procedures

Runs scripts specified by inittab



Mounts needed filesystems





Loads needed modules





Starts needed services based on runlevel



Finishes setting up userspace

Reads /etc/system.conf

Mounts needed filesystems

Loads needed modules

Starts services as needed

Runs startup events listed in /etc/events.d based on runlevel.

Loads needed modules

Mounts needed filesystems

Starts needed services

Reads /etc/launchd.conf for config details

Reads /etc/launchd.plist for per-driver/service details



For the most part, the levels do not depend on column. LILO does not require EFI, nor does GRUB require BIOS. EFI and BIOS support are now included in both bootloaders. Yes, there is some simplification here. EFI is very featured, but hasn't been commonly exercised to its full extent. Eventually EFI could possibly replace GRUB/LILO, but that day hasn't come yet.I did this because Things have Changed from the last time I really studied this. Back when I started it was BIOS, LILO, and Initd. I never did bother to wrap my head around Grub, mostly because the automatic tools have gotten a lot better so knowing it just to install isn't needed, and I haven't had the right kind of boot problems where I'd learn it through troubleshooting. I've also yet to run into EFI in the wild (I think...). Now that OpenSUSE is actively considering moving over to SystemD and Ubuntu having thrown initd over the side some time ago in favor of Upstart, it's time to revisit.I'm still fuzzy on SystemD so that's probably wrong.