サイト名変更・お引越しのお知らせ

Linuxカーネルのソースコードの読み方とディレクトリ構造(ソースツリー)を解説

Linuxカーネルに興味がある方向けに、ソースコードの読み方とディレクトリ構造を解説します。

モグモグさん

具体的なソースリーディングを解説は本記事ではしておりません。

この記事でわかること
  • Linuxカーネルのソースコードを読む方法がわかる
  • Linuxカーネルのディレクトリ構造とそれぞれの役割がわかる

Linuxカーネルのソースコードの読み方

LinuxカーネルのソースコードはOSSなので誰でも見ることができます。

方法は主に2つです。

  • ソースをローカルに落とす
  • WEBからアクセスする

ソースをローカルに落とす

Linuxカーネルのソースコードは、Githubにあるのでcloneをしてローカルに落とすことができます。

httpsで実行

$ git clone https://github.com/torvalds/linux.git

sshで実行

$ git clone git@github.com:torvalds/linux.git

WEBからアクセスする

LinuxカーネルのソースコードにWEBからアクセスも可能です。

Githubからアクセス

先ほども紹介したGithubページにアクセスが可能です。

karnel.orgのIndexページからアクセス

karnel.orgのページからアクセスが可能です。

Linuxカーネルのディレクトリ構造(ソースツリー)と役割

Linuxカーネルのソースコードは、とてつもなく大きいのでざっとディレクトリ構造(ソースツリー)と役割を解説します。

主なディレクトリと役割

ディレクトリ概要・役割
kernelカーネルの動きを制御する基本機能
mmカーネルのメモリ管理
fsディレクトリ直下に仮想ファイルシステムがあり、サブディレクトリ以下に各種のファイルシステム
netネットワークプロトコルに関連するコード群があり、サブディレクトリ以下にTCP/IPなどの各プロトコルに依存したコード
ipcSystem V IPC(共有メモリやセマフォ、メッセージ)
init各種初期化処理
crypto暗号処理の共通関数
blockブロック型デバイス制御のための共通処理
drivers各種デバイスを制御するためのドライバ
soundサウンドドライバ
archCPUアーキテクチャに依存したコードがあり、サブディレクトリ以下に様々なCPU用のコード
includeカーネルのコンパイル時に参照する各種ヘッダーファイル

モグモグさん

最初はよくわからないかもしれませんが、まずは気になるところから読んでみることをオススメします!