iX 6/2018
S. 139
Praxis
Tools und Tipps
Aufmacherbild

Linux Magic System Request

Letzte Rettung

Reagiert ein Linux-System nicht mehr auf Eingaben des Systemverwalters, drückt er gern die Reset-Taste des Rechners. Einen sauberen Neustart bietet jedoch die Magic-SysRq-Funktion des Kernels.

Üblicherweise laufen Linux-Systeme stabil und lassen sich selbst bei Problemen sauber herunterfahren und neu starten. Notfalls wechselt der Administrator dazu mit der Tastenkombination [Strg]+[Alt]+[F1…F6] in eine Textkonsole und mit [Strg]+[Alt]+[F7] zurück zum Desktop. Einen komplett eingefrorenen Desktop schießt man mit [Strg]+[Alt]+[Backspace] ab. Auch der von Windows bekannte „Klammer-“ oder „Affengriff“ [Strg]+[Alt]+[Entf] führte zu Zeiten von SysV-Init einen Eintrag wie

<id>::ctrlaltdel:/sbin/shutdown -t3 -h now

aus der /etc/inittab aus. systemd verarbeitet die Kombination ebenfalls, wenn auch nicht immer zuverlässig. Im Notfall sollte aber, wer auf der Textkonsole innerhalb von zwei Sekunden mehr als siebenmal den Affengriff drückt, einen sofortigen Reboot auslösen, auch wenn der Shutdown-Prozess hängt. Selbst stehende Systeme mit SSH-Zugang kann man oft noch über sync und reboot beziehungsweise /sbin/shutdown –r now sauber neu starten.

Allerdings hat jeder Linux-Distributor eigene Vorstellungen davon, ob und wie er obige Funktionen konfiguriert. Und ersetzt das Kernel Mode Setting den Text- durch einen unzuverlässigeren Grafikmodus, bleibt man auch mal ohne Bild zurück.

Einen standardisierten und distributionsunabhängigen Weg, mit abgestürzten Systemen zu interagieren, bietet der Kernel – zumindest sofern er noch läuft. Der „Magic SysRq Key“ erlaubt es, über Tastenkombinationen unterschiedliche grundlegende Funktionen auszuführen, etwa Dateisystem-Caches auf die Platte zu schreiben oder einen Neustart zu initiieren.

Die SysRq-Taste ist auf deutschen Tastaturen die alternative Belegung [S-Abf] der [Druck]-Taste, die man durch gleichzeitiges Betätigen von [Alt] und [Druck] erreicht. Zusätzlich dazu drückt man dann eine Ziffer für den gewünschten Log-Level oder einen oder mehrere Buchstaben nacheinander für die Befehle. Das erfordert einiges an Fingerakrobatik. In der Regel kann man statt [Alt] auch die auf deutschen Tastaturen vorhandene Taste [Alt Gr] verwenden. Dadurch kann man SysRq mit der rechten Hand aktivieren und hat die linke für die Befehle frei.

Alle SysRq-Befehle finden sich in der offiziellen Kernel-Dokumentation und dem deutschen Wikipedia-Eintrag zu „Magische S-Abf-Taste“ (siehe ix.de/ix1806139). Hilfreich ist es, sich die Befehlsreihe r e i s u b zu merken. r versetzt die Tastatur in den nativen XLATE-Mode, e und i senden die Signale SIGTERM und SIGKILL an alle Prozesse außer init. Die Tastenfolge sub synchronisiert die Dateisysteme per sync, u remountet sie read-only und b rebootet das System.

Allerdings haben die meisten Distributionen alle SysRq-Befehle bis auf s u b abgeschaltet. Welche aktiviert sind, zeigt die mit cat /proc/sys/kernel/sysrq dezimal ausgegebene neunstellige Bitmask. Sie funktioniert ähnlich der Netzwerkmaske in IP-Netzen, nur stehen die einzelnen Bitpositionen hier für erlaubte Funktionen. OpenSUSE etwa hat den Wert auf 176 gesetzt, also 128+32+16 oder 010110000, was der Befehlsfolge s u b entspricht. Etwas großzügiger ist 438, also 256+128+32+16+4+2 oder 110110110. Die genaue Zuordnung listet ebenfalls die Kernel-Dokumentation auf. echo 1 > /proc/sys/kernel/sysrq als root gibt alle Befehle frei, eine 0 deaktiviert SysRq.

SysRq auf Umwegen

Auf internationalen Tastaturen funktioniert SysRq mit [Alt Gr]+[Print/SysRq]. Bei Notebooks sieht es anders aus. Auf ThinkPads beispielsweise folgen auf [Alt] die blaue [Fn]-Taste und [Druck]. Dafür kann man diese Kombination wieder loslassen und das Befehlskürzel einzeln eingeben. Benutzer von Dell-Notebooks müssen zuvor [Num] drücken, andere Notebooks können zusätzliche Tasten erfordern.

Auch die Architektur spielt eine Rolle, denn während [Alt]+[Print]+[v] auf PCs in die Framebuffer-Textkonsole wechselt, startet sie auf einem Raspberry Pi die Trace- und Debug-Schnittstelle für ARM-Prozessoren (ETM-Buffer). Für SPARC64 und PowerPCs sind auf den Tasten [z] und [x] spezielle SysRq-Funktionen definiert. Zu beachten ist aber, dass SysRq ohne Tastaturtreiber arbeitet und deshalb [y] und [z] vertauscht sind.

Entfernte Systeme und virtuelle Maschinen erfordern eine Sonderbehandlung. VirtualBox-VMs erhalten den SysRq-Code angeblich, wenn man zusätzlich die [Strg]-Taste drückt – was aber im Test nicht funktionierte. Alternativ kann man der VM auch die Scancodes der Tasten senden:

VBoxManage controlvm "Ubuntu Server" ⤦
 keyboardputscancode 1d 38 54 1f 9f d4 b8 9d

Bei ESXi-VMs sollte man [Strg]+[Alt] drücken, dann einmal kurz [Leer] betätigen, anschließend [Druck] und den Befehl absetzen. In einer SSH-Sitzung kann man die SysRq-Befehle über /proc übergeben, etwa echo s > /proc/sysrq-trigger. Wer sein System für den Notfall vorbereiten oder die Berechtigungen anpassen will, kann die Ergebnisse der Eingaben mit tail –f /var/log/messages oder journalctl –f in den System-Logs nachlesen. Dort findet er auch die Ausgabe der Hilfe mit [Alt]+[Print]+[h]. (sun@ix.de)