Wednesday, 17 May 2006

Linux 2.6 Kernel 読み and 木曜日から東京



今日は大学院の授業で、Kernel 読み。遅々としてしか進まない。要領の悪さもあるが、まぁ、立ち上げに時間がかかるものなんだよ。もっと学生が頑張れ。先生にやらせるな、みたいな。



それはともかく、 今週の木曜日から東京で、日曜日までいる予定です。



QEMU + gdb + gtags + Emacs で読んでいくのだが、



   menuconfig してからgtags しないとアウト

   gtags は作るのに数時間かかる

   Documentation directory は役にたちません

   WWW 上の情報も、役にたたない。ほとんどないし

   2.6 kernel は、architecture 毎のアセンブラ

    とinlineの嵐なので、

       gcc -E とか gcc -S するknow how が必要

      (make -n が便利)

   この手のfile間で飛びまくるソース読みにvi は無力、

       Emacs を使うべし

       kernel hack する時は、vi でもいいんだけど

   gtags も、構造体経由のindirect call には無力

       (file->ops->write() とか)

   gdb の target remote では、binary が

      local/remoteで一致していること

   OS の授業の思い出して、kernel の機能と対応づける

   使い分けられている lock/semaphore の理解



などなどの know how を一つ一つ確認していくのが(僕が)疲れる。まだ、まともに gdb で kernel trace できないのが neck だ。



2.4 は、もっとやさしかったが、2.6 でasmとかfget_light/fput_lightとかcurrentがthread用のmacroになったとか、なんとかで結構複雑。もっとも、2.6 も二回目なはずだが、なんか、結構、変わってるな〜 今回は、tcp 周辺を読む予定だが、全然、たどりついてません。7 layers ではないんだが、protocol(tcp)/transport(ip)/raw(ethernet)のlayerは、あるからなぁ。



でも、今月末にまとめて読んで、それで終りのつもり。こんなの毎週やってたら死んじゃうよ。



「linux 2.6 kernel を読むための1 CD Linux」ってのを作れば良いんじゃないかと思う。Virtual PC 上で動作するLinux上のQEMUで動作するLinux kernel をgdb でtraceしながら... みたいな。



No comments: