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 initramfs.
"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 initramfs. 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, use a customized initramfs-hook to append
the neccessary drivers that are currently missed from the initramfs.
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 <
w...@ilbers.de>
---
Changes in v2:
- Use initramfs-hook to install the driver, instead of adding another
variable
meta-isar/conf/multiconfig/qemuarm-trixie.conf | 4 +++-
.../
initramfs-virtio-blk-hook_0.1.bb | 8 ++++++++
2 files changed, 11 insertions(+), 1 deletion(-)
create mode 100644 meta/recipes-initramfs/initramfs-virtio-blk-hook/
initramfs-virtio-blk-hook_0.1.bb
diff --git a/meta-isar/conf/multiconfig/qemuarm-trixie.conf b/meta-isar/conf/multiconfig/qemuarm-trixie.conf
index 5600ab23..20eecd92 100644
--- a/meta-isar/conf/multiconfig/qemuarm-trixie.conf
+++ b/meta-isar/conf/multiconfig/qemuarm-trixie.conf
@@ -1,7 +1,9 @@
# This software is a part of Isar.
-# Copyright (C) 2024 ilbers GmbH
+# Copyright (C) 2024-2026 ilbers GmbH
#
# SPDX-License-Identifier: MIT
MACHINE ?= "qemuarm"
DISTRO ?= "debian-trixie"
+
+IMAGE_INSTALL += "initramfs-virtio-blk-hook"
diff --git a/meta/recipes-initramfs/initramfs-virtio-blk-hook/
initramfs-virtio-blk-hook_0.1.bb b/meta/recipes-initramfs/initramfs-virtio-blk-hook/
initramfs-virtio-blk-hook_0.1.bb
new file mode 100644
index 00000000..229d91d6
--- /dev/null
+++ b/meta/recipes-initramfs/initramfs-virtio-blk-hook/
initramfs-virtio-blk-hook_0.1.bb
@@ -0,0 +1,8 @@
+# This software is a part of Isar.
+# Copyright (C) 2026 ilbers GmbH
+#
+# SPDX-License-Identifier: MIT
+
+inherit initramfs-hook
+
+HOOK_ADD_MODULES = "virtio-blk"
--
2.39.5