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 | カーネルのコンパイル時に参照する各種ヘッダーファイル |
モグモグさん
最初はよくわからないかもしれませんが、まずは気になるところから読んでみることをオススメします!