(4)カーネルのコンパイルと導入

 自分Linuxのカーネルをコンパイルする手順は,一般的なLinuxカーネルのコンパイルと同様だ。唯一違う点は,導入先が自分Linux開発用のbootディレクトリ(sr/local/src/origdev/boot/)になることである。

 では,図17のようにカーネル・コンパイルを実行しよう。圧縮したカーネルのイメージ・ファイルを作成するコマンド「make bzImage」の引数として「-j<数字>」を指定している。この引数に付与した数値は,コンパイル時に同時に実行するジョブの数である。今回は「-j2」を指定し,同時実行するジョブを2つに制限している。このように搭載CPU数に1を足した数を指定すると効率良くコンパイルを実行できる。例えば,デュアルCPU搭載機でコンパイルするなら「-j3」を指定しよう。

図17●カーネルのコンパイル手順
図17●カーネルのコンパイル手順

 エラーもなくコンパイルが終了したら,作成されたカーネル・イメージ「bzImage」と「System.map」を/usr/local/src/origdev/bootディレクトリにコピーする。

# cp -p System.map /usr/local/src/origdev/boot/

(5)モジュールのコンパイルと導入

 続けて,カーネルのモジュール(デバイス・ドライバ)も次のようにコンパイルし,/usr/local/src/origdev/lib/modules/2.4.29-mylinuxディレクトリ配下に導入する。モジュールのコンパイルには少々時間がかかるため,ここで少し休憩しよう。

# make -j2 modules

 これでカーネルのコンパイルと導入は終了だ。作成したカーネルを見てみよう。まずは作成したカーネル・イメージとVine Linux 3.1のカーネル・イメージ(/boot/vmlinuz-2.4.27-0vl7)のファイル・サイズを比べてほしい。

 自分Linuxのカーネル・イメージは,約800Kバイトの大きさである。一方,Vine Linux3.1のカーネル・イメージは約1.4Mバイトである。自分Linuxのカーネルは,必要な機能だけに絞って設定した結果,Vine Linux 3.1のカーネル・イメージの半分程度のサイズを実現できた。

 このカーネル・イメージのサイズはUSBメモリーの容量のみならず,最終的にメイン・メモリーの使用量などにも影響を与える。無駄を省き,サイズを小さくした効果は大きい。

 また,モジュールの総容量も小さくなっている。Vine Linux 3.1では約22Mバイトであるのに対し,自分Linuxでは約3Mバイトと約7分の1になっている*2

rsyncのコンパイルと導入

 メイン・メモリー上にRAMディスクを作成して自分Linuxのすべてのファイルを転送するための準備もしておこう。自分Linuxのファイルを転送するためにはrsyncコマンドを用いる。

 このrsyncコマンドには前回紹介したglibcのライブラリが必要である。自分Linuxが起動する前にrsyncコマンドを実行するため,ダイナミック・リンクではなくスタティック・リンクを用いる。glibcをスタティック・リンクとしてコンパイルするには,コンパイルを実行するmakeコマンドに「CC = gcc -static」というオプションを追加する。

# cd /usr/local/src/origsoft

*  *  *

 さて,これで自分Linuxを稼働させるための主要な部品がそろった。次回からは,これらの部品を組み合わせて自分Linuxを構築していく。