はじめに
本稿では、Linux カーネル (アップストリーム1) のソースコードを読む方法についてご紹介します。初学者向けの内容であり、カーネルソースを読み解くテクニックと言った類のものではありません。
ソースコードを読む方法
Linux カーネルは、オープンソースであるため、ソースコードが公開されており自由に読むことができます。読む方法としては、主に次の二通りです。
- ローカルマシンにソースコードを落として読む
- ブラウザ上から読む
ローカルマシンに落としてから読む
ローカルマシンにソースコードを落とす方法は、色々考えられますが、本稿では、git コマンドからソースコードを落とす方法をご紹介します。git を使用することで、カーネルバージョンのタグ切り替えや、コミットログの確認ができて便利です。次の何れかを実行すれば OK。
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
$ git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
$ git clone https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux.git
ブラウザ上から読む
ブラウザ上から読むには、次の何れかを開くだけです。
- kernel/git/torvalds/linux.git - Linux kernel source tree
- GitHub - torvalds/linux: Linux kernel source tree
- Linux source code (v5.6.3) - Bootlin
おわりに
ソースコードを読む方法についての紹介は以上ですが、参考までにということで、次のリンクをご紹介します。カーネルソースを読む際にどこから読めば良いのか分からない時に参考になります。たとえば、mm ディレクトリならメモリ管理関連のコードが含まれていると言った、ディレクトリ構造の説明が記載されています。
あわせて読みたい
-
アップストリームとは、Linux カーネルの本家本元のソースツリーを指します。実は Ubuntu、RHEL や CentOS などのディストリビューションに含まれるカーネルソースは、このアップストリームのカーネルとは別物です (完全に同じでない)。またディストリビューション間でも差分があります。そのため、たとえば RHEL で発生したバグについて、厳密な調査をしたいなどの場合はアップストリームカーネルではなく、RHEL カーネルのソースコードで調査する必要があります。↩