Comment vérifier quelles fonctions SysRq sont activées?

15

Le fichier /proc/sys/kernel/sysrqcontient un seul numéro, tel que:

  • 1 (activer toutes les commandes SysRq),
  • 0 (désactiver tous les),
  • ou un entier positif en base 10 qui fonctionne comme un masque binaire binaire, permettant un sous-ensemble de fonctions.

Quelqu'un pourrait-il me dire quelles fonctions SysRq sont autorisées / interdites lorsque le masque de bits est défini sur 438?


$ cat /proc/sys/kernel/sysrq
438
user001
la source

Réponses:

22

Voici les fonctions SysRq disponibles:

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, donc seules les fonctions associées à ces numéros sont autorisées. Lisez tout à ce sujet dans la documentation .

Si vous convertissez 438en base 2 ( 110110110), c'est encore plus facile à voir.

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

Selon votre distribution, vous pourrez peut-être dire si le noyau a été compilé à l' CONFIG_MAGIC_SYSRQaide de cette commande:

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

Cela fonctionne pour moi sur Ubuntu.

William Jackson
la source
Ah, c'est juste une combinaison linéaire des bitmasks individuels. Merci beaucoup.
user001
Un suivi: si rien ne se produit lorsque je fais Alt + SysRq + (une touche de commande), alors je suppose que cela signifie que sysrq n'a pas été activé lorsque le noyau a été installé. Existe-t-il un moyen simple de vérifier si sysrq est activé ou non (par exemple, puis-je trouver l'état de CONFIG_MAGIC_SYSRQquelque part)?
user001
3
J'ai ajouté un moyen possible de vérifier CONFIG_MAGIC_SYSRQ.
William Jackson
Merci. A également fonctionné pour moi sur Debian. La sortie: CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ_DEFAULT_MASK=0x01b6(01b6 en hexadécimal est 438 en décimal). Je suppose yque cela signifie qu'il a été activé. Donnerait 2 votes positifs si je le pouvais.
user001
1
Sur de nombreuses distributions Linux, la configuration est conservée dans le noyau lui-même, pas dans /boot, donc la commande check serait zgrep SYSRQ /proc/config.gz(ou gunzip -c /proc/config.gz | grep SYSRQ).
user1686
2

Voici un one-liner Bash qui vous imprimera les options activées:

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

Quelles fonctions SysRq sont autorisées / interdites lorsque le masque binaire est défini sur 438?

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

Pour le sens, reportez-vous à la réponse de William .


Pour activer toutes les options, exécutez:

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

Pour le rendre persistant, exécutez:

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