カーネルをアップデート(1)

作成:

前置きが長くなったので2回に分けることになりました。
今回は前置きだけで、具体的な内容については次回に回します。


さて、前回HDDのパフォーマンスがものすごく悪いことが分かった。
原因はおそらくドライバが組み込まれておらず、本来の性能を発揮できないためだと考えられる。
で、ネットで検索、検索・・・

で、分かったことは、この問題に突き当たったある人が、なんと自分でドライバ作っちゃってました。
うぉぉ、これがLinuxコミュニティーの本来の姿、欲しいもの、ないものは自分で作っちゃう。
いいものができたら公開して、みんなに使ってもらう。
使う方はバク報告、改良のアイデア提供をしたりする。
場合によっては自分でデバッグorチューンナップ、そしてフィードバック。
Linuxそのものも、こういうことの繰り返しで作られているんですね。 いや~すごい。まあ私にはそんな技術はないのでその恩恵にあずかるだけですが、 こういう世界を改めて実感できました。
(よく考えたら、ディストリビュータの人たちもこういう立場の場合も多いんですね。 なんだか特別な人たちだと思ってしまいがちですが・・・)

話が横にそれてしまいましたが、そのドライバはProject Vine(Vine Linuxのディストリビュータ)に フィードバックされてアップデート版のカーネルに組み込まれているそうです。
このアップデート版は様々なバクフィックスもされているので、 インストールした時点で問題がなくとも導入すべきものです。
Vine Linuxのftpサーバ(ftpサーバリスト http://vinelinux.org/getvine.html#ViaFTP)の
Vine-2.1/updates/RPMS/i386/にいくとあります。
カーネルのアップデートについて、詳しい内容は (Kernel Upgrade/Configure Guide for Vine)を参照してください。

カーネルのバージョン

さてここでカーネルのバージョンについて少し触れておきます。

インストールした時点でのカーネルのバージョンは2.2.18-0vl4.2です。
カーネルのバージョンは起動時に表示されるほか、「uname -r」としても表示されます。
「.」や「-」で区切られている数字などには、それぞれ意味があります。
バージョンナンバーの呼び名は一般名称ととプログラム内の呼び名が違うので「一般名称(プログラム内の呼び名)」として説明します。 人に話すときは一般名称を使った方がいいでしょう。
このバージョン番号ははじめの2がメジャーバージョン(VERSION)です。 非常に大きな変更がなされたことを表す番号です。
次の2はマイナーバージョン(PATCHLEVEL)です。 新しい機能が取り込まれるなど比較的大きな変更があったことを表す番号です。 余談ですが、開発版のバージョンは奇数、製品版のバージョンは偶数になっています。
その次の18はパッチレベルバージョン(SUBLEVEL)です。 バグの修正や、ドライバの追加など比較的小さな変更を表す番号です。
次の-0vl4.2はリビジョン(EXTRAVERSION)です。 既にある機能を使うかどうか、ドライバの呼び出し方などの変更を行ったことを示す番号です。 カーネルのリビルドを行うときはここを変化させます。

メジャーバージョンやマイナーバージョンが変わるときは、 各種依存するコマンドなどのバージョンアップも同時に行わないといけないなど非常に面倒なことをやらないといけません。
しかし、このアップデートされたカーネルのバージョンは2.2.19-0vl0.23とパッチレベルのバージョンアップなので アップデートは比較的気軽に行うことができます。
とはいえ、OSの根幹を入れ替える作業だけに下手をすると起動できなくなる可能性もあり、 慎重に作業を行わないといけません。

パッケージのダウンロード

さて前置きが長くなってしまいましたが、早速作業に入ります。
Vine Linux2.1以降のバージョンではrpm以外にaptというパッケージ管理システムが導入されています。 これを使うと、パッケージ間の依存関係をサーバーに問い合わせて自動的にパッケージをインストールしてくれます。 が、まだネットワークにはつながっていないのでrpmを使います。
rpmにしても、Linuxの方で先にネットにつなげられるようにしておけば、そのままftpでとってきてもいいんですが、 まだ設定していないのでWindowsでとってきて、CD-Rで渡すという、頭の悪そげな方法でやってみます。
それではftpサーバーのVine-2.1/updates/RPMS/i386/のディレクトリにある rpmファイルをとりあえず全部とってきてCD-Rに焼いてしまいます。

CD-ROMのマウント

さて、このCD-RをLinuxで読むには、ちょっとした手間が必要です。
これがマウント作業です。
では、やってみましょう。CD-ROMドライブにディスクを入れてからroot権限で、

# mount -t iso9660 -r /dev/cdrom /mnt/cdrom

とすると、/mnt/cdromにCD-ROMがマウントされアクセスできるようになります。
「mount」コマンドを軽く説明すると、-tオプションはマウントするデバイスのファイルシステムの種類を指定します。 CD-ROMの場合はiso9660がそれに当たります。
-rオプションは読み込み専用でマウントすることを意味しています。 このオプションは指定しなくてもマウントできますが、 「ブロックデバイス/dev/cdromは書き込み禁止です、読み込み専用でマウントします」と警告が出ます。
また、/etc/fstabにデバイスとマウントポイント、ファイルシステムなどが設定してある場合は、

# mount /mnt/cdrom

と、マウントポイントを指定するだけでマウントできます。
また、使用が終わって取り出すときは、アンマウントします。
この作業をしないと、取り出せません。(最近はイジェクトボタンを押せば自動でアンマウントしてくれるかも)

# umount /mnt/cdrom

これで、アンマウントできました。
「使用中だ」などと怒られた場合カレントディレクトリが/mnt/cdromのなかになっていないか、 /mnt/cdrom以下を参照しているアプリケーションがないかを確認してください。
複数ユーザがログインしている場合は他のユーザが参照している場合もあります。

というわけで、CD-Rから必要なファイルをインストールしますが、 この際、/rootに/updatesというディレクトリでも作ってそこに持っていってしまった方が 後々面倒がなくていいです。

# cd /root
# mkdir updates
# cp -r /mnt/cdrom/* /root/updates

さて、これで準備はできました。実際にカーネルのインストール作業に入りましょう。

・・・と思いましたが。ひたすら前置きが長くなったので次回に回します。