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などの各プロトコルに依存したコード |
| ipc | System V IPC(共有メモリやセマフォ、メッセージ) |
| init | 各種初期化処理 |
| crypto | 暗号処理の共通関数 |
| block | ブロック型デバイス制御のための共通処理 |
| drivers | 各種デバイスを制御するためのドライバ |
| sound | サウンドドライバ |
| arch | CPUアーキテクチャに依存したコードがあり、サブディレクトリ以下に様々なCPU用のコード |
| include | カーネルのコンパイル時に参照する各種ヘッダーファイル |
モグモグさん
最初はよくわからないかもしれませんが、まずは気になるところから読んでみることをオススメします!

