I have a problem with a Linux system that won't boot. The bootloader happily loads the kernel and initrd, but then the initrd script whines and complains and moans that it can't find the root device.
How to I force the initrd script to give me a shell prompt so I can actually investigate what's going on?
I tried unpacking initrd and making the
/init shell script launch
bash -i. But that didn't work at all; I see the Bash prompt appear, but the keyboard doesn't work. (Bash complains something about "cannot set progress group" and "inappropriate ioctl for device".)
In case it matters: OpenSUSE 13.1, which uses the old
mkinitrd system. (Apparently newer versions use Dracut.) From what I can tell,
/init is a small script that executes everything in
/boot (a series of numbered Bash scripts).
There's a script named
/boot/91-shell.sh, which contains a comment which suggests that passing
shell=1on the kernel command line will give me a shell prompt; it does not.
There's also a comment in
/boot-02-start.shwhich claims that passing
linuxrc=tracewill give me debug output. It does, but it's useless; all I see is the endless device polling loop at the end of the script scrolling past, obliterating all previous output.
I really, really need to get in there and see what's actually happening with my own eyes to know where the problem is. (To be fair, I am trying to make the system boot in a slightly strange way, so problems are not unexpected here.)