Bug#1110545: initramfs-tools: missing MMC modules break boot
reassign 1110545 src:glibc
forcemerge 1079443 1110545
found 1079443 2.41-12
affects 1079443 initramfs-tools
affects 1079443 dracut-install
thanks
Dear Maintainer,
after running into a related issue (network drivers missing as well) I
spent several days debugging this and finally figured out that it is
caused by a known bug in glibc that even had the same symptoms when it
was initially reported in Debian a year ago (the title was
"dracut-install ... -m =drivers/XXX is ignored"):
#1079443 src:glibc: fts_* calling non-LFS __readdir [1]
mkinitramfs uses dracut-install to install kernel modules in the
initramfs. dracut-install uses fts_open() + fts_read() to find the
modules in the file system. The glibc implementation of fts_open() +
fts_read() is broken when running in qemu-arm (qemu-user) on amd64 (and
possibly in other circumstances as well).
The upstream ticket glibc#23960 [2] is even older, dating back to 2018
and glibc 2.28. The reason it only started affecting initramfs-tools in
Trixie is that since initramfs-tools commit d730a393 ("Replace
copy_modules_dir by manual_add_modules calls") mkinitramfs uses
dracut-install filters instead of find (for entire directories) and
explicit module lists (for individual modules).
Given that there's been no progress on the glibc bug since 2022 it would
probably be best for dracut-install to stop using the non-POSIX (and
thus rarely used and not thoroughly tested) fts_open() + fts_read().
Sascha Silbe
[1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1079443
[2] https://sourceware.org/bugzilla/show_bug.cgi?id=23960
Reply to: