kernelのアップグレード

kernelのアップグレードは基本的にやりたくない。 なぜなら、いきなり動かなくなってしまうおそれがあるから。 だけど、セキュリティーホールが見つかったりしたら、 アップグレードするべきである。

今回、kernel-2.4.2-2にセキュリティホールがあるとの報告が redhatのホームページにあったので思い切ってアップグレードに挑戦した。 しかし、ソースからのアップグレードではなく、rpmからだったので比較的 簡単におこなうことができた。

もどる

ダウンロードとインストール

2001.09.1の時点でredhatのセキュリティ情報は ここ にのっている。 ここから、kernelのrpmを引っ張ってくればよい。 このころは、kernel-2.4.3-12にアップグレードしろと書いてあった。 とくに開発する必要がない場合は、kernel-2.4.3-12.i386.rpmをダウンロー ドしてきてインストールすればよい。

# cd /usr/local/src/rpm
# rpm -ivh kernel-2.4.3-12.i386.rpm
Preparing...                ########################################### [100%]
   1:kernel                 ########################################### [100%]
	
このとき注意した方がいいのは、-Uvhではなく-ivhで行なう ことである。こうしておけば、古いバージョンのkernelで立ち上げることが 可能となる。まだ再起動していけません。下の起動RAMディスクの設定と liloの設定をしてから再起動しましょう。

起動用RAMディスク

まずは、起動用RAMディスクを作成します。これは、kernelがmoduleを参 照するために必要なものです。mkinitrdコマンドで作成しましょう。 良くわからない人は、よくわからないまま、進めましょう。 僕も良くわかりません。

# mkinitrd /boot/initrd-2.4.2.img 2.4.2-2
# mkinitrd /boot/initrd-2.4.3.img 2.4.3-12
	

2.4.2と2.4.3の起動用RAMディスクが完成です。

liloの設定

kernelが変わったことをliloに知らせて、 新しいバージョンのkernelで立ち上げるようにする。 また、古いバージョンでも立ち上げられるようにする。 以下に私のlilo.confを示す。

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
message=/boot/message.ja
linear
default=linux

image=/boot/vmlinuz-2.4.2-2
	label=linux.old
	read-only
	root=/dev/hda1
	initrd=/boot/initrd-2.4.2.img
image=/boot/vmlinuz-2.4.3-12
	label=linux
	read-only
	root=/dev/hda1
	initrd=/boot/initrd-2.4.3.img
	

この設定により、linuxという名前の新しい2.4.3のkernelと linux.oldという名前の2.4.2のkernelができあがりである。 そして、linuxを立ち上げの際のデフォルトにしている。

最後にLILOをブートセクタに書き込む。

# lilo -v
LILO version 21.4-4, Copyright (C) 1992-1998 Werner Almesberger
'lba32' extensions Copyright (C) 1999,2000 John Coffman

Reading boot sector from /dev/hda
Merging with /boot/boot.b
Mapping message file /boot/message.ja
Boot image: /boot/vmlinuz-2.4.2-2
Mapping RAM disk /boot/initrd-2.4.2.img
Added linux.old
Boot image: /boot/vmlinuz-2.4.3-12
Mapping RAM disk /boot/initrd-2.4.3.img
Added linux *
/boot/boot.0300 exists - no backup copy made.
Writing boot sector.

	
これでできあがりです。あとは再起動しましょう。 もし、うまく動かない場合は、linux.oldを使って起動しましょう。 自信がない人は救済用ディスクをつくるのを忘れないように。

もどる


Kenji Ohmori
Last modified: Tue May 31 01:58:46 JST 2005