<p>Philipp Deppenwiese <strong>merged</strong> this change.</p><p><a href="https://review.coreboot.org/23071">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  build bot (Jenkins): Verified
  Ronald G. Minnich: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">payloads: Add LinuxBoot payload in u-root mode<br><br>* Add LinuxBoot support<br>* Add u-root mode<br>* Download kernel and u-root from upstream sources.<br>* Add customization options<br>* Clean kernel only if directory exists<br><br>Change-Id: I3a25ff6812e046acc688cbbb203cf262ad751659<br>Signed-off-by: Philipp Deppenwiese <zaolin@das-labor.org><br>Reviewed-on: https://review.coreboot.org/23071<br>Reviewed-by: Ronald G. Minnich <rminnich@gmail.com><br>Tested-by: build bot (Jenkins) <no-reply@coreboot.org><br>---<br>M payloads/Kconfig<br>M payloads/Makefile.inc<br>A payloads/external/LinuxBoot/Kconfig<br>A payloads/external/LinuxBoot/Kconfig.name<br>A payloads/external/LinuxBoot/Makefile<br>A payloads/external/LinuxBoot/targets/u-root.mk<br>M payloads/external/Makefile.inc<br>M util/abuild/abuild<br>8 files changed, 319 insertions(+), 1 deletion(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/payloads/Kconfig b/payloads/Kconfig</span><br><span>index 782f3e0..6b10a0d 100644</span><br><span>--- a/payloads/Kconfig</span><br><span>+++ b/payloads/Kconfig</span><br><span>@@ -64,7 +64,7 @@</span><br><span> choice</span><br><span>       prompt "Payload compression algorithm"</span><br><span>     default COMPRESSED_PAYLOAD_LZMA</span><br><span style="color: hsl(0, 100%, 40%);">- depends on !PAYLOAD_NONE && !PAYLOAD_LINUX</span><br><span style="color: hsl(120, 100%, 40%);">+    depends on !PAYLOAD_NONE && !PAYLOAD_LINUX && !PAYLOAD_LINUXBOOT</span><br><span>     help</span><br><span>           Choose the compression algorithm for the chosen payloads.</span><br><span>    You can choose between LZMA and LZ4.</span><br><span>diff --git a/payloads/Makefile.inc b/payloads/Makefile.inc</span><br><span>index d894dec..0d142d6 100644</span><br><span>--- a/payloads/Makefile.inc</span><br><span>+++ b/payloads/Makefile.inc</span><br><span>@@ -35,6 +35,7 @@</span><br><span> payloads/external/tint \</span><br><span> payloads/external/tianocore \</span><br><span> payloads/external/GRUB2 \</span><br><span style="color: hsl(120, 100%, 40%);">+payloads/external/LinuxBoot \</span><br><span> </span><br><span> payloads/coreinfo/build/coreinfo.elf coreinfo:</span><br><span>   $(MAKE) -C payloads/coreinfo defaultbuild</span><br><span>diff --git a/payloads/external/LinuxBoot/Kconfig b/payloads/external/LinuxBoot/Kconfig</span><br><span>new file mode 100644</span><br><span>index 0000000..74e6c94</span><br><span>--- /dev/null</span><br><span>+++ b/payloads/external/LinuxBoot/Kconfig</span><br><span>@@ -0,0 +1,113 @@</span><br><span style="color: hsl(120, 100%, 40%);">+## This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+##</span><br><span style="color: hsl(120, 100%, 40%);">+## Copyright (C) 2017 Facebook Inc.</span><br><span style="color: hsl(120, 100%, 40%);">+##</span><br><span style="color: hsl(120, 100%, 40%);">+## This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+## it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+## the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+##</span><br><span style="color: hsl(120, 100%, 40%);">+## This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+## but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+## GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+##</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+if PAYLOAD_LINUXBOOT</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+choice</span><br><span style="color: hsl(120, 100%, 40%);">+      prompt "Architecture"</span><br><span style="color: hsl(120, 100%, 40%);">+       default LINUXBOOT_X86_64</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+config LINUXBOOT_X86_64</span><br><span style="color: hsl(120, 100%, 40%);">+   bool "x86_64"</span><br><span style="color: hsl(120, 100%, 40%);">+       help</span><br><span style="color: hsl(120, 100%, 40%);">+    AMD64 kernel and initramfs</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+config LINUXBOOT_X86</span><br><span style="color: hsl(120, 100%, 40%);">+  bool "x86"</span><br><span style="color: hsl(120, 100%, 40%);">+  help</span><br><span style="color: hsl(120, 100%, 40%);">+    X86 kernel and initramfs</span><br><span style="color: hsl(120, 100%, 40%);">+endchoice</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+config LINUXBOOT_ARCH</span><br><span style="color: hsl(120, 100%, 40%);">+        string</span><br><span style="color: hsl(120, 100%, 40%);">+        default "amd64" if LINUXBOOT_X86_64</span><br><span style="color: hsl(120, 100%, 40%);">+ default "386" if LINUXBOOT_X86</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+choice</span><br><span style="color: hsl(120, 100%, 40%);">+    prompt "Kernel version"</span><br><span style="color: hsl(120, 100%, 40%);">+     default LINUXBOOT_KERNEL_STABLE</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+config LINUXBOOT_KERNEL_STABLE</span><br><span style="color: hsl(120, 100%, 40%);">+     bool "4.15.3"</span><br><span style="color: hsl(120, 100%, 40%);">+       help</span><br><span style="color: hsl(120, 100%, 40%);">+    Stable kernel version</span><br><span style="color: hsl(120, 100%, 40%);">+endchoice</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+config LINUXBOOT_KERNEL_VERSION</span><br><span style="color: hsl(120, 100%, 40%);">+ string</span><br><span style="color: hsl(120, 100%, 40%);">+        default "4.15.3" if LINUXBOOT_KERNEL_STABLE</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+config LINUXBOOT_KERNEL_CONFIGFILE</span><br><span style="color: hsl(120, 100%, 40%);">+   string "Kernel config file"</span><br><span style="color: hsl(120, 100%, 40%);">+ default ""</span><br><span style="color: hsl(120, 100%, 40%);">+  help</span><br><span style="color: hsl(120, 100%, 40%);">+    Add your own kernel configuration file. Otherwise a default</span><br><span style="color: hsl(120, 100%, 40%);">+   minimal defconfig is used.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+config LINUXBOOT_KERNEL_COMMANDLINE</span><br><span style="color: hsl(120, 100%, 40%);">+   string "Kernel command-line"</span><br><span style="color: hsl(120, 100%, 40%);">+        default ""</span><br><span style="color: hsl(120, 100%, 40%);">+  help</span><br><span style="color: hsl(120, 100%, 40%);">+    Add your own kernel command-line arguments.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+config PAYLOAD_FILE</span><br><span style="color: hsl(120, 100%, 40%);">+  default "payloads/external/LinuxBoot/linuxboot/kernel-image"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+choice</span><br><span style="color: hsl(120, 100%, 40%);">+      prompt "Payload Mode"</span><br><span style="color: hsl(120, 100%, 40%);">+       default LINUXBOOT_UROOT</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+config LINUXBOOT_UROOT</span><br><span style="color: hsl(120, 100%, 40%);">+     bool "u-root"</span><br><span style="color: hsl(120, 100%, 40%);">+       help</span><br><span style="color: hsl(120, 100%, 40%);">+    Enable u-root linuxboot mode.</span><br><span style="color: hsl(120, 100%, 40%);">+         See http://u-root.tk/ for more information.</span><br><span style="color: hsl(120, 100%, 40%);">+endchoice</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+if LINUXBOOT_UROOT</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+choice</span><br><span style="color: hsl(120, 100%, 40%);">+      prompt "U-root version"</span><br><span style="color: hsl(120, 100%, 40%);">+     default LINUXBOOT_UROOT_MASTER</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+config LINUXBOOT_UROOT_MASTER</span><br><span style="color: hsl(120, 100%, 40%);">+       bool "master"</span><br><span style="color: hsl(120, 100%, 40%);">+       help</span><br><span style="color: hsl(120, 100%, 40%);">+    Latest u-root version</span><br><span style="color: hsl(120, 100%, 40%);">+endchoice</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+config LINUXBOOT_UROOT_VERSION</span><br><span style="color: hsl(120, 100%, 40%);">+  string</span><br><span style="color: hsl(120, 100%, 40%);">+        default "master" if LINUXBOOT_UROOT_MASTER</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+config LINUXBOOT_UROOT_COMMANDS</span><br><span style="color: hsl(120, 100%, 40%);">+       string "Select u-root commands"</span><br><span style="color: hsl(120, 100%, 40%);">+     default ""</span><br><span style="color: hsl(120, 100%, 40%);">+  help</span><br><span style="color: hsl(120, 100%, 40%);">+    Comma separated list of additional modules to include. Otherwise all modules</span><br><span style="color: hsl(120, 100%, 40%);">+          of u-root are included.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+config LINUXBOOT_UROOT_FILES</span><br><span style="color: hsl(120, 100%, 40%);">+     string "Add files to u-root base"</span><br><span style="color: hsl(120, 100%, 40%);">+   default ""</span><br><span style="color: hsl(120, 100%, 40%);">+  help</span><br><span style="color: hsl(120, 100%, 40%);">+    Path to directory containing root structure for embedding into the</span><br><span style="color: hsl(120, 100%, 40%);">+    initramfs.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+config PAYLOAD_USERSPACE</span><br><span style="color: hsl(120, 100%, 40%);">+      string ""</span><br><span style="color: hsl(120, 100%, 40%);">+   default "payloads/external/LinuxBoot/linuxboot/initramfs.cpio.xz"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+endif</span><br><span style="color: hsl(120, 100%, 40%);">+endif</span><br><span>diff --git a/payloads/external/LinuxBoot/Kconfig.name b/payloads/external/LinuxBoot/Kconfig.name</span><br><span>new file mode 100644</span><br><span>index 0000000..b7b1085</span><br><span>--- /dev/null</span><br><span>+++ b/payloads/external/LinuxBoot/Kconfig.name</span><br><span>@@ -0,0 +1,23 @@</span><br><span style="color: hsl(120, 100%, 40%);">+## This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+##</span><br><span style="color: hsl(120, 100%, 40%);">+## Copyright (C) 2017 Facebook Inc.</span><br><span style="color: hsl(120, 100%, 40%);">+##</span><br><span style="color: hsl(120, 100%, 40%);">+## This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+## it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+## the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+##</span><br><span style="color: hsl(120, 100%, 40%);">+## This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+## but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+## GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+##</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+config PAYLOAD_LINUXBOOT</span><br><span style="color: hsl(120, 100%, 40%);">+    bool "LinuxBoot"</span><br><span style="color: hsl(120, 100%, 40%);">+    depends on ARCH_X86</span><br><span style="color: hsl(120, 100%, 40%);">+   help</span><br><span style="color: hsl(120, 100%, 40%);">+    Select this option if you want to build a coreboot image</span><br><span style="color: hsl(120, 100%, 40%);">+      with a LinuxBoot payload. If you don't know what this is</span><br><span style="color: hsl(120, 100%, 40%);">+          about, just leave it enabled.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       See https://coreboot.org/Payloads for more information.</span><br><span>diff --git a/payloads/external/LinuxBoot/Makefile b/payloads/external/LinuxBoot/Makefile</span><br><span>new file mode 100644</span><br><span>index 0000000..10ad0c3</span><br><span>--- /dev/null</span><br><span>+++ b/payloads/external/LinuxBoot/Makefile</span><br><span>@@ -0,0 +1,63 @@</span><br><span style="color: hsl(120, 100%, 40%);">+## This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+##</span><br><span style="color: hsl(120, 100%, 40%);">+## Copyright (C) 2017 Facebook Inc.</span><br><span style="color: hsl(120, 100%, 40%);">+##</span><br><span style="color: hsl(120, 100%, 40%);">+## This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+## it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+## the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+##</span><br><span style="color: hsl(120, 100%, 40%);">+## This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+## but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+## GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+##</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+kernel_tarball=https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-$(CONFIG_LINUXBOOT_KERNEL_VERSION).tar.xz</span><br><span style="color: hsl(120, 100%, 40%);">+project_dir=linuxboot</span><br><span style="color: hsl(120, 100%, 40%);">+kernel_dir=$(project_dir)/kernel</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+unexport $(COREBOOT_EXPORTS)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+all: payload</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+$(kernel_dir)/.config:</span><br><span style="color: hsl(120, 100%, 40%);">+    echo "    WWW        Download Linux $(CONFIG_LINUXBOOT_KERNEL_VERSION)"</span><br><span style="color: hsl(120, 100%, 40%);">+     mkdir -p $(kernel_dir)</span><br><span style="color: hsl(120, 100%, 40%);">+ifeq ("$(wildcard $(kernel_dir)/README)","")</span><br><span style="color: hsl(120, 100%, 40%);">+      wget -qO- $(kernel_tarball) | tar xJ -C $(kernel_dir) --strip 1</span><br><span style="color: hsl(120, 100%, 40%);">+endif</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+config: $(kernel_dir)/.config</span><br><span style="color: hsl(120, 100%, 40%);">+       echo "    CONFIG     Linux $(CONFIG_LINUXBOOT_KERNEL_VERSION)"</span><br><span style="color: hsl(120, 100%, 40%);">+ifneq ($(CONFIG_LINUXBOOT_KERNEL_CONFIGFILE),)</span><br><span style="color: hsl(120, 100%, 40%);">+      cp $(CONFIG_LINUXBOOT_KERNEL_CONFIGFILE) $(kernel_dir)/.config</span><br><span style="color: hsl(120, 100%, 40%);">+endif</span><br><span style="color: hsl(120, 100%, 40%);">+ifeq ($(CONFIG_LINUXBOOT_ARCH),386)</span><br><span style="color: hsl(120, 100%, 40%);">+    cp x86/defconfig $(kernel_dir)/.config</span><br><span style="color: hsl(120, 100%, 40%);">+else ifeq ($(CONFIG_LINUXBOOT_ARCH),amd64)</span><br><span style="color: hsl(120, 100%, 40%);">+    cp x86_64/defconfig $(kernel_dir)/.config</span><br><span style="color: hsl(120, 100%, 40%);">+endif</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+$(project_dir)/kernel-image: config</span><br><span style="color: hsl(120, 100%, 40%);">+       echo "    MAKE       Kernel $(CONFIG_LINUXBOOT_KERNEL_VERSION)"</span><br><span style="color: hsl(120, 100%, 40%);">+     $(MAKE) -C $(kernel_dir) olddefconfig</span><br><span style="color: hsl(120, 100%, 40%);">+ $(MAKE) -C $(kernel_dir) -j $(CPUS)</span><br><span style="color: hsl(120, 100%, 40%);">+ifeq ($(CONFIG_LINUXBOOT_ARCH),386)</span><br><span style="color: hsl(120, 100%, 40%);">+      cp $(kernel_dir)/arch/x86/boot/bzImage $(project_dir)/kernel-image</span><br><span style="color: hsl(120, 100%, 40%);">+else ifeq ($(CONFIG_LINUXBOOT_ARCH),amd64)</span><br><span style="color: hsl(120, 100%, 40%);">+        cp $(kernel_dir)/arch/x86/boot/bzImage $(project_dir)/kernel-image</span><br><span style="color: hsl(120, 100%, 40%);">+endif</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+payload: $(project_dir)/kernel-image</span><br><span style="color: hsl(120, 100%, 40%);">+ifeq ($(CONFIG_LINUXBOOT_UROOT),y)</span><br><span style="color: hsl(120, 100%, 40%);">+ $(MAKE) -f targets/u-root.mk</span><br><span style="color: hsl(120, 100%, 40%);">+endif</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+clean:</span><br><span style="color: hsl(120, 100%, 40%);">+ if [ -d "$(kernel_dir)" ]; then make -C $(kernel_dir) clean; fi</span><br><span style="color: hsl(120, 100%, 40%);">+     rm -f $(project_dir)/initramfs.cpio.xz</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+distclean:</span><br><span style="color: hsl(120, 100%, 40%);">+  rm -rf $(project_dir)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+.PHONY: config patch payload clean distclean clone fetch all</span><br><span>diff --git a/payloads/external/LinuxBoot/targets/u-root.mk b/payloads/external/LinuxBoot/targets/u-root.mk</span><br><span>new file mode 100644</span><br><span>index 0000000..9b0e568</span><br><span>--- /dev/null</span><br><span>+++ b/payloads/external/LinuxBoot/targets/u-root.mk</span><br><span>@@ -0,0 +1,80 @@</span><br><span style="color: hsl(120, 100%, 40%);">+## This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+##</span><br><span style="color: hsl(120, 100%, 40%);">+## Copyright (C) 2017 Facebook Inc.</span><br><span style="color: hsl(120, 100%, 40%);">+##</span><br><span style="color: hsl(120, 100%, 40%);">+## This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+## it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+## the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+##</span><br><span style="color: hsl(120, 100%, 40%);">+## This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+## but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+## GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+##</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+uroot_git_repo=https://github.com/u-root/u-root.git</span><br><span style="color: hsl(120, 100%, 40%);">+uroot_dir=$(project_dir)/go/src/github.com/u-root/u-root</span><br><span style="color: hsl(120, 100%, 40%);">+go_check=$(shell command -v go 1>/dev/null 2>&1 && echo go)</span><br><span style="color: hsl(120, 100%, 40%);">+project_dir=$(shell pwd)/linuxboot</span><br><span style="color: hsl(120, 100%, 40%);">+project_name=u-root</span><br><span style="color: hsl(120, 100%, 40%);">+go_path_dir=$(shell pwd)/linuxboot/go</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+all: build</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+check:</span><br><span style="color: hsl(120, 100%, 40%);">+ifneq ($(go_check),go)</span><br><span style="color: hsl(120, 100%, 40%);">+       printf "\n<<Please install Golang >= 1.9 for u-root mode>>\n\n"</span><br><span style="color: hsl(120, 100%, 40%);">+      exit 1</span><br><span style="color: hsl(120, 100%, 40%);">+endif</span><br><span style="color: hsl(120, 100%, 40%);">+ mkdir -p $(project_dir)/go/src/github.com/u-root</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+$(uroot_dir)/.git:</span><br><span style="color: hsl(120, 100%, 40%);">+        echo "    Git        Cloning u-root $(CONFIG_LINUXBOOT_UROOT_VERSION)"</span><br><span style="color: hsl(120, 100%, 40%);">+      git clone $(uroot_git_repo) $(uroot_dir)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+fetch: check $(uroot_dir)/.git</span><br><span style="color: hsl(120, 100%, 40%);">+    -cd "$(uroot_dir)" && git fetch origin</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+checkout: fetch</span><br><span style="color: hsl(120, 100%, 40%);">+   cd "$(uroot_dir)" && \</span><br><span style="color: hsl(120, 100%, 40%);">+      if ! git diff --quiet _cb_checkout "$(CONFIG_LINUXBOOT_UROOT_VERSION)" -- 2>/dev/null; \</span><br><span style="color: hsl(120, 100%, 40%);">+ then \</span><br><span style="color: hsl(120, 100%, 40%);">+                printf "    CHECKOUT    $(project_name) [$(CONFIG_LINUXBOOT_UROOT_VERSION)]\n"; \</span><br><span style="color: hsl(120, 100%, 40%);">+           git checkout $$(git rev-parse HEAD) >/dev/null 2>&1; \</span><br><span style="color: hsl(120, 100%, 40%);">+              git branch -f _cb_checkout "$(CONFIG_LINUXBOOT_UROOT_VERSION)" && \</span><br><span style="color: hsl(120, 100%, 40%);">+         git checkout _cb_checkout && \</span><br><span style="color: hsl(120, 100%, 40%);">+                $(if $(project_patches), \</span><br><span style="color: hsl(120, 100%, 40%);">+            for patch in $(project_patches); do \</span><br><span style="color: hsl(120, 100%, 40%);">+                 printf "    PATCH       $$patch\n"; \</span><br><span style="color: hsl(120, 100%, 40%);">+                       git am --keep-cr "$$patch" || \</span><br><span style="color: hsl(120, 100%, 40%);">+                             ( printf "Error when applying patches.\n"; \</span><br><span style="color: hsl(120, 100%, 40%);">+                                  git am --abort; exit 1; ); \</span><br><span style="color: hsl(120, 100%, 40%);">+                done;,true;) \</span><br><span style="color: hsl(120, 100%, 40%);">+        fi</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+$(project_dir)/initramfs.cpio.xz: checkout</span><br><span style="color: hsl(120, 100%, 40%);">+      cd $(uroot_dir); GOARCH=$(CONFIG_LINUXBOOT_ARCH) GOPATH=$(go_path_dir) go build u-root.go</span><br><span style="color: hsl(120, 100%, 40%);">+     echo "    MAKE       u-root $(CONFIG_LINUXBOOT_UROOT_VERSION)"</span><br><span style="color: hsl(120, 100%, 40%);">+ifneq ($(CONFIG_LINUXBOOT_UROOT_COMMANDS),)</span><br><span style="color: hsl(120, 100%, 40%);">+ifneq ($(CONFIG_LINUXBOOT_UROOT_FILES),)</span><br><span style="color: hsl(120, 100%, 40%);">+       cd $(uroot_dir); GOARCH=$(CONFIG_LINUXBOOT_ARCH) GOPATH=$(go_path_dir) ./u-root \</span><br><span style="color: hsl(120, 100%, 40%);">+     -build=bb -files $(CONFIG_LINUXBOOT_UROOT_FILES) -o $(project_dir)/initramfs.cpio \</span><br><span style="color: hsl(120, 100%, 40%);">+   ./cmds/{$(CONFIG_LINUXBOOT_UROOT_COMMANDS)}</span><br><span style="color: hsl(120, 100%, 40%);">+else</span><br><span style="color: hsl(120, 100%, 40%);">+     cd $(uroot_dir); GOARCH=$(CONFIG_LINUXBOOT_ARCH) GOPATH=$(go_path_dir) ./u-root \</span><br><span style="color: hsl(120, 100%, 40%);">+     -build=bb -o $(project_dir)/initramfs.cpio ./cmds/{$(CONFIG_LINUXBOOT_UROOT_COMMANDS)}</span><br><span style="color: hsl(120, 100%, 40%);">+endif</span><br><span style="color: hsl(120, 100%, 40%);">+else</span><br><span style="color: hsl(120, 100%, 40%);">+ifneq ($(CONFIG_LINUXBOOT_UROOT_FILES),)</span><br><span style="color: hsl(120, 100%, 40%);">+ cd $(uroot_dir); GOARCH=$(CONFIG_LINUXBOOT_ARCH) GOPATH=$(go_path_dir) ./u-root \</span><br><span style="color: hsl(120, 100%, 40%);">+     -build=bb -files $(CONFIG_LINUXBOOT_UROOT_FILES) -o $(project_dir)/initramfs.cpio</span><br><span style="color: hsl(120, 100%, 40%);">+else</span><br><span style="color: hsl(120, 100%, 40%);">+       cd $(uroot_dir); GOARCH=$(CONFIG_LINUXBOOT_ARCH) GOPATH=$(go_path_dir) ./u-root \</span><br><span style="color: hsl(120, 100%, 40%);">+     -build=bb -o $(project_dir)/initramfs.cpio</span><br><span style="color: hsl(120, 100%, 40%);">+endif</span><br><span style="color: hsl(120, 100%, 40%);">+endif</span><br><span style="color: hsl(120, 100%, 40%);">+      xz -f --check=crc32 -9 --lzma2=dict=1MiB --threads=$(CPUS) $(project_dir)/initramfs.cpio</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+build: $(project_dir)/initramfs.cpio.xz</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+.PHONY: build checkout fetch all check</span><br><span>diff --git a/payloads/external/Makefile.inc b/payloads/external/Makefile.inc</span><br><span>index ec7d9a8..3943db9 100644</span><br><span>--- a/payloads/external/Makefile.inc</span><br><span>+++ b/payloads/external/Makefile.inc</span><br><span>@@ -4,6 +4,7 @@</span><br><span> ##</span><br><span> ## Copyright (C) 2009-2010 coresystems GmbH</span><br><span> ## Copyright (C) 2015 Google Inc.</span><br><span style="color: hsl(120, 100%, 40%);">+## Copyright (C) 2017 Facebook Inc.</span><br><span> ##</span><br><span> ## This program is free software; you can redistribute it and/or modify</span><br><span> ## it under the terms of the GNU General Public License as published by</span><br><span>@@ -31,6 +32,13 @@</span><br><span> #TODO: Figure out version</span><br><span> endif</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ifeq ($(CONFIG_PAYLOAD_LINUXBOOT),y)</span><br><span style="color: hsl(120, 100%, 40%);">+ifneq ($(strip $(call strip_quotes,$(CONFIG_LINUXBOOT_KERNEL_COMMANDLINE))),)</span><br><span style="color: hsl(120, 100%, 40%);">+      ADDITIONAL_PAYLOAD_CONFIG+=-C $(CONFIG_LINUXBOOT_KERNEL_COMMANDLINE)</span><br><span style="color: hsl(120, 100%, 40%);">+endif</span><br><span style="color: hsl(120, 100%, 40%);">+ADDITIONAL_PAYLOAD_CONFIG+=-I $(CONFIG_PAYLOAD_USERSPACE)</span><br><span style="color: hsl(120, 100%, 40%);">+endif</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> ifeq ($(CONFIG_PAYLOAD_LINUX),y)</span><br><span> ifneq ($(strip $(call strip_quotes,$(CONFIG_LINUX_COMMAND_LINE))),)</span><br><span>       ADDITIONAL_PAYLOAD_CONFIG+=-C $(CONFIG_LINUX_COMMAND_LINE)</span><br><span>@@ -240,3 +248,32 @@</span><br><span>     IPXE_UART=$(IPXE_UART) \</span><br><span>     CONFIG_TTYS0_BAUD=$(CONFIG_TTYS0_BAUD) \</span><br><span>     MFLAGS= MAKEFLAGS=</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# LinuxBoot</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+linuxboot:</span><br><span style="color: hsl(120, 100%, 40%);">+       $(MAKE) -C payloads/external/LinuxBoot \</span><br><span style="color: hsl(120, 100%, 40%);">+              HOSTCC="$(HOSTCC)" \</span><br><span style="color: hsl(120, 100%, 40%);">+                CC="$(HOSTCC)" \</span><br><span style="color: hsl(120, 100%, 40%);">+            GCC_CC_x86_32=$(GCC_CC_x86_32) \</span><br><span style="color: hsl(120, 100%, 40%);">+              GCC_CC_x86_64=$(GCC_CC_x86_64) \</span><br><span style="color: hsl(120, 100%, 40%);">+              GCC_CC_arm=$(GCC_CC_arm) \</span><br><span style="color: hsl(120, 100%, 40%);">+            GCC_CC_arm64=$(GCC_CC_arm64) \</span><br><span style="color: hsl(120, 100%, 40%);">+                OBJCOPY_x86_32=$(OBJCOPY_x86_32) \</span><br><span style="color: hsl(120, 100%, 40%);">+            OBJCOPY_x86_64=$(OBJCOPY_x86_64) \</span><br><span style="color: hsl(120, 100%, 40%);">+            OBJCOPY_arm=$(OBJCOPY_arm) \</span><br><span style="color: hsl(120, 100%, 40%);">+          OBJCOPY_arm64=$(OBJCOPY_arm64) \</span><br><span style="color: hsl(120, 100%, 40%);">+              CPUS=$(CPUS) \</span><br><span style="color: hsl(120, 100%, 40%);">+                CONFIG_LINUXBOOT_KERNEL_VERSION=$(CONFIG_LINUXBOOT_KERNEL_VERSION) \</span><br><span style="color: hsl(120, 100%, 40%);">+          CONFIG_LINUXBOOT_KERNEL_CONFIGFILE=$(CONFIG_LINUXBOOT_KERNEL_CONFIGFILE) \</span><br><span style="color: hsl(120, 100%, 40%);">+            CONFIG_LINUXBOOT_KERNEL_COMMANDLINE=$(CONFIG_LINUXBOOT_KERNEL_COMMANDLINE) \</span><br><span style="color: hsl(120, 100%, 40%);">+          CONFIG_LINUXBOOT_UROOT_VERSION=$(CONFIG_LINUXBOOT_UROOT_VERSION) \</span><br><span style="color: hsl(120, 100%, 40%);">+            CONFIG_LINUXBOOT_UROOT_COMMANDS="$(CONFIG_LINUXBOOT_UROOT_COMMANDS)" \</span><br><span style="color: hsl(120, 100%, 40%);">+              CONFIG_LINUXBOOT_ARCH=$(CONFIG_LINUXBOOT_ARCH) \</span><br><span style="color: hsl(120, 100%, 40%);">+              CONFIG_LINUXBOOT_UROOT=$(CONFIG_LINUXBOOT_UROOT) \</span><br><span style="color: hsl(120, 100%, 40%);">+            CONFIG_LINUXBOOT_UROOT_FILES=$(CONFIG_LINUXBOOT_UROOT_FILES)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+payloads/external/LinuxBoot/linuxboot/kernel-image: linuxboot</span><br><span style="color: hsl(120, 100%, 40%);">+payloads/external/LinuxBoot/linuxboot/initramfs.cpio.xz: linuxboot</span><br><span style="color: hsl(120, 100%, 40%);">+payloads/external/LinuxBoot/linuxboot/kernel/.config: linuxboot</span><br><span style="color: hsl(120, 100%, 40%);">+payloads/external/LinuxBoot/linuxboot/go/src/github.com/u-root/u-root/.git: linuxboot</span><br><span>diff --git a/util/abuild/abuild b/util/abuild/abuild</span><br><span>index d8f4882..50ac8c7 100755</span><br><span>--- a/util/abuild/abuild</span><br><span>+++ b/util/abuild/abuild</span><br><span>@@ -267,6 +267,7 @@</span><br><span>                 echo "# CONFIG_PAYLOAD_GRUB2 is not set"</span><br><span>           echo "# CONFIG_PAYLOAD_OPENBIOS is not set"</span><br><span>                echo "# CONFIG_PAYLOAD_DEPTHCHARGE is not set"</span><br><span style="color: hsl(120, 100%, 40%);">+              echo "# CONFIG_PAYLOAD_LINUXBOOT is not set"</span><br><span>               echo "# CONFIG_PAYLOAD_UBOOT is not set"</span><br><span>           echo "# CONFIG_PAYLOAD_TIANOCORE is not set"</span><br><span>               echo "# CONFIG_PXE is not set"</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/23071">change 23071</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/23071"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I3a25ff6812e046acc688cbbb203cf262ad751659 </div>
<div style="display:none"> Gerrit-Change-Number: 23071 </div>
<div style="display:none"> Gerrit-PatchSet: 30 </div>
<div style="display:none"> Gerrit-Owner: Philipp Deppenwiese <zaolin.daisuki@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: Alex Thiessen <alex.thiessen.de+coreboot@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: Arthur Heymans <arthur@aheymans.xyz> </div>
<div style="display:none"> Gerrit-Reviewer: Chris K <c@chrisko.ch> </div>
<div style="display:none"> Gerrit-Reviewer: Martin Roth <martinroth@google.com> </div>
<div style="display:none"> Gerrit-Reviewer: Nico Huber <nico.h@gmx.de> </div>
<div style="display:none"> Gerrit-Reviewer: Patrick Rudolph <patrick.rudolph@9elements.com> </div>
<div style="display:none"> Gerrit-Reviewer: Paul Menzel <paulepanter@users.sourceforge.net> </div>
<div style="display:none"> Gerrit-Reviewer: Philipp Deppenwiese <zaolin.daisuki@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: Ronald G. Minnich <rminnich@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: build bot (Jenkins) <no-reply@coreboot.org> </div>
<div style="display:none"> Gerrit-Reviewer: ron minnich </div>
<div style="display:none"> Gerrit-CC: Burke Cates <burke.cates@gmail.com> </div>