|
第一回・予習: proc ファイルのつくりかたと、初期化ルーチンツアー
|
|
いまいちまだ、何をやっていけばいいのかがよく
分からないのですが、まあそのうち見えてくるでしょう。
proc ファイルを一つ作りましょう。
サンプルの C です。
その Make ファイルです。
小さなもんです。
$make -f register_proc.mak register_proc.o
$insmod register_proc.o
以上のようにすれば、printk() によって、/var/log/messages に
カーネルからのログが出ます。
今回の見所としては、当たり前のことばかりですが。
- モジュールなんて、ただの .o(オブジェクトファイル)だ。
- /proc やモジュールのプログラムは、だいたい
自動化されているので簡単だ
- チェックサムの取り回しに注意
- 変なことするとハングするので、注意
おまけ: カーネルソース名所案内 - スタートアップ編。
深く見てゆけば、いろいろなことがわかるはず!(無責任)。
ソースは 2.2.13 と、ちょっと古いけれど、がまん。
-
アセンブリで書かれた初期化ルーチン 1: 最初は、16 ビットの
real mode で実行。どうにかして head.S へ跳ぶの
だけれど、追いきれないっす(NASM 語(Intel 語?)だし)。
だれかたのむ。
Thu Jul 13 2000: と言ってたら、Go! さんが助けてくれた。
- アセンブリで書かれた初期化ルーチン 2:
protected mode に入ったあとの初期化処理。これは AT&T 語
-
start_kernel(): C 言語で書かれた初期化ルーチン
-
init スレッドの生成: プロセス番号 1 として動く
/sbin/init は、ここで生成される
-
init(): ここで dup() と exec() が呼ばれ、/sbin/init が
起動されるので、あとは /etc/inittab のとおり。かくしてカーネルの
初期化は終わり、以降カーネルは、ただ割り込みを待ち続けるだけの
存在になる、と
|