mbox series

[v2,0/8] Add support to cross-compile a dracut initramfs

Message ID 20260924072340.4038396-1-felix.moessbauer@siemens.com
Headers show
Series Add support to cross-compile a dracut initramfs | expand

Message

MOESSBAUER, Felix Sept. 24, 2026, 7:23 a.m. UTC
Not a trivial change, but one that really pays off: On some real-world
(non native) use cases the initrd generation takes more than 10 minutes.
This is due to emulating the ldd, as well as the cpio and compression
stages. With initramfs tools or the initramfs-tools wrapped dracut, we
don't see any possibility to significantly speed up the process (and
cross-building is also not supported). However, with direct invocation
of dracut, cross-compiling the initramfs becomes feasible and significantly
faster (on some cases more than 5x). This is especially relevant for
initrd-only images, where the slow build times are already a blocker as
of today.

In combination with host-apt based package installation (not part of this
series), this can cut the overall buildtime by a factor of 3x or more.

Note, that isar-cip-core will soon profit from this change as well, as
they plan to switch all initrd scripts to dracut.

Changes since v1:

- make dependency to host tooling chroot more precise:
  on external initrd bind it to the do_generate_initramfs task
  on internal initrd bind it to the do_rootfs_install task
- rebased onto next

No other changes.

Best regards,
Felix Moessbauer

Felix Moessbauer (8):
  rootfs: generalize deployment of rootfs artifact
  dracut-module: make module-setup compatible with sysroot
  initramfs: move dracut logic to initrd-dracut class
  dracut: use fixed log level on generation for progress reporting
  dracut: enforce build of reproducible initrd
  add host-tooling chroot for generic host tooling
  dracut: add support for cross initrd generation
  rootfs: stub both dracut and update-initramfs on dracut

 .../dracut-example-lighttpd/files/install.sh  | 12 ++--
 .../recipes-initramfs/images/isar-dracut.bb   |  4 +-
 meta/classes-recipe/host-tooling.bbclass      | 14 ++++
 meta/classes-recipe/imagetypes_wic.bbclass    |  2 +-
 meta/classes-recipe/initramfs.bbclass         |  2 +
 meta/classes-recipe/initrd-dracut.bbclass     | 43 +++++++++++-
 meta/classes-recipe/rootfs-deploy.bbclass     | 30 +++++++++
 meta/classes-recipe/rootfs.bbclass            | 39 +++++++----
 meta/classes/sbom.bbclass                     |  2 +-
 meta/lib/rootfs_progress.py                   |  3 +-
 .../dracut-cross-ldd/dracut-cross-ldd.bb      | 16 +++++
 .../dracut-cross-ldd/files/dracut-cross-ldd   | 65 +++++++++++++++++++
 .../host-tooling-chroot.bb                    | 28 ++++++++
 .../sbom-chroot/sbom-chroot.bb                | 19 ++----
 .../sbuild-chroot/sbuild-chroot.inc           | 30 ++-------
 .../dracut-module/files/module-setup.sh.tmpl  |  2 +-
 16 files changed, 251 insertions(+), 60 deletions(-)
 create mode 100644 meta/classes-recipe/host-tooling.bbclass
 create mode 100644 meta/classes-recipe/rootfs-deploy.bbclass
 create mode 100644 meta/recipes-devtools/dracut-cross-ldd/dracut-cross-ldd.bb
 create mode 100644 meta/recipes-devtools/dracut-cross-ldd/files/dracut-cross-ldd
 create mode 100644 meta/recipes-devtools/host-tooling-chroot/host-tooling-chroot.bb