Use a customized emergency shell

Resolves: bz1901024
Upstream: Fedora
Conflict: None

commit 41980f30d9
Author: Kairui Song <kasong@redhat.com>
Date:   Mon Apr 26 17:09:57 2021 +0800

    Use a customized emergency shell

    Use a modified and minimized version of emergency shell.
    The differences of this kdump shell and dracut emergency shell are:

      - Kdump shell won't generate a rdsosreport automatically
      - Customized prompts
      - Never ask root password
      - Won't tangle with dracut's emergency_action. If emergency_action is
        set, dracut emergency shell will perform dracut's emergency_action
        instead of kdump final_action on exit.
      - If rd.shell=no is set, kdump shell will still work, dracut emergency
        shell won't, even if kdump failure_action is set to shell.

    Signed-off-by: Kairui Song <kasong@redhat.com>
    Acked-by: Coiby Xu <coxu@redhat.com>

Signed-off-by: Kairui Song <kasong@redhat.com>
This commit is contained in:
Kairui Song 2021-04-26 17:09:57 +08:00
parent 06aa5b897f
commit 50d77e1989

View File

@ -237,10 +237,35 @@ dump_to_rootfs()
kdump_emergency_shell() kdump_emergency_shell()
{ {
echo "PS1=\"kdump:\\\${PWD}# \"" >/etc/profile ddebug "Switching to kdump emergency shell..."
ddebug "Switching to dracut emergency..."
/bin/dracut-emergency [ -f /etc/profile ] && . /etc/profile
rm -f /etc/profile export PS1='kdump:${PWD}# '
. /lib/dracut-lib.sh
if [ -f /dracut-state.sh ]; then
. /dracut-state.sh 2>/dev/null
fi
source_conf /etc/conf.d
type plymouth >/dev/null 2>&1 && plymouth quit
source_hook "emergency"
while read _tty rest; do
(
echo
echo
echo 'Entering kdump emergency mode.'
echo 'Type "journalctl" to view system logs.'
echo 'Type "rdsosreport" to generate a sosreport, you can then'
echo 'save it elsewhere and attach it to a bug report.'
echo
echo
) > /dev/$_tty
done < /proc/consoles
sh -i -l
/bin/rm -f -- /.console_lock
} }
do_failure_action() do_failure_action()