[an error occurred while processing this directive] [an error occurred while processing this directive]

Linux カーネルを読もう (準備編)

カーネルを理解したって言っても、色々なレベルがあります。 読んで意味を理解するのと、その通り実装できるのとでは、本を読むのと書くの くらいの違いがあります。
ここでは、カーネルのどこで何をやっているのか把握して、OSの外側と内側の対 応がなんとなく 付くくらいの理解を目指してみます。

予備知識

カーネルを読むのに、C 言語に関する特別な知識は必要ありません。 関数、ポインタ、構造体が分かっていれば十分です。
その他に必要なのは、OS と (必要に応じて) アセンブラの知識です。 「プロセスとは」「仮想メモリとは」「スケジューラとは」「シグナルとは」あ たりを押さえておきましょう。

Web で公開されているカーネルのソースを読む

Web でお手軽に読めるようにしてみました。
http://funini.com/kei/kernel/kernel-2.6/

カーネルのダウンロード

もちろん、手元にソースコードを持ってくるほうが kernel.org から tarball を落としてくるのが一番楽です。
取ってきたら、tar コマンドで展開します。
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.27.tar.gz
$ tar zxvf linux-2.6.27.tar.gz
あるいは、Linus の git リポジトリからを使って取ってきてもいいです。 こちらの方が、最新のものが手に入ります。
$ git clone
http://www.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
http://

Csope で道案内させる

カーネルはたくさんのファイルで構成されているので、読んでいくには どの関数がどこに書かれているか、辿る必要があります。
このため、索引を作る/使うツールを用いると便利です。 ツールには csope, gtags, etags, global などがありますが、ここでは emacs + cscope を用いる方法を示します。
インストールは、
# yum install cscope
でおしまい。 あとは、.emacs に以下の記述を加えます。

M-x cscope-と入力してタブを押して、コマンド名から 知っておくべきキーは くらいですかね。

チュートリアル

init/main.c を開きます。
[an error occurred while processing this directive]