
マジックSysRqキーは、 Linuxカーネルが認識するキーの組み合わせで、システムの状態に関係なく、ユーザーが様々な低レベルコマンドを実行できるようにします。フリーズからの回復や、ファイルシステムを破損させずにコンピュータを再起動するためによく使用されます。[ 1 ]
このキーの組み合わせは、災害復旧のための機能へのアクセスを提供します。この意味では、これはエスケープシーケンスの一種と考えることができます。提供されるコマンドの主なものは、ファイルシステムの強制アンマウント、プロセスの強制終了、キーボードの状態の回復、未書き込みデータのディスクへの書き込みなどです。
マジックSysRqキーは、カーネルパニック[ 2 ]やハードウェア障害によってカーネルが正常に動作しなくなるなど、特定の条件下では機能しません。
実装
Linuxカーネルにはsysrq.c、マジックSysRq機能を実装した[ 3 ]が含まれています。マジックSysRq機能は、シリアルデバイス[ 4 ] [ 5 ]によってドライバコードの低レベルで 呼び出されます。
コマンド
キーの組み合わせは、Alt+SysRqと、発行されるコマンドを制御する別のキーで構成されます。 が押されている 限り、コマンド キーを押す前にキーを離すことができます。SysRqAlt
組み合わせは常にQWERTYキーボードレイアウトを想定しています。例えば、Dvorakキーボードレイアウトでは、システムをシャットダウンする組み合わせは ではなく キーを使用します。また、キーボードによっては独立したキーがない場合があります。その場合は、独立したキーを用意する必要があります。 ROSysRqPrtScn
一部のデバイス、特にノートパソコンでは、マジックキーを使用するために キーを押す必要がある場合があります。たとえば、Thinkpad Carbon X1では、+ + を同時に押し、 を押したまま と を放すことでがアクティブになります。[ 6 ]FnSysRqSysRqAltFnSFnSAlt
SysRq機能はキーボードなしでもアクセスできます。以下の「Magic SysRqを呼び出すその他の方法」を参照してください。一部のコマンドは、のビットマスク値で指定されているように、初期状態では無効になっている場合があることに注意してください/proc/sys/kernel/sysrq。[ 7 ]
| アクション | QWERTY | ドヴォルザーク | アザーティ | コレマック |
|---|---|---|---|---|
| コンソールに出力されるカーネルメッセージの種類を制御するコンソールログレベルを設定します。 | 0–9 | 0–9 | 0- (それなし) 9⇧ Shift | 0–9 |
| ファイルシステムをアンマウントまたは同期せずに、システムを直ちに再起動します。 | b | x | b | b |
| システムクラッシュを実行します。設定されている場合、クラッシュダンプが取得されます。 | c | j | c | c |
| 現在保持されているすべてのロックを表示します(CONFIG_LOCKDEPカーネルオプションが必要です) | d | e | d | s |
| init(PID 1) 以外のすべてのプロセスにSIGTERMシグナルを送信します。 | e | . | e | f |
| oom_killを呼び出してプロセスを強制終了し、OOM状態 を緩和します。 | f | u | f | t |
| カーネルモード設定を使用する場合は、カーネルのフレームバッファコンソールに切り替えます。[ 8 ]カーネル内デバッガkdbが存在する場合は、デバッガに入ります。 | g | i | g | d |
| 簡潔なヘルプドキュメントをコンソールに出力します。コマンドにバインドされていないキーでもこのアクションを実行する必要があります。 | h | d | h | h |
| init(PID 1) 以外のすべてのプロセスにSIGKILLシグナルを送信します。 | i | c | i | u |
| 強制的に「解凍する」 – FIFREEZE ioctl によって凍結されたファイルシステム。 | j | h | j | n |
| 現在の仮想コンソール上のすべてのプロセスを強制終了します(XおよびSVGAlibプログラムを強制終了できます。下記参照)。これは元々、セキュアアテンションキーを模倣するために設計されたものです。 | k | t | k | e |
| すべてのアクティブな CPU のスタック バックトレースを表示します。 | l | n | l | i |
| 現在のメモリ情報をコンソールに出力します | m | m | , | m |
| すべての高優先度タスクとリアルタイムタスク のniceレベルをリセットします | n | b | n | k |
| システムを停止する | o | r | o | y |
| 現在のレジスタとフラグをコンソールに出力します | p | l | p | ; |
| すべてのアクティブな高解像度タイマーとクロック ソースを表示します。 | q | ' | a | q |
| キーボードを、X11やSVGAlibなどのプログラムで使用されるrawモードからXLATEモード に切り替えます。 | r | p | r | p |
| マウントされたすべてのファイルシステムを同期する | s | o | s | r |
| 現在のタスクとその情報のリストをコンソールに出力します | t | y | t | g |
| マウントされているすべてのファイルシステムを読み取り専用モード で再マウントします。 | u | g | u | l |
| フレームバッファコンソールを強制的に復元します。ARMプロセッサの場合は、代わりにETMバッファのダンプを実行します。 | v | k | v | v |
| ブロックされた(D状態)タスクのリストを表示する | w | , | z | w |
| PowerPCプラットフォームのxmonインターフェースで使用されます。sparc64ではグローバルPMUレジスタを表示します。MIPSではすべてのTLBエントリをダンプします。[ 9 ] | x | q | x | x |
| グローバル CPU レジスタを表示する (SPARC-64 固有) | y | f | y | j |
| ftraceバッファをダンプする | z | ; | w | z |
| BPFスケジューラのデバッグダンプ | D | ? | ? | ? |
| コンソール上でカーネルログメッセージを再生する | R | ? | ? | ? |
| BPFスケジューラを無効にしてCFSに戻す | S | ? | ? | ? |
+コマンドの出力例: SysRqh
sysrq: ヘルプ: loglevel(0-9)、reboot(b)、crash(c)、terminate-all-tasks(e)、memory-full-oom-kill(f)、kill-all-tasks(i)、thaw-filesystems(j)、sak(k)、show-backtrace-all-active-cpus(l)、show-memory-usage(m)、nice-all-RT-tasks(n)、poweroff(o)、show-registers(p)、show-all-timers(q)、unraw(r)、sync(s)、show-task-states(t)、unmount(u)、force-fb(v)、show-blocked-tasks(w)、dump-ftrace-buffer(z)、dump-sched-ext(D)、replay-kernel-logs(R)、reset-sched-ext(S) 構成
この機能は、カーネル構成のコンパイル時オプションCONFIG_MAGIC_SYSRQ [ 4 ]とsysctlカーネルパラメータkernel.sysrqの両方によって制御されます。
新しいカーネル(2.6.12以降[ 10 ])では、マジックSysRqキーの使用方法をより細かく制御できます。[ 11 ]これらのマシンでは、 /proc/sys/kernel/sysrqに書き込まれる数値は0、1、または1より大きい数値で、許可する機能を示すビットマスクです。Ubuntuでは、この値は起動時に/etc/sysctl.d/10-magic-sysrq.confで定義された値に設定されます。
用途
ジャーナリングされたファイルシステムの登場以前は、マジック SysRq キーの一般的な使用法は、ロックされた Linux コンピュータを安全に再起動すること (ニーモニックREISUBで示されるキー押下のシーケンスを使用) であり、これによりファイルシステムが破損するリスクが軽減されました。最近のファイルシステムでは、同期とアンマウントはフラッシュされていないデータをディスクに強制的に書き込むために依然として有用ですが、ファイルシステムの破損を防ぐためにはもはや必要ありません (また、ロックアップがカーネルの不良状態によって引き起こされた場合、破損のリスクが増大する可能性があります)。[ 12 ] Ubuntu や Debian などのディストリビューションのkernel.sysrqのデフォルト値は、それぞれ176 (同期、アンマウント、および再起動の機能を許可) と 438 [ 13 ] (同じ機能に加えて、ログレベル、未加工、および nice-all-RT-tasks を許可) のままです。
過去には、X ウィンドウ システムがグラフィカル モードと入力デバイスを完全に制御していた ため、フリーズしたグラフィカルプログラムを強制終了する目的でも使用されていました。
テキストモードコマンドが含まれていないディストリビューションでは、キーシーケンス+ + でテキストコンソールに強制的に切り替えられる場合があります。システムによっては、 の代わりにまたはを使用する必要がある場合があります。 CtrlAltF1F2F3F1
Magic SysRqを呼び出す他の方法
マジックSysRqキーは元々、カーネルのデバッグ用キーボードハンドラーの一部として実装されていましたが、その機能はprocファイルシステム経由でも公開されており、ヘッドレスシステムやリモートシステムに拡張管理機能を提供するために広く使用されています。ユーザー空間プログラム(コマンドラインシェルなど)からは、 /proc/sysrq-trigger(例:)に書き込むことでSysRqにアクセスできます。[ 1 ]echo s > /proc/sysrq-trigger
多くの組み込みシステムにはキーボードが付属しておらず、代わりにシリアルコンソールを介して実行中のシステムへのテキスト入出力が行われます。シリアルコンソールからシリアルブレーク信号を送信し、その後に任意のキーを押すことで、Magic SysRq機能を呼び出すことができます。ブレーク信号の送信方法は、シリアルコンソールへの接続に使用する端末プログラムまたはハードウェアによって異なります。この機能を有効にするには、 sysctlオプションを設定する必要があります。[ 14 ]
Linuxデーモンsysrqd [ 15 ]とtcpconsole [ 16 ]は、プレーンテキストパスワードによる認証後、TCP接続を介してSysRq機能にアクセスする手段を提供します。hangwatch [ 17 ]デーモンは、システム負荷平均が一定の閾値を超える と、事前に設定されたSysRqトリガーを起動します。
Xenハイパーバイザーには、xm sysrqコマンドを介してホストドメインにマジックコマンドを送信する機能があります。[ 18 ]さらに、Xen準仮想コンソールからブレークシーケンス+に続けて目的のキーを送信することでSysRqコマンドを呼び出すことができます。 CtrlO
カーネルベース仮想マシン(KVM)ハイパーバイザーには、virsh send-keyコマンドを介してホストされたドメインにマジックコマンドを送信する機能があります。[ 19 ] 例:
virsh send-key --domain ドメイン名 --keycode KEY_LEFTALT KEY_SYSRQ KEY_S Chromebookにはキーボードはありますが、専用のSysRqキーはありません。代わりに+ (プラス)キーを使用します。 [ 20 ] [ 21 ] [ 22 ]ただし、一部のキーは異なる機能を持っています。[ 23 ] [ 24 ]AltVolumeUpAltF10
IBM Power Systemsサーバーは、ハードウェア管理コンソールから+に続けて目的のキーを押すことで、Magic SysRq 機能を呼び出すことができます。 CtrlO
IBM メインフレーム パーティションは、 3270または HMC で+に続けて目的のキーを押すことで Magic SysRq 機能を呼び出すことができます。 ^-
参照
- Stop-A 、 Sun MicrosystemsのOpen Firmware (OpenBoot)にアクセスするために使用するキー シーケンス
- コンソールサーバー
- KVMスイッチ
- システムコンソール
参考文献
- ^ a b「Linux Magic System Request Key Hacks」 . kernel.org . 2013年8月12日. 2017年5月21日閲覧。
- ^ Khamlichi, Mel (2010年10月18日)、「Use Magic SysRq Combination Key to Recover from a Frozen System in Linux」、Unixmen、2014年8月20日時点のオリジナルよりアーカイブ、 2014年9月21日閲覧。。
- ^ "linux/drivers/tty/sysrq.c at master · torvalds/linux" . GitHub . 2025年3月27日閲覧。
- ^ a b "linux/drivers/usb/serial/generic.c at 6537cfb395f352782918d8ee7b7f10ba2cc3cbf2 · torvalds/linux" . GitHub . 2025年3月27日閲覧。
- ^ "linux/include/linux/serial_core.h at 6537cfb395f352782918d8ee7b7f10ba2cc3cbf2 · torvalds/linux" . GitHub . 2025年3月27日閲覧。
- ^ 「ノートパソコンでのAlt+SysRq」。Super User 。 2023年7月25日閲覧。
- ^ 「Linux マジックシステム リクエスト キー ハック — Linux カーネル ドキュメント」。www.kernel.org 。
- ^ Barnes, Jesse (2008-11-07). 「DRM: i915: モード設定サポートの追加」 . Git (コミット). カーネル. 2013年8月31日閲覧。
- ^ 「Linux Magic System Request Key Hacks」 . 2021年9月13日. 2022年9月25日閲覧。
- ^ Calleja, Diego (2012年7月17日). 「Linux 2.6.12」 . Linux Kernel Newbies . 2013年8月31日閲覧。
- ^ "QA/Sysrq" . Fedoraプロジェクト. 2013年5月9日. 2015年4月9日閲覧。
- ^ 「ドキュメント: sysrq: 'S' 'U' を 'B' の前に置かないことを推奨します" . Git (コミット). カーネル. 2019-09-06.
- ^ 「4.9. Magic SysRqキーの使用制限」 . Debianセキュリティマニュアル. 2024年8月20日閲覧。
- ^ Turner, Glen; Komarinski, Mark F (2003-03-31). 「Magic SysRq key」 .リモートシリアルコンソールの使い方. Linuxドキュメンテーションプロジェクト. 2015年5月8日閲覧。
- ^ Danjou, Julien. 「sysrqd」 . GitHub (プロジェクト) . 2016年9月13日閲覧。
- ^ファン・ヒュースデン、フォルケルト。「tcpコンソール」。2017-08-31 のオリジナルからアーカイブ。2013 年 8 月 31 日に取得。
- ^モーガン、ポール。「ハングウォッチ」。GitHub 。2013 年 8 月 31 日に取得。
- ^ 「27. xmコマンドクイックリファレンス」、Enterprise Linux 5仮想化ガイド、RedHat 、 2013年8月31日取得
- ^ 「20.26. 指定されたゲスト仮想マシンへのキーストロークの組み合わせの送信 | 仮想化の導入および管理ガイド | Red Hat Enterprise Linux | 7 | Red Hat ドキュメント」 . docs.redhat.com . 2025年7月29日閲覧。
- ^ 「デバッグボタンのショートカット」。Chromium OSドキュメント。2018年10月22日閲覧。
- ^ 「変更 29110: CHROMIUM: sysrq: F10 をマジック sysrq キーとして扱う」 。 2016年7月11日閲覧。
- ^ 「Chromium OS dev: ChromiumOS カーネルの SysRq」 。 2016年7月11日閲覧。
- ^ 「システムハングのデバッグ支援」 Chromiumプロジェクト。2018年9月25日閲覧。
- ^ 「CHROMIUM: sysrq: sysrq-x に Chrome/X へのシグナル送信機能を追加」 。 2018年4月12日閲覧。
外部リンク
- 「Documentation/sysrq.txt」 . Linux (カーネルソースツリー). kernel.org . 2017年1月31日閲覧。
- 「Linuxマジックシステムリクエストキーハック」 . Linux (Linuxカーネルドキュメント). kernel.org . 2020年6月1日閲覧。
- Morton, Andrew ( 2013-03-13 ). 「/proc/sysrq-trigger 機能を追加する -mm ツリーへのカーネルパッチ:これにより、リモートユーザーが sysrq 機能を利用できるようになります」。2015-04-09 閲覧。
- Lawrence, Tony (2005-04-13). 「Linux上のMagic Sysrq Key」 . AP Lawrence . 2015年4月9日閲覧。
- Gall, Tom (2000-04-01). 「Magic sys request」 .開発者向け資料. IBM . 2007年5月27日時点のオリジナルよりアーカイブ. 2013年9月3日閲覧.