All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH v2] Add support for custom initramfs contents
Date: Thu, 1 Aug 2019 10:50:52 +0200	[thread overview]
Message-ID: <20190801085052.GA3447@scaer> (raw)
In-Reply-To: <20180825195152.25669-1-richard.kunze@web.de>

Richard, All,

On 2018-08-25 21:51 +0200, Richard Kunze spake thusly:
> This adds an option to build an initramfs image with different content
> than the rootfs within a single defconig. The intended use case is to
> provide a minimal early userland for systems that cannot mount their
> root file system directly from the kernel (e.g. because that rootfs
> resides in an image file on a FAT formatted SD card, which has to be
> mounted first before the rootfs can be set up).
> 
> The rationale for implementing this as an option for initramfs instead
> of using two different configurations is ease of use: One configuration
> is easier to maintain and builds faster than two.

We discussed this change during the developpers meeting, and we all
concluded that we did not want this, as I explaiend in my previous
review.

Regards,
Yann E. MORIN.

> Signed-off-by: Richard Kunze <richard.kunze@web.de>
> ---
>  fs/initramfs/Config.in    | 34 +++++++++++++++++++++++++++++++++-
>  fs/initramfs/initramfs.mk | 18 +++++++++++++++++-
>  linux/linux.mk            |  8 ++++----
>  3 files changed, 54 insertions(+), 6 deletions(-)
> 
> diff --git a/fs/initramfs/Config.in b/fs/initramfs/Config.in
> index 9d5a3f92e6..9b7ac9475e 100644
> --- a/fs/initramfs/Config.in
> +++ b/fs/initramfs/Config.in
> @@ -1,6 +1,22 @@
>  config BR2_TARGET_ROOTFS_INITRAMFS
>  	bool "initial RAM filesystem linked into linux kernel"
>  	depends on BR2_LINUX_KERNEL
> +	help
> +	  Integrate an initramfs inside the kernel image.
> +	  This integration will take place automatically.
> +
> +	  The initramfs contents can either be the full root filesystem
> +	  generated by buildroot, or an image built from a custom list
> +	  of files specified via the BR2_TARGET_ROOTFS_INITRAMFS_CUSTOM_CONTENTS
> +	  config option.
> +
> +choice
> +	prompt "initial RAM filesystem contents"
> +	depends on BR2_TARGET_ROOTFS_INITRAMFS
> +
> +config BR2_TARGET_ROOTFS_INITRAMFS_ROOTFS
> +	bool "rootfs.cpio"
> +	depends on BR2_TARGET_ROOTFS_INITRAMFS
>  	select BR2_TARGET_ROOTFS_CPIO
>  	help
>  	  Integrate the root filesystem generated by Buildroot as an
> @@ -13,10 +29,26 @@ config BR2_TARGET_ROOTFS_INITRAMFS
>  	  is used, regardless of how buildroot's cpio archive is
>  	  configured.
>  
> -	  Note that enabling initramfs together with another filesystem
> +	  Note that enabling this option together with another filesystem
>  	  formats doesn't make sense: you would end up having two
>  	  identical root filesystems, one embedded inside the kernel
>  	  image, and one separately.
> +config BR2_TARGET_ROOTFS_INITRAMFS_CUSTOM
> +	bool "custom initramfs contents"
> +	depends on BR2_TARGET_ROOTFS_INITRAMFS
> +	help
> +	  Use the contents of BR2_TARGET_ROOTFS_INITRAMFS_CUSTOM_CONTENTS
> +	  as the linux kernel configuration variable CONFIG_INITRAMFS_SOURCE
> +
> +endchoice
> +
> +config BR2_TARGET_ROOTFS_INITRAMFS_CUSTOM_CONTENTS
> +	string "custom initramfs contents"
> +	depends on BR2_TARGET_ROOTFS_INITRAMFS_CUSTOM
> +	help
> +	  Custom value to use as CONFIG_INITRAMFS_SOURCE linux kernel configuration
> +	  variable. See Documentation/filesystems/ramfs-rootfs-initramfs.txt in the
> +	  linux kernel sources for details.
>  
>  comment "initramfs needs a Linux kernel to be built"
>  	depends on !BR2_LINUX_KERNEL
> diff --git a/fs/initramfs/initramfs.mk b/fs/initramfs/initramfs.mk
> index c751093214..ef3fdc6d3d 100644
> --- a/fs/initramfs/initramfs.mk
> +++ b/fs/initramfs/initramfs.mk
> @@ -4,6 +4,12 @@
>  #
>  ################################################################################
>  
> +ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS_ROOTFS),y)
> +ROOTFS_INITRAMFS_DEPENDENCIES += rootfs-cpio
> +endif
> +
> +ROOTFS_INITRAMFS_DEPENDENCIES += $(BINARIES_DIR)/initramfs.cpio
> +
>  # The generic fs infrastructure isn't very useful here.
>  #
>  # The initramfs image does not actually build an image; its only purpose is:
> @@ -19,13 +25,23 @@
>  # advertise that our dependency is on the rootfs-cpio rule, which is
>  # cleaner in the dependency graph.
>  
> -rootfs-initramfs: linux-rebuild-with-initramfs
> +rootfs-initramfs: $(ROOTFS_INITRAMFS_DEPENDENCIES) linux-rebuild-with-initramfs
>  
>  rootfs-initramfs-show-depends:
>  	@echo rootfs-cpio
>  
>  .PHONY: rootfs-initramfs rootfs-initramfs-show-depends
>  
> +ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS_ROOTFS),y)
> +$(BINARIES_DIR)/initramfs.cpio: rootfs-cpio
> +	ln -sf rootfs.cpio $(BINARIES_DIR)/initramfs.cpio
> +endif
> +
> +ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS_CUSTOM),y)
> +$(BINARIES_DIR)/initramfs.cpio: target-finalize $(call qstrip,$(BR2_TARGET_ROOTFS_INITRAMFS_CUSTOM_CONTENTS))
> +	$(LINUX_DIR)/usr/gen_init_cpio $(BR2_TARGET_ROOTFS_INITRAMFS_CUSTOM_CONTENTS) > $(BINARIES_DIR)/initramfs.cpio
> +endif
> +
>  ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y)
>  TARGETS_ROOTFS += rootfs-initramfs
>  endif
> diff --git a/linux/linux.mk b/linux/linux.mk
> index 675e7906a8..5f4ddbb316 100644
> --- a/linux/linux.mk
> +++ b/linux/linux.mk
> @@ -300,8 +300,8 @@ define LINUX_KCONFIG_FIXUP_CMDS
>  	# replaced later by the real cpio archive, and the kernel will be
>  	# rebuilt using the linux-rebuild-with-initramfs target.
>  	$(if $(BR2_TARGET_ROOTFS_INITRAMFS),
> -		touch $(BINARIES_DIR)/rootfs.cpio
> -		$(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_SOURCE,"$${BR_BINARIES_DIR}/rootfs.cpio",$(@D)/.config)
> +		touch $(BINARIES_DIR)/initramfs.cpio
> +		$(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_SOURCE,"$${BR_BINARIES_DIR}/initramfs.cpio",$(@D)/.config)
>  		$(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_ROOT_UID,0,$(@D)/.config)
>  		$(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_ROOT_GID,0,$(@D)/.config))
>  	$(if $(BR2_ROOTFS_DEVICE_CREATION_STATIC),,
> @@ -528,11 +528,11 @@ endif # BR_BUILDING
>  $(eval $(kconfig-package))
>  
>  # Support for rebuilding the kernel after the cpio archive has
> -# been generated.
> +# been generated in $(BINARIES_DIR)/initramfs.cpio.
>  .PHONY: linux-rebuild-with-initramfs
>  linux-rebuild-with-initramfs: $(LINUX_DIR)/.stamp_target_installed
>  linux-rebuild-with-initramfs: $(LINUX_DIR)/.stamp_images_installed
> -linux-rebuild-with-initramfs: rootfs-cpio
> +linux-rebuild-with-initramfs: $(BINARIES_DIR)/initramfs.cpio
>  linux-rebuild-with-initramfs:
>  	@$(call MESSAGE,"Rebuilding kernel with initramfs")
>  	# Build the kernel.
> -- 
> 2.18.0
> 
> 
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

      reply	other threads:[~2019-08-01  8:50 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-25 19:51 [Buildroot] [PATCH v2] Add support for custom initramfs contents Richard Kunze
2019-08-01  8:50 ` Yann E. MORIN [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190801085052.GA3447@scaer \
    --to=yann.morin.1998@free.fr \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.