Vmware-toolsインストールに伴うカーネルリコンパイル

会社でVMware上にDebian Sargeのイメージをテストや検証環境として大量にストックしている。VM上の仮想OS起動時にホストOSと仮想OS上で透過的なマウス操作や解像度の設定等を行う為にはVMware-toolsというパッケージのインストールが必要だけれども、2008/04/10現在、Debian開発者で署名な武藤さんのサイト上で入手出来るDebian Sarge kernel2.6.20-1のisoイメージを入手してCDを焼き、ディスクからインストールするとこのVMware-toolsのインストールが出来ない。

これは動作しているカーネルのバージョンに合致したkernel-headersというファイル類が古い(何故かkernel-headers2.6.8が存在する)為起こる様。VMware-toolsインストール時に本来kernel-headersがあるべき

/usr/src/linux/include

というパスにkernel-headersが無いと表示されてパスの入力を求められてインストールを続行出来ない。
解決策としては

・現行カーネルに合致したヘッダーファイル類をインストール
・現在あるkernel-headersに合致したカーネルをインストール
・新規にカーネルをソースからコンパイルし、新kernel-headersファイル類が生成されるのを祈るw

という事だけども、現行カーネルに合致したkernel-headersファイルはDebianアーカイブ上には無く、kernel-headers2.6.8に合致したカーネルインストールではダウングレードになってしまうので、それなら時間もあるしと、一番最後ののカーネル・リコンパイルに初挑戦してみました。以下メモ。

・事前にコンパイルに必要なdebパッケージをインストールする。

# aptitude install autoconf automake binutils gcc gettext kernel-package libncurses5-dev libtool linux-kernel-headers make

※上記ツール群はどれもコンパイル時に必要。詳しくはLinuxカーネル クイックリファレンスより

・入手出来るカーネルのバージョンを表示

# aptitude install kernel-source

※ソースインストールについては何故か2.6.20のソースが表示されなかったので、ブラウザでhttp://www.kernel.orgにアクセスし、cerelonプロセッサ対応のkernel-2.6.20-4を入手。

・入手したソースを/usr/srcに移動させる

・ソースの展開

tar xjfv kernel-source-****.tar.bz2(gzの場合は別オプションあり)

・展開されたディレクトリに移動

# cd /kernel-source-****(作成されたディレクトリ)

・旧カーネル設定と新カーネル設定の整合性を取る為のコマンド

# make oldconfig

カーネルの設定画面を表示させる

# make menuconfig

※この画面ではコマンドライン上に設定画面が表示され、各種デバイスファイルシステム、IO等設定する場面ですが、こちらの環境でそこまで設定をしていないので(詳しくないので)省略。

・kpkgの初期化

# make-kpkg clean

コンパイル実行(Debian流なのでdebパッケージが作成される。)

# make-kpkg -revision=custom.0.1 modules_image

この後長い長いコンパイルが始まります。
コンパイル終了後に、/usr/src/内にdebパッケージが作成されているので、インストール。
カーネルをインストール

# dpkg -i /usr/src/kernel-image-****_custom.0.1_i386.deb(こちらの環境で2.6.20-4)

GRUBの設定は自動でやってくれました、優秀です、でびあんww

その後起動し、ブートローダーにインストールしたばかりのカーネルで起動出来て、目的のkernel-headersも生成されて無事VMware-toolsのインストールできましたw

上記の様におおまかにカーネルコンパイルをするにはそれほど手間はかからなかったが、カーネルチューニング等の目的では上記の手順ではザルもいいところなのが、あらゆる方々のコンパイル経験や書籍を読めば一目瞭然だ。使用するハードウェアの構成やそのマシンの目的、インストールするソフトウェア、採用するファイルシステム等を全て洗い出して完全に把握し、各々のカーネルコンパイル時のオプションを自身の環境に適合する様に設定し完全に自身の制御下に置くには数多くの経験とLinuxOSに対する理解、ハードウェア等の知識も必要なのは容易に想像出来てしまう。。今月に入るタスクのLinux環境RAID検証の為に今後の為にも地道にやらなきゃなぁ。。

参考文献

Linuxカーネル クイックリファレンス

Linuxカーネル クイックリファレンス

自分で作るLinux OS (日経BPパソコンベストムック)

自分で作るLinux OS (日経BPパソコンベストムック)