From Fedora Project Wiki

m (moved User:Michich/systemd early debug shell to Systemd early debug shell: This is going to become a referenced part of How_to_debug_Systemd_problems.)
(openvt is not needed)
Line 12: Line 12:
[Service]
[Service]
Environment=TERM=linux
Environment=TERM=linux
ExecStart=/usr/bin/openvt -f -c 9 -e /usr/bin/bash
ExecStart=/bin/bash
Restart=always
Restart=always
RestartSec=0
RestartSec=0
StandardInput=tty
TTYPath=/dev/tty9
TTYPath=/dev/tty9
TTYReset=yes
TTYReset=yes

Revision as of 20:37, 11 May 2012

Setting up an early debug shell

In case of boot-time problems with systemd, it is useful to have a root shell available for debugging.

  • Save the following unit as /etc/systemd/system/debug-shell.service
[Unit]
Description=early root shell on tty9 for debugging
DefaultDependencies=no
IgnoreOnIsolate=yes

[Service]
Environment=TERM=linux
ExecStart=/bin/bash
Restart=always
RestartSec=0
StandardInput=tty
TTYPath=/dev/tty9
TTYReset=yes
TTYVHangup=yes
KillMode=process
IgnoreSIGPIPE=no
# bash ignores SIGTERM
KillSignal=SIGHUP

# Unset locale for the console getty since the console has problems
# displaying some internationalized messages.
Environment=LANG= LANGUAGE= LC_CTYPE= LC_NUMERIC= LC_TIME= LC_COLLATE= LC_MONETARY= LC_MESSAGES= LC_PAPER= LC_NAME= LC_ADDRESS= LC_TELEPHONE= LC_MEASUREMENT= LC_IDENTIFICATION=

[Install]
WantedBy=sysinit.target
  • Enable it using systemctl enable debug-shell.service
Manual enabling
If you find yourself in a situation where you cannot use systemctl (e.g. when setting this up from a different booted system), you can enable the service manually:
cd $PATH_TO_FEDORA_ROOT/etc/systemd/system
mkdir sysinit.target.wants
ln -s ../debug-shell.service sysinit.target.wants/
  • Next time when booting, you will be able to switch to tty9 using CTRL+ALT+F9 and have a root shell there available from an early point in the booting process.

You can use the shell for checking the status of services, reading logs, looking for stuck jobs with systemctl list-jobs, etc.

Use this shell only for debugging!
Do not forget to disable debug-shell.service after you've finished debugging your boot problems. Leaving the root shell always available would be a security risk.