yumでkernel update

なんと技術系のネタは夏以来。
もともとは技術ブログのつもりだったのに何てことだ・・・。
過ごし易い季節だったので、外ばかり行ってたからだけど。
そんな訳で、すっかり寒くなってきたせいか家で何かをする時間が増えてきた。
今回は特定の使い方をすると、kernel panicを起こす現行のkernelをupdateしてみる。
昔はmakeやら何やらでえらい時間がかかったものだけど、今はyumで一瞬で終わる。
yumはその時点で最新のものに更新してしまうので、インストールしたrpmを
明示的にローカルに保持しておくように注意する。
何かあったら、この実績の出来るであろうカーネルに再び戻せるようにするためだ。

さっそく以下のコマンドで更新対象カーネルを確認する。
今回は最新 kernel.x86_64 2.6.9-89.0.11.EL になる。特に問題なければ更新する。

yum list | grep kernel
yum install -y kernel*

/etc/grub.confに選択できるkernelが追加されているので、今回構築したカーネルを選ぶ。defaultパラメータに番号でしているするのだが、選択肢はゼロスタートで上から連番にIDが振られている。今回はCentOS (2.6.9-89.0.11.ELsmp)が2番目にあったので、『default=1』と指定する。ここまで出来たら再起動する。再起動後に『uname -a』で更新されたカーネルかどうかを確認する。

reboot
 :
uname -a
Linux ns 2.6.9-89.0.11.ELsmp #1 SMP Tue Sep 15 07:08:59 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux

今回、導入されたkernelのrpmは/var/cache/yum/baseにキャッシュとして残っている。
これをローカルのyumリポジトリに登録しておく。
yumリポジトリを構築するには createrepo と言うコマンドが必要なのでインストールしておく。

リポジトリ用のディクレトリを作成し、これをウェブサーバで公開しておく。
今回は/yum/repos/centos4/x86_64というディレクトリを準備し、/yumをapacheで公開した。
作成したディレクトリに先ほどのrpmを置き、createrepoして準備完了。

yum install -y createrepo
scp ns:/var/cache/yum/base/*.rpm /yum/repos/centos4/x86_64
createrepo /yum/repos/centos4/x86_64

このリポジトリを使う場合は、対象サーバの/etc/yum.repos.d/CentOS-Base.repoにて
参照先をローカルサーバを見るように修正する。

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=base
 ↓
[base]
name=CentOS-$releasever - Base
baseurl=http://repo.domain.com/yum/repos/centos$releasever/$basearch/

変更が終わったらリストを確認してみる。
外のリポジトリを見た後だと、キャッシュが残っていてローカルのリストを
取りにいかないので、以下のファイルを削除してキャッシュを無効にする。

yum clean all

あとは前述した通りに、カーネルを更新すればよい。
本当に簡単に出来るようになったね。

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)