RHELカーネルクラッシュダンプの解析を行うための
環境準備と簡単なcrashツールの利用方法です。RHEL7を前提としています。
事前準備
以下の3つが必要です。
* crashユーティリティ
* カーネルクラッシュダンプ(以降クラッシュダンプ)
* カーネルのデバッグ情報(debuginfo、debuginfo-common)
crashユーティリティのインストール
yum install crash
クラッシュダンプ
デフォルトでは以下に出力されます。
/var/crash/<timestamp>/vmcore
debuginfoのインストール
debugパッケージのリポジトリを検索し有効に設定します。
subscription-manager repos --list | grep -i server-debug-rpms
subscription-manager repos --enable=rhel-7-server-debug-rpms
debuginfoとdebuginfo-commonパッケージをインストールします。
バージョンはクラッシュダンプのバージョンと完全一致させる必要があります。
以下インストールコマンドでは uname を利用しカーネルバージョン等の情報を動的に取得しています。
yum install kernel-debuginfo-$(uname -r) kernel-debuginfo-common-$(uname -m)-$(uname -r)
リポジトリが有効に出来ない場合は以下のサイトからダウンロードします。(サブスクリプションが必要です)
https://access.redhat.com/site/downloads/
crashユーティリティの実行
crash /usr/lib/debug/lib/modules/<kernel>/vmlinux /var/crash/<timestamp>/vmcore
crashユーティリティの使い方
はじめにカーネルモジュールのデバッグ情報を全て読み込んでおきます。bash
crash> mod -S
主なコマンドです。
コマンド | 内容 | サンプル |
help | コマンド一覧の表示 | help コマンド名 でコマンド詳細を表示 |
log | ログ確認 | – |
bt | バックトレースの確認 | bt -a カレントプロセスのみを表示 |
ps | 実行されているプロセスの確認 | ps -A アクティブプロセスのみ表示 |
fuser | ファイルを利用しているプロセスの確認 | fuser /mntnX |
files | プロセスが参照しているファイルを表示 | foreach files -R /mnt/tool 指定フォルダ配下のファイルを表示する |
以上