CentOSに最新カーネルを導入する(カーネル再構築)

| コメント(2) | トラックバック(0) |

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パッケージをコピーして、開発ライブラリなしでインストールすることができます。サーバ用途など、余計なパッケージをインストールしたくない時にはお勧めの方法です。

  1. 開発環境をインストール
  2. カーネルソースをダウンロード
  3. カーネルのパラメータを設定
  4. ソースをコンパイル(RPMパッケージの作成)
  5. RPMパッケージのインストール
  6. Initrd・grubの設定
  7. 再起動して確認

この手順で行います。

開発環境をインストール

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]ができないときは[*]にする。)

  1. [General setup]-[enable deprecated sysfs features to support old userspace tools]
  2. [Networking support]-[Networking options]-[Network packet filtering framework (NetFilter)]-[Core Netfilter Configuration]の中のすべての項目
  3. [Networking support]-[Networking options]-[Network packet filtering framework (NetFilter)]-[IP: Netfilter Configuration]の中のすべての項目
  4. [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 

正しく新しいカーネルで起動できていれば、新しいカーネルのバージョンが表示されます。

トラックバック(0)

トラックバックURL: https://www.letstryit.net/mt/mt-tb.cgi/184

コメント(2)

はじめまして。私は、「DVDガイド」管理人のじん(いわゆるハンドルネームを名乗ることをご容赦下さい)と申します。

早速ですが、貴サイト様にて当サイトと相互リンクさせていただきたく、お願い申し上げます。
突然のお願いで失礼かと思いましたが、どうかお許しくださいませ。

万が一、リンクについて、差し障りや、お気づきの点などございましたら、ご意見お寄せくださいませ。適切に対処いたします。
この場を借りて失礼しました。
では、失礼いたします。
(特に問題等なければ、返信は不要でございます)

「DVDガイド」管理人:じん

コメントする

アーカイブ

カウンタ

Total
Today
Yesterday

IPv6 Ready

Powered by Movable Type 7.0

このブログ記事について

このページは、enjoypcが2010年9月30日 20:52に書いたブログ記事です。

ひとつ前のブログ記事は「運転免許を取りましたよ~」です。

次のブログ記事は「ネットワークスペシャリスト試験を受けてきました」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ