diff options
Diffstat (limited to 'payloads')
-rw-r--r-- | payloads/Kconfig | 20 | ||||
-rw-r--r-- | payloads/external/GRUB2/Kconfig | 32 | ||||
-rw-r--r-- | payloads/external/GRUB2/Kconfig.name | 13 | ||||
-rw-r--r-- | payloads/external/GRUB2/bootorder-seagrub | 1 | ||||
-rw-r--r-- | payloads/external/Makefile.inc | 37 | ||||
-rw-r--r-- | payloads/external/SeaBIOS/Kconfig | 13 | ||||
-rw-r--r-- | payloads/external/SeaBIOS/Kconfig.name | 1 |
7 files changed, 104 insertions, 13 deletions
diff --git a/payloads/Kconfig b/payloads/Kconfig index 386b207e7a..e184b35668 100644 --- a/payloads/Kconfig +++ b/payloads/Kconfig @@ -121,6 +121,15 @@ config COREINFO_SECONDARY_PAYLOAD coreinfo can be loaded as a secondary payload under SeaBIOS, GRUB, or any other payload that can load additional payloads. +config GRUB2_SECONDARY_PAYLOAD + bool "Load GRUB2 as a secondary payload" + default n + depends on !PAYLOAD_GRUB2 + select PAYLOAD_BUILD_GRUB2 + help + GRUB2 can be loaded as a secondary payload under SeaBIOS or any + other payload that can load additional payloads. + config MEMTEST_SECONDARY_PAYLOAD bool "Load Memtest86+ as a secondary payload" default n @@ -137,6 +146,17 @@ config NVRAMCUI_SECONDARY_PAYLOAD nvramcui can be loaded as a secondary payload under SeaBIOS, GRUB, or any other payload that can load additional payloads. +config SEABIOS_SECONDARY_PAYLOAD + bool "Load SeaBIOS as a secondary payload" + default n + depends on ARCH_X86 + depends on !PAYLOAD_SEABIOS + depends on !PAYLOAD_SEAGRUB + select PAYLOAD_BUILD_SEABIOS + help + SeaBIOS can be loaded as a secondary payload under GRUB or any + other payload that can load additional payloads. + config TINT_SECONDARY_PAYLOAD bool "Load tint as a secondary payload" default n diff --git a/payloads/external/GRUB2/Kconfig b/payloads/external/GRUB2/Kconfig index 552f06a523..9ad82eee67 100644 --- a/payloads/external/GRUB2/Kconfig +++ b/payloads/external/GRUB2/Kconfig @@ -1,5 +1,15 @@ +config PAYLOAD_BUILD_GRUB2 + bool + if PAYLOAD_GRUB2 +config PAYLOAD_FILE + default "payloads/external/GRUB2/grub2/build/default_payload.elf" + +endif + +if PAYLOAD_BUILD_GRUB2 + choice prompt "GRUB2 version" default GRUB2_STABLE @@ -42,12 +52,9 @@ config GRUB2_EXTRA_MODULES * gfxmenu for graphical menus (you'll need a theme as well) * gfxterm_background for setting background -config PAYLOAD_FILE - default "payloads/external/GRUB2/grub2/build/default_payload.elf" - config GRUB2_INCLUDE_RUNTIME_CONFIG_FILE bool "Include GRUB2 runtime config file into ROM image" - depends on PAYLOAD_GRUB2 + depends on PAYLOAD_BUILD_GRUB2 default n help The GRUB2 payload reads its runtime configuration file from etc/grub.cfg @@ -72,3 +79,20 @@ config GRUB2_RUNTIME_CONFIG_FILE The path of the GRUB2 runtime configuration file to be added to CBFS. endif + +if PAYLOAD_SEAGRUB + +config PAYLOAD_FILE + default "payloads/external/SeaBIOS/seabios/out/bios.bin.elf" + +config SEABIOS_BOOTORDER_FILE + default "payloads/external/GRUB2/bootorder-seagrub" + +config SEAGRUB_ALLOW_SEABIOS_BOOTMENU + bool "Allow to access SeaBIOS boot menu before launching GRUB" + help + Enable this to allow the access to the boot menu of SeaBIOS. It + increases the flexibility but allows to bypass the secure mechanism + implemented in the GRUB runtime config. Please use this with caution. + +endif diff --git a/payloads/external/GRUB2/Kconfig.name b/payloads/external/GRUB2/Kconfig.name index fe60d76dc3..91e68886e3 100644 --- a/payloads/external/GRUB2/Kconfig.name +++ b/payloads/external/GRUB2/Kconfig.name @@ -1,9 +1,22 @@ config PAYLOAD_GRUB2 bool "GRUB2" depends on ARCH_X86 || ARCH_ARM + select PAYLOAD_BUILD_GRUB2 help Select this option if you want to build a coreboot image with a GRUB2 payload. If you don't know what this is about, just leave it enabled. See https://coreboot.org/Payloads for more information. + +config PAYLOAD_SEAGRUB + bool "GRUB2 atop SeaBIOS" + depends on ARCH_X86 + select PAYLOAD_BUILD_SEABIOS + select GRUB2_SECONDARY_PAYLOAD + help + Select this option if you want to build a coreboot image + with a GRUB2 payload running atop SeaBIOS to improve its + hardware compatibility. + + See https://coreboot.org/Payloads for more information. diff --git a/payloads/external/GRUB2/bootorder-seagrub b/payloads/external/GRUB2/bootorder-seagrub new file mode 100644 index 0000000000..b33e1295c7 --- /dev/null +++ b/payloads/external/GRUB2/bootorder-seagrub @@ -0,0 +1 @@ +/rom@img/grub2 diff --git a/payloads/external/Makefile.inc b/payloads/external/Makefile.inc index e805a07b0a..e2fb9c7279 100644 --- a/payloads/external/Makefile.inc +++ b/payloads/external/Makefile.inc @@ -1,7 +1,7 @@ ## SPDX-License-Identifier: GPL-2.0-only # set up payload config and version files for later inclusion -ifeq ($(CONFIG_PAYLOAD_SEABIOS),y) +ifeq ($(CONFIG_PAYLOAD_BUILD_SEABIOS),y) PAYLOAD_CONFIG=payloads/external/SeaBIOS/seabios/.config PAYLOAD_VERSION=payloads/external/SeaBIOS/seabios/out/autoversion.h endif @@ -61,7 +61,8 @@ etc/grub.cfg-required := the GRUB runtime configuration file ($(CONFIG_GRUB2_RUN # SeaBIOS SEABIOS_CC_OFFSET=$(if $(filter %ccache,$(HOSTCC)),2,1) -payloads/external/SeaBIOS/seabios/out/bios.bin.elf: $(DOTCONFIG) +SEABIOS_TARGET_PATH=payloads/external/SeaBIOS/seabios/out/bios.bin.elf +$(SEABIOS_TARGET_PATH): $(DOTCONFIG) $(MAKE) -C payloads/external/SeaBIOS \ HOSTCC="$(HOSTCC)" \ CC=$(word $(SEABIOS_CC_OFFSET),$(CC_x86_32)) \ @@ -88,9 +89,14 @@ payloads/external/SeaBIOS/seabios/out/bios.bin.elf: $(DOTCONFIG) CONFIG_CONSOLE_UART_BASE_ADDRESS=$(CONFIG_CONSOLE_UART_BASE_ADDRESS) \ CONFIG_SEABIOS_HARDWARE_IRQ=$(CONFIG_SEABIOS_HARDWARE_IRQ) -payloads/external/SeaBIOS/seabios/out/vgabios.bin: payloads/external/SeaBIOS/seabios/out/bios.bin.elf -payloads/external/SeaBIOS/seabios/.config: payloads/external/SeaBIOS/seabios/out/bios.bin.elf -payloads/external/SeaBIOS/seabios/out/autoversion.h: payloads/external/SeaBIOS/seabios/out/bios.bin.elf +payloads/external/SeaBIOS/seabios/out/vgabios.bin: $(SEABIOS_TARGET_PATH) +payloads/external/SeaBIOS/seabios/.config: $(SEABIOS_TARGET_PATH) +payloads/external/SeaBIOS/seabios/out/autoversion.h: $(SEABIOS_TARGET_PATH) + +cbfs-files-$(CONFIG_SEABIOS_SECONDARY_PAYLOAD) += img/seabios +img/seabios-file := $(SEABIOS_TARGET_PATH) +img/seabios-type := payload +img/seabios-compression := $(CBFS_SECONDARY_PAYLOAD_COMPRESS_FLAG) # add a SeaBIOS bootorder file ifneq ($(strip $(CONFIG_SEABIOS_BOOTORDER_FILE)),) @@ -122,6 +128,18 @@ $(call add_intermediate, seabios_thread_optionroms, $(CBFSTOOL)) $(CBFSTOOL) $< add-int -i 2 -n etc/threads endif +ifeq ($(CONFIG_PAYLOAD_SEAGRUB),y) +ifneq ($(CONFIG_SEAGRUB_ALLOW_SEABIOS_BOOTMENU),y) +$(call add_intermediate, seabios_bootmenu, $(CBFSTOOL)) + @printf " SeaBIOS Disable boot menu\n" + $(if $(CONFIG_UPDATE_IMAGE),-$(CBFSTOOL) $< remove -n etc/show-boot-menu 2>/dev/null) + $(CBFSTOOL) $< add-int -i 0 -n etc/show-boot-menu +else +$(call add_intermediate, seabios_bootmenu, $(CBFSTOOL)) + $(if $(CONFIG_UPDATE_IMAGE),-$(CBFSTOOL) $< remove -n etc/show-boot-menu 2>/dev/null) +endif +endif + # Depthcharge payloads/external/depthcharge/depthcharge/build/depthcharge.elf depthcharge: $(DOTCONFIG) $(CBFSTOOL) @@ -189,6 +207,13 @@ payloads/external/FILO/filo/build/version.h: filo # Grub +GRUB_TARGET_PATH=payloads/external/GRUB2/grub2/build/default_payload.elf + +cbfs-files-$(CONFIG_GRUB2_SECONDARY_PAYLOAD) += img/grub2 +img/grub2-file := $(GRUB_TARGET_PATH) +img/grub2-type := payload +img/grub2-compression := $(CBFS_SECONDARY_PAYLOAD_COMPRESS_FLAG) + grub2: $(obj)/config.h $(MAKE) -C payloads/external/GRUB2 \ HOSTCC="$(HOSTCC)" \ @@ -201,7 +226,7 @@ grub2: $(obj)/config.h CONFIG_GRUB2_REVISION_ID=$(CONFIG_GRUB2_REVISION_ID) \ CONFIG_GRUB2_EXTRA_MODULES=$(CONFIG_GRUB2_EXTRA_MODULES) -payloads/external/GRUB2/grub2/build/default_payload.elf: grub2 +$(GRUB_TARGET_PATH): grub2 # U-Boot diff --git a/payloads/external/SeaBIOS/Kconfig b/payloads/external/SeaBIOS/Kconfig index d7dd165be8..405ff9db55 100644 --- a/payloads/external/SeaBIOS/Kconfig +++ b/payloads/external/SeaBIOS/Kconfig @@ -1,5 +1,15 @@ +config PAYLOAD_BUILD_SEABIOS + bool + if PAYLOAD_SEABIOS +config PAYLOAD_FILE + default "payloads/external/SeaBIOS/seabios/out/bios.bin.elf" + +endif + +if PAYLOAD_BUILD_SEABIOS + choice prompt "SeaBIOS version" default SEABIOS_STABLE @@ -114,9 +124,6 @@ config SEABIOS_SERCON_PORT_ADDR By default primary console UART defined by TTYS0_BASE is used. -config PAYLOAD_FILE - default "payloads/external/SeaBIOS/seabios/out/bios.bin.elf" - config PAYLOAD_VGABIOS_FILE string depends on SEABIOS_VGA_COREBOOT diff --git a/payloads/external/SeaBIOS/Kconfig.name b/payloads/external/SeaBIOS/Kconfig.name index bb1f30c9bf..623c298279 100644 --- a/payloads/external/SeaBIOS/Kconfig.name +++ b/payloads/external/SeaBIOS/Kconfig.name @@ -1,6 +1,7 @@ config PAYLOAD_SEABIOS bool "SeaBIOS" depends on ARCH_X86 + select PAYLOAD_BUILD_SEABIOS help Select this option if you want to build a coreboot image with a SeaBIOS payload. If you don't know what this is |