Tips記事
» 2000年10月11日 00時00分 UPDATE

RPMを利用したカーネルアップデート

[木田佳克,ITmedia]

 カーネルアップデートといえば,一般的にはさまざまなオプション指定が必要となるため,手軽にはできないものだと思っている人が多いだろう。しかしRedHat系のLinuxであれば,RPMによる手軽なアップデートが可能だ。

 アップデートを行う前にまず最初に押さえておきたいのは,現在インストールされているカーネルを消さずに新しいカーネルをインストールするということだ。これはRPMによる手段に限ったことではなく,万が一新しいカーネルで起動できなくても従来のバージョンで起動できるようにしておくためである。

 また,ライブラリなどの周辺バイナリがカーネルバージョンと強く依存することも多いため,単にカーネルのrpmだけをインストールするだけでは済まないことが多いことも忘れてはならない。

 ここでは,例としてRed Hat Linux 6.1J(Kernel 2.2.12-32)を挙げて,バグフィクスされた新しいカーネル(kernel-2.2.16-3.i586.rpm)をインストールする手順を追ってみよう。この例はマイナーバージョンアップのため,前述したような周辺バイナリの依存問題がない最も手軽なケースだ。

 アップデートファイルをダウンロードしたら,rpmで「i」オプションを付けてインストールを行う。決して「U」(アップデート)オプションは付けてはならない。また,エラーが表示されるようであれば,「--force」オプションを加える必要があるかもしれない。

# uname -a
Linux mistio 2.2.12-32 #1 Mon Oct 25 19:43:07 EDT 1999 i586 unknown
# rpm -ivh kernel-2.2.16-3.i586.rpm

 次に,viエディタで/etc/lilo.confの設定編集する。起動時にロードされるカーネルを指定するためのラベル作成を行うのだ。

# vi /etc/lilo.conf
boot = /dev/hda
timeout = 30
linear
prompt
default = linux
vga = normal
read-only
map=/boot/map
install=/boot/boot.b
image = /boot/vmlinuz-2.2.12-32
label = linux
initrd = /boot/initrd-2.2.12-32.img
root = /dev/hda1

 例として,上記のように記述されている場合を挙げる。ここでは,2.2.12-32バージョンのカーネルがlinuxというラベルで起動されるように設定されている。ここに記述されている「image =」以下の4行をコピーして,次のように書き換える。

image = /boot/vmlinuz-2.2.12-32
label = linux
initrd = /boot/initrd-2.2.12-32.img
root = /dev/hda1
image = /boot/vmlinuz-2.2.16-3
label = linux2216
initrd = /boot/initrd-2.2.16-3.img
root = /dev/hda1

 ここでは,例としてラベル名を「linux2216」とした。次に/etc/lilo.confをセーブして,lilo.confの設定内容を反映させる。

# /sbin/lilo -v

 この実行結果で何らかのエラーが表示された場合は,必ずエラーが表示されなくなるまで原因を追求しよう。決してエラーが表示されたまま再起動をしてはならない。

 再起動後は,LILOプロンプト「lilo:」で「linux2216」と入力すればよい。これで2.2.16-3のカーネルが起動される。もし問題があるばあいは,起動時にラベル入力をしなければ従来カーネルで起動可能だ。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ