kexec/kdump失敗メモ

目標

Xenカーネルのクラッシュダンプを取ってGDBで解析する

kdumpとは

kexecを使って起動中のメモリ領域に、kernel panic時に移行する先のカーネルをロードさせておき、kernel panicした時にはその領域からリブートすることでクラッシュダンプを取っておける仕組み。

方針

いきなりXenカーネルを相手にやっても問題が複雑になってしまうので、普通のLinuxカーネルのダンプを取ることから始める

情報

基本的には
http://dsas.blog.klab.org/archives/50558228.html
Documentation/kdump/kdump.txt
の内容に従う。

環境

2.6.18-8.el5 CentOS5のデフォルトのカーネル
「方針」であげたページにある要件は、/boot/config-2.6.18-8.el5を見る限り充たしているはず。
ブートオプションには

kernel /vmlinuz-2.6.18-8.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
clock=pit noapic nolapic console=ttyS0,9600n8 crashkernel=64M@16M

というように

crashkernel=64M@16M

を追加。

http://dsas.blog.klab.org/archives/50558228.html
を参考に、バニラカーネルを、カーネルオプションをいじってからからビルド。
CONFIG_PHYSICAL_START=0x1000000という設定をmenuconfigで行った*1

  • kexec-tools + kdump patchを入れる

http://dsas.blog.klab.org/archives/50558228.html
の通り

試す

firstカーネルにて

kexec SECOND_KERNEL_BUILD_ROOT/arch/i386/boot/bzImage 必要なパラメータがずらずら

成功*2

  • 現在のカーネルにsecondカーネルをロードする?(どういう事なのかいまいちよくわかってない)

kexec -l SECOND_KERNEL_BUILD_ROOT/arch/i386/boot/bzImage 必要なパラメータがずらずら

成功。とりあえずエラーメッセージは出ない。

kexec -p SECOND_KERNEL_BUILD_ROOT/arch/i386/boot/bzImage 必要なパラメータがずらずら

すると

[root@dhcp-100-004 boot]# kexec -p bzImage
Could not find a free area of memory of 9000 bytes...
locate_hole failed

とエラー
ちなみに/proc/iomemは↓のようになっている


[root@dhcp-100-004 boot]# less /proc/iomem
00000000-0009f7ff : System RAM
00000000-00000000 : Crash kernel
0009f800-0009ffff : reserved
000a0000-000bffff : Video RAM area
000c0000-000c7fff : Video ROM
000ca000-000cafff : Adapter ROM
000f0000-000fffff : System ROM
00100000-7ceeffff : System RAM
00400000-005fed40 : Kernel code
005fed41-006d292f : Kernel data
7cef0000-7cefefff : ACPI Tables
7ceff000-7cefffff : ACPI Non-volatile Storage
7cf00000-7cffffff : System RAM
80000000-8000ffff : 0000:00:11.0
80010000-80017fff : 0000:00:0f.0
80018000-8001bfff : 0000:00:10.0
e8000000-e87fffff : 0000:00:0f.0
e8800000-e8800fff : 0000:00:10.0
f0000000-f7ffffff : 0000:00:0f.0
fec00000-fec0ffff : reserved
fee00000-fee00fff : reserved
fffe0000-ffffffff : reserved

エラーについて

https://lists.linux-foundation.org/pipermail/fastboot/2007-April/013841.html
kexec-toolsの不都合?

考えられる可能性

  • crashkerneオプションとCONFIG_PHYSICAL_STARTで指定している値がおかしい(これが一番怪しい)
  • kexec-toolsの不都合
  • 単純なミスをどこかで犯している

結構頑張ったんだけど最後のエラーが未だに解決できていません。
誰かエロい人教えてください。

*1:他の必要な設定もやってある

*2:ブート自体は失敗しているけど、kexecの機構は正しく働いているみたい