Linux-2.6.37をビルド、インストールする
x86系統向けに Linuxをビルドしたことないなってことでビルド、
インストールをしてみた。組み込み向けだとしたことあるけど、
組み込み向けだと、大して有効にする機能もないのでね。
/boot/以下にある configファイルを見ると、いらない機能が
いっぱい入っていたので、それも取り除きたいなという目的もあります。
開発環境
カーネルの取得は
ftp://ftp.jm.kernel.org/pub/linux/kernel/v2.6:
から行いました。
ビルドツールのインストール
まあカーネルをビルドするような人であれば、すでにビルドツール揃っていると
思うんだけど、そうでない人もいるだろうので示します。
% sudo aptitude install build-essential # コンパイラなど % sudo aptitude install kernel-package # debパッケージ化のツール等 % sudo aptitude install libncurses5-dev # menuconfig用
カーネルのコンフィギュレーションを GUIベースでやる場合は他に
qtなどのグラフィックライブラリが必要になるかと思います。
今回は localmodconfig, menuconfigと使います。
並列レベルの設定
最近のマシンであればマルチコアだろうので、それを活かす設定にしましょう。
% export CONCURRENCY_LEVEL=4
環境に応じて変えてください。調べてみると指定するとうまくいかないケースと
いうのもあるみたいなので、ビルドがうまくいかなかったら unsetするのが
よいかと思います。私の環境ではこれで問題ありませんでした。
カーネルコンフィギュレーション
好きなコンフィグオプションでコンフィギュレーションを行います。
今回は localmodconfigを初めに行い、その後調整を行いました。
oldconfig, localmodconfigして、.configを眺めて、menuconfigで
調整というのが個人的にはいいんじゃないかなと思います。
% make localmodconfig % less .config # 確認 % make menuconfig # 微調整
今回は localmodconfigでだいたい文句はなかったんですけど、
CD関連のファイルシステムの機能が disableになっていたので
その部分だけ変更しました。
ビルド
管理が簡単に行えるように, debパッケージ化します。
% sudo make-kpkg clean % sudo make-kpkg –initrd –revision=リビジョン \ kernel_image kernel_headers
リビジョンは日付でも付けとけばいいんじゃないかと思います。
問題がなければ、これでカーネルとヘッダファイルの debパッケージが
一つ上のディレクトリにできているはずです。
インストール
dpkgパッケージをインストールするだけです。
% sudo dpkg -i linux-image*.deb % sudo dpkg -i linux-headers*.deb
これで grubの設定ファイルも書き換えてくれます。基本的に問題ないと
思うけど、一応 /boot/grub/grub.cfgを確認しましょう。