bli: Add a module for the Boot Loader Interface

Add a new module named bli. It implements a small but quite useful part
of the Boot Loader Interface [0]. This interface uses EFI variables for
communication between the boot loader and the operating system.

When loaded, this module sets two EFI variables under the vendor GUID
4a67b082-0a4c-41cf-b6c7-440b29bb8c4f:

- LoaderInfo: contains GRUB + <version number>.
  This allows the running operating system to identify the boot loader
  used during boot.

- LoaderDevicePartUUID: contains the partition UUID of the EFI System
  Partition (ESP). This is used by systemd-gpt-auto-generator [1] to
  find the root partitions (and others too), via partition type IDs [2].

This module is available on EFI platforms only. The bli module relies on
the part_gpt module which has to be loaded beforehand to make the GPT
partitions discoverable.

Update the documentation, add a new chapter "Modules" and describe the
bli module there.

[0] https://systemd.io/BOOT_LOADER_INTERFACE/
[1] https://www.freedesktop.org/software/systemd/man/systemd-gpt-auto-generator.html
[2] https://uapi-group.org/specifications/specs/discoverable_partitions_specification/

Signed-off-by: Oliver Steffen <osteffen@redhat.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
Oliver Steffen authored and Daniel Kiper committed 2023-06-01 11:45:00 +02:00
1 parent d09387287b
commit e0fa7dc84c
4 files changed
+154

No files matched your search

+23
View File
@@ -96,6 +96,7 @@ This edition documents version @value{VERSION}.
* Filesystem:: Filesystem syntax and semantics
* Interface:: The menu and the command-line
* Environment:: GRUB environment variables
* Modules:: Available modules
* Commands:: Available builtin commands
* Internationalisation:: Topics relating to language support
* Security:: Authentication, authorisation, and signatures
@@ -3867,6 +3868,28 @@ using BIOS or EFI functions (no ATA, USB or IEEE1275).
@command{grub-mkconfig} uses this facility to implement
@samp{GRUB_SAVEDEFAULT} (@pxref{Simple configuration}).
@node Modules
@chapter Modules
In this chapter, we list all modules that are available in GRUB (currently incomplete).
Modules can be loaded via the @command{insmod} (@pxref{insmod}) command.
@menu
* bli::
@end menu
@node bli
@section bli
This module provides basic support for the Boot Loader Interface. The Boot
Loader Interface specifies a set of EFI variables that are used to communicate
boot-time information between the boot loader and the operating system.
When loaded, the bli module publishes the GPT partition UUID of the EFI System
Partition used during boot and a string identifying GRUB as the active boot
loader, including the version number.
This module is only available on UEFI platforms.
@node Commands
@chapter Available commands