QVINTVS · SCRIBET

MagicSysReq mit Systemd aktivieren

Ich habe mich gerade wieder tierisch aufgeregt, als mein System sich aufgehangen hat, welchen Grund auch immer das haben mag. Da man mit sowas ja im voraus nicht rechnet, war der MagicSysRequest natürlich nicht aktiviert. Zeit, das zu automatisieren.

Zunächst einmal: Worüber der oben verlinkte Wikipedia-Artikel sich genüsslich ausschweigt, ist, dass man den Magic System Request Key erst einmal — zumindest unter Arch Linux — aktivieren muss (sonst hätte ich mich bei meinem Systemhänger auch nicht so aufgeregt). Dazu gibt es eine Datei /proc/sys/kernel/sysrq, in der einfach nur eine Zahl steht: Bei 0 ist der MagicSysRq deaktiviert, bei 1 ist er aktiviert. Diese Informationen sowie einige weitere sind zwar nicht bei Wikipedia, dafür aber in der offiziellen Dokumentation zu bekommen. Angeblich soll der MagicSysRq in neuen Versionen sogar automatisch aktiviert sein, aber zumindest bei meinem Kernel, 3.2.12-1-ARCH, ist das nicht der Fall.

So, Butter bei die Fische: Ich verwende zum Booten Systemd und es ist leicht möglich, zusätzliche Programme beim Booten mithilfe sog. service files einzubinden (siehe systemd.service(5)). Folgende Service-Datei /etc/systemd/system/sysrq.service löst das Problem ab heute für mich:

Description=Enable the MagicSysRequest key combinations
Type=oneshot
ExecStart=/usr/local/bin/enable-sysrq
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Dazu ein kleines Skript /usr/local/bin/enable-sysrq:

#!/bin/bash
echo 1 > /proc/sys/kernel/sysrq
exit 0

Aus irgendeinem Grunde kann ich den Einzeiler nicht direkt in der Service-Datei abspeichern, Systemd beschwert sich beim Aktivieren dann mit “invalid argument”. Egal, der Mehraufwand ist minimal.

So, schließlich noch aktivieren:

# systemctl enable sysrq.service

Ab dem Nächsten Neustart ist damit der MagicSysRq immer verfügbar (wer nicht warten kann macht einfach ein start auf der Service-Datei). Bleibt mir nur noch zu sagen: Viel Spaß beim Elefantenanheben!

Valete.