VMWare上のLinuxのカーネルを再構築
最近Linuxのカーネルを再構築することがあったので,その作業行程をメモとして残しておきます.
カーネル再構築
あらかじめ必要なパッケージなど
cursesはmenuconfigを使う場合に必要になります.
# apt-get install build-essential libncurses-dev ncurses-dev
カーネルのソースコードの入手
2012/1/24 時点での2.6系の最新バージョンは2.6.39.4でしたが,
どうもうまくいかなかったので今回は2.6.32.27を入れることにしました.
2.6.38.xは起動が怪しく,2.6.39.xは起動できず,問題も解決できなかった
ので,同じマイナーバージョンのリビジョン違いで試しています.
ソース入手先
ftp://ftp.kernel.org/pub/linux/kernel/
# wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.27.tar.gz
カーネルのビルド
# tar zxf ./linux-2.6.32.27.tar.gz # cd linux-2.6.32.27
古い.configなどが残ってるかもしれないので,一度初期化しておきます.
# make mrproper
元のカーネルから設定を引き継ぐ場合,以下が必要です.
make oldconfigをした際に対話型の設定が始まりますが,数が多いので
ひとまず全てenterで設定を終えてから,make menuconfigで必要な箇所は変更します.
# cp /boot/config-2.6.32-5-amd64 .config # make oldconfig
カーネルに組み込む機能やモジュールとして読み込む機能を選択します.
VMWare上で動作させる場合,deprecated sysfs featuresを有効にする
必要があるそうです.また,iptablesやipvs関連の機能を使う予定がある
ため,関連する項目は一通りチェックをつけておきます.
# make menuconfig General setup enable deprecated sysfs features to support old userspace tools Networking support Networking options Network packet filtering framework (Netfilter) Core Netfilter Configuration IP: Netfilter Configuration IPv6: Netfilter Configuration IP virtual server support
これで,選択した内容の.configが生成されるので,ビルド,インストールします.
# make # make modules_install # make install
初期RAMディスク(initrd)の作成
# update-initramfs -c -k `make kernelrelease`
再起動して確認
$ uname -r 2.6.32.27