Magic SysRq keyで応答の無いカーネルにシグナルを送る

Facebooktwittergoogle_plusmail

kdumpでカーネルクラッシュ時にクラッシュダンプを取得する方法がありました。

CentOS 7でクラッシュダンプ(kdump)を有効にする

今回はカーネルクラッシュはしないけど、何らかの原因でLinuxがフリーズした場合に対処するMagic SysRq keyの設定です。

What is the SysRq Facility and how do I use it?
https://access.redhat.com/articles/231663
※RHNアカウントでログインしないと全文読めません。

  • SysRq keyの有効
  • RHELではセキュリティの観点からデフォルトは無効とのことです。

    または

    起動時に有効

  • SysRq keyの無効
  • または

CentOS 7(kernel 3.10.0-957.10.1.el7.x86_64)で検証しましたが、デフォルトは”16″でした。

  • SysRqイベントを送る方法
  • 下記のコンビネーションキーでカーネルにシグナルを送信することができます。
    Alt+PrintScreen+[CommandKey]

    CommandKeyは下記になります。

    m – dump information about memory allocation

    t – dump thread state information

    p – dump current CPU registers and flags

    c – intentionally crash the system (kernel panic). Useful for capturing a vmcore through kdump.

    s – immediately sync all mounted filesystems

    u – immediately remount all filesystems read-only

    b – immediately reboot the machine

    o – immediately power off the machine (if configured and supported)

    f – start the Out Of Memory Killer (OOM)

    w – dumps tasks that are in uninterruptable (blocked) state – [Introduced with kernel 2.6.32]

    例えばAlt+PrintScreen+cで意図的にカーネルクラッシュを引き起こしてkdump経由でクラッシュダンプを生成します。

    またキー入力が有効なら下記のコマンドで同様のことができます。

SysRqでシグナルを送信されるとその結果はカーネルのリングバッファとシステムコンソールに出力され、さらにsyslog経由で/var/log/messagesに記録されます。
ただ、カーネル応答が無い場合にはsyslogが動作していない可能性が高いので、そうなるとシステムコンソールで確認するしか無いです。

Leave a Reply