Philipp Deppenwiese has submitted this change and it was merged. ( https://review.coreboot.org/c/coreboot/+/29581 )
Change subject: LinuxBoot: refactor payload ......................................................................
LinuxBoot: refactor payload
Clean and refactor the structure of the LinuxBoot payload integration, to make it more modular and readable. The kernel and initramfs should handled in separated makefiles.
tested with: - qemu-i440fx (x86, x86_64) - cavium CN8100 (arm64)
Change-Id: I41d0275a5f7efb920e881f43b0acda29f41ee221 Signed-off-by: Marcello Sylvester Bauer info@marcellobauer.com Reviewed-on: https://review.coreboot.org/c/29581 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Philipp Deppenwiese zaolin.daisuki@gmail.com --- M payloads/external/LinuxBoot/Kconfig M payloads/external/LinuxBoot/Makefile M payloads/external/LinuxBoot/arm64/kernel_fdt_lzma.its A payloads/external/LinuxBoot/targets/linux.mk M payloads/external/LinuxBoot/targets/u-root.mk M payloads/external/Makefile.inc 6 files changed, 207 insertions(+), 111 deletions(-)
Approvals: build bot (Jenkins): Verified Philipp Deppenwiese: Looks good to me, approved
diff --git a/payloads/external/LinuxBoot/Kconfig b/payloads/external/LinuxBoot/Kconfig index ba8b5a6..046faef 100644 --- a/payloads/external/LinuxBoot/Kconfig +++ b/payloads/external/LinuxBoot/Kconfig @@ -1,6 +1,7 @@ ## This file is part of the coreboot project. ## ## Copyright (C) 2017 Facebook Inc. +## Copyright (C) 2018 9elements Cyber Security ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by @@ -16,6 +17,7 @@
choice prompt "Architecture" + depends on LINUXBOOT_COMPILE_KERNEL || LINUXBOOT_BUILD_INITRAMFS default LINUXBOOT_X86_64
config LINUXBOOT_X86_64 @@ -42,9 +44,22 @@ config LINUXBOOT_ARCH string default "amd64" if LINUXBOOT_X86_64 - default "386" if LINUXBOOT_X86 + default "i386" if LINUXBOOT_X86 default "arm64" if LINUXBOOT_ARM64
+comment "Linux kernel" + +config LINUXBOOT_COMPILE_KERNEL + bool "Compile kernel" + default n + +config LINUXBOOT_KERNEL_PATH + string "Path to kernel" + default "Image" + depends on !LINUXBOOT_COMPILE_KERNEL + +if LINUXBOOT_COMPILE_KERNEL + choice prompt "Kernel version" default LINUXBOOT_KERNEL_STABLE @@ -73,19 +88,35 @@ Add your own kernel configuration file. Otherwise a default minimal defconfig is used.
+config LINUXBOOT_DTB_FILE + string "Compiled devicetree file" + depends on LINUXBOOT_ARM64 + default "" + +endif #LINUXBOOT_COMPILE_KERNEL + config LINUX_COMMAND_LINE string "Kernel command-line" default "" help Add your own kernel command-line arguments.
-config LINUXBOOT_DTB_FILE - string "Compiled devicetree file" - depends on LINUXBOOT_ARM64 - default "" - config PAYLOAD_FILE - default "payloads/external/LinuxBoot/linuxboot/kernel-image" + 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 + 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" @@ -128,9 +159,13 @@ Path to directory containing root structure for embedding into the initramfs.
+endif #LINUXBOOT_UROOT + +endif #LINUXBOOT_BUILD_INITRAMFS + config LINUX_INITRD string - default "payloads/external/LinuxBoot/linuxboot/initramfs.cpio.xz" + default "payloads/external/LinuxBoot/linuxboot/initramfs_u-root.cpio.xz" if LINUXBOOT_UROOT + default LINUXBOOT_INITRAMFS_PATH if !LINUXBOOT_BUILD_INITRAMFS
-endif -endif +endif #PAYLOAD_LINUXBOOT diff --git a/payloads/external/LinuxBoot/Makefile b/payloads/external/LinuxBoot/Makefile index 6d852cb..a9b35fc 100644 --- a/payloads/external/LinuxBoot/Makefile +++ b/payloads/external/LinuxBoot/Makefile @@ -1,6 +1,7 @@ ## This file is part of the coreboot project. ## ## Copyright (C) 2017 Facebook Inc. +## Copyright (C) 2018 9elements Cyber Security ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by @@ -12,90 +13,48 @@ ## GNU General Public License for more details. ##
-kernel_tarball=https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-$(CONFIG_LINUXBOOT_KERNEL... project_dir=linuxboot kernel_dir=$(project_dir)/kernel
unexport $(COREBOOT_EXPORTS) unexport MAKEFLAGS
-XGCCPATH?=$(PWD)/util/crossgcc/xgcc/bin -ifeq ($(CONFIG_LINUXBOOT_ARCH),386) -LINUXBOOT_COMPILE?=$(XGCCPATH)/i386-linux- -ARCH?=x86 -else ifeq ($(CONFIG_LINUXBOOT_ARCH),amd64) -LINUXBOOT_COMPILE?=$(XGCCPATH)/x86_64-linux- -ARCH?=x86_64 -else ifeq ($(CONFIG_LINUXBOOT_ARCH),arm64) -LINUXBOOT_COMPILE?=$(XGCCPATH)/aarch64-linux- -ARCH?=arm64 -endif - -OBJCOPY:=$(LINUXBOOT_COMPILE)objcopy - all: linuxboot
-toolchain: - if [[ ! -x "$(LINUXBOOT_COMPILE)gcc" ]]; then \ - echo "Toolchain '$(LINUXBOOT_COMPILE)*' is missing."; \ +u-root: + $(MAKE) -f targets/u-root.mk + +ifeq ($(CONFIG_LINUXBOOT_BUILD_INITRAMFS),y) +ifeq ($(CONFIG_LINUXBOOT_UROOT),y) +initramfs: u-root +endif +else +ifneq ($(CONFIG_LINUXBOOT_INITRAMFS),) +initramfs: + if [[ ! -f "$(top)/$(CONFIG_LINUXBOOT_INITRAMFS)" ]]; then \ + echo "<< Linux initramfs '$(CONFIG_LINUXBOOT_INITRAMFS)' is missing. >>"; \ exit 1; \ fi - -$(kernel_dir)/.config: - echo " WWW Download Linux $(CONFIG_LINUXBOOT_KERNEL_VERSION)" - mkdir -p $(kernel_dir) -ifeq ("$(wildcard $(kernel_dir)/README)","") - curl -s $(kernel_tarball) | tar xJ -C $(kernel_dir) --strip 1 +endif endif
-config: $(kernel_dir)/.config - echo " CONFIG Linux $(CONFIG_LINUXBOOT_KERNEL_VERSION)" -ifneq ($(CONFIG_LINUXBOOT_KERNEL_CONFIGFILE),) - cp $(CONFIG_LINUXBOOT_KERNEL_CONFIGFILE) $(kernel_dir)/.config -else ifeq ($(CONFIG_LINUXBOOT_ARCH),386) - cp x86/defconfig $(kernel_dir)/.config -else ifeq ($(CONFIG_LINUXBOOT_ARCH),amd64) - cp x86_64/defconfig $(kernel_dir)/.config -else ifeq ($(CONFIG_LINUXBOOT_ARCH),arm64) - cp arm64/defconfig $(kernel_dir)/.config -endif - -ifneq (,$(filter $(CONFIG_LINUXBOOT_ARCH),386 amd64)) -$(kernel_dir)/arch/x86/boot/bzImage: config toolchain -else ifeq ($(CONFIG_LINUXBOOT_ARCH),arm64) -$(kernel_dir)/vmlinux: config toolchain -endif - echo " MAKE Kernel $(CONFIG_LINUXBOOT_KERNEL_VERSION)" - $(MAKE) -C $(kernel_dir) olddefconfig CROSS_COMPILE=$(LINUXBOOT_COMPILE) ARCH=$(ARCH) - $(MAKE) -C $(kernel_dir) -j $(CPUS) CROSS_COMPILE=$(LINUXBOOT_COMPILE) ARCH=$(ARCH) - -ifneq (,$(filter $(CONFIG_LINUXBOOT_ARCH),386 amd64)) -$(project_dir)/kernel-image: $(kernel_dir)/arch/x86/boot/bzImage - cp $< $@ -else ifeq ($(CONFIG_LINUXBOOT_ARCH),arm64) -$(project_dir)/vmlinux.bin: $(kernel_dir)/vmlinux - $(OBJCOPY) -O binary $< $@ - -$(project_dir)/target.dtb: $(PWD)/$(CONFIG_LINUXBOOT_DTB_FILE) - cp $< $@ - -$(project_dir)/vmlinux.bin.lzma: $(project_dir)/vmlinux.bin - xz -c -k -f --format=lzma --lzma1=dict=1MiB,lc=3,lp=0,pb=3 $< > $@ - -$(project_dir)/kernel-image: $(project_dir)/vmlinux.bin.lzma $(project_dir)/../arm64/kernel_fdt_lzma.its $(project_dir)/target.dtb $(PWD)/$(CONFIG_LINUX_INITRD) - cp $(project_dir)/../arm64/kernel_fdt_lzma.its $(project_dir) - mkimage -f $(project_dir)/kernel_fdt_lzma.its $@ -endif - -ifeq ($(CONFIG_LINUXBOOT_UROOT),y) -$(PWD)/$(CONFIG_LINUX_INITRD): - $(MAKE) -f targets/u-root.mk +ifeq ($(CONFIG_LINUXBOOT_COMPILE_KERNEL),y) +ifeq ($(CONFIG_LINUXBOOT_ARCH),arm64) +kernel: initramfs + $(MAKE) -f targets/linux.mk else -$(PWD)/$(CONFIG_LINUX_INITRD): - echo "Building without u-root support" +kernel: + $(MAKE) -f targets/linux.mk +endif +else +kernel: + if [[ ! -f "$(top)/$(CONFIG_LINUXBOOT_KERNEL)" ]]; then \ + echo "<< Linux kernel '$(CONFIG_LINUXBOOT_KERNEL)' is missing. >>"; \ + exit 1; \ + fi endif
-linuxboot: $(project_dir)/kernel-image $(PWD)/$(CONFIG_LINUX_INITRD) +linuxboot: kernel initramfs
clean: if [ -d "$(kernel_dir)" ]; then rm -rf $(kernel_dir); fi @@ -104,4 +63,4 @@ distclean: rm -rf $(project_dir)
-.PHONY: config patch payload clean distclean clone fetch all toolchain +.PHONY: linuxboot kernel initramfs u-root clean distclean diff --git a/payloads/external/LinuxBoot/arm64/kernel_fdt_lzma.its b/payloads/external/LinuxBoot/arm64/kernel_fdt_lzma.its index 50f6a2f..26a8120 100644 --- a/payloads/external/LinuxBoot/arm64/kernel_fdt_lzma.its +++ b/payloads/external/LinuxBoot/arm64/kernel_fdt_lzma.its @@ -45,20 +45,20 @@ }; }; ramdisk-1 { - description = "Compressed Initramfs"; - data = /incbin/("initramfs.cpio.xz"); - type = "ramdisk"; - arch = "arm64"; - os = "linux"; - compression = "none"; - load = <00000000>; - entry = <00000000>; - hash-1 { - algo = "sha1"; - }; - hash-2 { - algo = "sha256"; - }; + description = "Compressed Initramfs"; + data = /incbin/("u-initramfs"); + type = "ramdisk"; + arch = "arm64"; + os = "linux"; + compression = "none"; + load = <00000000>; + entry = <00000000>; + hash-1 { + algo = "sha1"; + }; + hash-2 { + algo = "sha256"; + }; }; };
diff --git a/payloads/external/LinuxBoot/targets/linux.mk b/payloads/external/LinuxBoot/targets/linux.mk new file mode 100644 index 0000000..07700b8 --- /dev/null +++ b/payloads/external/LinuxBoot/targets/linux.mk @@ -0,0 +1,95 @@ +## This file is part of the coreboot project. +## +## Copyright (C) 2017 Facebook Inc. +## Copyright (C) 2018 9elements Cyber Security +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; version 2 of the License. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## + +kernel_tarball=https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-$(CONFIG_LINUXBOOT_KERNEL... +project_dir=linuxboot +kernel_dir=$(project_dir)/kernel + +XGCCPATH?=$(PWD)/util/crossgcc/xgcc/bin +ifeq ($(CONFIG_LINUXBOOT_ARCH),i386) +LINUXBOOT_COMPILE?=$(XGCCPATH)/i386-linux- +ARCH?=x86 +else ifeq ($(CONFIG_LINUXBOOT_ARCH),amd64) +LINUXBOOT_COMPILE?=$(XGCCPATH)/x86_64-linux- +ARCH?=x86_64 +else ifeq ($(CONFIG_LINUXBOOT_ARCH),arm64) +LINUXBOOT_COMPILE?=$(XGCCPATH)/aarch64-linux- +ARCH?=arm64 +endif + +OBJCOPY:=$(LINUXBOOT_COMPILE)objcopy + +all: kernel + +toolchain: + if [[ ! -x "$(LINUXBOOT_COMPILE)gcc" ]]; then \ + echo "Toolchain '$(LINUXBOOT_COMPILE)*' is missing."; \ + exit 1; \ + fi + +$(kernel_dir)/.config: + echo " WWW Download Linux $(CONFIG_LINUXBOOT_KERNEL_VERSION)" + mkdir -p $(kernel_dir) +ifeq ("$(wildcard $(kernel_dir)/README)","") + curl -s $(kernel_tarball) | tar xJ -C $(kernel_dir) --strip 1 +endif + +config: $(kernel_dir)/.config + echo " CONFIG Linux $(CONFIG_LINUXBOOT_KERNEL_VERSION)" +ifneq ($(CONFIG_LINUXBOOT_KERNEL_CONFIGFILE),) + cp $(CONFIG_LINUXBOOT_KERNEL_CONFIGFILE) $(kernel_dir)/.config +else ifeq ($(CONFIG_LINUXBOOT_ARCH),i386) + cp x86/defconfig $(kernel_dir)/.config +else ifeq ($(CONFIG_LINUXBOOT_ARCH),amd64) + cp x86_64/defconfig $(kernel_dir)/.config +else ifeq ($(CONFIG_LINUXBOOT_ARCH),arm64) + cp arm64/defconfig $(kernel_dir)/.config +endif + +ifneq (,$(filter $(CONFIG_LINUXBOOT_ARCH),i386 amd64)) +$(kernel_dir)/arch/x86/boot/bzImage: config toolchain +else ifeq ($(CONFIG_LINUXBOOT_ARCH),arm64) +$(kernel_dir)/vmlinux: config toolchain +endif + echo " MAKE Kernel $(CONFIG_LINUXBOOT_KERNEL_VERSION)" + $(MAKE) -C $(kernel_dir) olddefconfig CROSS_COMPILE=$(LINUXBOOT_COMPILE) ARCH=$(ARCH) + $(MAKE) -C $(kernel_dir) -j $(CPUS) CROSS_COMPILE=$(LINUXBOOT_COMPILE) ARCH=$(ARCH) + +ifneq (,$(filter $(CONFIG_LINUXBOOT_ARCH),i386 amd64)) +$(project_dir)/bzImage: $(kernel_dir)/arch/x86/boot/bzImage + cp $< $@ +else ifeq ($(CONFIG_LINUXBOOT_ARCH),arm64) +$(project_dir)/vmlinux.bin: $(kernel_dir)/vmlinux + $(OBJCOPY) -O binary $< $@ + +$(project_dir)/target.dtb: $(PWD)/$(CONFIG_LINUXBOOT_DTB_FILE) + cp $< $@ + +$(project_dir)/vmlinux.bin.lzma: $(project_dir)/vmlinux.bin + xz -c -k -f --format=lzma --lzma1=dict=1MiB,lc=3,lp=0,pb=3 $< > $@ + +$(project_dir)/uImage: $(project_dir)/vmlinux.bin.lzma $(project_dir)/../arm64/kernel_fdt_lzma.its $(project_dir)/target.dtb + cp $(project_dir)/../arm64/kernel_fdt_lzma.its $(project_dir) + cp $(PWD)/$(CONFIG_LINUXBOOT_INITRAMFS) $(project_dir)/u-initramfs + mkimage -f $(project_dir)/kernel_fdt_lzma.its $@ +endif + +ifneq (,$(filter $(CONFIG_LINUXBOOT_ARCH),i386 amd64)) +kernel: $(project_dir)/bzImage +else ifeq ($(CONFIG_LINUXBOOT_ARCH),arm64) +kernel: $(project_dir)/uImage +endif + +.PHONY: kernel config toolchain diff --git a/payloads/external/LinuxBoot/targets/u-root.mk b/payloads/external/LinuxBoot/targets/u-root.mk index 27f184e..5cb19bb 100644 --- a/payloads/external/LinuxBoot/targets/u-root.mk +++ b/payloads/external/LinuxBoot/targets/u-root.mk @@ -1,6 +1,7 @@ ## This file is part of the coreboot project. ## ## Copyright (C) 2017 Facebook Inc. +## Copyright (C) 2018 9elements Cyber Security ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by @@ -22,7 +23,7 @@ project_name=u-root go_path_dir=$(shell pwd)/linuxboot/go
-all: build +all: u-root
check: ifeq ("$(go_version)","") @@ -66,29 +67,29 @@ echo " GO u-root" cd $(uroot_dir); GOPATH=$(go_path_dir) go build u-root.go
-$(project_dir)/initramfs.cpio.xz: checkout $(uroot_dir)/u-root +$(project_dir)/initramfs_u-root.cpio.xz: checkout $(uroot_dir)/u-root echo " MAKE u-root $(CONFIG_LINUXBOOT_UROOT_VERSION)" ifneq ($(CONFIG_LINUXBOOT_UROOT_COMMANDS),) ifneq ($(CONFIG_LINUXBOOT_UROOT_FILES),) cd $(uroot_dir); GOARCH=$(CONFIG_LINUXBOOT_ARCH) GOPATH=$(go_path_dir) ./u-root \ - -build=bb -files $(CONFIG_LINUXBOOT_UROOT_FILES) -o $(project_dir)/initramfs.cpio \ + -build=bb -files $(CONFIG_LINUXBOOT_UROOT_FILES) -o $(project_dir)/initramfs_u-root.cpio \ $(patsubst %,cmds/%,$(CONFIG_LINUXBOOT_UROOT_COMMANDS)) else cd $(uroot_dir); GOARCH=$(CONFIG_LINUXBOOT_ARCH) GOPATH=$(go_path_dir) ./u-root \ - -build=bb -o $(project_dir)/initramfs.cpio \ + -build=bb -o $(project_dir)/initramfs_u-root.cpio \ $(patsubst %,cmds/%,$(CONFIG_LINUXBOOT_UROOT_COMMANDS)) endif else ifneq ($(CONFIG_LINUXBOOT_UROOT_FILES),) cd $(uroot_dir); GOARCH=$(CONFIG_LINUXBOOT_ARCH) GOPATH=$(go_path_dir) ./u-root \ - -build=bb -files $(CONFIG_LINUXBOOT_UROOT_FILES) -o $(project_dir)/initramfs.cpio coreboot-app + -build=bb -files $(CONFIG_LINUXBOOT_UROOT_FILES) -o $(project_dir)/initramfs_u-root.cpio coreboot-app else cd $(uroot_dir); GOARCH=$(CONFIG_LINUXBOOT_ARCH) GOPATH=$(go_path_dir) ./u-root \ - -build=bb -o $(project_dir)/initramfs.cpio coreboot-app + -build=bb -o $(project_dir)/initramfs_u-root.cpio coreboot-app endif endif - xz -f --check=crc32 -9 --lzma2=dict=1MiB --threads=$(CPUS) $(project_dir)/initramfs.cpio + xz -f --check=crc32 -9 --lzma2=dict=1MiB --threads=$(CPUS) $(project_dir)/initramfs_u-root.cpio
-build: $(project_dir)/initramfs.cpio.xz +u-root: $(project_dir)/initramfs_u-root.cpio.xz
-.PHONY: build checkout fetch all check +.PHONY: u-root checkout fetch all check diff --git a/payloads/external/Makefile.inc b/payloads/external/Makefile.inc index 74bec47..54ff9ea 100644 --- a/payloads/external/Makefile.inc +++ b/payloads/external/Makefile.inc @@ -37,7 +37,10 @@ ADDITIONAL_PAYLOAD_CONFIG+=-C $(CONFIG_LINUX_COMMAND_LINE) endif ifneq ($(strip $(call strip_quotes,$(CONFIG_LINUX_INITRD))),) +ifneq ($(CONFIG_LINUXBOOT_ARM64),y) ADDITIONAL_PAYLOAD_CONFIG+=-I $(CONFIG_LINUX_INITRD) + prebuilt-files += $(strip $(call strip_quotes,$(CONFIG_LINUX_INITRD))) +endif endif endif ifneq ($(strip $(call strip_quotes,$(CONFIG_PAYLOAD_OPTIONS))),) @@ -256,21 +259,24 @@ linuxboot: $(MAKE) -C payloads/external/LinuxBoot \ CPUS=$(CPUS) \ + CONFIG_LINUXBOOT_ARCH=$(CONFIG_LINUXBOOT_ARCH) \ + CONFIG_LINUXBOOT_KERNEL=$(CONFIG_PAYLOAD_FILE) \ + CONFIG_LINUXBOOT_INITRAMFS=$(CONFIG_LINUX_INITRD) \ + CONFIG_LINUXBOOT_COMPILE_KERNEL=$(CONFIG_LINUXBOOT_COMPILE_KERNEL) \ + CONFIG_LINUXBOOT_BUILD_INITRAMFS=$(CONFIG_LINUXBOOT_BUILD_INITRAMFS) \ CONFIG_LINUXBOOT_KERNEL_VERSION=$(CONFIG_LINUXBOOT_KERNEL_VERSION) \ CONFIG_LINUXBOOT_KERNEL_CONFIGFILE=$(CONFIG_LINUXBOOT_KERNEL_CONFIGFILE) \ + CONFIG_LINUXBOOT_UROOT=$(CONFIG_LINUXBOOT_UROOT) \ CONFIG_LINUXBOOT_UROOT_VERSION=$(CONFIG_LINUXBOOT_UROOT_VERSION) \ CONFIG_LINUXBOOT_UROOT_COMMANDS=$(CONFIG_LINUXBOOT_UROOT_COMMANDS) \ - CONFIG_LINUXBOOT_ARCH=$(CONFIG_LINUXBOOT_ARCH) \ - CONFIG_LINUXBOOT_UROOT=$(CONFIG_LINUXBOOT_UROOT) \ CONFIG_LINUXBOOT_UROOT_FILES=$(CONFIG_LINUXBOOT_UROOT_FILES) \ - CONFIG_LINUXBOOT_DTB_FILE=$(CONFIG_LINUXBOOT_DTB_FILE) \ - CONFIG_LINUX_INITRD=$(CONFIG_LINUX_INITRD) + CONFIG_LINUXBOOT_DTB_FILE=$(CONFIG_LINUXBOOT_DTB_FILE)
+payloads/external/LinuxBoot/linuxboot/bzImage: linuxboot +payloads/external/LinuxBoot/linuxboot/uImage: linuxboot +payloads/external/LinuxBoot/linuxboot/initramfs_u-root.cpio.xz: linuxboot
-payloads/external/LinuxBoot/linuxboot/kernel-image: linuxboot -payloads/external/LinuxBoot/linuxboot/initramfs.cpio.xz: linuxboot -payloads/external/LinuxBoot/linuxboot/kernel/.config: linuxboot -payloads/external/LinuxBoot/linuxboot/go/src/github.com/u-root/u-root/.git: linuxboot +# Yabits
payloads/external/Yabits/uefi/build/uefi.elf yabits: $(MAKE) -C payloads/external/Yabits all \