カーネルのアップグレードは難解なため、絶対に必要な時にのみ実施 するのがよいでしょう。それは普通は次のような理由がある場合です:
注意: アップグレードする前に、/boot にカーネルを格納するための
十分な空き容量があることを確認してください!
カーネルをアップグレードする通常の手順は、まずマシンに既にインス
トールされているものを調べ、それとマシンが必要としているものとを
比較します。システムにインストールされているものは、rpm
コマンドを使って調べることができます。アップグレードに失敗しない
ように、
Red Hat から
最新の RPM ファイルを入手していることを確認する必要が
あります。
Red Hat Linux 5.2, 6.x, 7.0 がインストールされているマシンでは、最初にどの バージョンのカーネル RPM がインストールされているか調べます。 そして、インストールされているバージョンを記録に取っておきます。
$ rpm -q kernel kernel-headers kernel-ibcs kernel-pcmcia-cs kernel-source
kernel-2.0.36-0.7
kernel-headers-2.0.36-0.7
kernel-ibcs-2.0.36-0.7
kernel-pcmcia-cs-2.0.36-0.7
kernel-source-2.0.36-0.7
$ rpm -q mkinitrd SysVinit initscripts
mkinitrd-1.8-3
SysVinit-2.74-5
initscripts-3.78-1
リリース 4.2 を使用しているマシンでは、リリース 5.x 系列で パッケージ名の変更が行われているため、問い合わせの書式を 若干修正します。
$ rpm -q kernel kernel-headers kernel-source iBCS pcmcia-cs
kernel-2.0.35-0
kernel-headers-2.0.35-0
kernel-modules-2.0.35-0
kernel-source-2.0.35-0
iBCS-2.0-8
pcmcia-cs-2.9.12-0
$ rpm -q mkinitrd SysVinit initscripts
mkinitrd-1.7-1
initscripts-2.96-1
SysVinit-2.64-8
アップグレードの次の手順はシステムに合った最新のアップデートを 入手することです。私は通常 ftp://updates.redhat.com を使用しますが、混んでいる場合は、 ミラーサイト を利用した方がよいでしょう。
FTP サイトにある RPM ファイルのリストを、お使いのマシンにインス トールされている RPM ファイルのリストと比較します。FTP サイトに ある RPM ファイルの改版番号の方が大きければ、その RPM ファイルを ダウンロードします。対応するパッケージがリストになくても、それを 気にする必要はありません。
WEB ブラウザではいくつものファイルをダウンロードするには不向き なようなので、アップデートサイトに接続する時は FTP クライアント プログラムを使用することをお勧めしています。私は Linux では ncftp を使用しています。
$ ncftp -L updates.redhat.com
NcFTP 2.4.3 (March 19, 1998), by Mike Gleason.
Tip: Use the "more" command to view a remote file with your pager.
Trying to connect to ftp.redhat.com...
ProFTPD 1.2.0pre1 Server (ProFTPD) [ftp.redhat.com]
Anonymous access granted, restrictions apply.
ncftp / > cd 5.2/en/os/i386
ncftp ...5.2/en/os/i386 > ls kern* mkinit* iBCS* pcmcia* init* SysV*
kernel-2.0.36-3.i386.rpm kernel-pcmcia-cs-2.0.36-3.i386.rpm
kernel-headers-2.0.36-3.i386.rpm kernel-source-2.0.36-3.i386.rpm
kernel-ibcs-2.0.36-3.i386.rpm
ncftp ...5.2/en/os/i386 > mget kernel-*rpm
ダウンロードがうまく行かない場合は、mget の代わりに
get -C を使用するとよいでしょう。これで ncftp
は完全なファイルが手に入るまでダウンロードを継続するように
なります。
まだこれまでに FTP サイトを利用してお使いのシステムをアップ
デートしたことがなければ、新しい RPM ファイルを検査、インス
トールするのに rpm パッケージをアップグレードしな
ければならないでしょう。
rpm のアップグレードの方法は非常に簡単です。インス
トールされている RPM のバージョンを調べます。これと FTP
サイトにあるアップデートのバージョン番号を比較します。FTP
サイトにある方が新しいバージョンの場合は、それをダウンロード
してパッケージをアップグレードする必要があります。手短に言うと:
$ rpm -q rpm rpm-devel
rpm-2.5.5-5.2
rpm-devel-2.5.5-5.2
$ ncftp -L updates.redhat.com
> cd 5.2/en/os/i386
> get rpm*
> quit
$ rpm -Uvh rpm*rpm
バージョンがかけ離れている場合(2.3 から 2.5 にアップグレード する場合など)は、アップグレードした後に以下の手順を実行する ことをお勧めします。
$ rpm --rebuilddb
この最後の手順により、バージョン間のデータベース構造の違い (あるいは一部のデータベースが壊れてしまった状況)から生じる問題が 解決されます。この書き換え作業は RPM の根本的な部分を処理している ため、しばらく時間がかかります。
バージョン 6.x のマシンのRPMを最新のものにアップデートするのはやや難しいでしょう。 それを行う場合は、 Using Red Hat Network with Red Hat Linux 6.2. を参照して下さい。
RPM パッケージをダウンロードする際に最も困ることは途中で ファイルが壊れてしまうことです。カーネルをアップグレード する場合には、マシンが起動しなくなる可能性もあるため、 困る程度の話では済みません。
システム管理者の負担を軽くするため、RPM には自分自身の完全性を
検査するための仕組みが用意されています。7.0 より前のシステムでは、この時に、
-K --nopgp オプションを使用します。私のリリース 5.2 の
システムでパッケージをダウンロードした時には RPM から次のような
応答が返って来ました。
$ rpm -K --nopgp *rpm
kernel-2.0.36-1.i386.rpm: size md5 OK
kernel-headers-2.0.36-1.i386.rpm: size md5 OK
kernel-ibcs-2.0.36-1.i386.rpm: size md5 OK
kernel-pcmcia-cs-2.0.36-1.i386.rpm: size md5 OK
kernel-source-2.0.36-1.i386.rpm: size md5 OK
Red Hat Linux 7.0 以降のシステムの場合は、GPG への変更に伴い、 コマンドのオプションが若干異なります。以下のコマンドを実行して下さい。:
$ rpm -K --nogpg *rpm
RPM のバージョンの異なるパッケージが混在することを考慮して、 Red Hat Linux 7.0では、両方のオプションの使用が可能です。
全ての rpm パッケージから正しい md5sum を得ることができたら、 先に進むことができます。正しくない場合は再度ダウンロードが 必要です。私の経験では、何度も失敗する場合には、違うミラーで ダウンロードしてみるとよいでしょう。なぜなら、ダウンロードして いたサイトへのネットワーク接続のトラブルや途中の経路に介在する キャッシュに壊れたコピーが入っているために問題が生じているかも しれないからです。
インストール前の最後の手順は緊急ブートフロッピーの作成です。
(まだ作成していない場合に必要です。) リリース 5.x および 6.0
マシンでは簡単で、 mkbootdisk コマンドを実行するだけです。
まず現在使用しているカーネルが何かを調べます。
/etc/lilo.conf ファイルを見て、どのイメージを使ってブート
しているかを調べます。私が例に使用している 5.2 マシンでは、
このファイルに次のような行が書いてあります。
$ cat /etc/lilo.conf
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
image=/boot/vmlinuz-2.0.36-0.7
label=linux
root=/dev/hda9
initrd=/boot/initrd-2.0.36-0.7.img
read-only
other=/dev/hda1
label=dos
table=/dev/hda
これを見ると、どのイメージからブートしたかが分かります。
標準インストールでは、linux というラベルが付けられて
います。上記の例では /boot/vmlinuz-2.0.36-0.7 カーネル
を使用して起動したことが分かります。それではフォーマット済みの
1.44 MB フロッピーをシステムにセットします。root でログイン
していることを確認してください。
# whoami
root
# mkbootdisk --device /dev/fd0 2.0.36-0.7
Insert a disk in /dev/fd0. Any information on the disk will be lost.
Press <Enter> to continue or ^C to abort:
上記のガイドラインに従って、アップグレード時のトラブルに備える ための、動作することを確認しているカーネルの入ったブートフロッピー を作ることができます。このフロッピーを使ってシステムを再起動して みて、正しく動作することを確認することをお勧めします。