Linux Kernel 2.2 Documentation:
/usr/src/linux/Documentation/sysrq.txt
sysrq.txt
カーネルハックに役立つSysRqキーについての解説
[プレインテキスト版]
- 原著作者: Myrdraal <myrdraal@deathsdoor.com>
- 翻訳者: Hiroshi MIURA <miura@blue.gr.jp>
- バージョン: 2.2.16
- 翻訳日時: 2000/08/01
神秘のSYSRQキー文書 v1.2
------------------------------------
[Sat May 16 01:09:21 EDT 1998]
* 神秘のSysRQキーとは!?
~~~~~~~~~~~~~~~~~~~~~~~~
それは、魔法の組み合わせキーだ。このキーの組合わせを押せば、カーネルが
動いている限り、どんな作業の実行中であろうと答えてくれる。これが神秘の
SysRQ キーなのだ。
* どうすれば神秘のSysRQキー有効にできるのか?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
カーネルを構築する時'Magic SysRq key (CONFIG_MAGIC_SYSRQ)'という項目に
"yes"と答えれば良い。このオプションは、2.1.x以降のカーネルにのみ存在する。
* どう打てば、神秘のSysRQキーになる!?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
x86の場合 - 'ALT-SysRQ-<コマンドキー>'を同時に打鍵すればよい。注意 - (古い?)
キーボードによっては、'SysRQ'と書かれたキーがないかも知れない。この
キーは、'Print Screen'キーとしても知られている。
SPARCの場合 - 'ALT-STOP-<コマンドキー>'を押せばいいと思う。
PowerPCの場合 - 'ALT-Print Screen-<コマンドキー>'。
その他の場合 - もし、他のアーキテクチャーにおけるキーの組合せがわかれば、
ぜひわたしに教えてほしい。それをこの節に追加しよう。
* どんな'コマンドキー'があるんだ?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'r' - キーボードrawモードをオフにし、XLATEを設定する。
'k' - 現在のバーチャルコンソールでのすべてのプログラムをkillする。
'b' - 即座にシステムをリブートする。その際、ディスクのsyncやアンマウント
は実行されない。
'o' - システムをシャットオフ(つまり終了して電源OFFね)する。
(もしそのように設定され、かつこの動作がサポートされていればだけど)
's' - すべてのマウントされているファイルシステムをsyncしようとする。
'u' - すべてのマウント済みのファイルシステムを'書き込み不可'で
再マウントする。
'p' - 現在のレジスターとフラグをコンソールにダンプ出力する。
't' - 現在のタスクのリストとその情報をコンソールにダンプ出力する。
'm' - 現在のメモリ情報をコンソールにダンプ出力する。
'0'-'9' - コンソールのログレベルを変更する。ログレベルによってどんな
カーネルメッセージがコンソールに出力されるかが変わる。
(たとえば、'0'ではPANICやOOPSといった緊急のメッセージのみを
コンソールに出力するようになる。)
'e' - init以外のすべてのプロセスにSIGTERMを送る。
'i' - init以外のすべてのプロセスにSIGKILLを送る。
'l' - SIGKILLをinitを「含む」すべてのプロセスへ送る。(そのため、
このあとあなたのシステムはなにもできなくなる。)
* わかった、じゃ何のためにつかうの?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
よく聞いてくれた。un'R'awは、Xサーバやsvgalibプログラムがクラッシュしたときに
とても便利なんだ。
sa'K' (system attention key: システム警告キー)は、コンソールを切替えさせて
くれないプログラム(たとえば、Xやsvgalibのプログラム)を終了させたいとおもった
ときに便利だ。
re'B'ootは、シャットダウンさせることができなくなった時に便利。ただし、
その前に'S'yncと'U'mountを実行しておこう。
'S'ync は、システムがロックしてしまったときにばっちり使える。これはディ
スクにsyncを行ない、できるだけデータを失ったり、fsckしなければならない
確率を下げることができる。注意としては、syncはOKとかDoneの文字が画面に
でるまでは、処理が済んでいないことだ。(もしカーネルが本当に大変なことになっ
ていたら、OKとかDoneとかのメッセージを永遠に見られない可能性もあるが……)
'U'mountはの働きは基本的に'S'yncと同じで、有用なコマンドである。わたしは自分の
システムがロックしてしまった時は、通常'S'yncと'U'mountを実行して、その後
re'B'oootすることにしている。これは、多くのfsckを回避してくれた。
umount(ほんとは書き込み禁止で再マウントするんだけどね) の場合も、OKや
Doneの文字が画面にでるまでは処理が終わっていないので要注意。
ログレベルの'0'-'9'は、見たくもないカーネルメッセージの洪水でコンソー
ルがあふれてしまったようなときに有効である。'0'を設定すれば、コンソー
ルに届くメッセージのうちもっとも重大なカーネルメッセージを除き、すべ
てのメッセージを抑制してくれる。 (ただし、もし syslogd/klogd が生きて
いる場合、それらが書き込むログには ここで抑制したメッセージもそのまま
記録され続けることになる)。
t'E'rmと、k'I'll は、他の方法ではkillできないようなある種の暴走したプ
ロセスがあったときに有効だ。特にそいつが別のプロセスを生み続けている場
合には有用である。
* 時々SysRQを使ったのが原因で「固まる」ようにみえるけどどうすればいいの?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
その現象はわたしも経験している。そのときはキーボードの両側にあるシフト、
Alt、コントロールのキーを軽く叩き、さらに (そう、例えば alt-sysrq-z み
たいな) 無効な sysrq シーケンスを打ち込むことで良くなるようだ。別の仮
想コンソールに(ALT-Fn)を使って切替えて、また戻して、再度実行するのも効
果があるときがある。
* SysRQを押してみた。でもなにも起こったようにみえない。どこがわるい?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
いくつかのキーボードは、'SysRQ'をサポートしていない。'showkey -s'を実行し、
SysRQキーをおしたり、alt-SysRQキーを押して0x54というコードが生成されている
か見て欲しい。もし0x54が生成されなければ、別のキーシーケンスへこの機能
を割り当てることもできる。showkeyによって適当なキーコードを見つけ、
[/usr/src/linux/]include/asm/keyboard.h の'#define SYSRQ_KEY 0x54'とい
う定義をあなたが使いたいものに変えて再コンパイルすればよい。ああそうだ、
ところで、'showkey'の終了の仕方だが、10秒ほどなにもタイプしなければ、
ちゃんと終了するよ。
* ほかに質問あるんだけど、だれにきけばいいの?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
気軽にmyrdraal@deathsdoor.comへ送ってくれ。できるだけ素早く返答するよ
うにするよ。もし、この電子メールアドレスがうまくいかないなら、
myrdraal@jackalz.dyn.ml.orgを試してみてほしい。
訳注) いずれも「英語で」メールしてくださいね。:) もし、日本語で送るなら
訳者の hiroshi@ChangeLog.net か miura@blue.gr.jp へ聞いてみて欲しい。
-Myrdraal
==番外編==
SysRQキーの組合わせを覚える魔法の呪文
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
原文では、英語の綴りと関連させて覚えやすいように説明してあるけど、日本
語を使っている人にはちょっと難しいよね。そこで、日本語での語呂合わせを
考えてみたから参考にしてみて!もっといい覚え方があったら、気軽に送って
ほしい。宛先はJF@linux.or.jpだよ。
その1
「タスクのダンプは tmp へ出そうよ。キーボードにはあーる(r)くんを呼び出して、
きえろ(kiel)と命令してタスクをころし、 subして手をあわせ祈るのだ。」
ち、ちょっとくるしい:)
その2
「えい (ei) とりあえず止めちまえ (signal TERM, signal KILL)」
「心配 (s) なのは埋もれた (u) 宝 (sync, umount)」
「ぶっても (b) 起きない (o) ロクデナシ (l) (reboot, shutoff, kill init)」
「キーの復活リバイバル (r)」
「ウルサイおしゃべり、ボリューム "0" に」 (寄贈: 佐野@浜松 様)
これは覚えやすそうだね。
[翻訳,追加: 三浦広志 miura@blue.gr.jp]
Linux カーネル 2.2 付属文書一覧へ戻る