Wie überprüfe ich, welche SysRq-Funktionen aktiviert sind?

15

Die Datei /proc/sys/kernel/sysrqenthält eine einzelne Nummer, wie zum Beispiel:

  • 1 (Alle SysRq-Befehle aktivieren),
  • 0 (Alle deaktivieren),
  • oder eine positive Ganzzahl zur Basis 10, die als binäre Bitmaske fungiert und eine Teilmenge von Funktionen ermöglicht.

Könnte mir bitte jemand sagen, welche SysRq-Funktionen erlaubt / nicht erlaubt sind, wenn die Bitmaske auf gesetzt ist 438?


$ cat /proc/sys/kernel/sysrq
438
user001
quelle

Antworten:

22

Dies sind die verfügbaren SysRq-Funktionen:

0 - disable every SysRq function.
1 - enable every SysRq function.
2 - enable control of console logging level
4 - enable control of keyboard (SAK, unraw)
8 - enable debugging dumps of processes etc.
16 - enable sync command
32 - enable remount read-only
64 - enable signalling of processes (term, kill, oom-kill)
128 - allow reboot/poweroff
256 - allow nicing of all RT tasks

438= 2 + 4 + 16 + 32 + 128 + 256, daher sind nur die diesen Nummern zugeordneten Funktionen zulässig. Lesen Sie alles darüber in der Dokumentation .

Wenn Sie 438auf Basis 2 ( 110110110) konvertieren , ist dies noch einfacher zu erkennen.

1     1     0    1    1    0   1   1   0
^256  ^128  ^64  ^32  ^16  ^8  ^4  ^2  ^1

Abhängig von Ihrer Distribution können Sie möglicherweise feststellen, ob der Kernel mit dem folgenden CONFIG_MAGIC_SYSRQBefehl kompiliert wurde :

$ grep SYSRQ /boot/config-$(uname -r)

Das funktioniert bei mir unter Ubuntu.

William Jackson
quelle
Ah, es ist nur eine lineare Kombination der einzelnen Bitmasken. Vielen Dank.
User001
Eine Folge: Wenn beim Ausführen von Alt + SysRq + (eine Befehlstaste) nichts passiert, bedeutet dies vermutlich, dass sysrq bei der Installation des Kernels nicht aktiviert war. Gibt es eine einfache Möglichkeit, um zu überprüfen, ob sysrq aktiviert ist oder nicht (z. B. kann ich den Status von CONFIG_MAGIC_SYSRQirgendwo finden)?
User001
3
Ich habe eine Möglichkeit hinzugefügt, nach etwas zu suchen CONFIG_MAGIC_SYSRQ.
William Jackson
Vielen Dank. Arbeitete für mich auch bei Debian. Die Ausgabe: CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ_DEFAULT_MASK=0x01b6(01b6 in hex ist 438 in Dezimal). Ich nehme an, die yMittel wurden aktiviert. Würde 2 Gegenstimmen geben, wenn ich könnte.
User001
1
In vielen Linux-Distributionen wird die Konfiguration im Kernel selbst und nicht in gespeichert, /bootsodass der Befehl check zgrep SYSRQ /proc/config.gz(oder gunzip -c /proc/config.gz | grep SYSRQ) lautet .
user1686
2

Hier ist ein Bash-Einzeiler, mit dem Sie die aktivierten Optionen ausdrucken können:

for i in $(seq 1 8); do (( ($(</proc/sys/kernel/sysrq) & $((1<<$i))) > 0 )) && echo $((1<<$i)); done

Welche SysRq-Funktionen sind zulässig / nicht zulässig, wenn die Bitmaske auf 438 gesetzt ist?

$ for i in $(seq 1 8); do (( (438 & $((1<<$i))) > 0 )) && echo $((1<<$i)); done
2
4
16
32
128
256

Zur Bedeutung wird auf Williams Antwort verwiesen .


Führen Sie Folgendes aus, um alle Optionen zu aktivieren:

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

Um es dauerhaft zu machen, führen Sie Folgendes aus:

echo kernel.sysrq=1 | sudo tee /etc/sysctl.d/20-sysrq.conf
Kenorb
quelle