ソースの入手とバージョン管理
まずLinux Kernel をハックするに当たり、必要なものはソースコードである。ソースコードは普通にネット上からダウンロードできるが、それはある種安定版で開発者向けではない。不安定だが最新のソースコードを入手しなければ、まともな開発はできない。
そこで、Linux のバージョンを管理するために作られたGit と呼ばれるバージョン管理ソフトを導入し、ソースコードを入手する。
Git の導入
Git はLinux のバージョン管理を行うために、Linux の開発者であるLinus 氏がわずか数日で作った。特徴として、高速に動作することや、メーリングリストに投げることを考えて作られた機能等がある。
Fedora ではroot 権限でyum install global(Debian やUbuntu はapt-get installgit-core) でインストール可能であるが、今回はソースファイルからインストールしてみる。
以下インストールまでのコマンドを記す。コマンドを実行するのは$の行である。
//ソースファイルのダウンロード。
$ wget http://tamacom.com/global/global-5.9.2.tar.gz
//解凍。
$ tar zxvf global-5.9.2.tar.gz
//コンパイルのため解凍後に生成されたディレクトリに移動。
$ cd global-5.9.2
//設定を行う。
$ ./configure
//コンパイル。
$ make
//インストール。
$ make install
ソースファイルに関してはhttp://www.gnu.org/software/global/のDownloadのページでダウンロードしても良い。
これでGit の導入は完了したが、エディタであるvi を連動できるように拡張しておくと、この後非常に便利なのでプラグインを追加する。
//vim のプラグインを入れるディレクトリを、hiroki ユーザーの中に作る。
$ mkdir -p /home/hiroki/.vim/plugin
//global のソースに混じって存在するgtags.vim というプラグインをコピーする。
$ cp gtags.vim /home/hiroki/.vim/plugin/
ユーザー名に関しては自分のものを使うこと。これにより、vi のコマンドが新しく追加されるが、それに関しては後ほど詳しく説明するのでここでは扱わない。
Linux Kernel のソースコードを入手する
いよいよLinux のソースコードをダウンロードする。注意しておくことがいくつかあり、まずソースコード自体はそれほどでもないが、コンパイルなどをすると中間生成ファイルなどの関係で、5~7GB 程度の空き容量が必要になるので、そこはちゃんと容量を空けておくこと。
Linux のソースコードは、バージョン管理できるツリーという状態でダウンロードする。
//hiroki ユーザーディレクトリ内にsrc ディレクトリを作る。
$ mkdir /home/hiroki/src
//カレントディレクトリの移動。
$ cd /home/hiroki/src/
//ツリーの取得。linux-2.6 と言うディレクトリが生成されその中にソースファイルが入る。
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
git clone アドレスというコマンドで、開発ツリーのダウンロードができる。今回ダウンロードしたのは最も有名なもので、他にもlinux-next 等のツリーもダウンロードできる。
クロスリファレンスの作成
さて、これで開発の準備は整ったが、良く考えてほしい。1000 万行あるかというソースコードの中で、目的の関数や宣言をどうやって探すのか。検索しても良いが、検索は多少時間がかかるので、あらかじめ辞書を作って、簡単にジャンプできるように準備しておく。
//ツリーのルートディレクトリに移動。
$ cd linux-2.6
//クロスリファレンスの作成。
$ gtags -v
gtags はクロスリファレンスの作成を行うコマンドで、-v でどのファイルを読んでいるかが分かる。初めは時間がかかるのでこれをしておくと安心できるだろう。次回以降クロスリファレンスを更新したい場合は-i をつけることで最低限の作業で終了する。