Verwenden der seriellen Azure-Konsole für SysRq- und NMI-Aufrufe

SysRq (System Request, Systemabfrage)

Eine SysRq ist eine Sequenz von Schlüsseln, die vom Linux-Betriebssystemkernel verstanden wird und eine Reihe von vordefinierten Aktionen auslösen kann. Diese Befehle werden häufig verwendet, wenn die Problembehandlung des virtuellen Computers oder dessen Wiederherstellung nicht über die herkömmliche Verwaltung ausgeführt werden kann (etwa, wenn der virtuelle Computer nicht reagiert). Mithilfe des SysRq-Features der seriellen Azure-Konsole wird das Drücken der SysRq-Taste (je nach Tastatur auch S-Abf-Taste genannt) imitiert, und auf einer physischen Tastatur werden Zeichen eingegeben.

Sobald die SysRq-Sequenz übermittelt wurde, bestimmt die Kernelkonfiguration die Antwort des Systems. Informationen zum Aktivieren und Deaktivieren von SysRq finden Sie im SysRq-AdministratorhandbuchText | Markdown.

Mit der seriellen Konsole in Azure können Sie einen SysRq-Befehl an einen virtuellen Azure-Computer senden. Verwenden Sie dazu das Tastatursymbol in der unten gezeigten Befehlsleiste.

Screenshot der seriellen Azure-Konsole. Das Tastatursymbol ist hervorgehoben, und sein Menü ist sichtbar. Dieses Menü enthält ein Element zum Senden von SysRq-Befehlen.

Durch die Auswahl von „SysRq-Befehl senden“ wird ein Dialogfeld geöffnet. Hier werden entweder allgemeine SysRq-Optionen bereitgestellt, oder Sie können eine Sequenz von im Dialogfeld eingegebenen SysRq-Befehlen übernehmen. Dadurch werden eine Reihe von SysRq-Befehlen zum Ausführen einer Operation auf höchster Stufe, z. B. eines sicheren Neustarts, ermöglicht: REISUB.

Screenshot des Dialogfelds „SysRq-Befehl an Gast senden“, wenn die Option zur Tasteneingabe ausgewählt ist und in das Feld darunter „REISUB“ eingegeben wird.

Der SysRq-Befehl kann nicht auf virtuellen Computern verwendet werden, die angehalten wurden oder deren Kernel sich in einem nicht reaktionsfähigen Status befindet (z. B. Kernel panic).

Aktivieren von SysRq

Wie im vorgenannten SysRq-Administratorhandbuch beschrieben, kann SysRq so konfiguriert werden, dass alle, keine oder nur bestimmte Befehle zur Verfügung stehen. Mit dem nachfolgenden Schritt können Sie alle SysRq-Befehle aktivieren, doch wird diese Auswahl einen Neustart nicht überstehen:

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

Um die SysReq-Konfiguration dauerhaft zu speichern, gehen Sie zum Aktivieren aller SysRq-Befehle wie folgt vor:

  1. Hinzufügen der folgenden Zeile zu /etc/sysctl.conf
    kernel.sysrq = 1
  2. Neustarten oder Aktualisieren von sysctl durch Ausführen von
    sysctl -p

Befehlstasten

Aus dem oben genannten SysRq-Administratorhandbuch entnommen:

Get-Help Funktion
b Führt sofort einen Systemneustart ohne Synchronisieren oder Aufheben der Bereitstellung der Datenträger durch.
c Führt einen Systemabsturz durch eine NULL-Zeigerdereferenzierung herbei. Wenn konfiguriert, wird ein Absturzabbild (Crash Dump) erstellt.
d Zeigt alle Sperren, die gehalten werden.
e Sendet ein SIGTERM-Signal an alle Prozesse, mit Ausnahme von „init“.
f Ruft den OOM-Killer auf, um einen Memory Hog-Prozess (Speicherkiller) zu beenden, allerdings ohne „panic“, wenn nichts beendet werden kann.
g Wird von kgdb (Kernel-Debugger) verwendet.
h Zeigt die Hilfe an (mit jeder anderen außer den hier genannten Tasten können Sie ebenfalls die Hilfe anzeigen, jedoch ist h einfacher zu merken :-)
i Sendet ein SIGKILL-Signal an alle Prozesse, mit Ausnahme von „init“.
j Zwangsweise „einfach reaktivieren“ – von FIFREEZE ioctl fixierte Dateisysteme.
k Secure Access Key (SAK) beendet alle Programme auf der aktuellen virtuellen Konsole. HINWEIS: Beachten Sie die wichtigen Kommentare im SAK-Abschnitt weiter unten.
l Zeigt einen Stack-Backtrace für alle aktiven CPUs.
m Sichert die aktuellen Speicherinformationen in der Konsole.
n Wird verwendet, um RT-Tasks ansprechend zu machen.
o Fährt Ihr System herunter (sofern konfiguriert und unterstützt).
p Sichert die aktuellen Register und Flags in der Konsole.
q Sichert pro CPU Listen aller zurückgesetzten HR-Timer (aber NICHT der regulären Timer aus der timer_list-Struktur) sowie detaillierte Informationen zu allen Clock-Event-Geräten.
r Deaktiviert den Raw-Modus der Tastatur und legt den XLATE-Modus fest.
s Versucht, alle bereitgestellten Dateisysteme zu synchronisieren.
t Sichert eine Liste der aktuellen Tasks und der zugehörigen Informationen in der Konsole.
u Versucht, alle bereitgestellten Dateisysteme schreibgeschützt erneut bereitzustellen.
v Erzwingt die Wiederherstellung der Framebuffer-Konsole.
v Verursacht ein ETM-Pufferspeicherabbild [ARM-spezifisch].
w Sichert Tasks, die sich im unterbrechungsfreien (gesperrten) Zustand befinden.
x Wird von der Xmon-Schnittstelle auf PPC/PowerPC-Plattformen verwendet. Zeigt globale PMU-Register auf SPARC64 an. Sichert alle TLB-Einträge auf MIPS.
y Zeigt die globalen CPU-Register an [SPARC64-spezifisch].
z Sichert den fTRACE-Puffer.
0-9 Legt die Protokollebene für die Konsole fest, die bestimmt, welche Kernelnachrichten an die Konsole ausgegeben werden. (0 zum Beispiel würde dafür sorgen, dass nur Notfallmeldungen wie PANIC oder OOPS auf Ihre Konsole gelangen.)

Distributionsspezifische Dokumentation

Eine distributionsspezifische Dokumentation zu SysRq und eine Beschreibung der Schritte, mit denen Sie Linux so konfigurieren, dass beim Empfangen eines SysRq-Befehls des Typs „Crash“ ein Absturzabbild erstellt wird, finden Sie unter folgenden Links:

Ubuntu

Red Hat

SUSE

CoreOS

NMI (Nicht maskierbarer Interrupt)

Ein nicht maskierbarer Interrupt (NMI) dient dazu, ein Signal zu erstellen, das die Software auf einem virtuellen Computer nicht ignoriert. In der Vergangenheit wurden NMIs verwendet, um Hardwareprobleme auf Systemen zu überwachen, die bestimmte Antwortzeiten erforderten. Heute verwenden Programmierer und Systemadministratoren NMIs häufig als Mechanismus zum Debuggen oder Beheben von Problemen in Systemen, die nicht mehr reagieren.

Sie können mit der seriellen Konsole einen NMI an einen virtuellen Azure-Computer senden. Verwenden Sie dazu das Tastatursymbol in der unten gezeigten Befehlsleiste. Nach der Übermittlung des NMI bestimmt die Konfiguration des virtuellen Computers, wie das System reagiert. Linux-Betriebssysteme können so konfiguriert werden, dass beim Empfang eines NMI ein Absturz erfolgt und ein Speicherabbild erstellt wird.

Screenshot der seriellen Konsole. Das Tastatursymbol ist hervorgehoben, und sein Menü ist sichtbar. Dieses Menü enthält ein Element „Nicht maskierbaren Interrupt senden“.

Aktivieren von NMI

Bei Linux-Systemen, die sysctl zum Konfigurieren von Kernelparametern unterstützen, können Sie beim Empfang dieses NMI einen „Panic“-Status aktivieren. Gehen Sie dazu wie folgt vor:

  1. Hinzufügen der folgenden Zeile zu /etc/sysctl.conf
    kernel.panic_on_unrecovered_nmi=1
  2. Neustarten oder Aktualisieren von sysctl durch Ausführen von
    sysctl -p

Weitere Informationen zu Linux-Kernelkonfigurationen (einschließlich unknown_nmi_panic, panic_on_io_nmi und panic_on_unrecovered_nmi) finden Sie hier: Dokumentation für /proc/sys/kernel/*. Eine distributionsspezifische Dokumentation zu NMI und eine Beschreibung der Schritte, mit denen Sie Linux so konfigurieren, dass beim Empfangen eines NMI ein Absturzabbild erstellt wird, finden Sie unter folgenden Links:

Ubuntu

Red Hat

SUSE

CoreOS

Nächste Schritte

Kontaktieren Sie uns für Hilfe

Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.