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