From: "Arnout Vandecappelle (Essensium/Mind)" <arnout@mind.be>
To: buildroot@buildroot.org
Cc: Thierry Bultel <thierry.bultel@linatsea.fr>,
Adam Duskett <aduskett@gmail.com>
Subject: [Buildroot] [PATCH next v5 2/3] fs/cpio: new option to use dracut tool
Date: Mon, 15 Aug 2022 13:17:09 +0200 [thread overview]
Message-ID: <20220815111710.1459820-2-arnout@mind.be> (raw)
In-Reply-To: <20220815111710.1459820-1-arnout@mind.be>
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>
---
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
next prev parent reply other threads:[~2022-08-15 11:17 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 ` Arnout Vandecappelle (Essensium/Mind) [this message]
2022-08-15 13:05 ` [Buildroot] [PATCH next v5 2/3] fs/cpio: new option to use dracut tool Yann E. MORIN
2022-08-15 16:37 ` Arnout Vandecappelle
2022-08-18 21:09 ` Yann E. MORIN
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=20220815111710.1459820-2-arnout@mind.be \
--to=arnout@mind.be \
--cc=aduskett@gmail.com \
--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 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.