All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vincent Mailhol <mailhol@kernel.org>
To: Ard Biesheuvel <ardb@kernel.org>,
	Vincent Mailhol <mailhol@kernel.org>,
	Ilias Apalodimas <ilias.apalodimas@linaro.org>
Cc: linux-kernel@vger.kernel.org, linux-efi@vger.kernel.org
Subject: Re: *** SPAM *** Re: [PATCH] efi/libstub: populate LoaderDevicePartUUID
Date: Sun, 2 Aug 2026 00:23:25 +0200	[thread overview]
Message-ID: <96dac58a-9f10-4bd5-ad7d-c238743b60e7@kernel.org> (raw)
In-Reply-To: <0aad56b5-a650-49c6-a193-db65c4c4395e@app.fastmail.com>

On 01/08/2026 at 15:47, Ard Biesheuvel wrote:
> 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: 
>> https://www.freedesktop.org/software/systemd/man/latest/systemd-gpt-auto-generator.html
>>
>> [3] GRUB -- §16.2 bli
>> Link: 
>> https://www.gnu.org/software/grub/manual/grub/html_node/bli_005fmodule.html
>>
>> Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
>> ---
>> 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 automatically
>> 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?

Kind of.

In my view, when booting through the EFI stub, the EFI stub becomes the
boot loader. I can also quote Documentation/admin-guide/efi-stub.rst:

  Since the EFI boot stub performs the jobs of a boot loader, in a
  certain sense it IS the boot loader.

which supports that idea.

> What about systemd-boot, does it set this variable?

Yes, it sets it in its efi_main().

Link: https://github.com/ivandavidov/systemd-boot/blob/master/project/src/sd-boot/boot.c#L1760-L1762

But IMHO, using systemd-boot kind of defeats the purpose of directly
booting the kernel from its EFI stub.

 
Yours sincerely,
Vincent Mailhol

  reply	other threads:[~2026-08-01 22:23 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-24 23:11 [PATCH] efi/libstub: populate LoaderDevicePartUUID Vincent Mailhol
2026-08-01 13:47 ` Ard Biesheuvel
2026-08-01 22:23   ` Vincent Mailhol [this message]
2026-08-04 20:05   ` Vincent Mailhol

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=96dac58a-9f10-4bd5-ad7d-c238743b60e7@kernel.org \
    --to=mailhol@kernel.org \
    --cc=ardb@kernel.org \
    --cc=ilias.apalodimas@linaro.org \
    --cc=linux-efi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.