summaryrefslogtreecommitdiffstats
path: root/common/recipes-bsp/systemd-boot/systemd-boot.bbappend
diff options
context:
space:
mode:
authorJianxun Zhang <jianxun.zhang@linux.intel.com>2016-08-03 11:04:14 -0700
committerTom Zanussi <tom.zanussi@linux.intel.com>2016-08-03 17:36:45 -0500
commit7d3305235702a7c730ea9af9db6b00156e664194 (patch)
treee2c758a0af21ba62e39f92e7517371dea264fc33 /common/recipes-bsp/systemd-boot/systemd-boot.bbappend
parent8fe13a12c26022843a31e0909f34843f78bdacf6 (diff)
downloadmeta-intel-7d3305235702a7c730ea9af9db6b00156e664194.tar.gz
systemd-boot: Load board-specific entry and kernel cmdline
Invoke RMC APIs in this bootloader to query board-specific data from RMC database(DB) file on ESP. Data can be boot entries or a global kernel boot command line fragment specific to a type of board supported in RMC DB. Bootloader queries a file blob named BOOTENTRY.CONFIG from RMC DB first. In success, bootloader parses BOOTENTRY.CONFIG to get name of each boot entry file associated to the type of running board, and then tries to load the entry into internal config data structure. Once any entry is loaded from RMC DB, bootloader skips loading conf files on ESP. BOOTENTRY.CONFIG has a very simple format - every line is a boot entry file's name. For example, to specify two boot entries in it: boot.conf install.conf Bootloader also seeks another file named KBOOTPARAM in RMC dB. when it can obtain this file associated to the type of running board, it appends what in file to the end of kernel command line before it boots up kernel. The appending is effective on every boot entry, so it is called "global" cmdline fragment. When Bootloader doesn't get config, an entry or cmdline fragment for the type of board, it simply moves to the next step. Signed-off-by: Jianxun Zhang <jianxun.zhang@linux.intel.com> Reviewed-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com>
Diffstat (limited to 'common/recipes-bsp/systemd-boot/systemd-boot.bbappend')
-rw-r--r--common/recipes-bsp/systemd-boot/systemd-boot.bbappend20
1 files changed, 20 insertions, 0 deletions
diff --git a/common/recipes-bsp/systemd-boot/systemd-boot.bbappend b/common/recipes-bsp/systemd-boot/systemd-boot.bbappend
new file mode 100644
index 00000000..f42434c1
--- /dev/null
+++ b/common/recipes-bsp/systemd-boot/systemd-boot.bbappend
@@ -0,0 +1,20 @@
1DEPENDS += "rmc"
2
3FILESEXTRAPATHS_prepend := "${THISDIR}/systemd-boot:"
4
5EXTRA_OEMAKE += 'EFI_LDFLAGS="-L${STAGING_DIR_HOST}/usr/lib" EFI_CFLAGS="-I${STAGING_INCDIR}/rmc/efi -DRMC_EFI"'
6
7# Pin systemd revision down for systemd-boot recipe.
8# Patches could not be applied cleanly when systemd in OE is updated,
9# though we don't expect a lot of changes could happen in bootloader.
10# RMC is designed to support a large number of types of boards, so we
11# should do explicit update with validation to prevent regression even
12# resolving conflicts for a new tip could be done in a short time.
13
14# Revision: systemd 230 in OE
15SRCREV = "3a74d4fc90cb322a4784a3515bef7118c8f8c5ba"
16
17SRC_URI += "file://0001-sd-boot-Link-RMC-libraries-into-bootloader.patch \
18 file://0002-sd-boot-Load-board-specific-boot-entries-from-RMC-da.patch \
19 file://0003-sd-boot-Support-global-kernel-command-line-fragment.patch \
20 "