Re: [PATCH] efi/libstub: populate LoaderDevicePartUUID
"Ard Biesheuvel" <[email protected]> Sat, 01 Aug 2026 15:47:14 +0200
| Newsgroups | org.kernel.vger.linux-efi,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Hi Vincent, On Sat, 25 Jul 2026, at 01:11, Vincent Mailhol wrote: > The Boot Loader Interface [1] defines LoaderDevicePartUUID. That > variable contains the GPT partition UUID of the device path from which > the boot loader was loaded. > > This is used for example by systemd-gpt-auto-generator [2] to identify > the disk the boot loader was launched from and automatically detect and > mount partitions on it. > > GRUB populates it [3], but most EFI firmware implementations do not. > Because of that, the variable is missing when booting the kernel from > the EFI stub. > > Read the loaded image device path, extract the GUID signature from its > GPT HD() device path node and publish it as LoaderDevicePartUUID under > the Linux loader entry vendor GUID. Do not overwrite an existing > variable, so a boot loader supplied value keeps precedence. > > Use a volatile variable with boot-service and runtime access so the > value remains available to user space services such as systemd, without > persisting stale boot state across resets. > > Install the efi_bli_set_variables() hook in both the generic efi-stub.c > path and the x86-specific x86-stub.c path. > > [1] The Boot Loader Interface > Link: https://systemd.io/BOOT_LOADER_INTERFACE/ > > [2] systemd-gpt-auto-generator > Link:=20 > https://www.freedesktop.org/software/systemd/man/latest/systemd-gpt-au= to-generator.html > > [3] GRUB -- =C2=A716.2 bli > Link:=20 > https://www.gnu.org/software/grub/manual/grub/html_node/bli_005fmodule= .html > > Signed-off-by: Vincent Mailhol <[email protected]> > --- > Here is a bit of extra context around this patch. I recently installed > coreboot on my machine with edk2 as the payload. After booting the > kernel directly from the EFI stub instead of booting it from GRUB, I > noticed that some partitions which were previously mounted automatical= ly > were not mounted anymore. > > Upon investigation, I found that those partitions were mounted > automatically using DPS [4]. DPS needs the LoaderDevicePartUUID EFI > variable, which was set by GRUB but not by edk2. > > I first proposed a series to add that variable in edk2 [5]. The change > was not well received because BLI is perceived as too specific to Linux > systems. Upon reflection, I concluded that the kernel EFI stub is the > best location to implement it because it resolves the problem for EFI > firmware implementations in one place. > So it is the bootloader that sets this variable, and you want to boot without a bootloader, right? What about systemd-boot, does it set this variable?