web-dev-qa-db-ja.com

Alt + sysrq + REISUBでラップトップが再起動しない

時々、私のラップトップが動かなくなったので、魔法のキーの組み合わせを使用しました Alt + SysRq + REISUB 安全な再起動を実行します。しかし、私が押したときのようにそれは私のために働くようには見えません B マジックキーコマンドを完了するためのキー。単に「リセットしています...」と表示され、何もしません。

他のすべてのキーは、キーボードレイアウトをリセットしたり、すべてのタスクを強制終了したりするため、正常に動作するように見えますが、再起動では完了しないようです。

REISUBの順序でマジックキーをすべて押した後、ラップトップを再起動する必要があるという印象を受けました。

59
James White

バグを修正するためにAlt + SysRqが無効になりました。 Magic-SysRqの無効化はそれ自体がバグと見なされ、その後再び有効化されました( #1025467 )。それでもまだ無効になっている場合は、再度有効にすることができます。

Ubuntu 12.04以前

ファイル/ etc/sysctl.confを編集して次の行を含めます

kernel.sysrq=1

Ubuntu 12.10以降

Ubuntu 12.10以降では、Magic-SysRq機能を有効にするより詳細な制御が可能です。ファイル/ etc/sysctl.d/10-magic-sysrq.confを編集するだけです。

ファイルには十分なドキュメントがあり、どの機能を有効にするかを正確に説明しています。現在のデフォルトはセキュリティのために選択されており、なぜ必要なのかがわかっている場合にのみ変更する必要があります(セキュリティの意味については #194676 を参照してください)。

58
mniess

ここではキーボードが問題です!

  • 4キーを同時に押したくないという人もいれば、キーボードを放すまでキーボードを停止する人もいます。
  • SysRq信号を送信すると、すべてのキーボードがQWERTYレイアウトに変わります。これにより、別のレイアウトのキーボードで正しいコマンドを見つけることが難しくなります。 Wikipedia:SysRqコマンド は、一般的な代替レイアウトに適したものを見つけるための表を示しています。
  • ある人は持っている SysRq 別のキーで PrtSc ファンクションキーで保持します。私のラップトップではこれは Fn+End。ホールディング Alt + PrtSc 何らかのシステムプロセス(ウィンドウマネージャー?)が翻訳してくれた場合にのみ機能します。完全なクラッシュでは、realのみ SysRq 動作します!
  • いくつかの唯一のトリガー SysRq rightを押したままキー Alt + PrtSc (ハードウェアによる)。このような場合、上記と同じ理由で、左のAltキーは機能しません。これが私のUSBキーボードの仕組みです。
  • ヒント:打ってみる Shift + Alt + SysRq 仮想端末で「ヘルプ」出力を表示します。これは、害を及ぼさずに機能しているかどうかを確認するのに役立ちます。

    SysRq:ヘルプ:loglevel(0-9)reBoot Crash terminate-all-tasks(E)memory-full-oom-kill(F)kill-all-tasks(I)thaw-filesystems(J)saK show-backtrace-all -active-cpus(L)show-memory-usage(M)Nice-all-RT-tasks(N)powerOff show-registers(P)show-all-timers(Q)unRaw Sync show-task-states(T) show-blocked-tasks(W)のアンマウントdump-ftrace-buffer(Z)

私が出くわしたすべてのケースで、それは機能しませんでした。キーボードの交換は完全に機能し、カーネルの設定に問題はないことを示しました。

31
gertvdijk

属性
https://fedoraproject.org/wiki/QA/Sysrq#How_do_I_use_the_magic_SysRq_key は元の作品に基づいていました
クレジット
Mydraal著
Adam Sulmickiにより更新
更新:Jeremy M. Dolan 2001/01/28 10:15:59
Crutcher Dunnavantによる追加

https://askubuntu.com/a/11194/102029 LaunchPad用のリンクが提供されています。

内容

Sysrqとは何ですか?
RESIUB(O)が機能しないのはなぜですか?

1 sysrqを希望どおりに動作させるにはどうすればよいですか?
1.1魔法のSysRqキーとは何ですか?
1.2マジックSysRqキーを有効にするにはどうすればよいですか?
1.3マジックSysRqキーを使用するにはどうすればよいですか?
1.4「コマンド」キーとは何ですか?
1.5さて、何に使用できますか?

1.6トラブルシューティング

1.6.1初期スクリプトが実行される前にハングする
1.6.2SysRqを使用した後に「スタック」することがあるようですが、どうすればよいですか?
1.6.3SysRqにヒットしましたが、何も起こらないようです。何が問題なのですか?
1.6.4SysRQキーイベントをモジュールに追加したいのですが、どのように機能しますか?
1.6.5結論
1.6.6付録
注。
あなたは Ctrl + F 目次を使用すると便利です。

SysRqとは何ですか?

システムファイルの破損やデータの損失につながるディスク破損のリスクを制限しながら、フリーズまたはロックした後のマシンの使用を回復する一般的なよく使用されている方法は、
Alt + SysRq + r その後 s その後 e その後 i その後 u その後 b および/または必要に応じて(o

これは、8.04LTS以上から現在の13.04リリースまでのすべてのフレーバーを通じて、多くの人(つまり、私とジェームス)の期待どおりに機能していません。

RESIUB(O)が機能しないのはなぜですか?

LaunchPad Bug 194676 にあるこのバグの説明を検討してください。

問題の説明:
SysRqはデフォルトでUbuntuデスクトップシステムでデフォルトで有効になっています。これは、システムがロックアップした場合に非常に重要であり、可能な限り穏やかに停止するか、問題をデバッグします。ただし、多くの人は、キーボードからだけではあるが、現在のメモリの内容をコンソール(またはdmesg)にダンプするように要求できることに驚いています。
openSUSEは、SysRqにデフォルトのビットマスク176を設定します。デフォルトでは、同期、再起動、「読み取り専用での再マウント」に制限されます。これにより、デフォルトでsysrqを使用して、適切に聞こえるメモリを検査するユーザーが停止します。

Ubuntu開発者はこれについて何かをする必要性を認識しており、前述の観察の考えられる複雑さを考慮した最適なソリューションは、デフォルトでビットマスク176 sysrqを適用し、sysrqを必要に応じて設定する必要性を作成することです。ビットマスク176では S、 U、 B これは同期され、マウントされたパーティションを再マウントして再起動します。
完全なバグレポートとコメントを読むと、システムに適用可能なオプションがいくつか強調表示されます。

異なるハードウェア、カーネル、キーボード、ビットマスクの累積的な影響は、sysrqが異なる人々に対して異なる動作をすることを意味します。

システムがsysrqをどのように使用しているかに関するtxt出力を取得する1つの方法は、ttyからsysrqコマンドを適用することです(システムがロック/フリーズに苦しんでいない場合)。これは、sysrqが完全に無効にされていないが、ビットマスク176を使用していることを示す場合があります。

13.04デスクトップAMD64 liveDVDおよび13.04デスクトップAMD64インストールで/ proc/sys/kernel/sysrqを検索すると、デフォルトでは現在sysrqがビットマスク176のままになっていることが確認されます。

Sysrqが機能する場合; 「10-magic-sysrqの設定を変更しなかった場合、誰が変更したか。」と尋ねる価値があるかもしれません。

1 sysrqを希望どおりに動作させるにはどうすればよいですか?

以下は https://fedoraproject.org/wiki/QA/Sysrqの編集されたコピーと貼り付けです

1.1魔法のSysRqキーとは何ですか?

これは、完全にロックされていない限り、他に何をしていてもカーネルが応答する「魔法の」キーコンボです。

1.2マジックSysRqキーを有効にするにはどうすればよいですか?

sysrqはUbuntuカーネルに組み込まれていますが、起動時にはデフォルトで10-magic-sysrq.confを使用して無効になっています。

ブート時に再度有効にするには、/ etc/sysctl.d/10-magic-sysrq.confファイルを編集する必要があります。つまり、この行のコメントを解除すると、sysrqのすべての機能が有効になります。

#   1 - enable all functions of sysrq

SysRqがコンパイルされたカーネルを実行する場合、/ proc/sys/kernel/sysrqは、SysRqキーを介して起動できる機能を制御します。/proc/sys/kernel/sysrqで可能な値のリストは次のとおりです。

0 - disable sysrq completely
1 - enable all functions of sysrq
>1 - bitmask of allowed sysrq functions (see below for detailed function description):
    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
    176 - allow only sync, reboot and "remount read-only"
    256 - allow nicing of all RT tasks 

次のコマンドを使用して、ファイルに値を設定できます。

echo "number" >/proc/sys/kernel/sysrq

したがって、完全に有効にするには、次のようになります。

echo "1" > /proc/sys/kernel/sysrq

または、実行して有効にすることもできます。

sysctl -w kernel.sysrq=1  


/proc/sys/kernel/sysrqの値は、キーボードを介した呼び出しのみに影響します。/proc/sysrq-triggerを介した操作の呼び出しは常に許可されます(管理者権限を持つユーザーによって-以下を参照)。

1.3マジックSysRqキーの使用方法

Ubuntuデスクトップ

キーコンボを押す Alt + SysRq + command key

N.B .-他のシステムおよびキーボードのその他の可能なデフォルト設定については、このセクションおよび「トラブルシューティング」セクションの注を参照してください。

選択した任意のキャラクターを設定することが可能です:すべてのアーキテクチャ

/ proc/sysrq-triggerに文字を書き込みます。

echo t > /proc/sysrq-trigger

設定します T ふるまい SysRq

一部のキーボードには、ラベルの付いたキーがない場合があります SysRq。の SysRq キーは、 Print Screen キー。また、いくつかのキーボードは、同時に押された多くのキーを処理できないため、運が良い場合があります Alt + SysRq - SysRq 次に押す command key その後、すべてを解放します。このガイドのベースとなっているQAの完全な記述を参照してください https://fedoraproject.org/wiki/QA/Sysrq#How_do_I_use_the_magic_SysRq_key.3F これに関する詳細について。

1.4「コマンド」キーとは何ですか?

'b' - Will immediately reboot the system without syncing or unmounting your disks.
'c' - Will perform a kexec reboot in order to take a crashdump.
'd' - Shows all locks that are held.
'e' - Send a SIGTERM to all processes, except for init.
'f' - Will call oom_kill to kill a memory hog process.
'g' - Used by kgdb on ppc and sh platforms.
'h' - Will display help (any key that is not listed here will bring forth help )
'i' - Send a SIGKILL to all processes, except for init.
'k' - Secure Access Key (SAK) Kills all programs on the current virtual terminal.  


以下の重要なコメントをSAKセクションで参照してください。

'l' - Shows a stack backtrace for all active CPUs.
'm' - Will dump current memory info to your console.
'n' - Used to make RT tasks Nice-able
'o' - Will shut your system off (if configured and supported).
'p' - Will dump the current registers and flags to your console.
'q' - Will dump a list of all running timers.
'r' - Turns off keyboard raw mode and sets it to XLATE.
's' - Will attempt to sync all mounted filesystems.
't' - Will dump a list of current tasks and their information to your console.
'u' - Will attempt to remount all mounted filesystems read-only.
'v' - Dumps Voyager SMP processor info to your console.
'w' - Dumps tasks that are in uninterruptable (blocked) state.
'x' - Used by xmon interface on ppc/powerpc platforms.
'0'-'9' - Sets the console log level, controlling which kernel messages will be printed to your console. ('0', for example would make it so that only emergency messages like PANICs or OOPSes would make it to your console.) 

1.5さて、それで何に使うことができますか?

国連rxサーバーまたはsvgalibプログラムがクラッシュした場合、awは非常に便利です。

k (セキュアアクセスキー)は、ログインしようとしたときにパスワードを取得する可能性のあるトロイの木馬プログラムがコンソールで実行されていないことを確認する場合に役立ちます。指定されたコンソール上のすべてのプログラムを強制終了するため、表示されるログインプロンプトが実際には何らかのトロイの木馬プログラムではなくinitのものであることを確認できます。他の人は、(システムアテンションキー)として便利だと感じています。これは、コンソールを切り替えさせないプログラムを終了したいときに便利です。 (たとえば、Xまたはsvgalibプログラム。)

その真の形式では、c2準拠のシステムのような真のSAKではなく、そのように誤解されるべきではありません。

bootは、シャットダウンできない場合に適しています。

一般的には、グッドプラクティスと見なされます u最初にマウント

Crashdumpを使用して、手動で cシステムがハングしたときのrashdump。

CONFIG_KEXECを有効にしてカーネルを構築する必要があります!

同期は、システムがロックされているときに最適です。 sディスクをyncし、データ損失とfsckingの可能性を確実に減らします。
警告
画面に「OK」と「完了」が表示されるまで、同期は行われません。 (カーネルが実際に争っている場合、「OK」または「完了」のメッセージが表示されない場合があります。

Uマウントは基本的に同じ方法で便利です Sync。

ログレベル -9 コンソールが見たくないカーネルメッセージであふれている場合に便利です。選ぶ  緊急のカーネルメッセージ以外のすべてがコンソールに届かないようにします。

syslogd/klogdが動作している場合、引き続きログに記録されます

Termおよびkillは、他の方法を殺すことができない何らかの暴走プロセスがある場合、特に他のプロセスを生成している場合に便利です。

悪いカーネルパニックが発生した場合 Alt+Sysrq+e それから Alt+Sysrq+u それから Alt+Sysrq+i そして最後に Alt+Sysrq+b

1.6トラブルシューティング

1.6.1 initscriptが実行される前にハングする

Initscriptが実行される前にマシンがハングしている場合は、sysrq_always_enabled=1で起動します

1.6.2 SysRqを使用した後に「スタック」したように見えることがありますが、どうすればよいですか?

タップ shift、 alt、そして control キーボードの両側で、無効なsysrqシーケンスをもう一度押すと、問題が修正されます。 (つまり、次のようなもの alt+sysrq+z)。

別の仮想コンソールへの切り替え(Ctrl+Alt+Fn1-Fn6)そして再び戻る Ctrl+Alt+Fn7 また役立つはずです。

1.6.3ヒット SysRq、何も起こらないようです、何が悪いのですか?

異なるスキャンコードを送信するキーボードがいくつかあります SysRq 事前定義された0x54よりも。だから SysRq 特定のキーボードではそのままでは機能しません。showkey -sを実行して、適切なスキャンコードシーケンスを見つけてください。次に、setkeycodes <sequence> 84を使用して、このシーケンスを通常に定義します SysRq コード(84は0x54の10進数です)。おそらく、このコマンドをブートスクリプトに含めるのが最善です。
警告
10秒間何も入力しないと、showkeyを終了します。

1.6.4追加したい SysRq モジュールの主要なイベント、それはどのように機能しますか?

基本関数をテーブルに登録するには、最初にヘッダーinclude/linux/sysrq.hを含める必要があります。これにより、必要な他のすべてが定義されます。次に、sysrq_key_op構造体を作成し、それを設定する必要があります...

  • 使用するキーハンドラー関数。

  • SysRQがヘルプを印刷するときに印刷されるhelp_msg文字列

  • ハンドラーが呼び出される直前に出力されるaction_msg文字列。ハンドラーは 'sysrq.h'のプロトタイプに準拠する必要があります

Sysrq_key_opが作成された後、カーネル関数register_sysrq_key(int key、struct sysrq_key_op * op_p);を呼び出すことができます。これは、テーブルのそのスロットが空白の場合、テーブルキー「key」で「op_p」が指す操作を登録します。モジュールのアンロード時に、関数unregister_sysrq_key(int key、struct sysrq_key_op * op_p)を呼び出す必要があります。この関数は、キー 'key'から 'op_p'が指すキーopを削除します。スロット。これは、登録してからスロットが上書きされた場合です。

魔法 SysRq システムは、 'drivers/char/sysrq.c'で定義されているキーopルックアップテーブルに対してキー操作を登録することにより動作します。このキーテーブルには、コンパイル時に多数の操作が登録されていますが、可変であり、2つの関数がregister_sysrq_keyおよびunregister_sysrq_keyへのインターフェイスとしてエクスポートされます。もちろん、テーブルに無効なポインタを残さないでください。すなわち; register_sysrq_key()を呼び出したモジュールが終了したら、unregister_sysrq_key()を呼び出して、使用したsysrqキーテーブルエントリをクリーンアップする必要があります。

テーブル内のヌルポインターは常に安全です。

何らかの理由で、handle_sysrqによって呼び出された関数内からhandle_sysrq関数を呼び出す必要があると感じた場合は、ロック状態にあることに注意する必要があります(また、割り込みハンドラーにいるため、スリープしません!)。代わりに__handle_sysrq_nolockを呼び出す必要があります。

1.6.5結論

つかいます Alt + SysRq + S その後 U その後 B 同期するには、マウントされているすべてのファイルシステムを再マウントし、必要に応じて再起動します。ものをシステムファイルに変更することなく。
If Alt + SysRq + B システムを再起動しません。適用の試行を許可するために/etc/sysctl.d/10-magic-sysrq.confを編集する必要がある場合があります。 Alt + SysRq + B (または O / proc/sys/kernel/sysrqビットマスクを編集して、sysrqを使用してシステムの再起動とシャットダウンを有効にした後。上記の方法のいずれかでこれを行うことができます。

1.6.6付録:関連項目- http://ubuntuforums.org/showthread.php?t=617349 および- https://www.kernel.org/doc/Documentation/sysrq.txt

Sysrqに関するApple MacBookキーボードのトラブルがある場合は、 https://help.ubuntu.com/community/AppleKeyboard および https://bugs.launchpadを参照してください。 net/mactel-support/+ bug/262408

比較的興味深い情報-2013年8月17日のBBCプログラムのエピソードを見た後 "クリック" と "サイバー戦争"の記事が本当に注目を集めました。プログラムには独自のウェブサイトもあります クリック プログラムを見ることができない場合。 FAWC

17
geezanansa

先日これに遭遇しましたが、動作するまでに数秒かかりました。 REISUBシーケンス全体を2回実行したこともあります。

また、sysrqキーを使用していることを確認してください(ほとんどのラップトップでは、機能を押し続ける必要があるため、実際には一度に4つのキーを押しています)

3
Scott Ritchie

数年前に使用していた Alt+SysRq+SUBO 再起動または電源オフスタックしたマシン。 Alt+SysRq+B 時々働きたくなかった。

(また、私は使用する習慣に入る必要があります Alt+SysRq+EI 最初。使用するポイントがあまりない Alt+SysRq+R、とにかく再起動してリセットする場合、キーボードモードが重要なのはなぜですか?)

3
Marius Gedminas