ソース・コードが自由に入手できるLinuxならではの楽しみが,カーネルをコンパイルして,独自のシステムに仕立てられること。例えば,より新しいカーネルのソース・コードを入手し,コンパイルして導入すれば,最新機能をいち早く試せる。初めて「カーネル・コンパイル」に挑戦する人に向けて,カーネルを安全に導入する方法を具体的に解説する。今回は,実際にカーネルをコンパイルして導入する手順を紹介する。

 前回は主に,カーネル・コンパイル前の心構えや注意点を説明した。ディストリビュータやシステム・ベンダーのサポートを受けている人は,カーネル・コンパイルを実行するとサポート対象外になることや,実用しているシステムではなく試験用あるいは予備のシステムで事前に試してから実行することなどを述べた。

 今回は,実際にカーネルをコンパイルして導入する手順を紹介する。

カーネルの導入方法

 カーネルのコンパイルに必要な手順を図1に示す。以下では,この手順に沿ってカーネルをコンパイルしていこう。


●オリジナルのカーネル・ソースを入手する
●カーネルのソース・コードを展開する
○(必要なら)パッチを適用する
○(必要なら)既存のカーネルの設定を反映させる
●/usr/src/linuxへのシンボリック・リンクを作成する
●カーネルを設定する
●コンパイルを実行する
○(必要なら)カーネルに動的に組み込むモジュール(ローダブル・
モジュール)を/lib/modules/<カーネルのバージョン番号>以下に格納する
●カーネルに導入する
●ブート・ローダーに登録する
●システムを再起動して起動することを確認する

図1●オリジナルのカーネルのソース・コードを導入する場合の手順
これらの手順のうち,「パッチの適用」と「既存のカーネルの設定の反映」と「ローダブル・モジュールの格納」は必要なければ,実施しなくてよい。

 前回は,カーネル・ソース入手時の注意点を主に説明したが,具体的な入手方法には触れなかった。カーネル開発グループが配布しているオリジナルのカーネル・ソースは,サイト「The Linux Kernel Archives」(写真1)からダウンロードできる。

写真1●「The Linux Kernel Archives」のサイト
写真1●「The Linux Kernel Archives」のサイト
URLは,http://www.kernel.orgである。例えば,このサイトから「linux-2.6.15.1.tar.bz2」を入手する場合は,画面中央のリンク「http://www.kernel.org/pub/」から「http: //www.kernel.org/pub/linux/」→「 kernel/」→「v2.6/」とたどって開いたディレクトリからダウンロードする。
[画像のクリックで拡大表示]

 2006年1月下旬時点の記事作成時の最新版は,「linux-2.6.15.1(カーネルのバージョン2.6.15.1)」である(2007年10月時点では2.6.23,関連記事)。

ソース・コードの展開

 入手したカーネルは,カーネルのコンパイルだけを考えれば,どこに展開しても構わない。しかし,慣習として/usr/srcディレクトリに展開されるものとなっている。カーネル・ソースを使うプログラムでは,このディレクトリを“決め打ち”しているものもある*1

 また,何かのトラブルがあった時に「カーネル・ソースはどこだ?」とさまざまなディレクトリ内を探し回ることになるのも面倒なので,慣習に従い/usr/srcディレクトリ内に置くことにしよう。

 カーネルを収録した日経Linux(2006年3月号)の付録メディアを持っていて,付録メディアから/usr/srcディレクトリにカーネル・ソースをコピーする場合は,


# cp
/mnt/cdrom/article/special/linux-2.6.15.1.tar.bz2 .

と入力する。続いて,


# tar jxf linux-2.6.15.1.tar.bz2

と入力してソース・アーカイブを展開する。展開したときに,「linux-バージョン番号」という形式の名前のディレクトリを作る。今回の例では,linux-2.6.15.1ディレクトリができる。

シンボリック・リンクの作成

 これをこのまま/usr/srcに作っておいて,このディレクトリからカーネル・ソース・ツリー(動作中のシステムのカーネル・ソースの登録場所)である/usr/src/linuxディレクトリに,


# ln -s linux-2.6.15.1 linux

のようにして,シンボリック・リンクを張っておくとよい。なぜなら,

・前述したように,/usr/src/linuxディレクトリにカーネル・ソースがあることを決め打ちしているソフトがあるかもしれない
・複数のカーネル・ソースを置いている*2時に,現用のカーネル・ソースがどれか分かりやすい

からだ。そのため,カーネル・バージョンを含んだディレクトリ名のままでソースを展開しておき,それから/usr/src/linuxディレクトリにシンボリック・リンクを張るようにする。

 シンボリック・リンクを作成する際に,/usr/src/linuxディレクトリが既にシステムに存在している場合もあるだろう。その場合は,いったん/usr/src/linuxディレクトリ全体を削除してから,上記コマンドを実行して新たなリンクを作成しよう。