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しながら... みたいな。
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment