From: Itsuro O. <od...@va...> - 2007-09-28 00:03:33
|
Hi, first of all, I apologize for writing the answer in Japanese. mkexec/kernel の下に sym.lds というファイルが出来ているはずなので、 その内容を確かめてください。 このファイルは、カーネルソースのトップディレクトリにある System.map ファイルを参照して作られます。もしかしたら、System.map ファイルが ないのかもしれません。(実際にビルドしていないとできませんね。) その場合は、お使いのシステムの System.mapファイル(/bootの下にある と思います)をコピーして使ってください。 sym.lds が正しく出来れば、関数のアドレスが入っているはずです。 (crashmem_get は 入ってなくていいです。) 今回のは、おそらく、kallsyms_lookup_name のアドレスが入っていない のが原因だと思います。 あと、ミニカーネルの方ですが、initrd を使わない場合は、 「initrd なし」のコンフィグでビルドしてください。 「initrdあり」のコンフィグでビルドして、initrd を使わないと、 ミニカーネルの起動に失敗するバグがあります。(cvs 上では修正 されていますが、リリースはしていません。) Thanks. Itsuro Oda On Thu, 27 Sep 2007 20:08:43 +0900 "川谷宗之" <kaw...@gm...> wrote: > Hi all, > > > I'm trying to use mkdump but it does'nt work. Please give me > any help. > > > * Environments > - OS: Redhat Enterprise Linux 4 UP3 (2.6.9-34.EL) > - Kernel for minik: 2.6.9-34.EL > - mkdump: mkdump v3.0 > - H/W: Thinkpad X40 > > > > I've installed mkdump by following steps (according to README-v3). > > 1. Build Mini Kernel > - Got the kernel source for mini kernel > - Install from kernel-2.6.9-34.EL.src.rpm (by using rpm and rpm build) > - Build static linked mini kernel. > - cp minik/kernel/minik_dump.c /usr/src/linux-2.6.9/init > - modified /usr/src/linux-2.6.9/init/Makefile (add minik_dump.o) > - make > - copy /usr/src/linux-2.6.9/arch/i386/boot/compressed/vmlinux.bin > /boot/vmlinux-2.6.9-minik.bin > > 2. Build MKEXEC kernel > - skipped (according to the README-v3) > > 3. Build MKEXEC Kernel Module > - modify /usr/src/modules/mkexec/kernel/Makefile > - ARCH=i386 > - KTYPE=26 > - TOPDIR=/usr/src/linux-2.6.9 > - THISDIR=/usr/src/modules/mkexec/kernel > - KVER=2.6.9-34.EL > - make symbolic link as follows. > - /usr/src/modules/mkexec/include/asm => > /usr/src/modules/mkexec/include/asm-i386 > - make > - make install (This line is not described in README-v3, but I think this > may be needed to copy mkexec.ko...) > > 4. Make initrd image > - skip (do not use initrd image) > > 5. Run Mini Kernel Dump > - specify the dump device. > - echo "0x300006" > /proc/mkexec/dumpdev (result of "raw -aq" is > /dev/raw/raw1: bound to major 3, minor 6) > - specify the parameters. > - echo "console=tty0 console=ttyS0,115200n8r lpj=2367488 no-hlt" > - specify the path to mini kernel > - echo "/usr/boot/vmlinux-2.6.9-minik.bin" > - specify the memory size. > - echo 16 > /proc/mkexec/mem > - specify the initrd image path > - skip (do not use initrd image) > - write stats. > - echo 9 > /proc/mkexec/stats > > === Then kernel panic occurred. === > > According to the "/var/log/messages" (attached to this mail), mkdump > does'nt work well because the > symbol "crashmem_get" is not found. I know that "crashmem_get" is defined > only in patches included > in the package. So it seems natural not to be found the symbol > "crashmem_get" (I didn't use patch because, > according to README-v3, it is not necessary. I've tried the patch once but > it failed). > > Please give me any suggestions, please. If more information needed, I can > show you. > > Thanks a lot for your help. > > > ---- > Muneyuki KAWATANI > kaw...@wd... -- Itsuro ODA <od...@va...> |
From: <kaw...@gm...> - 2007-09-28 10:15:27
|
Hi, ODA-san, This e-mail is written in Japanese because, this is the reply for an e-mail written in Japanese. I'm so sorry. 無事にmkd_loadの実行に成功いたしました.ご指摘いただいた 原因とは少し違いましたが,どうやら,kernelをビルドしたときに生成 されたSystem.map内のアドレスと実際のkernel内のシンボルの アドレスが不一致だったために起こったようです. /boot/System.map-2.6.9-34.ELをSystem.mapとしてコピーし, ビルドしなおしたところうまく行きました. (mkexecをビルドするときはkernelをビルドしたときのものを使用 してしまっていました) しかし,さらに問題がでています.下記のコマンド # "echo 2 > /proc/mkexec/stats" を実行すると,システムが停止し,1秒ぐらいでリブートします. しかもダンプは取得できていませんでした. (odでブロックデバイスを読んでも何も変化が無く,mkd_saveも skipしたといわれました) 恐らくTonyさんが2006-08-12 00:28のメールで書かれていた のと同じ症状ではないかと思われます. もし,解決策をご存知でしたらご教授願えますでしょうか. #Tonyさんの時は解決したのでしょうか.その後,MLにメールが #飛ばされていないようでしたが・・・^^; 下記はecho 2 > /proc/mkexec/stats実行直前の/proc/mkexec配下のファイルの内容です. --------------------------- dumpdev : 0x300006 initrd : (blank) mem : 16 parameter : ro console=tty0 lpj=2367488 no-hlt dump_delay=30 path : /boot/vmlinux-2.6.9-minik.bin stats : 1 --------------------------- 下記はmkd_load実行時のコンソールログです. --------------------------- start mkd_load. 'mkexec.ko' is loaded. '/boot/vmlinux-2.6.9-minik.bin' is loaded. --------------------------- /var/log/messagesには何もログが出力されておりませんでした. ソースにprintkを埋め込んでトレースした結果,mkexec_main.c:687 のpanic()までコールされているようです(tmp_buf[0]の値は2). 本来であればこの後mini kernelがブートされるのだと思いますが, ブートまでたどり着いていないように見受けられます. 仮説として,panic()がコールされた後なんらかのコールバックが 呼ばれ,その中でmini kernelがブートされると思い, * どのコールバックが呼ばれるのか * コールバックは呼ばれているのか についてトレース中ですが,そこから解析が進んでいません. 他に必要な情報があれば提示できますので,ご指示ください. #どこどこに処理が渡っているか,引数に何が渡されているか,などの #トレースを実施する事もできます. 以上,質問ばかりで大変申し訳ございませんがよろしく お願いいたします. ---- Muneyuki KAWATANI 07/09/28 に Itsuro ODA<od...@va...> さんは書きました: > Hi, > > first of all, I apologize for writing the answer in Japanese. > > mkexec/kernel の下に sym.lds というファイルが出来ているはずなので、 > その内容を確かめてください。 > このファイルは、カーネルソースのトップディレクトリにある System.map > ファイルを参照して作られます。もしかしたら、System.map ファイルが > ないのかもしれません。(実際にビルドしていないとできませんね。) > その場合は、お使いのシステムの System.mapファイル(/bootの下にある > と思います)をコピーして使ってください。 > sym.lds が正しく出来れば、関数のアドレスが入っているはずです。 > (crashmem_get は 入ってなくていいです。) > 今回のは、おそらく、kallsyms_lookup_name のアドレスが入っていない > のが原因だと思います。 > > あと、ミニカーネルの方ですが、initrd を使わない場合は、 > 「initrd なし」のコンフィグでビルドしてください。 > 「initrdあり」のコンフィグでビルドして、initrd を使わないと、 > ミニカーネルの起動に失敗するバグがあります。(cvs 上では修正 > されていますが、リリースはしていません。) > > Thanks. > Itsuro Oda |
From: Itsuro O. <od...@va...> - 2007-09-30 23:53:14
|
川谷様 VA Linux 小田です。お世話になっております。 mkexec モジュールをロードしたときに netdump_func に do_minik_netdump関数 のアドレスを入れています。そこが仕掛けに当たります。 panic() の後は、BUG() => die() -> try_crashdump() -> netdump_func(== do_minik_netdump) -> do_minik_dump() と処理が進みます。 die()のところで、oopsメッセージ(レジスタなど)、do_minik_dump()まで くれば、mkexec/kernel/minik_dump.c の printk("minik: Mini Kernel Dump Start. dump cpu = %d\n", cpu); のメッセージが出ているはずですが? ここまでくれば、だいたい mini kernel の起動まで行っていると見ていいです。 > /var/log/messagesには何もログが出力されておりませんでした. もちろん、上記は、/var/log/messages には出ませんので、シリアルコンソール をつないで、シリアルコンソール側のログで確認するか、画面を目をさらの ようにして見るかしてください。 よろしくお願いします。 On Fri, 28 Sep 2007 19:15:22 +0900 "川谷宗之" <kaw...@gm...> wrote: > Hi, ODA-san, > > This e-mail is written in Japanese because, this is the reply for > an e-mail written in Japanese. I'm so sorry. > > 無事にmkd_loadの実行に成功いたしました.ご指摘いただいた > 原因とは少し違いましたが,どうやら,kernelをビルドしたときに生成 > されたSystem.map内のアドレスと実際のkernel内のシンボルの > アドレスが不一致だったために起こったようです. > /boot/System.map-2.6.9-34.ELをSystem.mapとしてコピーし, > ビルドしなおしたところうまく行きました. > (mkexecをビルドするときはkernelをビルドしたときのものを使用 > してしまっていました) > > > しかし,さらに問題がでています.下記のコマンド > > # "echo 2 > /proc/mkexec/stats" > > を実行すると,システムが停止し,1秒ぐらいでリブートします. > しかもダンプは取得できていませんでした. > (odでブロックデバイスを読んでも何も変化が無く,mkd_saveも > skipしたといわれました) > 恐らくTonyさんが2006-08-12 00:28のメールで書かれていた > のと同じ症状ではないかと思われます. > もし,解決策をご存知でしたらご教授願えますでしょうか. > > #Tonyさんの時は解決したのでしょうか.その後,MLにメールが > #飛ばされていないようでしたが・・・^^; > > 下記はecho 2 > /proc/mkexec/stats実行直前の/proc/mkexec配下のファイルの内容です. > --------------------------- > dumpdev : 0x300006 > initrd : (blank) > mem : 16 > parameter : ro console=tty0 lpj=2367488 no-hlt dump_delay=30 > path : /boot/vmlinux-2.6.9-minik.bin > stats : 1 > --------------------------- > > 下記はmkd_load実行時のコンソールログです. > --------------------------- > start mkd_load. > 'mkexec.ko' is loaded. > '/boot/vmlinux-2.6.9-minik.bin' is loaded. > --------------------------- > > /var/log/messagesには何もログが出力されておりませんでした. > > > > ソースにprintkを埋め込んでトレースした結果,mkexec_main.c:687 > のpanic()までコールされているようです(tmp_buf[0]の値は2). > 本来であればこの後mini kernelがブートされるのだと思いますが, > ブートまでたどり着いていないように見受けられます. > > 仮説として,panic()がコールされた後なんらかのコールバックが > 呼ばれ,その中でmini kernelがブートされると思い, > > * どのコールバックが呼ばれるのか > * コールバックは呼ばれているのか > > についてトレース中ですが,そこから解析が進んでいません. > > > 他に必要な情報があれば提示できますので,ご指示ください. > #どこどこに処理が渡っているか,引数に何が渡されているか,などの > #トレースを実施する事もできます. > > > 以上,質問ばかりで大変申し訳ございませんがよろしく > お願いいたします. > > ---- > Muneyuki KAWATANI > > > 07/09/28 に Itsuro ODA<od...@va...> さんは書きました: > > Hi, > > > > first of all, I apologize for writing the answer in Japanese. > > > > mkexec/kernel の下に sym.lds というファイルが出来ているはずなので、 > > その内容を確かめてください。 > > このファイルは、カーネルソースのトップディレクトリにある System.map > > ファイルを参照して作られます。もしかしたら、System.map ファイルが > > ないのかもしれません。(実際にビルドしていないとできませんね。) > > その場合は、お使いのシステムの System.mapファイル(/bootの下にある > > と思います)をコピーして使ってください。 > > sym.lds が正しく出来れば、関数のアドレスが入っているはずです。 > > (crashmem_get は 入ってなくていいです。) > > 今回のは、おそらく、kallsyms_lookup_name のアドレスが入っていない > > のが原因だと思います。 > > > > あと、ミニカーネルの方ですが、initrd を使わない場合は、 > > 「initrd なし」のコンフィグでビルドしてください。 > > 「initrdあり」のコンフィグでビルドして、initrd を使わないと、 > > ミニカーネルの起動に失敗するバグがあります。(cvs 上では修正 > > されていますが、リリースはしていません。) > > > > Thanks. > > Itsuro Oda -- Itsuro ODA <od...@va...> |