回答:
利用可能な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
、したがって、それらの番号に関連付けられた関数のみが許可されます。それについてのすべてをドキュメントで読んでください。
438
ベース2(110110110
)に変換すると、さらに見やすくなります。
1 1 0 1 1 0 1 1 0
^256 ^128 ^64 ^32 ^16 ^8 ^4 ^2 ^1
ディストリビューションによっては、CONFIG_MAGIC_SYSRQ
次のコマンドを使用してカーネルがコンパイルされたかどうかを確認できる場合があります。
$ grep SYSRQ /boot/config-$(uname -r)
これはUbuntuで動作します。
CONFIG_MAGIC_SYSRQ
どこかのステータスを見つけることができますか)。
CONFIG_MAGIC_SYSRQ
。
CONFIG_MAGIC_SYSRQ=y
CONFIG_MAGIC_SYSRQ_DEFAULT_MASK=0x01b6
(16進数の01b6は10進数の438)。私y
はそれが有効になっていることを意味すると思います。可能であれば、2回のアップ投票を行います。
/boot
ため、checkコマンドはzgrep SYSRQ /proc/config.gz
(またはgunzip -c /proc/config.gz | grep SYSRQ
)になります。
有効なオプションを表示するBashのワンライナーを次に示します。
for i in $(seq 1 8); do (( ($(</proc/sys/kernel/sysrq) & $((1<<$i))) > 0 )) && echo $((1<<$i)); done
ビットマスクが438に設定されている場合、どのSysRq関数が許可/禁止されますか?
$ for i in $(seq 1 8); do (( (438 & $((1<<$i))) > 0 )) && echo $((1<<$i)); done
2
4
16
32
128
256
意味については、ウィリアムの答えを参照してください。
すべてのオプションを有効にするには、次を実行します。
echo 1 | sudo tee /proc/sys/kernel/sysrq
永続化するには、次を実行します。
echo kernel.sysrq=1 | sudo tee /etc/sysctl.d/20-sysrq.conf