Serial over Lan

Last change on 2020-06-05 • Created on 2020-03-20 • ID: RO-229BB

Einführung

Serial-over-LAN wird zur Umleitung des Datenverkehrs auf die serielle Schnittstelle eines Mainboards bezeichnet. Dies geschieht über IPMI.

Verwendung von SOL

Um SOL (Serial-Over-LAN) über ipmitool zu verwenden ist folgender Befehl notwendig:

ipmitool -C 3 -I lanplus -H <ipaddr> -U <user> -P <pass> sol activate

Wichtig ist hierbei die Cipher-Suite 3 (falls nicht default), da sonst keine Kommunikation über lanplus mit Verschlüsselung möglich ist.

Falls folgende Fehlermeldung erscheint, muß noch SoL für den Nutzer aktiviert werden:

$ ipmitool -C 3 -I lanplus -H <ipaddr> -U <user> -P <pass> sol activate
Info: SOL payload disabled
$ ipmitool -C 3 -I lanplus -H <ipaddr> -U <user> -P <pass> sol payload enable <channel> <user-id>

Damit kann man schon die BIOS Ausgabe sehen. Um auch Zugriff zum Bootloader und/oder dem gebooteten System zu erhalten, sind weitere Einstellungen nötig.

GRUB2

Für GRUB2 genügt es /etc/default/grub wie folgt zu ändern und anschließend die Konfiguration neu zu generieren

Bei PX90/120 (Supermicro X9SRi-F) ist die serielle Konsole auf ttyS2/unit=2, bei den PX91/121 (Asus Z10PA-U8) auf ttyS1/unit=1 und bei den PX60/70 (Intel S1200V3RPL) auf ttyS0/unit=0. Dazu ist noch zu beachten, dass die Baudrate bei den PX91/121 auf 57600 gesetzt wird und bei allen anderen auf 115200.

PX60/70

GRUB_CMDLINE_LINUX_DEFAULT="nomodeset console=tty0 console=ttyS0,115200n8"
GRUB_TERMINAL=serial
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"

PX90/120, SX131/291

GRUB_CMDLINE_LINUX_DEFAULT="nomodeset console=tty0 console=ttyS2,115200n8"
GRUB_TERMINAL=serial
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=2 --word=8 --parity=no --stop=1"

PX91/121

GRUB_CMDLINE_LINUX_DEFAULT="nomodeset console=tty0 console=ttyS1,57600n8"
GRUB_TERMINAL=serial
GRUB_SERIAL_COMMAND="serial --speed=57600 --unit=1 --word=8 --parity=no --stop=1"

GRUB (grub-legacy)

Für GRUB1 (grub-legacy) muß die Konfigurationsdatei /boot/grub/menu.lst bzw. /boot/grub/grub.conf (CentOS) wie folgt erweitert werden:

PX60/70

serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=5 serial console

PX90/120, SX131/291

serial --unit=2 --speed=57600 --word=8 --parity=no --stop=1
terminal --timeout=5 serial console

PX91/121

serial --unit=1 --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=5 serial console

An die Bootoptionen des Kernels muß analog der gleiche Serial Port angehängt werden. d.h. ttyS0 bei PX60/70, ttyS1 bei PX91/121 und ttyS2 bei PX90/120.

console=tty0 console=ttyS0,115200n8

Dadurch wird dem Kernel mitgeteilt seine Ausgaben auch auf der ersten seriellen Schnittstelle auszugeben. Durch die Umstellung des GRUB_TERMINALS auf serial wird jegliche Ein/Ausgabe auf die serielle Schnittstelle umgeleitet. Lokal wird damit kein Bootmenü mehr angezeigt, d.h. die Auswahl des Booteintrages ist via KVM-Konsole oder KVM nicht mehr möglich. Nach dem Start des Kernels erfolgt die Ausgabe dann wieder parallel lokal und seriell.

Schlußendlich muß im System auch noch ein Terminal für die serielle Schnittstelle aktiviert werden.

Debian 7.x (wheezy) / Debian 8 mit Sys-V Init

Dazu muß der Datei /etc/inittab folgende Zeile hinzugefügt werden. Auch hier wieder: ttyS0 mit 115200 Baud bei PX60/70, ttyS2 mit 115200 Baud bei PX90/120 und ttyS1 mit 57600 Baud bei PX91/121:

T0:2345:respawn:/sbin/getty -L ttyS0 115200 vt100

Anschließend kann das Terminal via init q aktiviert werden.

Ubuntu (bis 14.10 mit Upstart)

Bei Ubuntu erstellt man eine Datei /etc/init/ttyS0.conf mit folgendem Inhalt (bzw. ttyS2.conf mit ttyS2 und 115200 Baud bei PX90/120 oder ttyS1.conf mit ttyS1 und 57600 Baud bei PX91/121):

# ttyS0 - getty
#
# This service maintains a getty on ttyS0 from the point the system is
# started until it is shut down again.

start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]

respawn
exec /sbin/getty -L ttyS0 115200 vt100

Anschließend kann das Terminal via start ttyS0 aktiviert werden.

CentOS

Bei CentOS 6.x gestaltet sich die Konfiguration prinzipiell ähnlich wie Ubuntu. Es existiert jedoch ein Automatismus durch /etc/init/serial.conf gibt, wodurch automatisch ein getty auf dem seriellen Port gestartet und der Port /etc/securetty hinzugefügt wird. Es genügt daher in der grub.conf die serielle Konsole zu konfigurieren und die entsprechende Kerneloption anzuhängen.

Debian 8 / OpenSuSE / Fedora

Bei Debian 8 (jessie), OpenSuSE und anderen Distributionen wie Fedora die systemd und grub2 verwenden, genügt es die genannten Anpassungen an der /etc/default/grub vorzunehmen und die Konfiguration z.B. mittels grub2-mkconfig zu erneuern. Bei nächsten Boot übernimmt systemd automatisch die serielle Schnittstelle von grub2.

Serielle Konsole

Nun erhält man bei der Verbindung via ipmitool auch den Login Prompt:

 $ ipmitool -C 3 -I lanplus -H <ipaddr> -U <user> -P <pass> sol activate
 [SOL Session operational.  Use ~? for help]

 Debian GNU/Linux 7 Debian-70-wheezy-64-minimal ttyS0

 Debian-70-wheezy-64-minimal login:
Table of Contents