Como verificar quais funções do SysRq estão ativadas?

15

O arquivo /proc/sys/kernel/sysrqcontém um único número, como:

  • 1 (habilite todos os comandos do SysRq),
  • 0 (desativar tudo),
  • ou um número inteiro positivo de base 10 que funciona como uma máscara de bits binária, permitindo um subconjunto de funções.

Alguém poderia me dizer quais funções do SysRq são permitidas / não permitidas quando o bitmask está definido como 438?


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

Respostas:

22

Estas são as funções SysRq disponíveis:

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, portanto, apenas as funções associadas a esses números são permitidas. Leia tudo sobre isso na documentação .

Se você converter 438para a base 2 ( 110110110), é ainda mais fácil ver.

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

Dependendo da sua distribuição, você poderá saber se o kernel foi compilado CONFIG_MAGIC_SYSRQusando este comando:

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

Isso funciona para mim no Ubuntu.

William Jackson
fonte
Ah, é apenas uma combinação linear das máscaras de bits individuais. Muito obrigado.
User001
Um acompanhamento: se nada acontecer quando eu fizer Alt + SysRq + (uma chave de comando), suponho que isso significa que o sysrq não estava ativado quando o kernel foi instalado. Existe uma maneira simples de verificar se o sysrq está ativado ou não (por exemplo, posso encontrar o status de CONFIG_MAGIC_SYSRQalgum lugar)?
User001
3
Eu adicionei uma maneira possível de verificar CONFIG_MAGIC_SYSRQ.
William Jackson
Obrigado. Também funcionou para mim no Debian. A saída: CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ_DEFAULT_MASK=0x01b6(01b6 em hexadecimal é 438 em decimal). Suponho que os ymeios foram habilitados. Daria 2 votos se eu pudesse.
User001
1
Em muitas distros do Linux, a configuração é mantida no próprio kernel, não dentro /boot, portanto o comando check seria zgrep SYSRQ /proc/config.gz(ou gunzip -c /proc/config.gz | grep SYSRQ).
precisa saber é o seguinte
2

Aqui está uma linha única do Bash que imprimirá as opções ativadas:

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

Quais funções do SysRq são permitidas / não permitidas quando o bitmask está definido como 438?

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

Para o significado, consulte a resposta de William .


Para habilitar todas as opções, execute:

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

Para torná-lo persistente, execute:

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