地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【Linux】カーネルソースを読む勘所

arch arch サブディレクトリには、アーキテクチャ(architecture)固有の カーネルコードが含まれている。 さらに深いサブディレクトリがあり、たとえば、i386 や alpha と いったサポートするアーキテクチャごとに分かれている。

include include サブディレクトリには、カーネルコードをビルドするのに必要な インクルードファイル(include files)の大部分が含まれている。 さらに深いサブディレクトリもあり、サポートするアーキテクチャごとのファイルが含 まれている。include/asm サブディレクトリは、たとえば include/asm-i386 といったそのアーキテクチャに必要な実際の include ディレクトリへのソフトリンク(シンボリックリンク)となっている。 アーキテクチャを変更するには、カーネルmakefile を編集し、Linux カーネル 設定プログラムを再実行する必要がある。

init このディレクトリには、カーネルの初期化(initialization)コードが含まれているの で、カーネルの動作の仕組みをこれから見ようとする場合はよい出発点になる。

mm このディレクトリには、メモリ管理(memory management)コードのすべてが含まれてい る。アーキテクチャ固有のメモリ管理コードについては、arch/i386/mm/fault.c といった arch/*/mm ディレクトリ以下にある。

drivers システム上のデバイスドライバ(device drivers)は、すべてこのディレクトリに置かれ ている。 このディレクトリはさらに再分割され、block といったデバイスドライバ のクラスごとに分かれている。

ipc このディレクトリには、カーネルのプロセス間通信(inter-process communications)に 関するコードが含まれている。

modules このディレクトリは、ビルドされたモジュール(module)を保存するためだけに使用され ている。

fs ファイルシステム(file system)コードのすべてはここに置かれている。 このディレクトリはさらに再分割されていて、vfat や ext2 と いったサポートするファイルシステムごとに分かれている。

kernel 主要なカーネル(kernel)コードが置かれている。ここでも、アーキテクチャ固有の カーネルコードは、arch/*/kernel にある。

net カーネルのネットワーク(network)関係のコードが置かれている。

lib このディレクトリには、カーネルのライブラリ(library)コードが含まれている。 アーキテクチャ固有のライブラリは、arch/*/lib で見つけることができる。

scripts このディレクトリには、カーネルを設定するときに使用されるスクリプト(script) (たとえば、awk や tk スクリプト)が含まれている。