public inbox for isar-users@googlegroups.com
 help / color / mirror / Atom feed
From: Zhihang Wei <wzh@ilbers.de>
To: isar-users@googlegroups.com
Subject: [PATCH] qemuarm-trixie: Workaround with missing drivers in qemuarm-trixie initrd
Date: Fri, 20 Feb 2026 12:53:39 +0100	[thread overview]
Message-ID: <20260220115339.1188052-1-wzh@ilbers.de> (raw)

This is a workaround to fix the current qemuarm-trixie image unbootable
issue.

Starting with Debian Trixie, update-initramfs invokes "dracut-install"
to collect and install required drivers into the generated initrd.
"dracut-install" relies on fts_open() / fts_read() from glibc to
traverse directories and locate drivers.

Due to a long-standing bug [1] between qemu and glibc, the fts_*
functions may fail to find files on certain 32-bit architectures. As a
result, required modules such as virtio_blk are not detected and not
added to the initrd. The produced image then fails to boot under qemu
because the block device driver is missing.

A similiar dracut bug report was filed in 2024 [2], pointing to this
upstream glibc issue reported in 2018 [1]. No upstream fix has been
applied, and the issue appears to affect only qemu builds for specific
32-bit targets.

As a temporary workaround, introduce INITRAMFS_EXTRA_DRIVERS and use it
to append the neccessary drivers that are currently missed from the
initrd.

For a complete fix, we either need to push for an upstream glibc/qemu
fix, or convince dracut to avoid using these non-POSIX fts_* functions
and use opendir() / readdir() instead.

[1] https://sourceware.org/bugzilla/show_bug.cgi?id=23960
[2] https://bugs-devel.debian.org/cgi-bin/bugreport.cgi?bug=1079443

Signed-off-by: Zhihang Wei <wzh@ilbers.de>
---
 meta-isar/conf/multiconfig/qemuarm-trixie.conf | 2 ++
 meta/classes-recipe/rootfs.bbclass             | 9 ++++++++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/meta-isar/conf/multiconfig/qemuarm-trixie.conf b/meta-isar/conf/multiconfig/qemuarm-trixie.conf
index 5600ab23..dcf0b839 100644
--- a/meta-isar/conf/multiconfig/qemuarm-trixie.conf
+++ b/meta-isar/conf/multiconfig/qemuarm-trixie.conf
@@ -5,3 +5,5 @@
 
 MACHINE ?= "qemuarm"
 DISTRO ?= "debian-trixie"
+
+INITRAMFS_EXTRA_DRIVERS += "virtio_blk"
diff --git a/meta/classes-recipe/rootfs.bbclass b/meta/classes-recipe/rootfs.bbclass
index 8485b32f..65843f61 100644
--- a/meta/classes-recipe/rootfs.bbclass
+++ b/meta/classes-recipe/rootfs.bbclass
@@ -12,12 +12,19 @@ ROOTFS_DISTRO ?= "${DISTRO}"
 # the default initramfs generator and it is not
 # possible to derive the value in another way
 ROOTFS_USE_DRACUT ??= ""
+INITRAMFS_EXTRA_DRIVERS ?= ""
 
 def initramfs_generator_cmdline(d):
     rootfs_packages =  d.getVar('ROOTFS_PACKAGES') or ''
+    extra_drivers = d.getVar('INITRAMFS_EXTRA_DRIVERS') or ''
     if 'dracut' in rootfs_packages or bb.utils.to_boolean(d.getVar('ROOTFS_USE_DRACUT')):
         return "dracut --force --kver \"$kernel_version\""
-    return "update-initramfs -u -v -k \"$kernel_version\""
+    cmds = []
+    if extra_drivers:
+        for drv in extra_drivers.split():
+            cmds.append(f'echo {drv} | tee -a /etc/initramfs-tools/modules')
+    cmds.append('update-initramfs -u -v -k "$kernel_version"')
+    return " && ".join(cmds)
 
 ROOTFS_PACKAGES ?= ""
 ROOTFS_VARDEPS ?= ""
-- 
2.39.5

-- 
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/20260220115339.1188052-1-wzh%40ilbers.de.

             reply	other threads:[~2026-02-20 11:53 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-20 11:53 Zhihang Wei [this message]
2026-02-20 11:59 ` 'Jan Kiszka' 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=20260220115339.1188052-1-wzh@ilbers.de \
    --to=wzh@ilbers.de \
    --cc=isar-users@googlegroups.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