Make troubleshoot work with dracut ramdisks

Currently, calling the troubleshoot function in a ramdisk script
doesn't work as expected on dracut ramdisks.  This adds an alternate
troubleshoot implementation that will behave as intended.

I did not make it conditional on a kernel param as was done in the
original because dracut can behave strangely if you allow it to
continue after an error.  Always dropping to a shell immediately
should be less confusing.

Change-Id: I98000f4ac6d7890b1f44fe4d10394ac0ea332fcb
This commit is contained in:
Ben Nemec 2015-04-08 12:54:32 -05:00
parent 7917e7416b
commit ffe825113e
2 changed files with 7 additions and 2 deletions

View File

@ -11,8 +11,6 @@ rootok=1
# Dracut doesn't correctly parse the ip argument passed to us.
# Override /proc/cmdline to rewrite it in a way dracut can grok.
sed 's/\(ip=\S\+\)/\1:::off/' /proc/cmdline > /run/cmdline
# Map the existing "troubleshoot" kernel param to the Dracut equivalent.
sed -i 's/troubleshoot=/rd.shell=/' /run/cmdline
mount -n --bind -o ro /run/cmdline /proc/cmdline
# Force Dracut to re-read the cmdline args
CMDLINE=

View File

@ -0,0 +1,7 @@
# NOTE(bnemec): Dracut provides its own emergency shell, and it doesn't
# seem to allow directly starting bash as the existing troubleshoot function
# does.
function troubleshoot() {
echo "Starting troubleshooting shell."
emergency_shell
}