#1110545 initramfs-tools: missing MMC modules break boot

#1110545#5
Date:
2025-08-08 10:33:37 UTC
From:
To:
Dear Maintainer,

when running update-initramfs from Trixie (armhf) on a build system
(e.g. using debos) the MMC driver modules are not included in the
initramfs any more despite MODULES=most (default configuration). This
breaks boot on at least BeagleBone Black (BBB) for a system with
rootfs on SD card (and presumably built-in eMMC as well). As many
embedded systems can only boot from eMMC or SD card, this potentially
affects a large number of systems when using images built on another
system (which is a rather common scenario).

When run on the target system itself with rootfs on SD card, a lot of
MMC drivers are included (not just the one used on the system). This
is the behaviour I expect from MODULES=most on *any* system (at the
very least on armhf/armel/arm64).

When run on the build system, no MMC driver at all is present in the
initramfs on Trixie:

=== Begin ===
$ zstdcat /mnt/boot/initrd.img |cpio -t |grep -i mmc
10216 blocks
=== End ===

For comparison, Bookworm included mmc/host/sdhci-omap.ko alongside
lots of other MMC drivers:

=== Begin ===
$ zstdcat /boot/initrd.img|cpio -t |cut -d / -f 5- |grep mmc
kernel/drivers/mmc
kernel/drivers/mmc/core
kernel/drivers/mmc/core/pwrseq_sd8787.ko
kernel/drivers/mmc/core/sdio_uart.ko
kernel/drivers/mmc/host
kernel/drivers/mmc/host/armmmci.ko
kernel/drivers/mmc/host/bcm2835.ko
kernel/drivers/mmc/host/cb710-mmc.ko
kernel/drivers/mmc/host/dw_mmc-exynos.ko
kernel/drivers/mmc/host/dw_mmc-pltfm.ko
kernel/drivers/mmc/host/dw_mmc-rockchip.ko
kernel/drivers/mmc/host/dw_mmc.ko
kernel/drivers/mmc/host/meson-mx-sdio.ko
kernel/drivers/mmc/host/mmc_spi.ko
kernel/drivers/mmc/host/mvsdio.ko
kernel/drivers/mmc/host/of_mmc_spi.ko
kernel/drivers/mmc/host/omap.ko
kernel/drivers/mmc/host/omap_hsmmc.ko
kernel/drivers/mmc/host/rtsx_pci_sdmmc.ko
kernel/drivers/mmc/host/rtsx_usb_sdmmc.ko
kernel/drivers/mmc/host/sdhci-dove.ko
kernel/drivers/mmc/host/sdhci-esdhc-imx.ko
kernel/drivers/mmc/host/sdhci-iproc.ko
kernel/drivers/mmc/host/sdhci-of-aspeed.ko
kernel/drivers/mmc/host/sdhci-omap.ko
kernel/drivers/mmc/host/sdhci-pci.ko
kernel/drivers/mmc/host/sdhci-pxav3.ko
kernel/drivers/mmc/host/sdhci-s3c.ko
kernel/drivers/mmc/host/sdhci-tegra.ko
kernel/drivers/mmc/host/sunxi-mmc.ko
kernel/drivers/mmc/host/tifm_sd.ko
kernel/drivers/mmc/host/toshsd.ko
kernel/drivers/mmc/host/ushc.ko
kernel/drivers/mmc/host/via-sdmmc.ko
kernel/drivers/mmc/host/vub300.ko
kernel/drivers/mmc/host/wmt-sdmmc.ko
kernel/drivers/phy/rockchip/phy-rockchip-emmc.ko
141997 blocks
=== End ===

On a booted Bookworm system, mmc/host/sdhci-omap.ko is used for both
eMMC and SD card:

=== Begin ===
$ lsmod |grep -i omap |egrep -i 'sdhci|mmc'
sdhci_omap             28672  0
$ sudo dmesg|grep -i mmc
[   10.085952] sdhci-omap 48060000.mmc: Got CD GPIO
[   10.086158] sdhci-omap 48060000.mmc: supply pbias not found, using dummy regulator
[   10.086930] sdhci-omap 48060000.mmc: supply vqmmc not found, using dummy regulator
[   10.120188] sdhci-omap 481d8000.mmc: supply pbias not found, using dummy regulator
[   10.120978] sdhci-omap 481d8000.mmc: supply vqmmc not found, using dummy regulator
[   10.670895] mmc1: SDHCI controller on 481d8000.mmc [481d8000.mmc] using External DMA
[   10.697195] mmc0: SDHCI controller on 48060000.mmc [48060000.mmc] using External DMA
[   10.724501] mmc1: new high speed MMC card at address 0001
[   10.740127] mmcblk1: mmc1:0001 M62704 3.56 GiB
[   10.772799] mmc0: new high speed SDXC card at address e624
[   10.779847]  mmcblk1: p1
[   10.781699] mmcblk1boot0: mmc1:0001 M62704 2.00 MiB
[   10.788867] mmcblk0: mmc0:e624 SN64G 59.5 GiB
[   10.817750]  mmcblk0: p1 p2 p3
[   10.834106] mmcblk1boot1: mmc1:0001 M62704 2.00 MiB
[   10.895623] mmcblk1rpmb: mmc1:0001 M62704 512 KiB, chardev (241:0)
=== End ===


Failed boot:
=== Begin ===
Booting Debian 6.12.38+deb13-armmp from mmc 0:3...
## Flattened Device Tree blob at 88000000
   Booting using the fdt blob at 0x88000000
   Loading Ramdisk to 8f272000, end 8ffff720 ... OK
   Loading Device Tree to 8f25d000, end 8f2714fb ... OK

Starting kernel ...

[    1.243170] target-module@4b000000:target-module@140000:pmu@0:fck: device ID is greater than 24
[    1.248637] l3-aon-clkctrl:0000:0: failed to disable
[    1.286896] l3-aon-clkctrl:0000:0: failed to disable
[    1.338398] omap_voltage_late_init: Voltage driver support not added
[    2.214361] ti-sysc 44e31000.target-module: probe with driver ti-sysc failed with error -16
[    2.282555] ti-sysc 48040000.target-module: probe with driver ti-sysc failed with error -16
[    2.404683] 48000000.interconnect:segment@200000:target-module@0:mpu@0:fck: device ID is greater than 24
[    2.470805] debugfs: Directory '49000000.dma' with parent 'dmaengine' already present!
Gave up waiting for root file system device.  Common problems:
 - Boot args (cat /proc/cmdline)
   - Check rootdelay= (did the system wait long enough?)
 - Missing modules (cat /proc/modules; ls /dev)
ALERT!  /dev/disk/by-uuid/3c1a9a54-db28-4674-8531-417e780d24e9 does not exist.  Dropping to a shell!
=== End ===


In Trixie, sdhci-omap is still built as a module that needs to be
loaded by initramfs (no change compared to Bookworm):

=== Begin ===
$ grep CONFIG_MMC_SDHCI_OMAP /mnt/boot/config-6.12.38+deb13-armmp
CONFIG_MMC_SDHCI_OMAP=m
=== End ===

When run on the build system, MMC is not mentioned at all in
update-initramfs output even with in verbose mode:

=== Begin ===
$ tr -d '\r' < debos.log |grep setup-grub-initramfs |grep -i mmc
$
=== End ===

When run on the target system, a lot of MMC drivers are included:

=== Begin ===
$ grep -i mmc update-initramfs-on-bbb.log
dracut-install: mkdir '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc'
dracut-install: mkdir '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/core'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/core/sdio_uart.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/core/sdio_uart.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/core/pwrseq_sd8787.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/core/pwrseq_sd8787.ko.xz'
dracut-install: mkdir '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/rtsx_usb_sdmmc.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/rtsx_usb_sdmmc.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/armmmci.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/armmmci.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/ushc.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/ushc.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/cqhci.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/cqhci.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/omap.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/omap.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/dw_mmc-pltfm.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/dw_mmc-pltfm.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/dw_mmc.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/dw_mmc.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/vub300.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/vub300.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/sdhci-pltfm.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/sdhci-pltfm.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/sdhci.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/sdhci.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/rtsx_pci_sdmmc.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/rtsx_pci_sdmmc.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/sdhci-s3c.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/sdhci-s3c.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/omap_hsmmc.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/omap_hsmmc.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/dw_mmc-rockchip.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/dw_mmc-rockchip.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/mmc_spi.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/mmc_spi.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/of_mmc_spi.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/of_mmc_spi.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/mvsdio.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/mvsdio.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/bcm2835.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/bcm2835.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/sdhci-pci.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/sdhci-pci.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/toshsd.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/toshsd.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/dw_mmc-exynos.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/dw_mmc-exynos.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/sdhci-pxav3.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/sdhci-pxav3.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/sdhci-iproc.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/sdhci-iproc.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/sunxi-mmc.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/sunxi-mmc.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/sdhci-of-aspeed.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/sdhci-of-aspeed.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/via-sdmmc.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/via-sdmmc.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/sdhci-omap.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/sdhci-omap.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/sdhci-tegra.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/sdhci-tegra.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/sdhci-dove.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/sdhci-dove.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/cb710-mmc.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/cb710-mmc.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/tifm_sd.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/tifm_sd.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/meson-mx-sdio.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/meson-mx-sdio.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/wmt-sdmmc.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/wmt-sdmmc.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/sdhci-esdhc-imx.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/mmc/host/sdhci-esdhc-imx.ko.xz'
dracut-install: cp '/lib/modules/6.12.38+deb13-armmp/kernel/drivers/phy/rockchip/phy-rockchip-emmc.ko.xz' '/var/tmp/mkinitramfs_qOKAOK/lib/modules/6.12.38+deb13-armmp/kernel/drivers/phy/rockchip/phy-rockchip-emmc.ko.xz'
I: Checking swap device /dev/mmcblk0p2
I: The initramfs will attempt to resume from /dev/mmcblk0p2
=== End ===


Sascha Silbe


[removed auto-generated system info because it applies to my desktop,
not the BBB affected by the breakage]

#1110545#10
Date:
2025-08-28 08:51:44 UTC
From:
To:
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