[Buildroot] [PATCH 1/1] fs/cpio: add option to manually specify file list

Seamus Connor sconnor at lynx.com
Thu Oct 26 19:16:27 UTC 2017


For some systems it may be desireable to have an initramfs that is
smaller than the full root filesystem. This commit adds support for
creating an initramfs based on a manually specified set of files. It is
up to the user to define a sensible set of files. This file list could
either be statically created, or it could be created as the result of a
pre-fs hook script.

Signed-off-by: Seamus Connor <sconnor at lynx.com>
---
 fs/cpio/Config.in | 30 ++++++++++++++++++++++++++++++
 fs/cpio/cpio.mk   | 10 ++++++++++
 2 files changed, 40 insertions(+)

diff --git a/fs/cpio/Config.in b/fs/cpio/Config.in
index 206baca677..21aa2c6fb8 100644
--- a/fs/cpio/Config.in
+++ b/fs/cpio/Config.in
@@ -7,6 +7,36 @@ config BR2_TARGET_ROOTFS_CPIO
 
 if BR2_TARGET_ROOTFS_CPIO
 
+choice
+	prompt "Seleted Fileset"
+	default BR2_TARGET_ROOTFS_CPIO_INCLUDE_ALL
+	help
+	  Select the set of files to include in the cpio of the root filesystem.
+	  This may either be all files installed to the target, or it may be a
+	  subset defined in the custom file list.
+
+config BR2_TARGET_ROOTFS_CPIO_INCLUDE_ALL
+	bool "Include all files from target"
+	help
+	  Include all files from the target directory in the root filesystem.
+
+config BR2_TARGET_ROOTFS_CPIO_INCLUDE_CUSTOM
+	bool "Include a subset of files from target"
+	help
+	  Include a subset of the files from the target directory in the root filesystem.
+	  This requires a custom file list to be defined.  The actual file list may be
+	  generated by a user script defined as part of the pre-fs hook.
+
+endchoice
+
+config BR2_TARGET_ROOTFS_CPIO_CUSTOM_FILELIST
+	string "path to a custom file list"
+	depends on BR2_TARGET_ROOTFS_CPIO && BR2_TARGET_ROOTFS_CPIO_INCLUDE_CUSTOM
+	help
+	  This file defines the contents of the rootfilesystem.  All files and folders
+	  created in the rootfilesystem must be defined here.  This file can be statically
+	  defined, or created as part of the pre-fs hook.
+
 choice
 	prompt "Compression method"
 	default BR2_TARGET_ROOTFS_CPIO_NONE
diff --git a/fs/cpio/cpio.mk b/fs/cpio/cpio.mk
index e82167e512..984ff37895 100644
--- a/fs/cpio/cpio.mk
+++ b/fs/cpio/cpio.mk
@@ -27,10 +27,20 @@ endif # BR2_ROOTFS_DEVICE_CREATION_STATIC
 
 ROOTFS_CPIO_PRE_GEN_HOOKS += ROOTFS_CPIO_ADD_INIT
 
+ifeq ($(BR2_TARGET_ROOTFS_CPIO_INCLUDE_ALL),y)
+
 define ROOTFS_CPIO_CMD
 	cd $(TARGET_DIR) && find . | cpio --quiet -o -H newc > $@
 endef
 
+else
+
+define ROOTFS_CPIO_CMD
+	cd $(TARGET_DIR) && cpio --quiet -o -H newc < $(BR2_TARGET_ROOTFS_CPIO_CUSTOM_FILELIST) > $@
+endef
+
+endif
+
 $(BINARIES_DIR)/rootfs.cpio.uboot: $(BINARIES_DIR)/rootfs.cpio host-uboot-tools
 	$(MKIMAGE) -A $(MKIMAGE_ARCH) -T ramdisk \
 		-C none -d $<$(ROOTFS_CPIO_COMPRESS_EXT) $@
-- 
2.14.2



More information about the buildroot mailing list