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