Magic SysRequest key

Aus Foxwiki

Magic SysRequest key (Magische S-Abf-Taste) ist eine Funktion des Linux Kernels in Fehlersituationen Befehle per Tastenkombinationen entgegennehmen zu können.

Beschreibung

Was ist der magische SysRq-Schlüssel?

Es ist eine 'magische' Tastenkombination, die Sie drücken können und auf die der Kernel reagiert unabhängig davon, was es sonst noch tut, es sei denn, es ist vollständig gesperrt.

Das funktioniert auch noch, wenn der Computer auf andere Eingaben nicht mehr reagiert, sofern der Kernel noch nicht abgestürzt ist.

  • Damit lassen sich verschiedene Funktionen ausführen (etwa ein Neustart)
  • Dabei können die Funktionen nacheinander in sinnvoller Reihenfolge ausgeführt werden.
  • Häufig nutzt man diese Tastenkombination für einen Neustart, ohne Schäden am Dateisystem zu verursachen, oder um einen nicht mehr reagierenden X-Server zu beenden.
mit der {{#if:trim|S-Abf}}-Taste

Die Funktion „S-Abf“ (engl. „SysRq“) ist auf IBM-AT-kompatiblen Tastaturen eine Alternativbelegung der „Druck“-Taste (englisch „Print Screen“)

  • Obwohl Linux sehr stabil ist, können in Ausnahmefällen Kernel Panics auftreten.
  • Manchmal stoppt auch nur der XServer, der für die grafische Oberfläche verantwortlich ist.
    • Dann ist unter Umständen nicht mal der Wechsel in eine Konsole zur Reparatur möglich.

In einem solchen Moment kann natürlich der Reset-Taster gedrückt oder der Rechner "hart" ausgeschaltet werden – mit dem immer vorhandenen Risiko von Datenverlusten.

  • Notwendig ist dies aber nicht, da es Möglichkeiten gibt, das System entweder sauber herunterzufahren oder weitere Maßnahmen zu ergreifen, um die Ursache des Problems zu finden.
  • Dazu gibt es eine Funktion des Kernels, die sich "SysRequest key" nennt, auch als Magische S-Abf-Taste bekannt.

Die SysRq-Taste befindet sich auf der deutschen Tastatur als Zweitbelegung von Druck.

  • Je nach Tastatur muss man zum Erreichen von "S-Abf" zuerst Alt gedrückt halten:
Alt + Druck (auf schweizerischen und englischsprachigen Tastaturen jedoch Alt Gr + die Taste "SysRq"). 
  • Bei Notebooks ist teilweise auch die Kombination mit Fn erforderlich.

Der gewünschte Befehl wird erteilt, indem auf der Tastatur dann noch zusätzlich der entsprechenden Buchstaben gedrückt wird.

Syntax

Was sind die "Befehlstasten"?

Taste Beschreibung
b Startet das System sofort neu, ohne es zu synchronisieren oder abzumelden Ihre Festplatten.
c Führt einen Systemabsturz durch und es wird ein Crashdump erstellt falls konfiguriert.
d Zeigt alle Sperren, die gehalten werden.
e Sendet ein SIGTERM an alle Prozesse außer init.
f Ruft den Oom-Killer auf, um einen Speicherfresser-Prozess zu beenden, tut es aber nicht Panik, wenn nichts getötet werden kann.
g Wird von kgdb (Kernel-Debugger) verwendet
h Zeigt Hilfe an (eigentlich jede andere Taste als die aufgeführten Hier wird Hilfe angezeigt, aber h ist leicht zu merken :-)
i Sende ein SIGKILL an alle Prozesse, außer an init.
j Zwangsweise "einfach auftauen" - Dateisysteme durch das FIFREEZE ioctl eingefroren.
k Secure Access Key (SAK) Beendet alle Programme auf dem aktuellen virtuellen Konsole. HINWEIS: Siehe wichtige Kommentare unten im SAK-Abschnitt.
l Zeigt einen Stack-Backtrace für alle aktiven CPUs.
m Gibt aktuelle Speicherinformationen auf Ihre Konsole aus.
n Wird verwendet, um RT-Aufgaben angenehm zu machen
o Schaltet Ihr System ab (falls konfiguriert und unterstützt).
p Gibt die aktuellen Register und Flags auf Ihre Konsole aus.
q Gibt pro CPU-Listen aller aktivierten Timer aus (aber NICHT reguläre timer_list Timer) und detaillierte Informationen zu allen clockevent-Geräte.
r Deaktiviert den Tastatur-Rohmodus und setzt ihn auf XLATE.
s Versucht alle gemounteten Dateisysteme zu synchronisieren.
t Gibt eine Liste aktueller Aufgaben und deren Informationen an Ihren aus Konsole.
u Versucht, alle gemounteten Dateisysteme schreibgeschützt neu einzuhängen.
v Stellt die Framebuffer-Konsole zwangsweise wieder her. Verursacht ETM Buffer Dump [ARM-spezifisch]
w Gibt Tasks aus, die sich in einem unterbrechungsfreien (blockierten) Zustand befinden.
x Wird von der xmon-Schnittstelle auf ppc/powerpc-Plattformen verwendet. Globale PMU-Register auf sparc64 anzeigen. Sichern Sie alle TLB-Einträge auf MIPS.
y Globale CPU Register anzeigen [SPARC-64 spezifisch]
z Den ftrace-Puffer ausgeben
0-9 Legt die Konsolenprotokollebene fest, die steuert, welche Kernelmeldungen angezeigt werden wird auf Ihre Konsole gedruckt. (0, zum Beispiel würde machen es so, dass nur Notfallmeldungen wie PANICs oder OOPSes würden schaffe es auf deine Konsole.)

Konfiguration

Aktivieren und Deaktivieren

Status prüfen

$ cat /proc/sys/kernel/sysrq
438
  • Ist die Ausgabe ungleich 0, ist SysRQ aktiv, bei 0 nicht.
  • Zur Deutung des zurückgelieferten Werts siehe sysrq.txt.

Aktivierung

# echo 1 | sudo tee /proc/sys/kernel/sysrq

Deaktivierung

# echo 0 | sudo tee /proc/sys/kernel/sysrq

Wie aktiviere ich den magischen SysRq-Schlüssel?

Sie müssen "Ja" zu 'Magic SysRq key (CONFIG_MAGIC_SYSRQ)' sagen, wenn Konfiguration des Kernels. Wenn Sie einen Kernel mit einkompiliertem SysRq ausführen, /proc/sys/kernel/sysrq steuert die Funktionen, die über aufgerufen werden dürfen der SysRq-Schlüssel. Der Standardwert in dieser Datei wird von der festgelegt CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE Konfigurationssymbol, das selbst Standard ist zu 1. Hier ist die Liste der möglichen Werte in /proc/sys/kernel/sysrq:

  - 0 - sysrq vollständig deaktivieren
  - 1 - aktiviert alle Funktionen von sysrq
  - >1 - Bitmaske der erlaubten sysrq-Funktionen (siehe unten für detaillierte Funktionen
    Bezeichnung)::
         2 = 0x2 – aktiviert die Steuerung der Konsolenprotokollierungsebene
         4 = 0x4 - Tastatursteuerung aktivieren (SAK, unraw)
         8 = 0x8 - Debugging-Dumps von Prozessen usw. aktivieren.
        16 = 0x10 - Synchronisierungsbefehl aktivieren
        32 = 0x20 - Remount schreibgeschützt aktivieren
        64 = 0x40 - Signalisierung von Prozessen aktivieren (term, kill, oom-kill)
       128 = 0x80 - Neustart/Ausschalten zulassen
       256 = 0x100 - Netting aller RT-Tasks zulassen

Sie können den Wert in der Datei mit dem folgenden Befehl festlegen:

   echo "Nummer" >/proc/sys/kernel/sysrq

Die Zahl kann hier entweder dezimal oder hexadezimal geschrieben werden mit dem Präfix 0x. CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE muss immer sein hexadezimal geschrieben.

Beachten Sie, dass der Wert von ``/proc/sys/kernel/sysrq`` nur den Aufruf beeinflusst über eine Tastatur. Aufruf jeder Operation über ``/proc/sysrq-trigger`` ist immer erlaubt (von einem Benutzer mit Administratorrechten).

Dateien

Permanentes Aktivieren und Deaktivieren

/etc/sysctl.d/10-magic-sysrq.conf

# Werte fuer X sind der Dokumentation zu entnehmen: http://www.mjmwired.net/kernel/Documentation/sysrq.txt
#kernel.sysrq = X
#
# Deaktivierung
kernel.sysrq = 0

Anwendungen

Wie verwende ich den magischen SysRq-Schlüssel?

Sie drücken die Tastenkombination ALT-SysRq-<Befehlstaste>

Hinweis

  • Tastaturen haben möglicherweise keine Taste mit der Bezeichnung „SysRq“.
  • Der 'SysRq'-Schlüssel ist auch bekannt als die Taste „Drucken“.
  • Auch manche Tastaturen können das nicht damit umgehen, dass so viele Tasten gleichzeitig gedrückt werden, also könnten Sie

Viel Glück mit `Alt` drücken, `SysRq` drücken, `SysRq` loslassen, `<Befehlstaste>` drücken, alles loslassen.


Schreiben Sie ein Zeichen in /proc/sysrq-trigger. z.B::

echo t > /proc/sysrq-trigger

Bei `<Befehlstaste>` wird zwischen Groß- und Kleinschreibung unterschieden.

Okay, wofür kann ich sie verwenden?

Nun, unraw(r) ist sehr praktisch, wenn Ihr X-Server oder ein svgalib-Programm abstürzt.

sak(k) (Secure Access Key) ist nützlich, wenn Sie sicher sein wollen, dass es keinen gibt Trojanisches Programm, das auf der Konsole ausgeführt wird und Ihr Passwort abrufen könnte wenn Sie versuchen würden, sich anzumelden. Es wird alle Programme auf der angegebenen Konsole beenden, So können Sie sicherstellen, dass die angezeigte Anmeldeaufforderung tatsächlich vorhanden ist die von init, nicht irgendein Trojaner-Programm.

wichtig In seiner wahren Form ist es kein echter SAK wie der in a c2-kompatibles System, und es sollte nicht verwechselt werden eine solche.

Es scheint, dass andere es als (System Attention Key) nützlich finden, was ist nützlich, wenn Sie ein Programm beenden möchten, mit dem Sie die Konsolen nicht wechseln können. (Zum Beispiel X oder ein svgalib-Programm.)

``reboot(b)`` ist gut, wenn Sie nicht herunterfahren können, es ist ein Äquivalent durch Drücken der „Reset“-Taste.

``crash(c)`` kann verwendet werden, um manuell einen Crashdump auszulösen, wenn das System hängt. Beachten Sie, dass dies nur einen Absturz auslöst, wenn kein Dump-Mechanismus verfügbar ist.

``sync(s)`` ist praktisch vor dem Ziehen von Wechseldatenträgern oder nach der Verwendung einer Rettung Shell, die kein ordnungsgemäßes Herunterfahren bietet - sie stellt sicher, dass Ihre Daten erhalten bleiben sicher auf die Festplatte geschrieben. Beachten Sie, dass die Synchronisierung nicht stattgefunden hat, bis Sie sehen „OK“ und „Fertig“ erscheinen auf dem Bildschirm.

``umount(u)`` kann verwendet werden, um Dateisysteme als ordnungsgemäß ausgehängt zu markieren. Von dem Aus Sicht des laufenden Systems werden sie schreibgeschützt neu gemountet. Der Wiederaufstieg ist erst abgeschlossen, wenn die Meldungen „OK“ und „Fertig“ auf dem Bildschirm erscheinen.

Die Loglevel ``0``-``9`` sind nützlich, wenn Ihre Konsole mit überschwemmt wird Kernel-Meldungen, die Sie nicht sehen möchten. Die Auswahl von „0“ verhindert alle außer die dringendsten Kernel-Meldungen Ihre Konsole erreichen. (Sie werden trotzdem protokolliert, wenn syslogd/klogd aktiv sind.)

``term(e)`` und ``kill(i)`` sind nützlich, wenn Sie eine Art außer Kontrolle geratenen Prozess haben Sie können auf keine andere Weise töten, besonders wenn es andere spawnt Prozesse.

"just thaw ``it(j)``" ist nützlich, wenn Ihr System aufgrund von a. nicht mehr reagiert eingefrorenes (wahrscheinlich root) Dateisystem über das FIFREEZE ioctl.

Häufig verwendete Kombinationen

  • Ein gerne verwendeter und in IT-Kreisen bekannter Weg, den Computer bei hängendem System neu zu starten, ist es, auf einem Linux-System die Tastenkombination {{#if:trim|Alt}} + {{#if:trim|S-Abf}} gedrückt zu halten und dabei nacheinander die Tasten {{#if:trim|R}}, {{#if:trim|E}}, {{#if:trim|I}}, {{#if:trim|S}}, {{#if:trim|U}} und {{#if:trim|B}} zu drücken.
  • So werden die Dateisystemcaches sicher geleert (d. h. ihr Inhalt wird auf die Platte geschrieben), alle Dateisysteme sicher ausgehängt und damit eine Beschädigung des Dateisystems unterbunden.
  • Eine weitere bekannte Tastenreihenfolge, RSEIUB, zieht den Sync vor.[1] Ein Argument dagegen ist, dass die terminierten Prozesse eventuell noch Daten in den Cache schreiben und der Sync somit zu früh kommt. Ein Argument dafür ist, dass der unmount-Befehl ohnehin die Platten synchronisieren sollte.[2]
  • Es existiert kein Konsens darüber, welche Kombination zu bevorzugen ist.

Kommandozeile

Wenn die Druck -Taste nicht zur Verfügung steht, das Terminal aber schon, können die SysRQ-Kommandos auch über eine Kommandozeile ausgeführt werden.

  • Mit Hilfe der Standard-Datenströme wird der Code der gewünschten Taste in den SysRQ-Trigger des procfs geschrieben.
# echo b | tee /proc/sysrq-trigger

Dieser Befehl ist äquivalent zur Kombination Alt + Druck + B und startet den Rechner sofort neu.

Die genannten Befehle können auch über die Shell (und somit auch durch Skripte) ausgelöst werden. Dazu wird in virtuelle Datei /proc/sysrq-trigger vom Kernel-Proc-API das entsprechende Zeichen geschrieben. Dies ist nur als root möglich. Der folgende Befehl löst beispielsweise einen sofortigen Reboot aus.

echo b > /proc/sysrq-trigger

Magic SysRQ testen

Wer die SysRQ-Funktionen gezielt testen möchte, startet am besten eine Forkbomb auf dem Rechner, um diesen bewusst zu überlasten. Abschließend noch ein Auszug des Systemprotokolls eines Rechners mit Ubuntu 14.04, aus dem deutlich zu erkennen ist, dass der ersten drei Tasten ("REI") ignoriert werden:

Sep  9 16:42:48 ubuntu kernel: [  568.061699] SysRq : This sysrq operation is disabled.
Sep  9 16:42:54 ubuntu kernel: [  573.215822] SysRq : This sysrq operation is disabled.
Sep  9 16:42:57 ubuntu kernel: [  576.346673] SysRq : This sysrq operation is disabled.
Sep  9 16:43:00 ubuntu kernel: [  579.131420] SysRq : Emergency Sync
Sep  9 16:43:00 ubuntu kernel: [  579.277440] Emergency Sync complete
Sep  9 16:43:02 ubuntu kernel: [  581.271897] SysRq : Emergency Remount R/O

Problembehebung

Auf Tastaturen für die Schweiz und englischsprachige Länder entspricht die Taste {{#if:trim|SysRq}} dem deutschen Pendant {{#if:trim|S-Abf}}. Die Beschriftung ist zum Beispiel in der Schweiz {{#if:trim|PrtScr SysRq}}. Die Kombination auf schweizerischer Tastatur ist: {{#if:trim|Alt Gr}} + {{#if:trim|PrtScr SysRq}}.

Besonders auf Laptops müssen wegen herstellerspezifischen Tastaturlayouts ggf. noch Zusatztasten gedrückt werden, so etwa auf Dell-Laptops zunächst {{#if:trim|Num}}, anschließend {{#if:trim|Fn}} + {{#if:trim|Alt}} + {{#if:trim|Druck}} + {{#if:trim|entsprechender Buchstabe}}; auf z. B. ThinkPads kann folgende Abfolge verwendet werden: {{#if:trim|Alt}} drücken und halten, {{#if:trim|Fn}} + {{#if:trim|Druck}} drücken und wieder loslassen, {{#if:trim|entsprechenden Buchstaben}} drücken, alle loslassen.

  • Dell Vostro Laptops: Erst ⇩ num drücken – dann leuchtet das blaue LED auf – und danach Fn + Alt + Druck +"Buchstabe" drücken.
  • einige Logitech-Tastaturen (zum Beispiel K300): Erst Fn (Taste in rot) drücken, dann leuchten oben die LED's in kräftiger, oranger Farbe auf und danach Alt + Druck (die Druck-Taste ist die Pos1 -Taste) +"Buchstabe" drücken.
  • Workarounds, wie ⇩ num zuerst zu aktivieren oder Alt Gr anstelle von Alt zu verwenden, sind offenbar bei vielen Laptops nötig.
  • Ebenso kann es bei Notebooks vorkommen, dass die Tastenkombination auf der integrierten, nicht jedoch auf einer extern angeschlossenen Tastatur funktioniert.
  • Manchmal funktionieren nur Teile der Magic SysRQ-Kette nicht, etwa der letzte (B) für den Reboot.
  • In diesem Fall kann der Rechner durch kurzes Drücken des An-/Ausschalters neu gestartet werden.

Ich habe SysRq gedrückt, aber es scheint nichts zu passieren, was ist los?

Es gibt einige Tastaturen, die einen anderen Tastencode für SysRq erzeugen als die vordefinierter Wert von 99 (siehe ``KEY_SYSRQ`` in ``include/uapi/linux/input-event-codes.h``), oder die überhaupt keinen SysRq-Schlüssel haben. Führen Sie in diesen Fällen ``showkey -s`` aus, um zu finden eine geeignete Scancode-Sequenz und verwenden Sie ``setkeycodes <sequence> 99`` zum Zuordnen diese Sequenz zum üblichen SysRq-Code (zB ``setkeycodes e05b 99``). Es ist wahrscheinlich am besten, diesen Befehl in ein Boot-Skript zu packen. Ach, und übrigens, du Beenden Sie ``showkey``, indem Sie zehn Sekunden lang nichts eingeben.

Wenn ich eine SysRq-Tastenkombination drücke, erscheint nur die Kopfzeile auf der Konsole?

Die Sysrq-Ausgabe unterliegt der gleichen Konsolen-Loglevel-Steuerung wie all andere Konsolenausgabe. Das heißt, wenn der Kernel 'leise' gebootet wurde Wie es bei Distributionskernen üblich ist, erscheint die Ausgabe möglicherweise nicht auf dem tatsächlichen Konsole, obwohl es im dmesg-Puffer erscheint und zugänglich ist über den dmesg-Befehl und an die Verbraucher von ``/proc/kmsg``. Als spezifisch Ausnahme: Die Kopfzeile des sysrq-Befehls wird an alle Konsolen übergeben Verbraucher, als ob der aktuelle Loglevel maximal wäre. Wenn nur der Header ausgegeben wird, ist es ziemlich sicher, dass der Kernel-Loglevel zu niedrig ist. Sollten Sie die Ausgabe auf dem Konsolenkanal benötigen, benötigen Sie um den Loglevel der Konsole mit :kbd:`alt-sysrq-8` oder:

   echo 8 > /proc/sysrq-trigger

Denken Sie daran, den Loglevel nach dem Auslösen von sysrq wieder auf normal zurückzusetzen Befehl, an dem Sie interessiert sind.

Manchmal scheint SysRq nach der Verwendung „hängen“ zu bleiben, was kann ich tun?

Versuchen Sie in diesem Fall, auf beiden Seiten der Shift-, Alt- und Control-Taste zu tippen Tastatur und erneutes Drücken einer ungültigen sysrq-Sequenz. (also sowas wie :kbd:`alt-sysrq-z`).

Wechseln zu einer anderen virtuellen Konsole (:kbd:`ALT+Fn`) und dann wieder zurück soll auch helfen.

Weitere Fragen

Linux-Kernel-Mailingliste: linux-kernel@vger.kernel.org

Dokumentation

Man-Pages

Info-Pages

Projekt-Homepage

Links

Intern

Weblinks

Literatur

  • Oliver Diedrich: Geht nicht? Gibts nicht! Hängende Linux-Systeme sicher ausschalten. In: c’t Nr. 26, 2008, S. 210

Einzelnachweise

  1. Ubuntuforums.org, Guide zum Magic SysrRq Key (englisch)
  2. Linuxhowtos.org(englisch) oder pro-linux.de, Aussage zu: "unmount enthält sync"

Testfragen

Testfrage 1

Antwort1

Testfrage 2

Antwort2

Testfrage 3

Antwort3

Testfrage 4

Antwort4

Testfrage 5

Antwort5