I did some more tests. modules.d/90overlayfs installs the script that mounts the overlay using this line:
inst_hook mount 01 "$moddir/mount-overlayfs.sh" But the mount hooks of dracut are not executed at all. Here's the part of init.log: /init@229(): getarg rd.break=mount -d rdbreak=mount /lib/dracut-lib.sh@153(getarg): debug_off /lib/dracut-lib.sh@23(debug_off): set +x /lib/dracut-lib.sh@216(getarg): return 1 /init@232(): _i_mount=0 /init@233(): : /init@234(): ismounted /sysroot /lib/dracut-lib.sh@525(ismounted): findmnt /sysroot /init@235(): usable_root /sysroot /lib/dracut-lib.sh@736(usable_root): local _i /lib/dracut-lib.sh@738(usable_root): '[' -d /sysroot ']' /lib/dracut-lib.sh@740(usable_root): for _i in "$1"/usr/lib*/ld-*.so "$1"/lib*/ld-*.so /lib/dracut-lib.sh@741(usable_root): '[' -e '/sysroot/usr/lib*/ld-*.so' ']' /lib/dracut-lib.sh@740(usable_root): for _i in "$1"/usr/lib*/ld-*.so "$1"/lib*/ld-*.so /lib/dracut-lib.sh@741(usable_root): '[' -e '/sysroot/lib*/ld-*.so' ']' /lib/dracut-lib.sh@744(usable_root): for _i in proc sys dev /lib/dracut-lib.sh@745(usable_root): '[' -e /sysroot/proc ']' /lib/dracut-lib.sh@744(usable_root): for _i in proc sys dev /lib/dracut-lib.sh@745(usable_root): '[' -e /sysroot/sys ']' /lib/dracut-lib.sh@744(usable_root): for _i in proc sys dev /lib/dracut-lib.sh@745(usable_root): '[' -e /sysroot/dev ']' /lib/dracut-lib.sh@748(usable_root): return 0 /init@235(): break Because of the break this line is not executed in init.sh and the overlay mount script is not executed. line 238 for f in "$hookdir"/mount/*.sh; do -- regards Thomas