Systemd was created to solve issues with Linux distributions running on desktop and laptop computers.

Before figuring out how I would build an OS it’s probably good to figure out what type of OS I actually want to build, what purpose I intend to cover. I think a desktop OS is probably the most interesting. Why is that? Well, first of all, I use one of these for my job every single day, so I care immediately, it’s my primary tool of work.

See Fitting Everything Together

With that experience, it naturally makes sense to leverage existing and commonly used last stage boot loader paradigms, particularly those commonly used on laptops and desktops. Unfortunately, that falls into the web of UEFI. Rather than writing generic user-space code, it requires writing more specialized UEFI code that duplicates existing user-space code and lacks an open community.

Just as the logic run by Linux distros in an initramfs today also could have been implemented in specialized boot loader software, the logic in systemd-boot would be easier to maintain and be more approachable as a user-space application.

In fact, systemd already has implemented user-space code (see src/shared/bootspec.c) for parsing Boot Loader Specification (BLS) boot loader entries that is used by bootctl to list the entries (e.g. bootctl list --json=pretty).

Post by @philipmolloy@mastodon.social
View on Mastodon