2009/12/12 土曜日 | 投稿者: aqua

こんばんは、aquaです。

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

さっそく以下のコマンドで更新対象カーネルを確認する。
yum list | grep kernel

今回は kernel.x86_64 2.6.9-89.0.11.EL のカーネルになる。特に問題なければ更新する。
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 install createrepo

リポジトリ用のディクレトリを作成し、これをウェブサーバで公開しておく。今回は/yum/repos/centos4/x86_64というディレクトリを準備し、/yumをapacheで公開した。作成したディレクトリに先ほどのrpmを置き、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にてローカルサーバを見るように修正する。

[update]
name=CentOS-$releasever – Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates

[update]
name=CentOS-$releasever – Updates
baseurl=http://repo.domain.com/yum/repos/centos$releasever/$basearch/

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

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

タグ:
カテゴリ: 技術系
RSS 2.0 フィードを通してこの投稿の返信を追えます。 返信、またはあなた自身のサイトからトラックバック出来ます。
返信 » ログイン