kernelの再構築

Last-modified: 2007-02-06 (火) 23:36:43
 

Debian提供のソースパッケージを利用する

kernelを再構築するには、Debianが提供しているソースパッケージを使用する方法と、オリジナルのkernelソースを使用する方法の二つがあります。
この項では、Debianが提供しているソースパッケージを利用する方法を紹介します。

コンパイル環境を整える

どちらの場合もkernelをソースからコンパイルすることになりますので、コンパイル環境を依存するライブラリをインストールします。
Debianでは非常に簡単です。

# apt-get build-dep linux-source-2.6.18

これで必要なものはすべてインストールされます。

ソースの入手と展開

まず、ソースパッケージをaptで手に入れます。

$apt-get install kernel-package linux-source-2.6.18

ここで、linux-source-以降の部分はkernelのバージョンを示しています。
apt-cache searchなどで好みのバージョンを探してインストールしてください。
Debian提供のkernelソースはオリジナルより若干古いものです。
(これは、安定性その他のことを考慮した結果だと思います)

次に、ダウンロードしたソースパッケージを展開します。
/usr/srcにソースパッケージのtarballがダウンロードされていると思いますので、/usr/srcにcdして、展開します。

$ cd /usr/src
$ tar xjvf linux-source-2.6.18

tarのオプションは

  • x: ファイルの抽出
  • j: bzip2ファイルの展開
  • v: 進捗をコンソールに表示
  • f: ファイルを指定する
    です。これらを連結して、xjvfを与えています。

kernelの設定

次に、kernelコンパイルに関する設定を行います。
以前コンパイルしたことがある場合は、そのときのconfigファイルをコピーして、次のコマンドを実行します。
これで、以前にコンパイルしたconfigファイルの設定が適用されます。

# make oldconfig

そうでない場合、またはデフォルトのオプションから設定を行いたい場合は、次のコマンドを実行します。

# make menuconfig

このコマンドはコンソールから階層メニューを使用して、kernel設定を行います。
GUIで行いたい場合は、次のコマンドですが、qt3ライブラリが必要になります。
おそらく、必要なqt3のライブラリはソースパッケージをapt-getしたときに、推奨パッケージとして示されているはずです。

# make xconfig

個人的なオススメは、framebufferを有効にして、起動時にtuxを表示させることです。

最後に設定ファイルを確認してみましょう。

$ pager .config

kernelのコンパイルとインストール

いよいよkernelをコンパイルします。
rootになるか、sudo、fakerootを使いましょう。

$ su
# make-kpkg clean
# make-kpkg --initrd kernel-image --revision=custom.0.1

make-kpkg cleanを忘れないようにしましょう。
以前にコンパイルしたものが残っていたりすると、おかしなことになります。

次のコマンドのオプションはそれぞれ以下のとおりです。

  • --initrd : イニシャルルートディスクを作成する。
  • --revision=* : kernelのリビジョンを*に設定する。

何もエラーが発生せずに無事コンパイルが終わった場合、/usr/srcにkernel-image-*.debというパッケージファイルが作成されているはずです。
これをdpkgを使ってインストールします。

# dpkg -i kernel-image-*

以上で終了です。grubの設定も自動で行われます。
念のため間違った設定がされていないか、/boot/grub/menu.lstを確認して再起動しましょう。

kernel.orgのソースを使用する

ここでは、2.6.19.2をソースからコンパイルした手順を記します。

ソースのダウンロードと展開

kernel.orgからソースを手に入れます。
wgetでもbrowserからでもお好みでどうぞ。

kernelのソースパッケージは50MBほどあります
できればミラーサーバなどを使ったほうがいいかもしれません。

ダウンロードし終えたら、Debianソースパッケージと同様に展開します。
展開するディレクトリは、ここでは/usr/srcであると仮定しておきます。
/usr/src/linux-2.6.19.2とかいうディレクトリが作成されているはずです。

kernelのコンパイル設定

# make mrproper
# make menuconfig

kernelのコンパイル

# make
# make install
# make modules_install
または
# make && make install && make modules_install
# cd /boot
# mkinitrd -o initrd-2.6.19.2.img 2.6.19.2.custom

grubの設定変更

# nano /boot/grub/menu.lst