Commit 3970ebf8 authored by Arnout Vandecappelle's avatar Arnout Vandecappelle Committed by Peter Korsgaard
Browse files

rootfs-cpio: add U-Boot image support



Adds U-Boot image support for cpio root filesystems. This allows you to
use the bootm command in U-Boot to load the rootfs. It makes it possible to
verify the CRC of the initramfs before booting the kernel.

[Spenser: wrote first version of the patch.]
Signed-off-by: default avatarSpenser Gilliland <spenser@gillilanding.com>
Signed-off-by: default avatarArnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: default avatarPeter Korsgaard <peter@korsgaard.com>
parent 4df9ecb3
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -5,10 +5,11 @@ config BR2_TARGET_ROOTFS_CPIO
	  used for an initial RAM filesystem that is passed to the kernel
	  by the bootloader.

if BR2_TARGET_ROOTFS_CPIO

choice
	prompt "Compression method"
	default BR2_TARGET_ROOTFS_CPIO_NONE
	depends on BR2_TARGET_ROOTFS_CPIO
	help
	  Select compressor for cpio filesystem of the root filesystem.
	  If you use the cpio archive as an initial RAM filesystem, make
@@ -47,3 +48,13 @@ config BR2_TARGET_ROOTFS_CPIO_XZ

endchoice

config BR2_TARGET_ROOTFS_CPIO_UIMAGE
	bool "Create U-Boot image of the root filesystem"
	select BR2_PACKAGE_HOST_UBOOT_TOOLS
	help
	  Add a U-Boot header to the cpio root filesystem. This allows
	  the initramfs to be loaded with the bootm command in U-Boot.

	  The U-Boot image will be called rootfs.cpio.uboot

endif # BR2_TARGET_ROOTFS_CPIO
+21 −0
Original line number Diff line number Diff line
@@ -31,4 +31,25 @@ define ROOTFS_CPIO_CMD
	cd $(TARGET_DIR) && find . | cpio --quiet -o -H newc > $@
endef

# mkimage supports arm avr32 blackfin m68k microblaze mips mips64 nios2 powerpc ppc sh sparc sparc64 x86
# KERNEL_ARCH can be arm64 arc arm avr32 blackfin m68k microblaze mips nios2 powerpc sh sparc i386 x86_64 xtensa
# For arm64, arc, xtensa we'll just keep KERNEL_ARCH
# For mips64, we'll just keep mips
# For i386 and x86_64, we need to convert
ifeq ($(KERNEL_ARCH),x86_64)
UIMAGE_ARCH = x86
else ifeq ($(KERNEL_ARCH),i386)
UIMAGE_ARCH = x86
else
UIMAGE_ARCH = $(KERNEL_ARCH)
endif

$(BINARIES_DIR)/rootfs.cpio.uboot: $(BINARIES_DIR)/rootfs.cpio host-uboot-tools
	$(HOST_DIR)/usr/bin/mkimage -A $(UIMAGE_ARCH) -T ramdisk \
		-C none -d $<$(ROOTFS_CPIO_COMPRESS_EXT) $@

ifeq ($(BR2_TARGET_ROOTFS_CPIO_UIMAGE),y)
ROOTFS_CPIO_POST_TARGETS += $(BINARIES_DIR)/rootfs.cpio.uboot
endif

$(eval $(call ROOTFS_TARGET,cpio))