CentOS 5.5を新しくする
CentOSは安定性を重視したOSであるため、カーネルはいつまで経ってもバージョンアップされません。(CentOSでは、独自のパッチをカーネルに当てることによって新機能に対応させています。)
それで今回は、最新カーネルをCentOS 5.5に導入してみました。
構築環境
CentOS 5.5 x86_64
旧カーネルバージョン: 2.6.18-194.11.3.el5
新カーネルバージョン: 2.6.35.4
VirtualBox仮想環境で構築。i386でも同じようにできると思いますが、確認していないので注意してください。
このバージョンで行いましたが、適宜環境に応じて読み替えてください。
ホストPCの性能
CPU: Core 2 Duo P8600 2.40GHz
MEM: 4GB(512MBをゲストに割り当て)
Storage: Windows Server 2008 R2のCIFS共有ドライブ (実効速度:30MB/s,8GBをゲストに割り当て)
手順
管理がしやすいように、ソースコードからRPMパッケージを作成してインストールする方法をとります。構築には、各種開発ライブラリが必要です。
同じOSを使う場合は、他のPCで作成したRPMパッケージをコピーして、開発ライブラリなしでインストールすることができます。サーバ用途など、余計なパッケージをインストールしたくない時にはお勧めの方法です。
- 開発環境をインストール
- カーネルソースをダウンロード
- カーネルのパラメータを設定
- ソースをコンパイル(RPMパッケージの作成)
- RPMパッケージのインストール
- Initrd・grubの設定
- 再起動して確認
この手順で行います。
開発環境をインストール
OSをセットアップする際に、「開発」→「開発ライブラリ」と「開発」→「開発ツール」をインストールします。
していない場合は、yumを使ってインストールすることができます。
# yum groupinstall '開発ツール'
# yum groupinstall '開発ライブラリ'
※もし英語しか入力できない環境や英語環境なら以下のようにする
# yum groupinstall 'Development Tools'
# yum groupinstall 'Development Libraries'
カーネルソースをダウンロード
LinuxカーネルソースコードをThe Linux Kernel Archivesからダウンロードします。
今回は2.6.35.4を使用しました。(2010年9月30日現在で2.6.35.7が出てました)
wgetコマンドで取得します。
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.35.4.tar.bz2
bzip2で圧縮、tarでアーカイブされているので展開します。
# tar jxvf linux-2.6.35.4.tar.bz2
ディレクトリに移動して、カーネルの設定を一応初期化しておきます。
# cd linux-2.6.35.4
# make mrproper
カーネルのパラメータを設定
カーネルの設定を継承
基本的には、旧のカーネルのパラメータを継承して使用します。カーネルの設定は、/boot/config-2.6.18-194.11.3.el5 にあります。
# cp /boot/config-2.6.18-194.11.3.el5 .config
当然新しいカーネルなので機能が追加されており、その部分は設定する必要があります。新しい設定項目を設定します。
# make oldconfig
色々でてきますが、基本デフォルトの設定で良いので、Enterキーをずっと押しておいてOKです。次に必要な設定を行います。
新しく追加された機能の設定
このままコンパイルしてインストールしても、CentOSはカーネルパニックを起こしてうまく起動しません。
その必要な設定を行います。メニューを表示させて設定します。
# make menuconfig
以下の項目に[*]または[M]をつけます。([M]ができないときは[*]にする。)
- [General setup]-[enable deprecated sysfs features to support old userspace tools]
- [Networking support]-[Networking options]-[Network packet filtering framework (NetFilter)]-[Core Netfilter Configuration]の中のすべての項目
- [Networking support]-[Networking options]-[Network packet filtering framework (NetFilter)]-[IP: Netfilter Configuration]の中のすべての項目
- [Networking support]-[Networking options]-[Network packet filtering framework (NetFilter)]-[IPv6: Netfilter Configuration]の中のすべての項目
最低これだけは行ってください。1を忘れると、カーネルパニックを起こして起動できません。2-4を忘れると、iptablesが使用できません。
参考URL
1: http://d.hatena.ne.jp/jitsu102/20100325/1269453573
ソースをコンパイル(RPMパッケージの作成)
コンパイルしてRPMパッケージを作成します。かなりの時間が(1時間程度)掛かるので、作成する前に設定を良く確認しておいてください。
# make rpm
コンパイル・パッケージの作成が終了すると、/usr/src/redhat/RPMS/x86_64/ の中に kernel-2.6.35.4-1.x86_64.rpm が作成されます。(ちなみに、/usr/src/redhat/SRPMS/ の中には、ソースRPMパッケージが作成される)
他のマシンに必要なときは、RPMパッケージをコピーしておいてください。
RPMパッケージのインストール
RPMパッケージをインストールします。
# rpm -ivh kernel-2.6.35.4-1.x86_64.rpm
特にエラーなしでインストールが完了すると思います。
Initrd・grubの設定
まだ新カーネルで起動する設定ができていません。
起動に必要なInitrdを作成します。
# mkinitrd /boot/initrd-2.6.35.4.img 2.6.35.4
grubローダの設定をします。
# vi /boot/grub/menu.lst
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.35.4)
root (hd0,0)
kernel /vmlinuz-2.6.35.4 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.35.4.img
title CentOS (2.6.18-194.11.3.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-194.11.3 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.18-194.11.3.el5.img
太字部分を追加します。以前あった項目をコピーして、バージョン番号部分を書き換えてください。
再起動して確認
再起動します。カーネルパニックが起こったりしてうまく起動できないときは、設定を確認してください。
その後カーネルのバージョンを確認して、正しく起動できているか確認します。
# uname -r
2.6.35.4
正しく新しいカーネルで起動できていれば、新しいカーネルのバージョンが表示されます。
はじめまして。私は、「DVDガイド」管理人のじん(いわゆるハンドルネームを名乗ることをご容赦下さい)と申します。
早速ですが、貴サイト様にて当サイトと相互リンクさせていただきたく、お願い申し上げます。
突然のお願いで失礼かと思いましたが、どうかお許しくださいませ。
万が一、リンクについて、差し障りや、お気づきの点などございましたら、ご意見お寄せくださいませ。適切に対処いたします。
この場を借りて失礼しました。
では、失礼いたします。
(特に問題等なければ、返信は不要でございます)
「DVDガイド」管理人:じん
はじめまして。enjoypcです。リンクしていただきありがとうございます。
相互リンクについてですが、このブログにはリンクのページを用意していないので、少し時間が掛かります。
リンクのページ完成まで少々お待ちください。