[an error occurred while processing this directive]
[an error occurred while processing this directive]
Linux カーネルを読もう (準備編)
カーネルを理解したって言っても、色々なレベルがあります。
読んで意味を理解するのと、その通り実装できるのとでは、本を読むのと書くの
くらいの違いがあります。
ここでは、カーネルのどこで何をやっているのか把握して、OSの外側と内側の対
応がなんとなく
付くくらいの理解を目指してみます。
予備知識
カーネルを読むのに、C 言語に関する特別な知識は必要ありません。
関数、ポインタ、構造体が分かっていれば十分です。
その他に必要なのは、OS と (必要に応じて) アセンブラの知識です。
「プロセスとは」「仮想メモリとは」「スケジューラとは」「シグナルとは」あ
たりを押さえておきましょう。
Web で公開されているカーネルのソースを読む
カーネルのダウンロード
もちろん、手元にソースコードを持ってくるほうが
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-と入力してタブを押して、コマンド名から
知っておくべきキーは
- C-c s c: 上へ
- C-c s C: 下へ
- C-c s g:
- C-c s G:
くらいですかね。
チュートリアル
init/main.c を開きます。
[an error occurred while processing this directive]