From: "'Quirin Gylstorff' via isar-users" <isar-users@googlegroups.com>
To: isar-users@googlegroups.com, jan.kiszka@siemens.com,
felix.moessbauer@siemens.com, cedric.hombourger@siemens.com
Subject: [RFC PATCH v3 05/10] Add class to generate custom dracut initramfs
Date: Mon, 6 Oct 2025 20:31:07 +0200 [thread overview]
Message-ID: <20251006183214.1593195-6-Quirin.Gylstorff@siemens.com> (raw)
In-Reply-To: <20251006183214.1593195-1-Quirin.Gylstorff@siemens.com>
From: Quirin Gylstorff <quirin.gylstorff@siemens.com>
This class allows to customize a dracut initramfs by using
configuration files add addition modules and drivers.
It is recommended to use the addition of modules and drivers
sparely and prefer dracut configuration files.
This class has the option to add custom modules automatically to
the initramfs if:
- The modules are provided by the ISAR build system
- The module name is part of the package name, valid names are
- dracut-<module-name>
- <module-name>-dracut
- <something>-dracut-<module-name>
Signed-off-by: Quirin Gylstorff <quirin.gylstorff@siemens.com>
---
meta/classes/initrd-dracut.bbclass | 49 ++++++++++++++++++++++++++++++
1 file changed, 49 insertions(+)
create mode 100644 meta/classes/initrd-dracut.bbclass
diff --git a/meta/classes/initrd-dracut.bbclass b/meta/classes/initrd-dracut.bbclass
new file mode 100644
index 00000000..a06296cc
--- /dev/null
+++ b/meta/classes/initrd-dracut.bbclass
@@ -0,0 +1,49 @@
+# This software is a part of ISAR.
+# This class provides the necessary options to
+# customize a dracut based initramfs.
+#
+# This class should not provide every dracut cmdline
+# option possible. Use the dracut configuration files.
+
+INITRAMFS_GENERATOR_PKG = "dracut"
+
+# The preferred way to configure dracut is to
+# provide dracut-config-<your-config> package which
+# contains all necessary config options
+DRACUT_CONFIG_PATH ??= ""
+DRACUT_EXTRA_DRIVERS ??= ""
+DRACUT_EXTRA_MODULES ??= ""
+DRACUT_EXTRACT_MODULES_FROM_PACKAGE_NAMES ??= "False"
+def extend_dracut_cmdline(d):
+ config_path = d.getVar('DRACUT_CONFIG_PATH') or ''
+ extra_drivers = d.getVar('DRACUT_CONFIG_PATH') or ''
+ extra_modules = d.getVar('DRACUT_CONFIG_PATH') or ''
+ enable_module_extraction = bb.utils.to_boolean(d.getVar('DRACUT_EXTRACT_MODULES_FROM_PACKAGE_LIST'))
+ pkg_list = d.getVar('INITRAMFS_INSTALL') or ''
+
+ cmdline = []
+ modules_from_pkg_names = []
+ if enable_module_extraction:
+ for pkg in pkg_list.split():
+ # Skip dracut-config-* packages
+ if pkg.startswith('dracut-config-'):
+ continue
+ elif pkg.startswith('dracut-'):
+ modules_from_pkg_names.append(pkg[7:])
+ elif pkg.endswith('-dracut'):
+ modules_from_pkg_names.append(pkg[:-7])
+ elif '-dracut-' in pkg:
+ _, module_name = pkg.split('-dracut-', 1)
+ modules_from_pkg_names.append(module_name)
+ extra_modules = extra_modules + ' ' +' '.join(modules_from_pkg_names)
+
+ if config_path:
+ cmdline.append(f"--conf {config_path}")
+ if extra_drivers:
+ cmdline.append(f"--add-drivers {extra_drivers}")
+ if extra_modules:
+ cmdline.append(f"--add {extra_modules}")
+ return ' '.join(cmdline)
+
+ROOTFS_INITRAMFS_GENERATOR_CMDLINE += "${@ extend_dracut_cmdline()}"
+inherit initramfs
--
2.51.0
--
You received this message because you are subscribed to the Google Groups "isar-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/isar-users/20251006183214.1593195-6-Quirin.Gylstorff%40siemens.com.
next prev parent reply other threads:[~2025-10-06 18:32 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-06 18:31 [RFC PATCH v3 00/10] Add support for dracut 'Quirin Gylstorff' via isar-users
2025-10-06 18:31 ` [RFC PATCH v3 01/10] add dracut to custom kernel builds 'Quirin Gylstorff' via isar-users
2025-10-06 18:31 ` [RFC PATCH v3 02/10] rootfs: Allow to overwrite the initramfs generation cmds 'Quirin Gylstorff' via isar-users
2025-10-06 18:31 ` [RFC PATCH v3 03/10] rootfs Add dracut to initramfs generator 'Quirin Gylstorff' via isar-users
2025-10-06 18:31 ` [RFC PATCH v3 04/10] initramfs: allow to set the generator command 'Quirin Gylstorff' via isar-users
2025-10-06 18:31 ` 'Quirin Gylstorff' via isar-users [this message]
2025-10-09 5:22 ` [RFC PATCH v3 05/10] Add class to generate custom dracut initramfs 'cedric.hombourger@siemens.com' via isar-users
2025-10-09 6:52 ` 'Quirin Gylstorff' via isar-users
2025-10-09 6:21 ` 'cedric.hombourger@siemens.com' via isar-users
2025-10-09 6:53 ` 'Quirin Gylstorff' via isar-users
2025-10-06 18:31 ` [RFC PATCH v3 06/10] rootfs: add flag to use dracut if it is not part of the package list 'Quirin Gylstorff' via isar-users
2025-10-06 18:31 ` [RFC PATCH v3 07/10] Add example dracut initramfs 'Quirin Gylstorff' via isar-users
2025-10-06 18:31 ` [RFC PATCH v3 08/10] Add dracut module helper 'Quirin Gylstorff' via isar-users
2025-10-06 18:31 ` [RFC PATCH v3 09/10] Use lighttpd as a example how to add a dracut module 'Quirin Gylstorff' via isar-users
2025-10-06 18:31 ` [RFC PATCH v3 10/10] user_manual: Add dracut for initramfs generation 'Quirin Gylstorff' via isar-users
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=20251006183214.1593195-6-Quirin.Gylstorff@siemens.com \
--to=isar-users@googlegroups.com \
--cc=Quirin.Gylstorff@siemens.com \
--cc=cedric.hombourger@siemens.com \
--cc=felix.moessbauer@siemens.com \
--cc=jan.kiszka@siemens.com \
/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