kdump initramfs with squashfs fails to boot with Failed to execute /init (error -2). The squash loader’s init-squash.sh (installed as /init) uses #!/bin/sh shebang, but /usr/bin/sh does not exist in the outer cpio layer — only /usr/sbin/sh is present.
...
2026-05-25 11:58:48 [ 0.521438] Run as init process
2026-05-25 11:58:48 [ 0.521613] Failed to execute /init (error -2)
2026-05-25 11:58:48 [ 0.521768] Run /sbin/init as init process
2026-05-25 11:58:48 can't run '/etc/init.d/rcS': No such file or directory
2026-05-25 11:58:48 can't open /dev/tty4: No such file or directory
2026-05-25 11:58:48 can't open /dev/tty2: No such file or directory
2026-05-25 11:58:48 can't open /dev/tty3: No such file or directory
2026-05-25 11:58:48 Please press Enter to activate this console.
The busybox module creates applet symlinks based on find_binary() results. Since DRACUT_PATH defaults to /usr/sbin /sbin /usr/bin /bin, and the Fedora busybox package places applet symlinks under /usr/sbin/, find_binary("sh") returns /usr/sbin/sh. The module only creates that symlink, leaving /usr/bin/sh (i.e. /bin/sh on merged-usr) absent.
Distribution used
Fedora 43 (also affects Fedora 42)
Dracut version
dracut-107-8.fc43
Init system
systemd
To Reproduce
Install Fedora 43 with busybox (1.37.0-3.fc43) and kexec-tools
Enable kdump with squashfs (kdump-utils adds --add 'squash-squashfs' --squash-compressor 'zstd')
kdumpctl rebuild
echo c > /proc/sysrq-trigger
Crash kernel fails with Failed to execute /init (error -2)
Expected behavior
/usr/bin/sh should always exist when busybox module is installed (POSIX mandates /bin/sh). kdump should successfully capture vmcore.
Additional context
Triggered by Fedora 42’s Unify /usr/bin and /usr/sbin transition — /usr/sbin still exists as a separate directory and busybox places applet symlinks there.