]> git.baikalelectronics.ru Git - kernel.git/commit
efi/libstub: implement generic EFI zboot
authorArd Biesheuvel <ardb@kernel.org>
Sun, 1 May 2022 23:08:16 +0000 (01:08 +0200)
committerArd Biesheuvel <ardb@kernel.org>
Tue, 20 Sep 2022 07:50:30 +0000 (09:50 +0200)
commit289de23451e4454c2b300003de64e89fde5ae8be
tree3db3945c1e4c4b2acd94a3c8a267580b17877a7a
parentc458e6742143cb337c22541e1ce18afb3f9bf7f2
efi/libstub: implement generic EFI zboot

Implement a minimal EFI app that decompresses the real kernel image and
launches it using the firmware's LoadImage and StartImage boot services.
This removes the need for any arch-specific hacks.

Note that on systems that have UEFI secure boot policies enabled,
LoadImage/StartImage require images to be signed, or their hashes known
a priori, in order to be permitted to boot.

There are various possible strategies to work around this requirement,
but they all rely either on overriding internal PI/DXE protocols (which
are not part of the EFI spec) or omitting the firmware provided
LoadImage() and StartImage() boot services, which is also undesirable,
given that they encapsulate platform specific policies related to secure
boot and measured boot, but also related to memory permissions (whether
or not and which types of heap allocations have both write and execute
permissions.)

The only generic and truly portable way around this is to simply sign
both the inner and the outer image with the same key/cert pair, so this
is what is implemented here.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
drivers/firmware/efi/Kconfig
drivers/firmware/efi/libstub/Makefile
drivers/firmware/efi/libstub/Makefile.zboot [new file with mode: 0644]
drivers/firmware/efi/libstub/file.c
drivers/firmware/efi/libstub/zboot-header.S [new file with mode: 0644]
drivers/firmware/efi/libstub/zboot.c [new file with mode: 0644]
drivers/firmware/efi/libstub/zboot.lds [new file with mode: 0644]
include/linux/efi.h