15.2 カーネルソースの構造

ソースツリーの最上ディレクトリである /usr/src/linux には、 (次のような)多くのディレクトリがある。

<#if output="html">

(訳注: JF サイト上でご覧の場合、一部のファイルしか表示されません。 ソース全体を見るには、 日本語訳についてを参照してください。) <#/if>

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 スクリプト)が含まれている。
http://archive.linux.or.jp/JF/JFdocs/The-Linux-Kernel-15.html#ss15.1

前へ 次へ