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?