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 |