nkjmkzk.net

powered by Kazuki Nakajima

噂のLinux Kernel 3.0.0(インストール手順付き)

Linux Kernelがとうとう2.6.xから3.0.x台になります。

といっても構造的な変化があるわけではなく、20周年記念、とかそういう理由だそうで2.4から2.6になったときよりも変更点は少ないと見ていいでしょう。

今日現在ですでに3.0.0-rc3がリリースされています。抜本的な変化はないものの、新しいKernelはやっぱり魅力的です。僕が個人的に特に気にしているのは次の2点。

  • Xen
  • Btrfs

XenについてはXen HypervisorがKernelに組み込まれた、という話ではありません。Xen Hypervisor上でLinuxを準仮想化のdom0/domUとして稼働させるためのコードがすべてKernelに取り込まれたということです。一般ユーザにはそれほど直接的なインパクトはないのかなと思いますが、とりわけDeveloperにとっては大きな成果だと思いますし、ひいてはそれがこれからのXen関連開発の勢いにつながってくるはずです。Linuxはこれまでも、そしてこれからもXen上での準仮想化モードをサポートされることになるでしょう。準仮想化はドライバまわりだけでなく、古いマシンのサポートやTrancendent Memoryといった独自の拡張を可能にするモードとしてコアデベロッパーは引き続き注力していくという噂です。

BtrfsについてはすでにFedora 16がデフォルトファイルシステムとして採用することをアナウンスしており、つまりはRHELのデフォルトファイルシステムも将来的にBtrfsになる可能性が極めて高いということを示唆しています。Btrfsはコンセプト的にはZFSに似ており、ボリュームマネージャとファイルシステムが一体になった構造です。動的なボリュームの追加やスナップショット等が可能になっており、多くの環境では従来のmdやLVMが不要になるでしょう。

こういうものは我先に試してみたいですよね。ということでOracle Linux 5.6にKernel 3.0.0-rc3をインストールする方法を記載しておきます。

まずはKernel 3.0.0-rc3のソースをダウンロードしてきます。http://www.kernel.orgからFull Sourceを選択すればtar.bz2でダウンロードできます。ダウンロードしたら解凍/展開し、展開したディレクトリに移動します。

[root@~]# cd /var/opt
[root@~]# wget http://www.kernel.org/pub/linux/kernel/v3.0/testing/linux-3.0-rc3.tar.bz2
[root@~]# tar xvfj linux-3.0-rc3.tar.bz2
[root@~]# cd linux-3.0-rc3

現在のカーネルビルド設定を引き継ぐために/bootディレクトリから設定ファイルを.configとしてカレントディレクトリにコピーします。Oracle Linux 5.6の場合はUEKのKernel設定ファイルが存在しますのでそれを使用します。なるべくバージョンが近い方が差異が少ないので。といっても結構ありますが。

[root@~]# cp /boot/config-2.6.32-100.26.2.el5 ./.config

コピーした設定ファイルを用いて新しい設定ファイルを作成します。

[root@~]# make oldconfig

このあと古い設定ファイルと新しいKernelとの機能差の部分について対話的に設定することを求められます。一つずつ見ていると3日くらいかかりますのでひたすらEnterキーを押し続けてデフォルトをあるがままに受け入れます。ビルドがうまくいったらその後で自分なりのコンフィグを詰めていくのが良いでしょう。
対話的設定が終わるとコマンドプロンプトが戻ってきます。

ここからコンパイルを行っていきます。ちなみに-jオプションに渡す数字はコンパイルの並列度を設定します。お手持ちのCPUコア数の倍の数くらいを目安に与えてください。

[root@~]# make -j8

Kernel Moduleのインストール。

[root@~]# make modules_install

Kernelのインストール。

[root@~]# make install

これで完了です。
/bootディレクトリを見てみると新しいKernelがインストールされています。
/lib/modulesには新しいKernel Moduleがインストールされています。
そして/etc/grub.confを見ると新しいカーネル用のエントリーが自動的に追加されています。親切。
ブート時にgrubのメニュー画面を見れない人は今の内に/etc/grub.confのdefault=を今インストールしたカーネルのエントリに合わせておきます。
ちなみに下記エントリは上から、Linux 3.0.0-rc3 Kernel、Unbreakable Enterprise Kernel(UEK)、RHEL互換Oracle Linux PV Kernelです。Linux 3.0.0-rc3とUEKはPvopsなので準仮想化でも完全仮想化でも非仮想化でもこのカーネルで起動できます。

[root@~]# vi /etc/grub.conf
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Oracle Linux Server (3.0.0-rc3)
        root (hd0,0)
        kernel /vmlinuz-3.0.0-rc3 ro root=/dev/VolGroup00/root rhgb quiet
        initrd /initrd-3.0.0-rc3.img
title Oracle Linux Server (2.6.32-100.26.2.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-100.26.2.el5 ro root=/dev/VolGroup00/root rhgb quiet
        initrd /initrd-2.6.32-100.26.2.el5.img
title Oracle Linux Server (2.6.18-238.el5xen)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-238.el5xen ro root=/dev/VolGroup00/root rhgb quiet
        initrd /initrd-2.6.18-238.el5xen.img

リブートすれば新しいKernelで起動してきます。

[root@~]# uname -r
3.0.0-rc3

without comments

Written by 中嶋 一樹

6月 20th, 2011 at 2:01 pm

Posted in Uncategorized

Tagged with

Leave a Reply