なんと技術系のネタは夏以来。
もともとは技術ブログのつもりだったのに何てことだ・・・。
過ごし易い季節だったので、外ばかり行ってたからだけど。
そんな訳で、すっかり寒くなってきたせいか家で何かをする時間が増えてきた。
今回は特定の使い方をすると、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
あとは前述した通りに、カーネルを更新すればよい。
本当に簡単に出来るようになったね。