payloads/external: add support for BOOTBOOT payload
BOOTBOOT is a multi-platform, architecture agnostic boot protocol. The protocol describes how to boot an ELF64 or PE32+ executable inside an initial ram disk image into clean 64 bit mode. This version uses libpayload to do that. Depending on the lib's configuration, initrd can be in ROM as a cbfs file or a Flashmap partition; on disk a GPT partition or a file on a FAT formatted ESP partition. For more information see https://gitlab.com/bztsrc/bootboot Change-Id: I8692cde0730338026a7760a293c1e37f66004bc0 Signed-off-by: Zoltan Baldaszti <bztemail@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/45482 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de>
This commit is contained in:
parent
871c8734b9
commit
be58923fed
|
@ -0,0 +1,6 @@
|
|||
if PAYLOAD_BOOTBOOT
|
||||
|
||||
config PAYLOAD_FILE
|
||||
default "payloads/external/BOOTBOOT/bootboot/dist/bootbootcb.elf"
|
||||
|
||||
endif
|
|
@ -0,0 +1,8 @@
|
|||
config PAYLOAD_BOOTBOOT
|
||||
bool "BOOTBOOT"
|
||||
depends on ARCH_X86 || ARCH_ARM64
|
||||
help
|
||||
Select this option if you want to build a coreboot image
|
||||
with a BOOTBOOT Protocol payload.
|
||||
|
||||
See https://gitlab.com/bztsrc/bootboot for more information.
|
|
@ -0,0 +1,44 @@
|
|||
project_git_repo=https://gitlab.com/bztsrc/bootboot.git
|
||||
project_dir=bootboot
|
||||
ifeq ($(CONFIG_COREBOOT_BUILD),)
|
||||
include ../../../.config
|
||||
endif
|
||||
ifeq ($(CONFIG_ARCH_ARM64),y)
|
||||
loader_dir=$(project_dir)/aarch64-cb
|
||||
else
|
||||
loader_dir=$(project_dir)/x86_64-cb
|
||||
endif
|
||||
|
||||
unexport KCONFIG_AUTOHEADER
|
||||
unexport KCONFIG_AUTOCONFIG
|
||||
unexport KCONFIG_DEPENDENCIES
|
||||
unexport KCONFIG_SPLITCONFIG
|
||||
unexport KCONFIG_TRISTATE
|
||||
unexport KCONFIG_NEGATIVES
|
||||
|
||||
all: bootboot
|
||||
|
||||
checkout:
|
||||
echo " GIT BOOTBOOT $(loader_dir)"
|
||||
test -L $(project_dir) || test -d $(project_dir) || \
|
||||
git clone $(project_git_repo) $(project_dir)
|
||||
|
||||
bootboot: libpayload
|
||||
echo " MAKE $(loader_dir)"
|
||||
$(MAKE) -C $(loader_dir) LIBCONFIG_PATH=../../../libpayload
|
||||
|
||||
libpayload: checkout
|
||||
cp $(loader_dir)/lib.config ../../libpayload/.config
|
||||
cd ../../libpayload && $(MAKE) oldconfig && \
|
||||
$(MAKE) && $(MAKE) DESTDIR=../external/BOOTBOOT/$(loader_dir) install
|
||||
|
||||
clean:
|
||||
test -d $(loader_dir) && $(MAKE) -C $(loader_dir) clean || exit 0
|
||||
|
||||
distclean:
|
||||
rm -rf $(project_dir)
|
||||
|
||||
print-repo-info:
|
||||
echo "$(project_git_repo) $(project_dir)"
|
||||
|
||||
.PHONY: checkout bootboot libpayload clean distclean print-repo-info
|
|
@ -303,3 +303,8 @@ payloads/external/Yabits/uefi/build/uefi.elf yabits:
|
|||
CONFIG_YABITS_MASTER=$(CONFIG_YABITS_MASTER) \
|
||||
CONFIG_YABITS_STABLE=$(CONFIG_YABITS_STABLE) \
|
||||
MFLAGS= MAKEFLAGS=
|
||||
|
||||
# BOOTBOOT
|
||||
|
||||
payloads/external/BOOTBOOT/bootboot/dist/bootbootcb.elf:
|
||||
$(MAKE) -C payloads/external/BOOTBOOT all
|
||||
|
|
Loading…
Reference in New Issue