(4)カーネルのコンパイルと導入
自分Linuxのカーネルをコンパイルする手順は,一般的なLinuxカーネルのコンパイルと同様だ。唯一違う点は,導入先が自分Linux開発用のbootディレクトリ(sr/local/src/origdev/boot/)になることである。
では,図17のようにカーネル・コンパイルを実行しよう。圧縮したカーネルのイメージ・ファイルを作成するコマンド「make bzImage」の引数として「-j<数字>」を指定している。この引数に付与した数値は,コンパイル時に同時に実行するジョブの数である。今回は「-j2」を指定し,同時実行するジョブを2つに制限している。このように搭載CPU数に1を足した数を指定すると効率良くコンパイルを実行できる。例えば,デュアルCPU搭載機でコンパイルするなら「-j3」を指定しよう。
図17●カーネルのコンパイル手順 |
エラーもなくコンパイルが終了したら,作成されたカーネル・イメージ「bzImage」と「System.map」を/usr/local/src/origdev/bootディレクトリにコピーする。
(5)モジュールのコンパイルと導入
続けて,カーネルのモジュール(デバイス・ドライバ)も次のようにコンパイルし,/usr/local/src/origdev/lib/modules/2.4.29-mylinuxディレクトリ配下に導入する。モジュールのコンパイルには少々時間がかかるため,ここで少し休憩しよう。
これでカーネルのコンパイルと導入は終了だ。作成したカーネルを見てみよう。まずは作成したカーネル・イメージと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」というオプションを追加する。
* * *
さて,これで自分Linuxを稼働させるための主要な部品がそろった。次回からは,これらの部品を組み合わせて自分Linuxを構築していく。