mirror of
https://github.com/linuxboot/heads.git
synced 2024-12-18 20:47:55 +00:00
Add LinuxBoot as a module, prep for nerf branch merge (#305)
Move board configuration into `boards/` instead of `config/` Fix mistake in building kernel module tree before kernel was done. Allow per-board initrd builds (#278) Allow per-board configurations for things (#304)
This commit is contained in:
parent
755c9e91ea
commit
cf8509e0f5
169
Makefile
169
Makefile
@ -4,16 +4,25 @@ modules-y :=
|
||||
pwd := $(shell pwd)
|
||||
packages := $(pwd)/packages
|
||||
build := $(pwd)/build
|
||||
config := $(pwd)/build
|
||||
config := $(pwd)/config
|
||||
INSTALL := $(pwd)/install
|
||||
log_dir := $(build)/log
|
||||
|
||||
BOARD ?= qemu
|
||||
CONFIG := $(pwd)/boards/$(BOARD).config
|
||||
|
||||
ifneq "y" "$(shell [ -r '$(CONFIG)' ] && echo y)"
|
||||
$(error $(CONFIG): board configuration does not exist)
|
||||
endif
|
||||
|
||||
include $(CONFIG)
|
||||
|
||||
# Controls how many parallel jobs are invoked in subshells
|
||||
CPUS := $(shell nproc)
|
||||
MAKE_JOBS ?= -j$(CPUS) --max-load 16
|
||||
|
||||
# Create the log directory if it doesn't already exist
|
||||
BUILD_LOG := $(shell [ -d "$(log_dir)" ] || mkdir -p "$(log_dir)")
|
||||
BUILD_LOG := $(shell mkdir -p "$(log_dir)" "$(build)/$(BOARD)" )
|
||||
|
||||
# Some things want usernames, we use the current checkout
|
||||
# so that they are reproducible
|
||||
@ -28,13 +37,13 @@ ifeq "$V" ""
|
||||
VERBOSE_REDIRECT := > /dev/null
|
||||
# Not verbose, so we only show the header
|
||||
define do =
|
||||
@echo "$(DATE) $1 $2"
|
||||
@echo "$(DATE) $1 $(2:$(pwd)/%=%)"
|
||||
@$3
|
||||
endef
|
||||
else
|
||||
# Verbose, so we display what we are doing
|
||||
define do =
|
||||
@echo "$(DATE) $1 $2"
|
||||
@echo "$(DATE) $1 $(2:$(pwd)/%=%)"
|
||||
$3
|
||||
endef
|
||||
endif
|
||||
@ -54,12 +63,12 @@ initrd_bin_dir := $(initrd_dir)/bin
|
||||
$(shell mkdir -p "$(initrd_lib_dir)" "$(initrd_bin_dir)")
|
||||
$(shell echo "Initrd: $initrd_dir")
|
||||
|
||||
ifeq "$(CONFIG)" ""
|
||||
CONFIG := config/qemu-moc.config
|
||||
$(eval $(shell echo >&2 "$(DATE) CONFIG is not set, defaulting to $(CONFIG)"))
|
||||
endif
|
||||
|
||||
include $(CONFIG)
|
||||
#ifeq "$(CONFIG)" ""
|
||||
#CONFIG := config/qemu-moc.config
|
||||
#$(eval $(shell echo >&2 "$(DATE) CONFIG is not set, defaulting to $(CONFIG)"))
|
||||
#endif
|
||||
#
|
||||
#include $(CONFIG)
|
||||
|
||||
# We are running our own version of make,
|
||||
# proceed with the build.
|
||||
@ -68,9 +77,6 @@ include $(CONFIG)
|
||||
SHELL := /bin/bash
|
||||
.SHELLFLAGS := -o pipefail -c
|
||||
|
||||
# Currently supported targets are x230, chell and qemu
|
||||
BOARD ?= qemu
|
||||
|
||||
# If musl-libc is being used in the initrd, set the heads_cc
|
||||
# variable to point to it.
|
||||
musl_dep := musl
|
||||
@ -95,8 +101,10 @@ CROSS_TOOLS := \
|
||||
|
||||
ifeq "$(CONFIG_COREBOOT)" "y"
|
||||
all: $(BOARD).rom
|
||||
else ifeq "$(CONFIG_LINUXBOOT)" "y"
|
||||
all: $(build)/$(BOARD)/linuxboot.rom
|
||||
else
|
||||
all: linux.intermediate initrd-$(BOARD).cpio.xz
|
||||
$(error "$(BOARD): neither CONFIG_COREBOOT nor CONFIG_LINUXBOOT is set?")
|
||||
endif
|
||||
|
||||
# Disable all built in rules
|
||||
@ -134,6 +142,36 @@ $(foreach m,$1,\
|
||||
)
|
||||
endef
|
||||
|
||||
#
|
||||
# Build a cpio from a directory
|
||||
#
|
||||
define do-cpio =
|
||||
$(call do,CPIO,$1,\
|
||||
( cd "$2"; \
|
||||
find . \
|
||||
| cpio \
|
||||
--quiet \
|
||||
-H newc \
|
||||
-o \
|
||||
) > "$1.tmp" \
|
||||
)
|
||||
@if ! cmp --quiet "$1.tmp" "$1" ; then \
|
||||
mv "$1.tmp" "$1" ; \
|
||||
else \
|
||||
rm "$1.tmp" ; \
|
||||
fi
|
||||
endef
|
||||
|
||||
define do-copy =
|
||||
$(call do,CP,$2,\
|
||||
sha256sum "$(1:$(pwd)/%=%)" ; \
|
||||
if ! cmp --quiet "$1" "$2" ; then \
|
||||
cp -a "$1" "$2"; \
|
||||
fi
|
||||
)
|
||||
endef
|
||||
|
||||
|
||||
#
|
||||
# Generate the targets for a module.
|
||||
#
|
||||
@ -257,7 +295,7 @@ endef
|
||||
#
|
||||
define initrd_bin_add =
|
||||
$(initrd_bin_dir)/$(notdir $1): $1
|
||||
$(call do,INSTALL-BIN,$$<,cp -a "$$<" "$$@")
|
||||
$(call do,INSTALL-BIN,$$(<:$(pwd)/%=%),cp -a "$$<" "$$@")
|
||||
@$(CROSS)strip --preserve-dates "$$@" 2>&-; true
|
||||
initrd_bins += $(initrd_bin_dir)/$(notdir $1)
|
||||
endef
|
||||
@ -265,11 +303,13 @@ endef
|
||||
|
||||
define initrd_lib_add =
|
||||
$(initrd_lib_dir)/$(notdir $1): $1
|
||||
$(call do,INSTALL-LIB,$$@,$(CROSS)strip --preserve-dates -o "$$@" "$$<")
|
||||
$(call do,INSTALL-LIB,$(1:$(pwd)/%=%),\
|
||||
$(CROSS)strip --preserve-dates -o "$$@" "$$<")
|
||||
initrd_libs += $(initrd_lib_dir)/$(notdir $1)
|
||||
endef
|
||||
|
||||
# Only some modules have binaries that we install
|
||||
# Shouldn't this be specified in the module file?
|
||||
bin_modules-$(CONFIG_KEXEC) += kexec
|
||||
bin_modules-$(CONFIG_TPMTOTP) += tpmtotp
|
||||
bin_modules-$(CONFIG_PCIUTILS) += pciutils
|
||||
@ -292,7 +332,7 @@ $(foreach m, $(modules-y), \
|
||||
#$(foreach _, $(call outputs,xen), $(eval $(call initrd_bin,$_)))
|
||||
|
||||
# hack to install busybox into the initrd
|
||||
initrd-$(BOARD).cpio: busybox.intermediate
|
||||
$(build)/$(BOARD)/heads.cpio: busybox.intermediate
|
||||
initrd_bins += $(initrd_bin_dir)/busybox
|
||||
|
||||
$(initrd_bin_dir)/busybox: $(build)/$(busybox_dir)/busybox
|
||||
@ -320,22 +360,6 @@ $(build)/$(coreboot_dir)/util/cbmem/cbmem: \
|
||||
$(MAKE) -C "$(dir $@)" CC="$(heads_cc)" \
|
||||
)
|
||||
|
||||
#
|
||||
# Linux kernel module installation
|
||||
#
|
||||
# This is special cases since we have to do a special strip operation on
|
||||
# the kernel modules to make them fit into the ROM image.
|
||||
#
|
||||
define linux_module =
|
||||
$(build)/$(linux_dir)/$1: linux.intermediate
|
||||
initrd-$(BOARD).cpio: $(initrd_lib_dir)/modules/$(notdir $1)
|
||||
$(initrd_lib_dir)/modules/$(notdir $1): $(build)/$(linux_dir)/$1
|
||||
@-mkdir -p "$(initrd_lib_dir)/modules"
|
||||
$(call do,INSTALL-MODULE,$$@,$(CROSS)strip --preserve-dates --strip-debug -o "$$@" "$$<")
|
||||
endef
|
||||
$(call map,linux_module,$(linux_modules-y))
|
||||
|
||||
|
||||
#
|
||||
# initrd image creation
|
||||
#
|
||||
@ -349,24 +373,47 @@ $(call map,linux_module,$(linux_modules-y))
|
||||
# is a chance the build will not be reproducible (although
|
||||
# unlikely that their device file has a different major/minor)
|
||||
#
|
||||
#
|
||||
initrd-$(BOARD).cpio: $(initrd_bins) $(initrd_libs) blobs/dev.cpio FORCE
|
||||
$(call do,OVERLAY,initrd,\
|
||||
tar -C ./initrd -cf - . | tar -C "$(initrd_dir)" -xf - \
|
||||
)
|
||||
$(call do,INSTALL,$(CONFIG),cp "$(CONFIG)" "$(initrd_dir)/etc/config")
|
||||
$(call do,CPIO,$@, \
|
||||
cd "$(initrd_dir)"; \
|
||||
find . \
|
||||
| cpio --quiet -H newc -o \
|
||||
| $(pwd)/bin/cpio-clean \
|
||||
$(pwd)/blobs/dev.cpio \
|
||||
- \
|
||||
> "$(pwd)/$@" \
|
||||
)
|
||||
$(call do,RM,$(initrd_dir),$(RM) -rf "$(initrd_dir)")
|
||||
|
||||
initrd.intermediate: initrd-$(BOARD).cpio
|
||||
initrd-y += $(pwd)/blobs/dev.cpio
|
||||
initrd-y += $(build)/$(BOARD)/heads.cpio
|
||||
initrd-y += $(build)/$(BOARD)/modules.cpio
|
||||
initrd-y += $(build)/$(BOARD)/tools.cpio
|
||||
|
||||
initrd.intermediate: $(build)/$(BOARD)/initrd.cpio.xz
|
||||
$(build)/$(BOARD)/initrd.cpio.xz: $(initrd-y)
|
||||
$(call do,CPIO-CLEAN,$@,\
|
||||
$(pwd)/bin/cpio-clean \
|
||||
$^ \
|
||||
| xz \
|
||||
--check=crc32 \
|
||||
--lzma2=dict=1MiB \
|
||||
-9 \
|
||||
| dd bs=512 conv=sync > "$@" \
|
||||
)
|
||||
@sha256sum "$(@:$(pwd)/%=%)"
|
||||
|
||||
#
|
||||
# The heads.cpio is built from the initrd directory in the
|
||||
# Heads tree.
|
||||
#
|
||||
$(build)/$(BOARD)/heads.cpio: FORCE
|
||||
$(call do-cpio,$@,$(pwd)/initrd)
|
||||
|
||||
|
||||
#
|
||||
# The tools initrd is made from all of the things that we've
|
||||
# created during the submodule build.
|
||||
#
|
||||
$(build)/$(BOARD)/tools.cpio: \
|
||||
$(initrd_bins) \
|
||||
$(initrd_libs) \
|
||||
|
||||
$(call do,INSTALL,$(CONFIG), \
|
||||
mkdir -p "$(initrd_dir)/etc" ; \
|
||||
cp "$(CONFIG)" "$(initrd_dir)/etc/config" \
|
||||
)
|
||||
$(call do-cpio,$@,$(initrd_dir))
|
||||
@$(RM) -rf "$(initrd_dir)"
|
||||
|
||||
|
||||
#
|
||||
@ -375,26 +422,10 @@ initrd.intermediate: initrd-$(BOARD).cpio
|
||||
# and the extra padding is to ensure that it can be concatenated to
|
||||
# other cpio files.
|
||||
#
|
||||
coreboot.intermediate: $(build)/$(coreboot_dir)/initrd-$(BOARD).cpio.xz
|
||||
$(build)/$(coreboot_dir)/initrd-$(BOARD).cpio.xz: initrd-$(BOARD).cpio.xz
|
||||
coreboot.intermediate: $(build)/$(BOARD)/initrd.cpio.xz
|
||||
coreboot.intermediate: $(build)/$(BOARD)/bzImage
|
||||
#$(build)/$(coreboot_dir)/initrd-$(BOARD).cpio.xz: initrd-$(BOARD).cpio.xz
|
||||
|
||||
%.xz: %
|
||||
$(call do,COMPRESS,$<,\
|
||||
xz \
|
||||
--check=crc32 \
|
||||
--lzma2=dict=1MiB \
|
||||
-9 \
|
||||
< "$<" \
|
||||
| dd bs=512 conv=sync > "$@" \
|
||||
)
|
||||
@sha256sum "$@"
|
||||
|
||||
# hack for the coreboot to find the linux kernel
|
||||
$(build)/$(coreboot_dir)/bzImage: $(build)/$(linux_dir)/arch/x86/boot/bzImage
|
||||
$(call do,COPY,$@,cp "$^" "$@")
|
||||
@sha256sum "$@"
|
||||
|
||||
coreboot.intermediate: $(build)/$(coreboot_dir)/bzImage
|
||||
|
||||
|
||||
# Each board output has its own fixup required to turn the coreboot.rom
|
||||
|
35
boards/qemu-linuxboot.config
Normal file
35
boards/qemu-linuxboot.config
Normal file
@ -0,0 +1,35 @@
|
||||
# Configuration for emulating LinuxBoot+Heads with qemu
|
||||
#
|
||||
BOARD=qemu-linuxboot
|
||||
|
||||
CONFIG_LINUXBOOT=y
|
||||
linuxboot-board := qemu
|
||||
|
||||
#CONFIG_CRYPTSETUP=y
|
||||
#CONFIG_FLASHROM=y
|
||||
#CONFIG_GPG=y
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_UTIL_LINUX=y
|
||||
#CONFIG_LVM2=y
|
||||
#CONFIG_MBEDTLS=y
|
||||
CONFIG_PCIUTILS=y
|
||||
#CONFIG_POPT=y
|
||||
#CONFIG_QRENCODE=y
|
||||
#CONFIG_TPMTOTP=y
|
||||
#CONFIG_XEN=y
|
||||
CONFIG_DROPBEAR=y
|
||||
|
||||
CONFIG_LINUX_USB=y
|
||||
#CONFIG_LINUX_IGB=y
|
||||
#CONFIG_LINUX_MEGARAID=y
|
||||
#CONFIG_LINUX_E1000E=y
|
||||
CONFIG_LINUX_SCSI_GDTH=y
|
||||
CONFIG_LINUX_ATA=y
|
||||
CONFIG_LINUX_AHCI=y
|
||||
|
||||
CONFIG_BOOTSCRIPT=/bin/generic-init
|
||||
|
||||
CONFIG_BOOT_REQ_HASH=n
|
||||
CONFIG_BOOT_REQ_ROLLBACK=n
|
||||
CONFIG_BOOT_DEV="/dev/sda1"
|
||||
CONFIG_USB_BOOT_DEV="/dev/sdb1"
|
@ -3,6 +3,9 @@
|
||||
# and it is NERF, not coreboot.
|
||||
BOARD=r630
|
||||
|
||||
CONFIG_LINUXBOOT=y
|
||||
CONFIG_LINUXBOOT_ROM=blobs/r630-1.3.6.rom
|
||||
|
||||
#CONFIG_CRYPTSETUP=y
|
||||
CONFIG_FLASHROM=y
|
||||
#CONFIG_GPG=y
|
@ -11,6 +11,9 @@
|
||||
#
|
||||
BOARD=s2600wf
|
||||
|
||||
CONFIG_LINUXBOOT=y
|
||||
CONFIG_LINUXBOOT_ROM=blobs/s2600wf.rom
|
||||
|
||||
#CONFIG_CRYPTSETUP=y
|
||||
#CONFIG_FLASHROM=y
|
||||
CONFIG_GPG=y
|
@ -2,6 +2,9 @@
|
||||
# and it is NERF, not coreboot.
|
||||
BOARD=winterfell
|
||||
|
||||
CONFIG_LINUXBOOT=y
|
||||
CONFIG_LINUXBOOT_ROM=blobs/winterfell.rom
|
||||
|
||||
#CONFIG_CRYPTSETUP=y
|
||||
CONFIG_FLASHROM=y
|
||||
#CONFIG_GPG=y
|
||||
@ -17,8 +20,6 @@ CONFIG_TPMTOTP=y
|
||||
CONFIG_DROPBEAR=y
|
||||
|
||||
CONFIG_LINUX_USB=y
|
||||
CONFIG_LINUX_IGB=y
|
||||
CONFIG_LINUX_MEGARAID=y
|
||||
CONFIG_LINUX_MLX4=y
|
||||
|
||||
CONFIG_BOOTSCRIPT=/bin/generic-init
|
@ -16,8 +16,12 @@ linux_configure := \
|
||||
CROSS_COMPILE="$(CROSS)" \
|
||||
oldconfig \
|
||||
|
||||
linux_output := arch/x86/boot/bzImage
|
||||
linux_config := linux.config
|
||||
linux_output += $(build)/$(BOARD)/bzImage
|
||||
|
||||
# linux.intermediate: $(linux_output)
|
||||
#linux_output += $(build)/$(BOARD)/modules.cpio
|
||||
|
||||
linux_config ?= linux.config # Allow board config to specialize Linux
|
||||
|
||||
# qemu
|
||||
linux_modules-$(CONFIG_LINUX_E1000) += drivers/net/ethernet/intel/e1000/e1000.ko
|
||||
@ -43,6 +47,10 @@ linux_modules-$(CONFIG_LINUX_AHCI) += drivers/ata/libahci_platform.ko
|
||||
linux_modules-$(CONFIG_LINUX_SFC) += drivers/net/ethernet/sfc/sfc.ko
|
||||
linux_modules-$(CONFIG_LINUX_SFC) += drivers/net/mdio.ko
|
||||
|
||||
# Mellanox ConnectX-3 (winterfell)
|
||||
linux_modules-$(CONFIG_LINUX_MLX4) += drivers/net/ethernet/mellanox/mlx4/mlx4_core.ko
|
||||
linux_modules-$(CONFIG_LINUX_MLX4) += drivers/net/ethernet/mellanox/mlx4/mlx4_en.ko
|
||||
|
||||
# USB modules for both types of controllers
|
||||
linux_modules-$(CONFIG_LINUX_USB) += drivers/usb/host/ehci-hcd.ko
|
||||
linux_modules-$(CONFIG_LINUX_USB) += drivers/usb/host/ehci-pci.ko
|
||||
@ -50,9 +58,6 @@ linux_modules-$(CONFIG_LINUX_USB) += drivers/usb/host/xhci-hcd.ko
|
||||
linux_modules-$(CONFIG_LINUX_USB) += drivers/usb/host/xhci-pci.ko
|
||||
linux_modules-$(CONFIG_LINUX_USB) += drivers/usb/storage/usb-storage.ko
|
||||
|
||||
linux_modules-$(CONFIG_LINUX_MLX4) += drivers/net/ethernet/mellanox/mlx4/mlx4_core.ko
|
||||
linux_modules-$(CONFIG_LINUX_MLX4) += drivers/net/ethernet/mellanox/mlx4/mlx4_en.ko
|
||||
|
||||
EXTRA_FLAGS := -fdebug-prefix-map=$(pwd)=heads -gno-record-gcc-switches
|
||||
|
||||
linux_target := \
|
||||
@ -68,3 +73,46 @@ linux_target := \
|
||||
|
||||
# We cross compile linux now
|
||||
linux_depends := musl-cross
|
||||
|
||||
#
|
||||
# Linux kernel module installation
|
||||
#
|
||||
# This is special cases since we have to do a special strip operation on
|
||||
# the kernel modules to make them fit into the ROM image.
|
||||
#
|
||||
module_initrd_dir := $(shell mktemp -d)
|
||||
module_initrd_lib_dir := $(module_initrd_dir)/lib/modules
|
||||
FOO := $(shell mkdir -p "$(module_initrd_lib_dir)")
|
||||
|
||||
define linux_module =
|
||||
|
||||
# Each module depends on building the Linux kernel
|
||||
$(build)/$(linux_dir)/$1: linux.intermediate # $(build)/$(BOARD)/bzImage
|
||||
|
||||
# The cpio file will depend on every module
|
||||
$(build)/$(BOARD)/modules.cpio: $(module_initrd_lib_dir)/$(notdir $1)
|
||||
|
||||
# Strip the modules when we install them so that they will be extra small
|
||||
$(module_initrd_lib_dir)/$(notdir $1): $(build)/$(linux_dir)/$1
|
||||
$(call do,INSTALL-MODULE,$1, \
|
||||
$(CROSS)strip \
|
||||
--preserve-dates \
|
||||
--strip-debug \
|
||||
-o "$$@" \
|
||||
"$$<" \
|
||||
)
|
||||
endef
|
||||
|
||||
$(call map,linux_module,$(linux_modules-y))
|
||||
|
||||
# We can't rebuild the module initrd until the kernel has been rebuilt
|
||||
$(build)/$(BOARD)/modules.cpio: linux.intermediate
|
||||
$(call do-cpio,$@,$(module_initrd_dir))
|
||||
@$(RM) -rf "$(module_initrd_dir)"
|
||||
|
||||
|
||||
# hack for the coreboot to find the linux kernel
|
||||
$(build)/$(BOARD)/bzImage: linux.intermediate
|
||||
$(build)/$(BOARD)/bzImage: $(build)/$(linux_dir)/arch/x86/boot/bzImage
|
||||
$(call do-copy,$<,$@)
|
||||
|
||||
|
63
modules/linuxboot
Normal file
63
modules/linuxboot
Normal file
@ -0,0 +1,63 @@
|
||||
modules-$(CONFIG_LINUXBOOT) += linuxboot
|
||||
|
||||
linuxboot_version := git
|
||||
linuxboot_repo := https://github.com/osresearch/linuxboot
|
||||
linuxboot_dir := linuxboot-$(linuxboot_version)
|
||||
|
||||
|
||||
linuxboot_configure := \
|
||||
touch .config
|
||||
|
||||
# linuxboot builds are specialized on a per-target basis.
|
||||
# They can be specialized by defining $(linuxboot-board),
|
||||
# otherwise it is assumed that it will have the same name
|
||||
# as the Heads BOARD.
|
||||
linuxboot-board ?= $(BOARD)
|
||||
|
||||
linuxboot_target := \
|
||||
BOARD:=$(linuxboot-board) \
|
||||
KERNEL=$(build)/$(BOARD)/bzImage \
|
||||
INITRD=$(build)/$(BOARD)/initrd.cpio.xz \
|
||||
all
|
||||
|
||||
|
||||
#
|
||||
# Most mainboards will define a ROM file that contains the vendor ROM
|
||||
# for the image. If so, we copy it into the linuxboot tree.
|
||||
#
|
||||
ifneq "$(CONFIG_LINUXBOOT_ROM)" ""
|
||||
|
||||
ifneq "y" "$(shell [ -r '$(CONFIG_LINUXBOOT_ROM)' ] && echo y)"
|
||||
$(error $(CONFIG_LINUXBOOT_ROM): you must provide a ROM file)
|
||||
endif
|
||||
|
||||
linuxboot-vendor-rom := $(build)/$(linuxboot_dir)/boards/$(linuxboot-board)/$(notdir $(CONFIG_LINUXBOOT_ROM))
|
||||
linuxboot.intermediate: $(linuxboot-vendor-rom)
|
||||
$(linuxboot-vendor-rom): $(CONFIG_LINUXBOOT_ROM)
|
||||
$(call do-copy,$<,$@)
|
||||
endif
|
||||
|
||||
# The output file from the LinuxBoot build is a full ROM
|
||||
# ready to flash onto the mainboard. There might be partial
|
||||
# firmware volumes as well, but that depends on the board
|
||||
# so this only retrieves the final one
|
||||
linuxboot_output := $(build)/$(linuxboot_dir)/build/$(linuxboot-board)/linuxboot.rom
|
||||
|
||||
$(linuxboot_output): linuxboot.intermediate
|
||||
|
||||
$(build)/$(BOARD)/linuxboot.rom: $(linuxboot_output)
|
||||
$(call do-copy,$<,$@)
|
||||
|
||||
# The Linux kernel and Heads initrd must be built before linuxboot
|
||||
# unless the user has specified "FAST=1" on the make command line,
|
||||
# which will assume that the kernel and initrd are fresh
|
||||
ifneq "$(FAST)" "1"
|
||||
linuxboot_depends := linux initrd
|
||||
endif
|
||||
|
||||
# The bzImage and initrd must be built, but the dependency
|
||||
# might not be there if FAST is defined.
|
||||
linuxboot.intermediate: \
|
||||
$(build)/$(BOARD)/bzImage \
|
||||
$(build)/$(BOARD)/initrd.cpio.xz \
|
||||
|
Loading…
Reference in New Issue
Block a user