Enable the serial console on Debian 9

Today I had two (planned) power outages that I forgot about, and when I came home my home server would not boot up anymore. I could not ssh into it, and it is located in the server room without a display.

I wanted to connect the home server with a serial cable to my laptop and see what happened, but the serial console was not enabled :/

Enabling

Here is what I had to do to activate the serial console on Debian 9:

  1. Edit /etc/default/grub and change the GRUB_CMDLINE_LINUX_DEFAULT line to:

    GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0 console=tty0"

    It enables the serial console in the linux kernel. Note that the default speed is 9600 baud.

  2. Run update-grub. /boot/grub/grub.cfg will contain the console kernel parameters now.
  3. Reboot. The serial console is activated.

Connect

Before rebooting, I connected my laptop via a USB-to-serial adapter and a serial cable to the home server. Then I started minicom:

$ minicom -D /dev/ttyUSB0

Once started, I changed the speed to 9600:

  1. Ctrl + A
  2. p (connection settings)
  3. c (selects 9600)
  4. Return (close dialog)

(Yes, I tried setting the speed with a cli parameter, but that did not work.)

Then I rebooted the home server and saw the kernel messages flowing into minicom. Then I could login as root and examine my system.

systemd also offers serial console support, but enabling it manually via

$ systemctl enable serial-getty@ttyS0.service

only led to the issue that I could not see system service startup messages anymore when a display is connected.

But it's also automatically enabled when the console kernel parameter is detected.. Strange.

Written by Christian Weiske.

Comments? Please send an e-mail.