カーネルアップデートといえば,一般的にはさまざまなオプション指定が必要となるため,手軽にはできないものだと思っている人が多いだろう。しかし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.