CentOS6.0のカーネルバージョンアップ→kernel3.0への道

kernel3.0がリリースされたんだね~とニュースを眺めておりましたが、眺めるだけでは進歩しませんのでうまくいった試しがないカーネルのバージョンアップをやってみます。

環境
Dell Vostro230S

OS
CentOS6.0 32bit

使うカーネルバージョン
3.0

前回の記事を参考にパッケージのインストールを済ませます。

時計を合わせます。
# ntpdate ntp.nict.jp

最低限これだけは必要と思われるパッケージをインストールします。
# yum install -y wget gcc glib* make ncurses-devel

カーネルのダウンロード
# cd /usr/src/kernel
# wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.tar.bz2

解凍
# tar xvjf linux-3.0.tar.bz2
# rm linux-3.0.tar.bz2
# cd linux-3.0

初期設定
# make mrproper
# cp /boot/config-2.6.18-194.32.1.el5 ./.config

対話式の設定
ここではカーネルに追加された新機能をどうするか質問されます。
本当は明示的に決めないとだめなんですが、ずっとEnter押しっぱなしでいいです。
# make oldconfig

カーネルコンフィグレーションの設定
# make menuconfig
ここでは細かなカーネルの動作設定ができます。
設定するのはCPUの種類だけでいいと思う。
本来だと最低限のドライバ以外を組み込まない設定にすべきですが、しんどいのでやりません。

CPUの設定
今回はCore2ですので、プロセッサオプションを変更しておきます。


「Processor type and features —>」を選択してエンターを押します。


「Processor family (Core 2/newer Xeon) —>」を選択してエンターを押します。


「Core 2/newer Xeon」にカーソルを合わせてエンターを押します。
「Exit」を選択してトップの画面まで戻ってから、「Save an Alternate Configuration File」でconfigを保存してください。

並列コンパイルの設定
# alias make=’make -j5′

コア数x2ぐらいが目安だそうです。
スペックと相談です。

気が向いたのでコンパイルオプションの変更しますた。
やらなくていいですが、気が向いたのでやってみました。
Makefileのこの行を変更します。
# vi Makefile


HOSTCFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer
HOSTCXXFLAGS = -O2

変更後
HOSTCFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes -O3 -fomit-frame-pointer -march=native
HOSTCXXFLAGS = -O3

搭載しているCPU専用のコードを生成します。
多分あんまり効果ないと思うけど…
最適化オプションも最大にしておきます。
※色々オプション設定できるけど、コンパイルできなくなるから要注意!!!

コンパイル開始
# make clean;make bzImage;make modules;make modules_install;make install

速いマシンだとすぐ終わるけど、遅いとすごく時間かかります。
i7の同時8スレッドだと20分以内に終わると思う。
ログが流れるのでSSHクライアントで、ログ取得設定しておいたほうがいいでしょう。
マシンスペック次第で1時間以上かかったりしますんで、コーラでも飲んでいましょう。


~コンパイル中

INSTALL /lib/firmware/keyspan_pda/keyspan_pda.fw
INSTALL /lib/firmware/keyspan_pda/xircom_pgs.fw
INSTALL /lib/firmware/bnx2x/bnx2x-e1-6.2.9.0.fw
INSTALL /lib/firmware/bnx2x/bnx2x-e1h-6.2.9.0.fw
INSTALL /lib/firmware/bnx2x/bnx2x-e2-6.2.9.0.fw
DEPMOD 3.0.0
sh /usr/src/kernels/linux-3.0/arch/x86/boot/install.sh 3.0.0 arch/x86/boot/bzImage \
System.map “/boot”

こんな表示でコンパイル完了です。
CentOS6.0 32bitだとi2cモジュールのインストールエラーが出るけど…

うまく起動するかわからないので、ブートローダーの書き換えは避けます。
とりあえず再起動します。
# reboot

起動する直前にエンターを押し、起動するカーネルを選択します。
無事起動したら本当にバージョンが上がっているか確認します。

# uname -a

こんな感じの表示ならOKです。
Linux localhost.localdomain 3.0.0 #1 SMP Thu Aug 4 14:21:50 JST 2011 i686 i686 i386 GNU/Linux

お疲れ様~

チューニングする時は、menuconfigとコンパイルの繰り返しになります。
いろいろ試してください~
Hyper-V環境では諦めた!

カテゴリー: Linux, コンピュータ パーマリンク

コメントは停止中です。