Remove ads
ウィキペディアから
マジックSysRqキーは、Linuxカーネルでシステム状態に関する低レベルコマンドを発行するキーシーケンスである。
SysRqとその他のキーとを組み合わせて使用する。これはカーネル開発におけるデバッグ用であると同時に、しばしばシステムがフリーズした際に、その状態からの回復やファイルシステムを破損させることなくコンピュータを再起動させるために使用される。
サン・マイクロシステムズのOpen Firmware(OpenBoot)と同様のこのキーシーケンスは、ソフトウェア開発やトラブルからの回復を行うための以下のようなツールへのアクセスを提供する。
キーシーケンスは、Altキー、SysRqキーおよびその他のキー(コマンドキー)を同時に押下する。コマンドキーはキー配列によって異なる。また、キーボードにSysRqキーがない場合は、プリントスクリーンキーで代用する。
動作 | QWERTY | Dvorak | AZERTY |
---|---|---|---|
コンソールに出力するカーネルメッセージのログレベルを制御する。 | 0 - 9 | 0 - 9 | 0 - 9 (Shiftキーは使用しない) |
即座に再起動する。この際ファイルシステムのsyncやアンマウントは行われない。 | b | x | b |
カーネルをクラッシュさせる。 | c | j | c |
現在ホールドされているすべてのロックを表示する。 | d | e | d |
init (PID 1)を除くすべてのプロセスにSIGTERMシグナルを送る(プロセスを終了させる)。 | e | . | e |
メモリ不足を解消するためにプロセスを終了させる oom_kill を呼び出す。 | f | u | f |
Kernel Mode Setting(KMS)使用時に、カーネルのフレームバッファコンソールに切り替えるための緊急措置を提供する[1]。 | g | i | g |
コンソールに簡単な説明を出力する。 | h または Enter | d | h |
init を除くすべてのプロセスにSIGKILLシグナルを送る(プロセスを強制終了させる)。 | i | c | i |
仮想端末上のすべてのプロセスにセキュア・アテンション・キー(SAK)を実行する。 | k | t | k |
現在実行中のすべてのタスクのバックトレースを表示する。 | l | n | l |
現在のメモリ情報をコンソールに出力する。 | m | m | , |
すべての高優先度およびリアルタイムタスクのniceレベルをリセットする。 | n | b | n |
システムを停止させる。 | o | r | o |
現在のレジスタおよびフラグをコンソールに出力する。 | p | l | p |
すべての高精度タイマおよびクロックソースを表示する。 | q | ' | a |
キーボードをrawモードからXLATEモードへ切り替える。X Window Systemを使用している場合、まずこの操作を行ってキーボードを解放する。 | r | p | r |
マウントされているすべてのファイルシステムをsyncする。 | s | o | s |
現在のタスクのリストとその情報をコンソールに表示する。 | t | y | t |
マウントされているすべてのファイルシステムを読み込み専用モードで再マウントする。 | u | g | u |
Voyager SMPプロセッサ情報を表示する。 | v | k | v |
ブロックされている(D state)タスクのリストを表示する。 | w | , | z |
本機能を使用するためには、カーネルがそのコンパイルオプションか、コンフィグレーションで有効にされてコンパイルされている必要がある。
CONFIG_MAGIC_SYSRQ=y
また、/etc/sysctl.conf で有効にされていなければならない。一部のLinuxディストリビューションでは、ユーザが誤って操作してしまわないようにデフォルトで無効になっている。
kernel.sysrq = 0
となっていれば無効であり、
kernel.sysrq = 1
で有効になる。この設定変更を即座に適用するには、以下のコマンドを実行する。
sysctl -p
本機能は、カーネルのデバッグ用にキーボードハンドラの一部として実装された。また、procファイルシステムから使用することもできる。これにより、ヘッドレスシステムやリモートシステムでもシェルから利用できる。
kernel.sysrqパラメタで無効にされている場合、まずそれを有効にする。
echo 1 > /proc/sys/kernel/sysrq
マジックSysRqキーは、/proc/sysrq-trigger へコマンドキーを送ることで実行される。
echo b > /proc/sysrq-trigger
これは Alt + SysRq + b と同じであり、システムは再起動される。
Linuxのデーモンとして動作するsysrqdは、TCP/IP(ポート4094、認証はプレーンテキストパスワード)を通してSysRqへのアクセス手段を提供する。
Linuxコンピュータがフリーズした場合にそれを安全に再起動させるためのマジックSysRqキーを押下する一連の手順を覚えるための語呂合わせがある。QWERTYまたはAZERTY配列では、"Raising Elephants Is So Utterly Boring"(ゾウを育てるって、もうとっても退屈)、"Reboot Even If System Utterly Broken"(リブートするよ。たとえシステムが完全に壊れてたとしても)、または単に "BUSIER" (busyの比較級)を逆から読む、といったものが使われている[3]。これらは以下の操作を表す。
unRaw (X Window Systemからキーボードの制御を取り戻す) tErminate (すべてのプロセスにSIGTERMシグナルを送り、正常に終了させる) kIll (すべてのプロセスにSIGKILLシグナルを送り、強制的に終了させる) Sync (書き込みキャッシュのデータをディスクに書き込む) Unmount (すべてのファイルシステムを読み込み専用で再マウントする) reBoot (システムを再起動する)
この手順で行えば、一部のプログラムのデータ損失を防ぎ、ファイルシステムの破損を回避することができる。
各コマンドは数秒間の時間を開けて投入しなければならない。例えば、多くのプログラムはSIGTERMシグナルを受け取るとデータの保存など処理を行い、syncやアンマウントはそれを行うためにある程度の時間を要する。
このキーにより、キーボードやシリアルコンソールからシステムにアクセスできる誰にでも危険なシステムレベルのコマンドが利用可能となることが一部で懸念されている[4]。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.