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_MASTER=$(CONFIG_YABITS_MASTER) \
|
||||||
CONFIG_YABITS_STABLE=$(CONFIG_YABITS_STABLE) \
|
CONFIG_YABITS_STABLE=$(CONFIG_YABITS_STABLE) \
|
||||||
MFLAGS= MAKEFLAGS=
|
MFLAGS= MAKEFLAGS=
|
||||||
|
|
||||||
|
# BOOTBOOT
|
||||||
|
|
||||||
|
payloads/external/BOOTBOOT/bootboot/dist/bootbootcb.elf:
|
||||||
|
$(MAKE) -C payloads/external/BOOTBOOT all
|
||||||
|
|
Loading…
Reference in New Issue