Jak sprawdzić, które funkcje SysRq są włączone?


15

Plik /proc/sys/kernel/sysrqzawiera jeden numer, taki jak:

  • 1 (włącz wszystkie polecenia SysRq),
  • 0 (Wyłącz wszystkie),
  • lub podstawowa liczba całkowita dodatnia 10, która działa jako binarna maska ​​bitowa, umożliwiając podzbiór funkcji.

Czy ktoś mógłby mi powiedzieć, które funkcje SysRq są dozwolone / zabronione, gdy maska ​​bitowa jest ustawiona na 438?


$ cat /proc/sys/kernel/sysrq
438

Odpowiedzi:


22

Oto dostępne funkcje SysRq:

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, więc dozwolone są tylko funkcje powiązane z tymi liczbami. Przeczytaj o tym wszystko w dokumentacji .

Jeśli przekonwertujesz 438na base 2 ( 110110110), jest to jeszcze łatwiejsze do zobaczenia.

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

W zależności od dystrybucji możesz stwierdzić, czy jądro zostało skompilowane za CONFIG_MAGIC_SYSRQpomocą tego polecenia:

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

Działa to dla mnie na Ubuntu.


Ach, to tylko liniowa kombinacja poszczególnych masek bitowych. Dziękuję bardzo.
user001

Jedna kontynuacja: jeśli nic się nie stanie, gdy wykonam Alt + SysRq + (klawisz polecenia), to przypuszczam, że oznacza to, że sysrq nie został włączony podczas instalacji jądra. Czy istnieje prosty sposób sprawdzenia, czy sysrq jest włączony, czy nie (np. Czy mogę CONFIG_MAGIC_SYSRQgdzieś znaleźć status )?
user001

3
Dodałem możliwy sposób sprawdzenia CONFIG_MAGIC_SYSRQ.
William Jackson

Dzięki. Pracowałem również dla Debiana. Dane wyjściowe: CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ_DEFAULT_MASK=0x01b6(01b6 w systemie szesnastkowym to 438 w systemie dziesiętnym). Podejrzewam, że yśrodki zostały włączone. Dałbym 2 głosy, gdybym mógł.
user001

1
W wielu dystrybucjach Linuksa konfiguracja jest przechowywana w samym jądrze, a nie w /boot, więc komenda check będzie zgrep SYSRQ /proc/config.gz(lub gunzip -c /proc/config.gz | grep SYSRQ).
user1686,

2

Oto linijka Bash, która wydrukuje dostępne opcje:

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

Które funkcje SysRq są dozwolone / zabronione, gdy maska ​​bitowa jest ustawiona na 438?

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

Znaczenie znajduje się w odpowiedzi Williama .


Aby włączyć wszystkie opcje, uruchom:

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

Aby było trwałe, uruchom:

echo kernel.sysrq=1 | sudo tee /etc/sysctl.d/20-sysrq.conf
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.