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...> |