| created on | January 14, 2026 |
A Unified Kernel Image (UKI) is a combination of an UEFI boot stub, a Linux kernel, and further (optional) resources like an initrd, all combined into a single UEFI image. This file can either be directly invoked by the UEFI firmware bootloader or by a bootloader like rEFInd or an OS’ bootloader.
The UEFI boot stub is a small program that can be executed by the UEFI firmware. After the UEFI firmware bootlader has loaded the UKI, it executes the boot stub, which loads the kernel and all other resources from the UKI file into memory, transitions into the kernel and thus handles control over to the kernel.
UKIs come in PE format with COFF sections. UEFI uses a subset of the PE32+ image format with a modified header signature, which distinguishes UEFI images from normal PE32 executables. The “+” addition to PE32 provides the 64-bit relocation fix-up extensions to standard PE32 format.
An UKI consists at least of the following two components:
Additionally, an UKI can contain the following optional components:
All sections may appear at most once, except for the section which may appear multiple times.
An UKI may consist of a base profile with sections like described above and one or more profiles, separated from the base profile and each other by sections. The sections act both as a label for each profile and as delimiters between the base profile and each profile.
Each section introduces and defines a profile, which are numbered from zero, and typically
denoted with a
The UEFI stub combines the PE sections of the selected profile with the PE sections of the base profile that are not specified in the selected profile: sections in the selected profile override those of the same name in the base profile.
A profile is (optionally) selected by prefixing the EFI stub’s invocation parameters (“command line”) with
, , , etc. (an
Profile is the default profile and is automatically selected if a multi-profile UKI is invoked without any profile selected.
The profile selector prefix of the UKI’s invocation parameters is stripped after parsing, and is not passed to the kernel
| section | content | profile |
|---|---|---|
| .linux | Linux ELF kernel | base |
| .osrel | /etc/os-release | base |
| .uname | output of | base |
| .cmdline | quiet | base |
| .profile | ID=normal TITLE=“normal boot” | @0 |
| .profile | ID=extbootlog TITLE=“extended boot log” | @1 |
| .cmdline | loglevel=5 | @1 |
The page userspace tools lists some tools for building UKIs.