We had several reboot problems in rescue mode when starting with kickstart or when using kickstart and 'rescue' option on the boot prompt. 1) Kickstart's install command had higher priority over command line options. This was really bad as it prevented user to start rescue using our standard PXE targets. This changes it so cmdline option has higher priority. 2) Rescue automatically and unconditionally rebooted after processing the kickstart. This was equally bad as it wasn't possible to use kickstart to specify all location data and start rescue with it. This patch changes the code to honour the reboot command in kickstart and to start a shell if no such command is present in the kickstart. --- anaconda | 2 +- rescue.py | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/anaconda b/anaconda index 7be6cc8..d7ac2c4 100755 --- a/anaconda +++ b/anaconda @@ -812,7 +812,7 @@ if __name__ == "__main__": kickstart.preScriptPass(anaconda, opts.ksfile) ksdata = kickstart.parseKickstart(anaconda, opts.ksfile) - opts.rescue = ksdata.rescue.rescue + opts.rescue = opts.rescue or ksdata.rescue.rescue if flags.sshd: # we need to have a libuser.conf that points to the installer root for diff --git a/rescue.py b/rescue.py index b613bbd..632d6ad 100644 --- a/rescue.py +++ b/rescue.py @@ -37,6 +37,7 @@ import shutil import time import network import subprocess +from pykickstart.constants import * import gettext _ = lambda x: gettext.ldgettext("anaconda", x) @@ -466,7 +467,8 @@ def runRescue(anaconda, instClass): "automatically when you exit from the shell.") % (anaconda.rootPath,), [_("OK")] ) else: - if anaconda.isKickstart: + if anaconda.isKickstart and \ + anaconda.id.ksdata.reboot.action in [KS_REBOOT, KS_SHUTDOWN]: log.info("No Linux partitions found") screen.finish() print(_("You don't have any Linux partitions. Rebooting.\n")) @@ -487,15 +489,22 @@ def runRescue(anaconda, instClass): except Exception, e: log.error("error making a resolv.conf: %s" %(e,)) msgStr = _("Your system is mounted under the %s directory.") % (anaconda.rootPath,) + ButtonChoiceWindow(screen, _("Rescue"), msgStr, [_("OK")] ) + # we do not need ncurses anymore, shut them down + screen.finish() + #create /etc/fstab in ramdisk, so it is easier to work with RO mounted filesystems makeFStab() # run %post if we've mounted everything - if anaconda.isKickstart: + if rootmounted and not readOnly and anaconda.isKickstart: from kickstart import runPostScripts runPostScripts(anaconda) - else: + + # start shell if reboot wasn't requested + if not anaconda.isKickstart or \ + not anaconda.id.ksdata.reboot.action in [KS_REBOOT, KS_SHUTDOWN]: runShell(screen, msgStr) sys.exit(0) -- 1.6.6.1 _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list