868282e195
The u-root toolkit dropped the original uinit bootloader in the master branch and respectively the systemboot-option in templates.go. In consequence the LinuxBoot builds will boot into the u-root shell and waiting for input. This commit enables the reuse of the -uinitcmd flag to specify a command, which runs after the u-root init-process. Systemboot as a bootloader wrapper will mimic a BIOS/UEFI boot device selection. Other preselections, i.e. stboot and boot2 are implemented as well. Custom strings or programs can be set as well, but they cannot contain program flags. E.g. 'fbnetboot -class linuxboot' will not work, because they aren't symlinkable. This commit and its respective LinuxBoot builds with systemboot, none and one custom option have been tested successfully on a UP squared single board computer with the intended behavior. Change-Id: I4ac3409040ea77a1836f90f43fba07d2cd05a952 Signed-off-by: Patrik Tesarik <mail@patrik-tesarik.de> Reviewed-on: https://review.coreboot.org/c/coreboot/+/40316 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Christian Walter <christian.walter@9elements.com> Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
342 lines
7.7 KiB
Text
342 lines
7.7 KiB
Text
## SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
if PAYLOAD_LINUXBOOT
|
|
|
|
choice
|
|
prompt "Architecture"
|
|
depends on LINUXBOOT_COMPILE_KERNEL || LINUXBOOT_BUILD_INITRAMFS
|
|
default LINUXBOOT_X86_64
|
|
|
|
config LINUXBOOT_X86_64
|
|
bool "x86_64"
|
|
depends on ARCH_X86
|
|
help
|
|
AMD64 kernel and initramfs
|
|
|
|
config LINUXBOOT_X86
|
|
bool "x86"
|
|
depends on ARCH_X86
|
|
help
|
|
X86 kernel and initramfs
|
|
|
|
config LINUXBOOT_ARM64
|
|
bool "arm64"
|
|
depends on ARCH_ARM64
|
|
select PAYLOAD_FIT_SUPPORT
|
|
help
|
|
AARCH64 kernel and initramfs
|
|
|
|
config LINUXBOOT_RISCV
|
|
bool "RISC-V"
|
|
depends on ARCH_RISCV
|
|
select PAYLOAD_FIT_SUPPORT
|
|
help
|
|
RISC-V kernel and initramfs
|
|
|
|
endchoice
|
|
|
|
comment "Linux kernel"
|
|
|
|
config LINUXBOOT_COMPILE_KERNEL
|
|
bool "Compile kernel"
|
|
default n
|
|
|
|
if LINUXBOOT_COMPILE_KERNEL
|
|
comment "parse linux crosscompiler with: LINUXBOOT_CROSS_COMPILE"
|
|
endif
|
|
|
|
config LINUXBOOT_KERNEL_PATH
|
|
string "Path to kernel"
|
|
default "Image"
|
|
depends on !LINUXBOOT_COMPILE_KERNEL
|
|
|
|
if LINUXBOOT_COMPILE_KERNEL
|
|
|
|
choice
|
|
prompt "Kernel release"
|
|
default LINUXBOOT_KERNEL_STABLE
|
|
help
|
|
Choose the kernel release.
|
|
|
|
Select 'custom' if your want to define the kernel version.
|
|
For more information about the current 'mainline', 'stable' or 'longterm'
|
|
version, visit: https://www.kernel.org/
|
|
|
|
config LINUXBOOT_KERNEL_MAINLINE
|
|
bool "mainline"
|
|
help
|
|
Mainline kernel version
|
|
|
|
config LINUXBOOT_KERNEL_STABLE
|
|
bool "stable"
|
|
help
|
|
Stable kernel version
|
|
|
|
config LINUXBOOT_KERNEL_LONGTERM
|
|
bool "longterm"
|
|
help
|
|
Longterm (LTS) kernel version
|
|
|
|
config LINUXBOOT_KERNEL_CUSTOM
|
|
bool "custom"
|
|
help
|
|
Custom kernel version
|
|
|
|
endchoice
|
|
|
|
config LINUXBOOT_KERNEL_CUSTOM_VERSION
|
|
string "kernel version"
|
|
default ""
|
|
depends on LINUXBOOT_KERNEL_CUSTOM
|
|
help
|
|
Choose the Linux kernel version number. (x.x.x)
|
|
Release candidate kernels (rc) are currently are not supported.
|
|
|
|
choice
|
|
prompt "Kernel configuration"
|
|
default LINUXBOOT_KERNEL_ARCH_DEFAULT_CONFIG
|
|
|
|
config LINUXBOOT_KERNEL_ARCH_DEFAULT_CONFIG
|
|
bool "Default architecture configuration"
|
|
help
|
|
This option will use the default configuration for the
|
|
selected architecture.
|
|
|
|
config LINUXBOOT_KERNEL_CUSTOM_CONFIG
|
|
bool "Custom (def)config file"
|
|
|
|
endchoice
|
|
|
|
config LINUXBOOT_KERNEL_CONFIGFILE
|
|
string "Config file path"
|
|
default "defconfig"
|
|
depends on LINUXBOOT_KERNEL_CUSTOM_CONFIG
|
|
help
|
|
Path to the kernel configuration file.
|
|
|
|
Note: this can be a defconfig file or a complete .config file.
|
|
|
|
choice
|
|
prompt "Kernel binary format"
|
|
default LINUXBOOT_KERNEL_BZIMAGE if LINUXBOOT_X86 || LINUXBOOT_X86_64
|
|
default LINUXBOOT_KERNEL_UIMAGE if LINUXBOOT_ARM64 || LINUXBOOT_RISCV
|
|
|
|
config LINUXBOOT_KERNEL_BZIMAGE
|
|
bool "bzImage"
|
|
depends on LINUXBOOT_X86 || LINUXBOOT_X86_64
|
|
|
|
config LINUXBOOT_KERNEL_UIMAGE
|
|
bool "uImage"
|
|
depends on LINUXBOOT_ARM64 || LINUXBOOT_RISCV
|
|
|
|
endchoice
|
|
|
|
config LINUXBOOT_DTB_FILE
|
|
string "Compiled devicetree file"
|
|
depends on LINUXBOOT_ARM64 || LINUXBOOT_RISCV
|
|
default ""
|
|
|
|
endif #LINUXBOOT_COMPILE_KERNEL
|
|
|
|
config LINUX_COMMAND_LINE
|
|
string "Kernel command-line"
|
|
default ""
|
|
help
|
|
Add your own kernel command-line arguments.
|
|
|
|
config PAYLOAD_FILE
|
|
default "payloads/external/LinuxBoot/linuxboot/bzImage" if LINUXBOOT_COMPILE_KERNEL && ( LINUXBOOT_X86 || LINUXBOOT_X86_64 )
|
|
default "payloads/external/LinuxBoot/linuxboot/uImage" if LINUXBOOT_COMPILE_KERNEL && (LINUXBOOT_ARM64 || LINUXBOOT_RISCV)
|
|
default LINUXBOOT_KERNEL_PATH if !LINUXBOOT_COMPILE_KERNEL
|
|
|
|
comment "Linux initramfs"
|
|
|
|
config LINUXBOOT_BUILD_INITRAMFS
|
|
bool "Build initramfs"
|
|
default n
|
|
|
|
config LINUXBOOT_INITRAMFS_PATH
|
|
string "Path to initramfs"
|
|
depends on !LINUXBOOT_BUILD_INITRAMFS
|
|
|
|
if LINUXBOOT_BUILD_INITRAMFS
|
|
|
|
choice
|
|
prompt "Payload Mode"
|
|
default LINUXBOOT_UROOT
|
|
|
|
config LINUXBOOT_UROOT
|
|
bool "u-root"
|
|
help
|
|
Enable u-root linuxboot mode.
|
|
See http://u-root.tk/ for more information.
|
|
|
|
endchoice
|
|
|
|
if LINUXBOOT_UROOT
|
|
|
|
choice
|
|
prompt "U-root version"
|
|
default LINUXBOOT_UROOT_MAIN
|
|
|
|
config LINUXBOOT_UROOT_CUSTOM
|
|
bool "custom"
|
|
help
|
|
choose a custom u-root branch
|
|
|
|
config LINUXBOOT_UROOT_MAIN
|
|
bool "main"
|
|
help
|
|
Latest u-root version
|
|
|
|
config LINUXBOOT_UROOT_V3_0_0
|
|
bool "v3.0.0"
|
|
|
|
config LINUXBOOT_UROOT_V2_0_0
|
|
bool "v2.0.0"
|
|
|
|
config LINUXBOOT_UROOT_V1_0_0
|
|
bool "v1.0.0"
|
|
|
|
endchoice
|
|
|
|
config LINUXBOOT_UROOT_CHECKOUT
|
|
string "U-root custom branch"
|
|
depends on LINUXBOOT_UROOT_CUSTOM
|
|
|
|
config LINUXBOOT_UROOT_VERSION
|
|
string
|
|
default LINUXBOOT_UROOT_CHECKOUT if LINUXBOOT_UROOT_CUSTOM
|
|
default "main" if LINUXBOOT_UROOT_MAIN
|
|
default "v3.0.0" if LINUXBOOT_UROOT_V3_0_0
|
|
default "v2.0.0" if LINUXBOOT_UROOT_V2_0_0
|
|
default "v1.0.0" if LINUXBOOT_UROOT_V1_0_0
|
|
|
|
choice
|
|
prompt "Build format"
|
|
default LINUXBOOT_UROOT_BB
|
|
help
|
|
u-root build format (e.g. bb or source). (default "bb")
|
|
|
|
config LINUXBOOT_UROOT_BB
|
|
bool "bb"
|
|
|
|
config LINUXBOOT_UROOT_SOURCE
|
|
bool "source (experimental)"
|
|
|
|
endchoice
|
|
|
|
config LINUXBOOT_UROOT_FORMAT
|
|
string
|
|
default "bb" if LINUXBOOT_UROOT_BB
|
|
default "source" if LINUXBOOT_UROOT_SOURCE
|
|
|
|
config LINUXBOOT_UROOT_FILES
|
|
string "Add files to u-root base"
|
|
help
|
|
Additional files, directories, and binaries (with their ldd dependencies) to add to archive.
|
|
Can be speficified multiple times.
|
|
|
|
config LINUXBOOT_UROOT_INITCMD
|
|
string "Init target"
|
|
default "init"
|
|
help
|
|
Symlink target for /init.
|
|
Can be an absolute path or a u-root command name. (default "init")
|
|
|
|
config LINUXBOOT_UROOT_SHELL
|
|
string "default shell"
|
|
default "elvish"
|
|
help
|
|
Default shell.
|
|
Can be an absolute path or a u-root command name. (default "elvish")
|
|
|
|
config LINUXBOOT_UROOT_COMMANDS
|
|
string "U-root commands"
|
|
default "boot coreboot-app"
|
|
help
|
|
List of additional modules to include,
|
|
separated by space. (default "boot coreboot-app")
|
|
|
|
if LINUXBOOT_UROOT_MAIN
|
|
|
|
choice
|
|
prompt "Choose a specific bootloader"
|
|
default SPECIFIC_BOOTLOADER_NONE
|
|
help
|
|
Specify a bootloader which starts after u-root init. It will be a symlink
|
|
to /bin/uinit. Default: None
|
|
|
|
config SPECIFIC_BOOTLOADER_NONE
|
|
bool "none"
|
|
help
|
|
Leave u-root to decide which bootloaders to load first after init, if
|
|
any at all. Most likely u-root will start into the defined u-root shell.
|
|
|
|
config SPECIFIC_BOOTLOADER_SYSTEMBOOT
|
|
bool "systemboot"
|
|
help
|
|
If systemboot has been used as a bootloader wrapper in the past,
|
|
enable this option. It will invoke -uinitcmd=systemboot and result in
|
|
a BIOS/UEFI BDS boot behavior.
|
|
|
|
config SPECIFIC_BOOTLOADER_BOOT2
|
|
bool "boot2"
|
|
|
|
config SPECIFIC_BOOTLOADER_PXEBOOT
|
|
bool "pxeboot"
|
|
|
|
config SPECIFIC_BOOTLOADER_STBOOT
|
|
bool "stboot"
|
|
|
|
config SPECIFIC_BOOTLOADER_CUSTOM
|
|
bool "custom"
|
|
|
|
endchoice
|
|
|
|
config SPECIFIC_BOOTLOADER_CUSTOM_CMD
|
|
string "Specify a custom program to start"
|
|
depends on SPECIFIC_BOOTLOADER_CUSTOM
|
|
help
|
|
This option will symlink the input to /bin/unit which will set it as the
|
|
first boot program after the u-root init. Program flags are not
|
|
symlinkable.
|
|
|
|
config LINUXBOOT_UROOT_UINITCMD
|
|
string
|
|
default "" if SPECIFIC_BOOTLOADER_NONE
|
|
default "systemboot" if SPECIFIC_BOOTLOADER_SYSTEMBOOT
|
|
default "boot2" if SPECIFIC_BOOTLOADER_BOOT2
|
|
default "pxeboot" if SPECIFIC_BOOTLOADER_PXEBOOT
|
|
default "stboot" if SPECIFIC_BOOTLOADER_STBOOT
|
|
default SPECIFIC_BOOTLOADER_CUSTOM_CMD if SPECIFIC_BOOTLOADER_CUSTOM
|
|
|
|
endif #LINUXBOOT_UROOT_MAIN
|
|
|
|
endif #LINUXBOOT_UROOT
|
|
|
|
endif #LINUXBOOT_BUILD_INITRAMFS
|
|
|
|
choice
|
|
prompt "Initramfs compression format"
|
|
default LINUXBOOT_INITRAMFS_COMPRESSION_XZ
|
|
|
|
config LINUXBOOT_INITRAMFS_COMPRESSION_NONE
|
|
bool "none"
|
|
|
|
config LINUXBOOT_INITRAMFS_COMPRESSION_XZ
|
|
bool "xz compression"
|
|
|
|
endchoice
|
|
|
|
config LINUX_INITRD
|
|
string
|
|
default "payloads/external/LinuxBoot/linuxboot/initramfs_u-root.cpio" if LINUXBOOT_UROOT
|
|
default LINUXBOOT_INITRAMFS_PATH if !LINUXBOOT_BUILD_INITRAMFS
|
|
|
|
config LINUXBOOT_INITRAMFS_SUFFIX
|
|
string
|
|
default "" if LINUXBOOT_INITRAMFS_COMPRESSION_NONE
|
|
default ".xz" if LINUXBOOT_INITRAMFS_COMPRESSION_XZ
|
|
|
|
endif #PAYLOAD_LINUXBOOT
|