On Fri, May 26, 2023 at 01:35:41PM +0200, Oliver Steffen wrote: > This is a step towards supporting unified kernel images (UKI) in Grub. > > 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. > > 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 is especially useful for > UKIs, where the kernel command line is fixed and usually does not > contain any information about the root partition. > > This module is only available on EFI platforms. > > This series also unifies the GUID implementations and introduces a > printf format specifier for them: %pG. > > [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/ > > v9: > - Rebase to latest master branch > - Fix error handling in bli.c: get_part_uuid() > And with that fix the NULL pointer issue discovered by Coverity > - Add NULL checks to grub_device_close() and grub_disk_close() > These are not strictly needed anymore with the changed error handling > in get_part_uuid(). > I leave the fate of this patch at the maintainer's discretion. > > v8: > - https://mail.gnu.org/archive/html/grub-devel/2023-05/msg00128.html > - Rebase to latest master branch > - Fix the documentation build (I hope) > - Fix build on arm > - Make more grub_guid instances 'static' > - Move endian conversion back out of the grub_guid printf code > > v7: > - https://mail.gnu.org/archive/html/grub-devel/2023-05/msg00005.html > - Add a "Modules" chapter to the documentation and describe the bli > module there > - Reword some section headings in the documentation > > v6: > - https://mail.gnu.org/archive/html/grub-devel/2023-04/msg00068.html > - Initialize the Boot Loader Interface on module load and remove the bli > command. > - Extract code for grub_efi_set_variable_to_string() > - Improve error messages in the bli module > - Improve GUID printing code > > v5: > - https://mail.gnu.org/archive/html/grub-devel/2023-03/msg00120.html > - Replace more grub_*_guid with the new grub_guid struct > > v4: > - https://mail.gnu.org/archive/html/grub-devel/2023-03/msg00058.html > - Place grub_utf8_to_utf16_alloc() in kern/misc.c and use it in kern/efi.c > - bli: rework partition GUID code, improve error reporting > - Add documentation for the bli module > - Address other comments > > v3: > - https://mail.gnu.org/archive/html/grub-devel/2023-03/msg00008.html > - Unify GUID implementations for GPT and EFI > - Add printf format specifier for GUIDs, drop guid print function from > v2. > - WIP/Please comment: Started extracting utf8->utf16 code. Where should > this go? > - Address other comments > > v2: > - https://mail.gnu.org/archive/html/grub-devel/2023-02/msg00099.html > - Addressed comments from Daniel > - Added a print function for gpt guids` > - Added integer overflow check in UTF16 conversion > - Added config drop-in file that loads the module on EFI > > v1: > - https://mail.gnu.org/archive/html/grub-devel/2023-01/msg00104.html > > > Oliver Steffen (11): > efi: Add grub_efi_set_variable_with_attributes() > Unify GUID types > kern/misc: Add a format specifier GUIDs > grub-core: Make use of guid printf format specifier > types.h: Add GRUB_SSIZE_MAX > kern/misc, kern/efi: Extract UTF-8 to UTF-16 code > efi: Add grub_efi_set_variable_to_string() > docs: Reword section headings > kern: check for NULL when closing devices and disks > Add a module for the Boot Loader Interface > util/grub.d: Activate bli module on EFI > > Makefile.util.def | 6 ++ > docs/grub.texi | 43 +++++++--- > grub-core/Makefile.core.def | 6 ++ > grub-core/commands/acpi.c | 4 +- > grub-core/commands/bli.c | 122 +++++++++++++++++++++++++++ > grub-core/commands/efi/efifwsetup.c | 4 +- > grub-core/commands/efi/loadbios.c | 14 +-- > grub-core/commands/efi/lsefi.c | 17 +--- > grub-core/commands/efi/lsefisystab.c | 10 +-- > grub-core/commands/efi/lssal.c | 4 +- > grub-core/commands/efi/smbios.c | 12 +-- > grub-core/commands/efi/tpm.c | 6 +- > grub-core/commands/probe.c | 14 ++- > grub-core/disk/efi/efidisk.c | 4 +- > grub-core/disk/ldm.c | 2 +- > grub-core/efiemu/i386/pc/cfgtables.c | 6 +- > grub-core/efiemu/main.c | 4 +- > grub-core/efiemu/runtime/efiemu.c | 14 +-- > grub-core/kern/device.c | 3 + > grub-core/kern/disk.c | 4 + > grub-core/kern/efi/acpi.c | 12 +-- > grub-core/kern/efi/efi.c | 109 ++++++++++++------------ > grub-core/kern/efi/fdt.c | 2 +- > grub-core/kern/efi/init.c | 2 +- > grub-core/kern/efi/sb.c | 4 +- > grub-core/kern/misc.c | 113 ++++++++++++++++++++----- > grub-core/loader/efi/fdt.c | 2 +- > grub-core/loader/efi/linux.c | 4 +- > grub-core/loader/i386/xnu.c | 13 +-- > grub-core/loader/ia64/efi/linux.c | 2 +- > grub-core/net/drivers/efi/efinet.c | 4 +- > grub-core/partmap/gpt.c | 4 +- > grub-core/term/efi/console.c | 2 +- > grub-core/term/efi/serial.c | 2 +- > grub-core/video/efi_gop.c | 8 +- > grub-core/video/efi_uga.c | 2 +- > include/grub/efi/api.h | 69 ++++++--------- > include/grub/efi/efi.h | 23 +++-- > include/grub/efiemu/efiemu.h | 10 +-- > include/grub/efiemu/runtime.h | 2 +- > include/grub/gpt_partition.h | 13 +-- > include/grub/misc.h | 3 + > include/grub/types.h | 11 +++ > util/grub-install.c | 2 +- > util/grub-probe.c | 2 +- > util/grub.d/25_bli.in | 24 ++++++ > 46 files changed, 487 insertions(+), 256 deletions(-) > create mode 100644 grub-core/commands/bli.c > create mode 100644 util/grub.d/25_bli.in
For all the patches Reviewed-by: Daniel Kiper <daniel.ki...@oracle.com>... Thank you for adding this feature! Daniel _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel