summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZoltan Baldaszti <bztemail@gmail.com>2020-09-17 19:45:21 +0200
committerNico Huber <nico.h@gmx.de>2020-09-26 23:08:07 +0000
commitbe58923fed229e995b3807b5a6b6a0c19229ff54 (patch)
tree75043f0225e16e09632d781f6951b265da531b52
parent871c8734b966d0f52408b57a803eafb5ea208a9e (diff)
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>
-rw-r--r--payloads/external/BOOTBOOT/Kconfig6
-rw-r--r--payloads/external/BOOTBOOT/Kconfig.name8
-rw-r--r--payloads/external/BOOTBOOT/Makefile44
-rw-r--r--payloads/external/Makefile.inc5
4 files changed, 63 insertions, 0 deletions
diff --git a/payloads/external/BOOTBOOT/Kconfig b/payloads/external/BOOTBOOT/Kconfig
new file mode 100644
index 0000000000..c9d7133b71
--- /dev/null
+++ b/payloads/external/BOOTBOOT/Kconfig
@@ -0,0 +1,6 @@
+if PAYLOAD_BOOTBOOT
+
+config PAYLOAD_FILE
+ default "payloads/external/BOOTBOOT/bootboot/dist/bootbootcb.elf"
+
+endif
diff --git a/payloads/external/BOOTBOOT/Kconfig.name b/payloads/external/BOOTBOOT/Kconfig.name
new file mode 100644
index 0000000000..082a9b1ec2
--- /dev/null
+++ b/payloads/external/BOOTBOOT/Kconfig.name
@@ -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.
diff --git a/payloads/external/BOOTBOOT/Makefile b/payloads/external/BOOTBOOT/Makefile
new file mode 100644
index 0000000000..2460c183bb
--- /dev/null
+++ b/payloads/external/BOOTBOOT/Makefile
@@ -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
diff --git a/payloads/external/Makefile.inc b/payloads/external/Makefile.inc
index ef0990c9b7..da199e4bd3 100644
--- a/payloads/external/Makefile.inc
+++ b/payloads/external/Makefile.inc
@@ -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