mkinitrd produces init nash scripts ending with the 3 lines: switchroot echo Booting has failed. sleep -1 This is probably intended to leave the console in an infinite sleep should the switchroot fail. However, nash does not sleep in response to 'sleep -1' and the following returns immediately: # echo 'nash-sleep -1' | nash --force I suspect that nash interprets the '-1' as an invalid option. Replacing the 'sleep -1' with 'sleep 120' does produce the desired effect.
This should be fixed in current mkinitrd.
This has not been fixed as of mkinitrd-6.0.17-1.fc8. mkinitrd continues to add 'sleep -1' onto the end of scripts nash still does not sleep. The failure of this sleep call allows the kernel to panic immediately after the "Booting has failed" message. This can prevent the user from reading any helpful information left on the console following an initrd failure.