Come verificare quali funzioni SysRq sono abilitate?


15

Il file /proc/sys/kernel/sysrqcontiene un singolo numero, ad esempio:

  • 1 (abilita tutti i comandi SysRq),
  • 0 (disabilitare tutto),
  • o un intero positivo in base 10 che funziona come una maschera di bit binaria, abilitando un sottoinsieme di funzioni.

Qualcuno potrebbe dirmi quali funzioni SysRq sono consentite / non consentite quando la maschera di bit è impostata su 438?


$ cat /proc/sys/kernel/sysrq
438

Risposte:


22

Queste sono le funzioni SysRq disponibili:

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, quindi sono consentite solo le funzioni associate a tali numeri. Leggi tutto al riguardo nella documentazione .

Se si converte 438in base 2 ( 110110110) è ancora più facile da vedere.

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

A seconda della tua distribuzione, potresti essere in grado di dire se il kernel è stato compilato CONFIG_MAGIC_SYSRQusando questo comando:

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

Questo funziona per me su Ubuntu.


Ah, è solo una combinazione lineare delle singole maschere di bit. Grazie mille.
user001

Un follow-up: se non succede nulla quando faccio Alt + SysRq + (una chiave di comando), allora suppongo che ciò significhi che sysrq non è stato abilitato quando è stato installato il kernel. Esiste un modo semplice per verificare se sysrq è abilitato o meno (ad esempio, posso trovare lo stato di un CONFIG_MAGIC_SYSRQluogo)?
user001

3
Ho aggiunto un modo possibile per verificare CONFIG_MAGIC_SYSRQ.
William Jackson,

Grazie. Ha funzionato anche per me su Debian. L'output: CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ_DEFAULT_MASK=0x01b6(01b6 in esadecimale è 438 in decimale). Suppongo yche sia stato abilitato. Darei 2 voti positivi se potessi.
user001

1
Su molte distribuzioni Linux, la configurazione è mantenuta nel kernel stesso, non in /boot, quindi il comando check sarebbe zgrep SYSRQ /proc/config.gz(o gunzip -c /proc/config.gz | grep SYSRQ).
user1686

2

Ecco un Bash one-liner che ti stamperà le opzioni abilitate:

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

Quali funzioni SysRq sono consentite / non consentite quando la maschera di bit è impostata su 438?

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

Per il significato, fai riferimento alla risposta di William .


Per abilitare tutte le opzioni, eseguire:

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

Per renderlo persistente, eseguire:

echo kernel.sysrq=1 | sudo tee /etc/sysctl.d/20-sysrq.conf
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.