Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: "Yann E. MORIN" <yann.morin.1998@free.fr>
To: "Arnout Vandecappelle (Essensium/Mind)" <arnout@mind.be>
Cc: Adam Duskett <aduskett@gmail.com>,
	Thierry Bultel <thierry.bultel@linatsea.fr>,
	buildroot@buildroot.org
Subject: Re: [Buildroot] [PATCH next v5 2/3] fs/cpio: new option to use dracut tool
Date: Thu, 18 Aug 2022 23:09:39 +0200	[thread overview]
Message-ID: <20220818210939.GW2854108@scaer> (raw)
In-Reply-To: <20220815111710.1459820-2-arnout@mind.be>

Arnout, Thierry, All,

On 2022-08-15 13:17 +0200, Arnout Vandecappelle (Essensium/Mind) spake thusly:
> From: Thierry Bultel <thierry.bultel@linatsea.fr>
> 
> Adds an option to invoke the dracut host tool, providing
> a configuration file, instead of having a full cpio archive
> of the whole target directory.
> 
> A default configuration file is provided. It assumes busybox init.
> ideally, a different default should be used in case of systemd init, but
> that's left for future work.
> 
> Signed-off-by: Thierry Bultel <thierry.bultel@linatsea.fr>
> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>

Applied to next, with all the changes we discussed in this thread and
on IRC, thanks.

Regards,
Yann E. MORIN.

> ---
> Changes v1 -> v2 (suggested by Arnout and Yann)
>   - was a new fs type, now an option of cpio
>   - deals with the case of a build with no kernel
>   - gets the kernel name in a smarter way
>   - checks for the name of dracut configuration file
> Changes v2 -> v3
>   - fixed a typo on the --no-kernel option for dracut
>   - removed the unneeded dependency to kernel
>   - added tests for cpio, for both full, and dracut modes
> Changes v3 -> v4
>   - Config.in: applied Yann's comments on syntax and option in choice
>   - do no export TARGET_CROSS but give it in command line instead
>   - use $(ROOTFS_CPIO_DIR) as base for tmp directory
>   - let original, full cpio, first in the code, and dracut mode after
>   - removed unwanted comment in dracut.conf (in tests)
> Changes v4 -> v5 (Arnout)
>   - move runtime test to separate patch;
>   - fix check-package errors;
>   - add default dracut.conf file, the one from the runtime test;
>   - remove bash from dracut.conf;
>   - remove dependency on busybox or systemd init;
>   - add help text to BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILE;
>   - use our compression instead of dracut's;
>   - still allow uimage;
>   - add --sysroot option in dracut call;
>   - adapt paths and environment according to changes in previous commit;
>   - use : instead of . to separate ifeq conditions;
>   - add support for reproducible (shared with cpio);
>   - use ROOTFS_CPIO_OPTS instead of ROOTFS_CPIO_DRACUT_CMD_OPTS;
>   - remove --keep option, isn't needed.
> ---
>  fs/cpio/Config.in   | 34 +++++++++++++++++
>  fs/cpio/cpio.mk     | 33 ++++++++++++++++
>  fs/cpio/dracut.conf | 93 +++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 160 insertions(+)
>  create mode 100644 fs/cpio/dracut.conf
> 
> diff --git a/fs/cpio/Config.in b/fs/cpio/Config.in
> index c1151a2881..de83aaad65 100644
> --- a/fs/cpio/Config.in
> +++ b/fs/cpio/Config.in
> @@ -7,6 +7,40 @@ config BR2_TARGET_ROOTFS_CPIO
>  
>  if BR2_TARGET_ROOTFS_CPIO
>  
> +choice
> +	prompt "cpio type"
> +	default BR2_TARGET_ROOTFS_CPIO_FULL
> +
> +config BR2_TARGET_ROOTFS_CPIO_FULL
> +	bool "cpio the whole root filesystem"
> +	help
> +	  Build a cpio archive containing the whole the root filesystem.
> +
> +config BR2_TARGET_ROOTFS_CPIO_DRACUT
> +	bool "Invoke dracut to make a partial initramfs"
> +	select BR2_PACKAGE_HOST_DRACUT
> +	select BR2_PACKAGE_HOST_UBOOT_TOOLS
> +	help
> +	  Build an additional initramfs using dracut. This only contains
> +	  a subset of the rootfs, as determined by the configuration
> +	  file.
> +	  This can be useful to create a recovery system, for instance.
> +
> +endchoice
> +
> +if BR2_TARGET_ROOTFS_CPIO_DRACUT
> +config BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILE
> +	string "dracut configuration file"
> +	default "fs/cpio/dracut.conf"
> +	help
> +	  Dracut configuration file. It determines which parts of the
> +	  rootfs get included in the cpio image. See dracut.conf(5) or
> +	  https://github.com/dracutdevs/dracut/blob/master/man/dracut.conf.5.asc
> +
> +	  The default configuration file is suitable for busybox init.
> +	  It doesn't, however, pivot_root into a full rootfs.
> +endif
> +
>  choice
>  	prompt "Compression method"
>  	default BR2_TARGET_ROOTFS_CPIO_NONE
> diff --git a/fs/cpio/cpio.mk b/fs/cpio/cpio.mk
> index 81f8c393d1..b62d804ad8 100644
> --- a/fs/cpio/cpio.mk
> +++ b/fs/cpio/cpio.mk
> @@ -36,6 +36,8 @@ ROOTFS_CPIO_DEPENDENCIES += host-cpio
>  ROOTFS_CPIO_OPTS += --reproducible
>  endif
>  
> +ifeq ($(BR2_TARGET_ROOTFS_CPIO_FULL),y)
> +
>  define ROOTFS_CPIO_CMD
>  	cd $(TARGET_DIR) && \
>  	find . \
> @@ -44,6 +46,37 @@ define ROOTFS_CPIO_CMD
>  	> $@
>  endef
>  
> +else ifeq ($(BR2_TARGET_ROOTFS_CPIO_DRACUT),y)
> +
> +ROOTFS_CPIO_DEPENDENCIES += host-dracut
> +
> +ifeq ($(BR_BUILDING):$(BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILE),y:)
> +$(error No dracut config file name specified, check your BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILE setting)
> +endif
> +
> +ifeq ($(BR2_LINUX_KERNEL),y)
> +ROOTFS_CPIO_DEPENDENCIES += linux
> +ROOTFS_CPIO_OPTS += --kver $(LINUX_VERSION_PROBED)
> +else
> +ROOTFS_CPIO_OPTS += --no-kernel
> +endif
> +
> +define ROOTFS_CPIO_CMD
> +	mkdir -p $(ROOTFS_CPIO_DIR)/tmp
> +
> +	$(HOST_DIR)/bin/dracut \
> +		$(ROOTFS_CPIO_OPTS) \
> +		-c $(BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILE) \
> +		--sysroot $(TARGET_DIR) \
> +		--tmpdir $(ROOTFS_CPIO_DIR)/tmp \
> +		-M \
> +		--force \
> +		--no-compress \
> +		$@
> +endef
> +
> +endif #BR2_TARGET_ROOTFS_CPIO_DRACUT
> +
>  ifeq ($(BR2_TARGET_ROOTFS_CPIO_UIMAGE),y)
>  ROOTFS_CPIO_DEPENDENCIES += host-uboot-tools
>  define ROOTFS_CPIO_UBOOT_MKIMAGE
> diff --git a/fs/cpio/dracut.conf b/fs/cpio/dracut.conf
> new file mode 100644
> index 0000000000..6184457723
> --- /dev/null
> +++ b/fs/cpio/dracut.conf
> @@ -0,0 +1,93 @@
> +#Simple dracut config for a system without systemd
> +
> +#Dracut configuration
> +
> +show_modules=yes
> +i18n_install_all=no
> +lvmconf=no
> +mdadmconf=no
> +early_microcode=no
> +hostonly=no
> +hostonly_cmdline=no
> +use_fstab=no
> +kernel_cmdline="rd.break=initqueue"
> +do_strip=no
> +
> +# Dracut modules needed
> +add_dracutmodules+=" \
> +busybox-init
> +"
> +
> +# Modules to ignore
> +omit_dracutmodules+=" \
> +bash \
> +biosdevname \
> +btrfs \
> +bluetooth \
> +busybox \
> +caps \
> +cifs \
> +crypt \
> +crypt-gpg \
> +dash \
> +dbus-broker \
> +dbus-daemon \
> +dm \
> +dmraid \
> +dmsquash-live-ntfs \
> +dracut-systemd \
> +fcoe \
> +fcoe-uefi \
> +fs-lib \
> +iscsi \
> +i18n \
> +lvmmerge \
> +lvm \
> +lunmask \
> +mdraid \
> +memstrack \
> +mksh \
> +modsign \
> +mount-root \
> +multipath \
> +nbd \
> +network-legacy \
> +network-wicked \
> +nfs \
> +nvdimm \
> +nvmf \
> +parse-lunmask \
> +qemu \
> +qemu-net \
> +resume \
> +rootfs-block \
> +rngd \
> +systemd \
> +systemd-udevd \
> +systemd-coredump \
> +systemd-ask-password \
> +systemd-timedated \
> +systemd-rfkill \
> +systemd-resolved \
> +systemd-hostnamed \
> +systemd-initrd \
> +systemd-journald \
> +systemd-ldconfig \
> +systemd-networkd \
> +systemd-timesyncd \
> +systemd-veritysetup \
> +systemd-modules-load \
> +systemd-sysctl \
> +systemd-repart \
> +systemd-sysext \
> +systemd-sysusers \
> +systemd-tmpfiles \
> +squash \
> +ssh-client \
> +stratis \
> +tpm2-tss \
> +udev-rules \
> +url-lib \
> +usrmount \
> +"
> +
> -- 
> 2.37.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/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.  |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

  parent reply	other threads:[~2022-08-18 21:09 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-15 11:17 [Buildroot] [PATCH next v5 1/3] package/dracut: new host package Arnout Vandecappelle (Essensium/Mind)
2022-08-15 11:17 ` [Buildroot] [PATCH next v5 2/3] fs/cpio: new option to use dracut tool Arnout Vandecappelle (Essensium/Mind)
2022-08-15 13:05   ` Yann E. MORIN
2022-08-15 16:37     ` Arnout Vandecappelle
2022-08-18 21:09   ` Yann E. MORIN [this message]
2022-08-15 11:17 ` [Buildroot] [PATCH next v5 3/3] support/testing/tests/fs/test_cpio.py: new runtime test Arnout Vandecappelle (Essensium/Mind)
2022-08-18 21:10   ` Yann E. MORIN
2022-08-15 12:36 ` [Buildroot] [PATCH next v5 1/3] package/dracut: new host package Yann E. MORIN
2022-08-15 16:27   ` Arnout Vandecappelle via buildroot
2022-08-18 21:09 ` Yann E. MORIN

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=20220818210939.GW2854108@scaer \
    --to=yann.morin.1998@free.fr \
    --cc=aduskett@gmail.com \
    --cc=arnout@mind.be \
    --cc=buildroot@buildroot.org \
    --cc=thierry.bultel@linatsea.fr \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox