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環境では諦めた!
-
最近の投稿
最近のコメント
アーカイブ
- 2020年1月
- 2019年1月
- 2017年1月
- 2016年11月
- 2016年10月
- 2016年7月
- 2016年6月
- 2016年3月
- 2015年10月
- 2015年7月
- 2015年6月
- 2015年5月
- 2015年4月
- 2014年12月
- 2014年11月
- 2014年10月
- 2014年7月
- 2014年6月
- 2014年5月
- 2013年11月
- 2013年7月
- 2013年6月
- 2013年1月
- 2012年11月
- 2012年10月
- 2012年8月
- 2012年5月
- 2012年4月
- 2011年11月
- 2011年10月
- 2011年9月
- 2011年8月
- 2011年7月
- 2011年6月
- 2011年3月
- 2011年2月
- 2011年1月
- 2010年12月
- 2010年8月
カテゴリー
メタ情報