About this project

sd-boot installs Linux kernels and EFI programs to the boot partition using systemd's kernel-install. According to the README, this provides a systematic way to install or remove bootable software from the boot partition. kernel-install uses $BOOT to refer to the partition or its mount point, usually mounted on /efi or /boot. The README notes two recommended layouts: mounting the ESP on /efi with an optional XBOOTLDR partition on /boot (the kernel-install recommendation), or mounting the ESP on /boot. sd-boot and kernel-install work with either approach, and the project prefers the first. The project provides pacman ALPM hooks that install or remove kernels and EFI tools when a kernel package is installed, updated or removed; installers triggered by those hooks; command-line tools for administrators to directly reinstall or remove kernels; and kernel-install plugins used for loader entries for non-UKI kernels and EFI tools. Installing a kernel means placing the image in the $BOOT partition so it can be booted, so kernel packages should place kernel images in /usr only, as should bootable EFI tools such as edk2-shell and memtest86+. Documentation is installed under /usr/share/sd-boot/docs in HTML and PDF, and is also available on readthedocs. Man pages are included for sd-boot-efifs-update, sd-boot-efi-tool-update, sd-boot-find-boot-mounts and sd-boot-kernel-update. The README describes coding standards: functional testing, static analysis with tools such as clang-tidy, compiler analysis such as -fanalyzer, clean runs under valgrind, human code review, and additional AI reviews. Configuration is split into kernel-install configuration and sd-boot configuration, both following Linux priority order with drop-in files. sd-boot ships /usr/lib/kernel/install.conf.d/010-sd-boot-install.conf setting layout=uki, initrd_generator=dracut and uki_generator=ukify, which can be overridden in /etc/kernel/install.conf or /etc/kernel/install.conf.d/. The README recommends sticking with UKI and dracut. sd-boot configuration files live in /etc/sd-boot: config.yaml with verb and skip_kernel_plugins settings; efi-tool.packages listing EFI tool package names such as memtest86_64-git and edk2-shell; and kernel.packages listing managed kernel packages. EFI tools must provide a package-name.image file containing the full path to the .efi program; sd-boot includes edk2-shell.image and memtest86_64-git.image. Comment lines starting with # are permitted in all config files. A default dracut configuration is provided at /usr/lib/dracut/dracut.conf.d/010-sd-boot-dracut.conf and may be overridden in /etc/dracut.conf.d/010-sd-boot-dracut.conf.