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

Thomas Petazzoni thomas.petazzoni at free-electrons.com
Mon Jan 1 11:54:48 UTC 2018


Peter, Arnout, Yann, all,

This patch has been pending since ~2 months with no feedback. Do we
want something like this?

One thing that bothers me a bit is that it would make the
initramfs/cpio image contain a filesystem that is different from other
root filesystem images. But perhaps this is OK, because initramfs is
indeed special.

So I'm inclined to just apply this, as it may be useful for some users.
If you don't voice a concern within the next days, I'll apply.

Thanks!

Thmas

On Thu, 26 Oct 2017 12:16:27 -0700, Seamus Connor wrote:
> 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) $@



-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com


More information about the buildroot mailing list