Linux カーネルアップデート(Redhat 9 : 2.4.20 -> 2.4.25)
Linux をインストールした後でも、いろいろとメンテナンスが必要になります。特に、カーネルにバグが見つかったときやセキュリティーホールが見つかったときなどはカーネルのアップデートを行う必要があるときがあります。 ここでは、Redhat Linux のカーネルのアップデート方法を記述します。
RPM を利用したアップデート
簡単な方法は、Redhat から不具合の修正された RPM をダウンロードしてインストールする方法です。どのカーネルをダウンロードするかは Redhat のバージョンと uname コマンドで確認できます。
# uname -rp 2.4.20-8 i686 # cat /etc/redhat-release Red Hat Linux release 9 (Shrike)
uname コマンドから カーネルのバージョンが 2.4.20-8 で i686 アーキテクチャであることが確認できます。また、Redhat のバージョンが 9 であることもわかります。
これらの情報をもとに、Redhat のサポートのページから最新版をダウンロードします。
kernel-2.4.20-27.9.i686.rpm kernel-source-2.4.20-27.9.i686.rpm
pcmcia関連やそのほか必要なものがあればそれらも入手します。
入手したなら、rpm コマンドを使用してアップデートします。kernelのアップデートは、古いカーネルでも起動できるように新しいカーネルを追加インストールします。ソースなど、古いものが必要ないならアップデートします。
# rpm -ivh kernel-2.4.20-27.9.i686.rpm # rpm -Fvh kernel-source-2.4.20-27.9.i686.rpm
通常必要ないはずですが、/boot/initrd-2.4.20-27.img が作られていない場合、mkinitrd コマンドを実行してください。
(mkinitrd /boot/initrd-2.4.20-27.img 2.4.20-27
)
ソースを利用したアップデート
カーネルのソースを www.kernel.org
から入手します。必要となるバージョンの最新リリースをダウンロードし、カーネルを作成します。カーネルの作成は、スーパーユーザーで /usr/src ディレクトリーで行います。また、ダウンロードしたファイルも /usr/src にあると想定してください。
ここでは、Redhat Linux 9 のカーネル 2.4.20 を 2.4.25 にアップデートします。
# LANG=C # export LANG # cd /usr/src # rm linux-2.4 # bzip2 -dc linux-2.4.25.tar.bz2 | tar xpf - # ln -s linux-2.4.25 linux-2.4
既存のカーネルの設定を、新しいカーネルへ引き継ぎます。
# cd linux-2.4.25 # uname -p i686 # cp /usr/src/linux-2.4.20-8/configs/kernel-2.4.20-i686.config .config # make oldconfig
make oldconfig
を実行すると、既存の設定が新しいカーネルに設定されていきますが、新しい機能に関してはどうするかたずねられます。その時点で、 y(yes), n(no), m(module)
のいずれかを選びます。 デフォルトは、大文字で表示されています。
もし、既存の環境を利用せずに新規に設定するなら make xconfig
または make menuconfig
と実行します。
設定が完了したら、カーネルをコンパイルします。
# make dep # make clean # make bzImage
続いて、カーネルモジュールをコンパイルし、インストールします。モジュールは、/lib/modules/<バージョン>
ディレクトリーにインストールされます。
# make modules # make modules_install
最後にカーネルをインストールします。カーネルは、/boot
ディレクトリーにインストールされます。
# make install
GRUB, LILOの更新
ブートローダーに新しいカーネルを認識させます。ブートローダーに何を使っているかによって設定が変わります。
GRUBの場合: /boot/grub/grub.conf
ファイルを編集してデフォルトの起動カーネルを変更します。カーネルをインストールした時点で新しいカーネルの情報が追加されます。しかし、デフォルトの起動カーネルは古いものになっています。
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/hda2 # initrd /initrd-version.img #boot=/dev/hda default=1 timeout=10 splashimage=(hd0,0)/grub/splash.xpm.gz title Red Hat Linux (2.4.25) root (hd0,0) kernel /vmlinuz-2.4.25 ro root=LABEL=/ initrd /initrd-2.4.25.img title Red Hat Linux (2.4.20-8) root (hd0,0) kernel /vmlinuz-2.4.20-8 ro root=LABEL=/ initrd /initrd-2.4.20-8.img
title
で区切られた情報が、各カーネルの設定になります。そして、上から 0, 1, 2, ... という具合に番号が振られます。よって、新しいカーネルをデフォルトにするには default=0
と設定します。
GRUBの設定が終了したら、Linux を新しいカーネルで起動しなおします。もし、起動に失敗したり不具合が生じたらブートローダーで古いカーネルを選んで起動し不具合を解決してください。
LILOの場合: /etc/lilo.conf
ファイルを編集して新しいカーネルが起動できるように情報を追加します。
boot=/dev/hda map=/boot/map install=/boot/boot.b prompt timeout=50 linear default=linux-2.4.25 image=/boot/vmlinuz-2.4.20-8 label=linux read-only root=/dev/hda1 image=/boot/vmlinuz-2.4.25 label=linux-2.4.25 read-only root=/dev/hda1
追加したら、lilo コマンドで ブート情報を更新します。
# /sbin/lilo
Solaris には安全性を高めるために、Trusted Solarisというものがあります。これに対して Linux でも SELinux というものがあります。カーネルと一部のコマンドを入れ替えるだけで、ある程度セキュリティーを強化することが出来ます。