The infamous Windows “blue screen of death” or BSOD seems to be all the rage. The BSOD should be a diagnostic tool, an information screen that technicians can use to begin locating the problem that caused the harmful event; Just because old Windows BSOD error codes were often so broad and vague as to be useless doesn't make the idea wrong.
Today, the Linux project's systemd version 255 honors that original intent by adding a systemd-bsod component that generates a full-screen display of some error messages when a Linux system crashes.
Experimental version
The systemd-bsod component is currently listed as "experimental" and "subject to change" but the functionality is simple: any logged error message that reaches the LOG_EMERG level will be displayed full screen so people can take a photo of it or write it down . Phoronix reports that, just like BSODs on modern Windows, the Linux version will also generate a QR code to make it easier to find information using your smartphone.
This is a small change to a single software project, but systemd handles system services and configuration for the vast majority of major GNU/Linux distributions, including but not limited to Debian, Fedora, Arch, Ubuntu, CentOS, Red Hat Enterprise Linux and many other smaller distributions. Chances are, whatever version of Linux you use, you'll end up seeing this version of systemd, depending on how often and willingly you integrate recent new software packages and how quickly you migrate to new versions when they come out.
New features in Systemd 255
systemd version 255 has dozens of other features and fixes, most of them more useful and significant than the new Blue Screen of Death feature. This includes many additions related to TPM support, disk encryption, and the ability to use hibernation with btrfs file systems. But none of these improvements attract as much attention.
Here's an expanded list of what's new in systemd 255, highlighting the most significant features and functionality:
- Systemd-storagetm: A new component that exposes blocking devices as NVMe-TCP, inspired by macOS and part of the new Systemd Storage Target mode.
- Systemd-bsod: Show error messages in full screen with log level “LOG_EMERG”. Intended as a diagnostic tool, it also displays a QR code for detailed error information.
- Review in Service Generation: Processes are now spawned using CLONE_VM and CLONE_VFORK via posix_spawn(), rather than the previous fork method.
- Systemd-pcrlock: Manages local TPM2 PCR policies for PCR 0-7, increasing security and parameter control.
- Systemd-vmspawn: An experimental tool that provides VMs the same interfaces and functionality as systemd-nspawn for containers, using QEMU as the backend.
- Varlinkctl: A tool added to facilitate interfacing with Varlink services.
- SECCOMP support for 64-bit LoongArch CPUs: Expands compatibility and security across different hardware architectures.
- Systemd bootctl: Now indicates whether the system was booted from a unified kernel image (UKI).
- Systemd-boot with New Hotkeys: Introduces “B” to restart and “O” to shut down keys from the boot menu.
- Internal Process Tracking with PIDFD: Improves process tracking efficiency on supported kernels.
- Soft reboot with systemctl: Automatically soft reboot to a new root file system if found in /run/nextroot/.
- SurveFinalKillSignal option: Avoid the last wave of SIGTERM/SIGKILL on shutdown.
- ConditionSecurity=measered-uki: Runs services only when the system is booted via a measured unified kernel image (UKI).
- Recording of TPM Measurements: TPM data is now written to an event log in /run/log/systemd/tpm2-measure.log.
- Removing Support for split-usr: Simplifies the file system structure.
- Deprecation of System V Service Scripts: Indicates a shift towards more modern technologies.
- TPM System Improvements(2): Various optimizations and enhancements to the Trusted Platform Module.
- Support for Hibernation on Btrfs Exchange Files: Introduces more flexibility for hibernation.
These features mean that systemd 255 will bring significant improvements and modernizations, impacting a wide range of GNU/Linux distributions. Its appearance in future Linux releases is highly anticipated, both in traditional versions and in continuously updated versions such as "rolling releases".