All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/6] linux: implement LoadFile2 initrd loading
@ 2022-09-08 13:30 Ard Biesheuvel
  2022-09-08 13:30 ` [PATCH v4 1/6] efi: move MS-DOS stub out of generic PE header definition Ard Biesheuvel
                   ` (5 more replies)
  0 siblings, 6 replies; 15+ messages in thread
From: Ard Biesheuvel @ 2022-09-08 13:30 UTC (permalink / raw)
  To: grub-devel
  Cc: Ard Biesheuvel, Daniel Kiper, Leif Lindholm, Nikita Ermakov,
	Atish Patra, Huacai Chen, Heinrich Schuchardt, dann frazier,
	Julian Andres Klode, Ilias Apalodimas

This implements the LoadFile2 initrd loading protocol, which is
essentially a callback interface into the bootloader to load the initrd
data into a caller provided buffer. This means the bootloader no longer
has to contain any policy regarding where to load the initrd (which
differs between architectures and kernel versions) and no longer has to
manipulate arch specific data structures such as DT or struct bootparams
to inform the OS where the initrd resides in memory. This is especially
relevant for the upcoming LoongArch support, which does not use either
DT or struct bootparams, and would have to rely on the initrd= command
line interface, which is deprecated and of limited utility [0].

Sample output from booting a recent Linux/arm64 kernel:

  grub> insmod part_msdos
  grub> linux (hd0,msdos1)/Image
  grub> initrd (hd0,msdos1)/initrd.img
  grub> boot
  EFI stub: Booting Linux Kernel...
  EFI stub: EFI_RNG_PROTOCOL unavailable, KASLR will be disabled
  EFI stub: Generating empty DTB
  EFI stub: Loaded initrd from LINUX_EFI_INITRD_MEDIA_GUID device path
  EFI stub: Exiting boot services and installing virtual address map...
  [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x411fd070]

Changes since v3:
- drop a couple of patches that have been merged independently in the
  meantime
- update patch #1 to read the PE image header offset from the file
  instead of using the harcoded offset
- add acks from Heinrich and Ilias

Changes since v2:
- incorporate some ancient feedback from Daniel that I never saw until
  today. (this is why I am sending two versions of the same series on
  the same day - apologies for the spam)

[0] The initrd= command line loader can only access files that reside on
the same volume as the loaded image, which means GRUB would have to
present this volume abstraction in order to serve the initrd file.
Another reason why this method is problematic is generic EFI zboot,
which is being added to Linux, and which calls loadimage on another,
embedded PE/COFF image which would also need to expose this volume
abstraction.

Cc: Daniel Kiper <daniel.kiper@oracle.com>
Cc: Leif Lindholm <quic_llindhol@quicinc.com>
Cc: Nikita Ermakov <arei@altlinux.org>
Cc: Atish Patra <atishp@atishpatra.org>
Cc: Huacai Chen <chenhuacai@loongson.cn>
Cc: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Cc: dann frazier <dann.frazier@canonical.com>
Cc: Julian Andres Klode <julian.klode@canonical.com>
Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>

Ard Biesheuvel (6):
  efi: move MS-DOS stub out of generic PE header definition
  linux/arm: unify ARM/arm64 vs Xen PE/COFF header handling
  linux/arm: account for COFF headers appearing at unexpected offsets
  efi/efinet: Don't close connections at fini_hw() time
  efi: implement LoadFile2 initrd loading protocol for Linux
  linux: ignore FDT unless we need to modify it

 grub-core/commands/efi/lsefi.c     |   1 +
 grub-core/kern/efi/efi.c           |   8 +-
 grub-core/loader/arm64/linux.c     | 172 ++++++++++++++++++--
 grub-core/loader/arm64/xen_boot.c  |  23 +--
 grub-core/loader/efi/fdt.c         |   7 +-
 grub-core/net/drivers/efi/efinet.c |  10 +-
 grub-core/net/net.c                |   2 +-
 include/grub/arm/linux.h           |   6 +
 include/grub/arm64/linux.h         |   4 +
 include/grub/efi/api.h             |  40 +++++
 include/grub/efi/efi.h             |   4 +-
 include/grub/efi/pe32.h            |  16 +-
 include/grub/net.h                 |   3 +-
 13 files changed, 248 insertions(+), 48 deletions(-)

-- 
2.35.1



^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2022-10-17 15:28 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-08 13:30 [PATCH v4 0/6] linux: implement LoadFile2 initrd loading Ard Biesheuvel
2022-09-08 13:30 ` [PATCH v4 1/6] efi: move MS-DOS stub out of generic PE header definition Ard Biesheuvel
2022-09-15 12:18   ` Leif Lindholm
2022-09-15 14:03     ` Ard Biesheuvel
2022-10-14 12:52       ` Daniel Kiper
2022-09-08 13:30 ` [PATCH v4 2/6] linux/arm: unify ARM/arm64 vs Xen PE/COFF header handling Ard Biesheuvel
2022-10-14 13:07   ` Daniel Kiper
2022-09-08 13:30 ` [PATCH v4 3/6] linux/arm: account for COFF headers appearing at unexpected offsets Ard Biesheuvel
2022-10-14 13:25   ` Daniel Kiper
2022-09-08 13:30 ` [PATCH v4 4/6] efi/efinet: Don't close connections at fini_hw() time Ard Biesheuvel
2022-10-14 13:53   ` Daniel Kiper
2022-09-08 13:30 ` [PATCH v4 5/6] efi: implement LoadFile2 initrd loading protocol for Linux Ard Biesheuvel
2022-10-17 15:07   ` Daniel Kiper
2022-09-08 13:30 ` [PATCH v4 6/6] linux: ignore FDT unless we need to modify it Ard Biesheuvel
2022-10-17 15:25   ` Daniel Kiper

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.