[Buildroot] [PATCH 3/3] fs/dracut: new fs type
From: Thierry Bultel <hidden>
Date: 2021-12-15 18:00:57
Subsystem:
filesystems (vfs and infrastructure), the rest · Maintainers:
Alexander Viro, Christian Brauner, Linus Torvalds
Adds an option to build an initramfs image, using the dracut host tool. Signed-off-by: Thierry Bultel <redacted> --- fs/Config.in | 1 + fs/dracut/Config.in | 13 +++++++++++ fs/dracut/dracut.mk | 55 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+) create mode 100644 fs/dracut/Config.in create mode 100644 fs/dracut/dracut.mk
diff --git a/fs/Config.in b/fs/Config.in
index eee5e26bb2..3938f3b9a7 100644
--- a/fs/Config.in
+++ b/fs/Config.in@@ -5,6 +5,7 @@ source "fs/btrfs/Config.in" source "fs/cloop/Config.in" source "fs/cpio/Config.in" source "fs/cramfs/Config.in" +source "fs/dracut/Config.in" source "fs/erofs/Config.in" source "fs/ext2/Config.in" source "fs/f2fs/Config.in"
diff --git a/fs/dracut/Config.in b/fs/dracut/Config.in
new file mode 100644
index 0000000000..ee4220def8
--- /dev/null
+++ b/fs/dracut/Config.in@@ -0,0 +1,13 @@ +config BR2_TARGET_ROOTFS_DRACUT + bool "Invoke dracut to make an initramfs" + default n + select BR2_PACKAGE_HOST_DRACUT + select BR2_PACKAGE_HOST_UBOOT_TOOLS + help + Builds an additional initramfs using dracut. This can be useful to create a recovery system, for instance. + +if BR2_TARGET_ROOTFS_DRACUT +config BR2_TARGET_ROOTFS_DRACUT_CONF_FILE + string "configuration file" +endif +
diff --git a/fs/dracut/dracut.mk b/fs/dracut/dracut.mk
new file mode 100644
index 0000000000..9c91150e82
--- /dev/null
+++ b/fs/dracut/dracut.mk@@ -0,0 +1,55 @@ +################################################################################ +# +# dracut to archive target filesystem +# +################################################################################ + +ROOTFS_DRACUT_DEPENDENCIES = host-dracut host-uboot-tools + +ifeq ($(BR2_ROOTFS_DEVICE_CREATION_STATIC),y) + +define ROOTFS_DRACUT_ADD_INIT + if [ ! -e $(TARGET_DIR)/init ]; then \ + ln -sf sbin/init $(TARGET_DIR)/init; \ + fi +endef + +else + +# devtmpfs does not get automounted when initramfs is used. +# Add a pre-init script to mount it before running init +# We must have /dev/console very early, even before /init runs, +# for stdin/stdout/stderr +define ROOTFS_DRACUT_ADD_INIT + if [ ! -e $(TARGET_DIR)/init ]; then \ + $(INSTALL) -m 0755 fs/cpio/init $(TARGET_DIR)/init; \ + fi + mkdir -p $(TARGET_DIR)/dev + mknod -m 0622 $(TARGET_DIR)/dev/console c 5 1 +endef + +endif # BR2_ROOTFS_DEVICE_CREATION_STATIC + +ROOTFS_DRACUT_PRE_GEN_HOOKS += ROOTFS_DRACUT_ADD_INIT + +define ROOTFS_DRACUT_CMD + + mkdir -p $(@D)/tmp + rm -rf $(@D)/tmp/* + + DRACUT_LDD=$(TARGET_CROSS)ldd \ + DRACUT_INSTALL="$(HOST_DIR)/lib/dracut/dracut-install"\ + dracutbasedir=$(HOST_DIR)/usr/lib/dracut \ + dracutsysrootdir=$(TARGET_DIR) \ + $(HOST_DIR)/bin/dracut \ + --kver $(BR2_LINUX_KERNEL_VERSION).0 \ + -c $(BR2_TARGET_ROOTFS_DRACUT_CONF_FILE) \ + --tmpdir $(@D)/tmp \ + -M \ + --force \ + --keep \ + $@ + +endef + +$(eval $(rootfs))
--
2.25.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot