[質問]
カーネルパッケージのアップデート方法を教えてください。
[対象となる製品のバージョン]
MIRACLE LINUX Standard Edition V2.x
[対象となるパッケージ]
kernel
[回答]
アップデート手順は MIRACLE LINUX のバージョンによって異なりますので、現在使用されている MIRACLE LINUX のバージョンをご確認ください。
カーネルをアップデートする場合は、カーネルの種類やバージョンを意識する必要があります。 この回答では以下の条件を想定しています。
- SMPカーネルをインストールして運用
- アップデート前のカーネルのバージョンは 2.4.9-31.22ml
- アップデート後のカーネルのバージョンは 2.4.9-e.25.50ml
バージョン番号などはお客様の環境にあわせて適宜読み変えてください。
また、コマンドの例で smp という文字列が付いている箇所があります。smp もしくは SMP は Symmetric Multi-Processors の略で、複数のプロセッサで構成されたシステム用のカーネルを意味します。 逆に、1 つのプロセッサで構成されるシステム用のカーネルを UP (Uni-Processor)カーネルと呼びます。UPカーネルで運用している環境では、smp という文字列を付けずにコマンドを実行してください。
[ 例 ]
# mkbootdisk 2.4.9-31.22mlsmp (SMPカーネルの場合)
# mkbootdisk 2.4.9.31.22ml (UPカーネルの場合)
以下に、カーネルのアップデート手順を示します。
0. 準備
- 緊急時用ブートディスクの作成
緊急時用ブートディスクを作成することをお勧めします。
ブートフロッピーを作成するには mkbootdisk コマンドを使います。
カーネル 2.4.9-31.22mlsmp がインストールされている場合は、以下のコマンドでブートフロッピーを作成します。
# mkbootdisk 2.4.9-31.22mlsmp
1. パッケージの確認
インストールされているカーネルパッケージを確認します。
# rpm -qa | egrep kernel
kernel-source-2.4.9-31.22ml
kernel-doc-2.4.9-31.22ml
kernel-2.4.9-31.22ml
kernel-smp-2.4.9-31.22ml
kernel-headers-2.4.9-31.22ml
2. 最新パッケージの入手
上記で確認されたすべてのパッケージについて最新のバージョンを入手します。
この回答例では、2.4.9-e.25.50ml が最新バージョンであるとします。
また、入手したパッケージを /tmp/kernel 配下に置くことにします。
# ls /tmp/kernel
kernel-2.4.9-e.25.50ml.i686.rpm
kernel-doc-2.4.9-e.25.50ml.i686.rpm
kernel-headers-2.4.9-e.25.50ml.i686.rpm
kernel-smp-2.4.9-e.25.50ml.i686.rpm
kernel-source-2.4.9-e.25.50ml.i686.rpm
※必要に応じて個々のパッケージを入手・更新することも可能ですが、可能な限りすべてのパッケージのバージョンを同じにすることを推奨します。
3. パッケージの追加
新旧が同居可能なカーネルパッケージを rpm コマンドによって追加します。
# cd /tmp/kernel
# rpm -ivh kernel-2.4.9-e.25.50ml.i686.rpm kernel-smp-2.4.9-e.25.50ml.i686.rpm
kernel-source-2.4.9-e.25.50ml.i686.rpm
Preparing... ########################################### [100%]
1:kernel ########################################### [100%]
2:kernel-smp ########################################### [100%]
3:kernel-source ########################################### [100%]
新旧が同居不可能なカーネルパッケージを rpm コマンドによって更新します。
# rpm -Fvh kernel-doc-2.4.9-e.25.50ml.i686.rpm kernel-headers-2.4.9-e.25.50ml.
i686.rpm
Preparing... ########################################### [100%]
1:kernel-doc ########################################### [100%]
2:kernel-headers ########################################### [100%]
4. lilo の更新
新しいカーネルを起動できるように /etc/lilo.conf エントリーを追加します。
修正例は以下のようになります(変更個所は赤字にしています)。
なお、ブートディスクからシステムを起動している場合は、「5. ブートディスクの作成」に進んでください。
○ 編集前
boot=/dev/sda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
linear
default=linux
image=/boot/vmlinuz-2.4.9-31.22mlsmp
label=linux
initrd=/boot/initrd-2.4.9-31.22mlsmp.img
read-only
root=/dev/sda5
image=/boot/vmlinuz-2.4.9-31.22ml
label=linux-up
initrd=/boot/initrd-2.4.9-31.22ml.img
read-only
root=/dev/sda5
○ 編集後
boot=/dev/sda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
linear
default=linux
image=/boot/vmlinuz-2.4.9-31.22mlsmp
label=linux-old
initrd=/boot/initrd-2.4.9-31.22mlsmp.img
read-only
root=/dev/sda5
image=/boot/vmlinuz-2.4.9-31.22ml
label=linux-upold
initrd=/boot/initrd-2.4.9-31.22ml.img
read-only
root=/dev/sda5
image=/boot/vmlinuz-2.4.9-e.25.50mlsmp
label=linux
initrd=/boot/initrd-2.4.9-e.25.50mlsmp.img
read-only
root=/dev/sda5
image=/boot/vmlinuz-2.4.9-e.25.50ml
label=linux-up
initrd=/boot/initrd-2.4.9-e.25.50ml.img
read-only
root=/dev/sda5
/etc/lilo.conf の修正後、lilo -vコマンドを実行します。
# lilo -v
Added linux-old
Added linux-upold
Added linux *
Added linux-up
5. ブートディスクの作成
ブートディスクでシステムを起動している場合は、ブートディスクを再作成します。
ブートディスクでシステムを起動していない場合でも、緊急時用としてブートディスクの再作成を推奨します。
新しいカーネル(2.4.9-e.25.50ml)に対応したブートディスクを作成します。
# mkbootdisk 2.4.9-e.25.50mlsmp
6. マシンの再起動
リブートして、新しいカーネルでマシンを起動します。
# shutdown -r now
※mkinitrd などのコマンドは、rpm コマンドによって実行されるので、新たに実行する必要はありません。
マシン再起動後、カーネルが新しいバージョンになっているかを確認します。
# uname -r
2.4.9-e.25.50mlsmp
マシン再起動時に新しいカーネルで問題のある場合は、旧いカーネルラベル(linux-old)を選択して起動し問題の解決を行ってください。
[参考資料]
[FAQ] カーネルの種類について
[FAQ] カーネルパッケージについて
[更新履歴]
2004/02/17 MIRACLE LINUX Standard Edition V2.1用に修正
2002/12/16 devfsd の記述を削除
2001/11/20 新規作成
|