2012-05-04

kdumpをubuntuで使ってみる

  1. 必要なもの
  2. ダンプするのに必要
    • kdump-tools
    • kexec-tools
    • linux-crashdump (UbuntuHPではこれだけでいいと記載..)
    解析するのに必要
    • crash
    • デバッグ情報が付加されたカーネル
  3. 設定する
    • /boot/grub/menu.lstを編集する
    • カーネルの起動オプションに、crashkernelを追加する。
      カーネルの再コンパイルは必要なし。
      /proc/iomemをみて、サイズとオフセットを指定する。(PC、カーネルの種類やディストリビューションによって異なるはず)
      ubuntu12.04は自動で設定してくれるかもしれない。
    • kdump-toolsの自動起動設定をする。
    • /etc/default/kdump-toolsを編集してダンプを有効にする。 セカンドカーネルを指定しないと、デフォルトのカーネルが使用されるようだ。 (デフォルトのカーネルが2重で読み込まれるイメージ)
      USE_KDUMP=1
      
      service命令を使うなどして、kdump-toolsを自動起動するようにしておく。 手動で起動するようにしておいても問題ない。
    • PCの再起動
    • カーネルオプションを有効にするため、再起動する。 kdumpが自動起動の場合/proc/iomemはこのようになる。
        01000000-016699ab : Kernel code
        016699ac-01ce4fff : Kernel data
        01dd3000-01f28fff : Kernel bss
        2e000000-35ffffff : Crash kernel
      
      失敗している場合は、/var/log/dmesgを見て、オプション文字列の打ち間違いや、確保しているサイズ、オフセットの確認する。
  4. ハングアップさせてみる。
  5. SysReqコマンドで擬似ハングアップができます。 全画面が停止状態になり、ディスクアクセスが始まります。(それなりに長い)
    Xorgを使用している場合は、(かなり動作が遅くなっていますが)平然とXorgが起動し始めたりします。
    ダンプが終わると、自動的に再起動します。
  6. 解析してみる
  7. 実は、デバッグシンボル付きのカーネルが必要。 ここから 解析に使うのカーネルを(パッケージから)インストール。
    これでようやく解析できる。
    sudo crash -S  /usr/lib/debug/boot/vmlinux-3.2.0-24-generic  dump.201205030221