coLinux-20041007へのアップグレード

またまた、スナップショットですがcoLinux-20041007がリリースされています。2004年の7月10日のcoLinux-0.6.2から何度かスナップショットがでていて無視していたのですが、そろそろあげてみます。

リリースノートの適当訳

とりあえず、リリースノートの和訳です。かなり適当なので間違っているかもしれません。このファイルは2004年7月10日のリリースノートに追記される形になっています。2004年7月10日とかぶるところは文字をグレーにしています。

Version 0.6.2
  • LinuxパッチがLinxu 2.6.7にポーティングされた。今後、Linux 2.4.xは公式にはサポートされない。
  • initrd機能が追加された。コンフィグレーションファイルに<initrd path="…"/>を追加することによって、この機能は有効になる。
  • PCAPのハンドリングをAdapter/Device/Driver名の替わりに接続名を使用するように変更。ネットワークのNAMEオプションはPCAPとTAPで統一され、同じメーカ/デバイスが複数装着されている場合にも接続できるようになった。
  • FLTKとNTコンソールでAltGrをサポート。
  • coserial daemon(現在はLinuxのみ)を追加。これによりゲストマシンにシリアルターミナルで接続できる(/sbin/mgetty ttyS0等を実行する)
  • デバッグ機能の向上。colinux-debug-daemonと名づけられた"collector" daemonが用意され、これにより全てのcoLinuxコンポーネントからのメッセージが収集される。また、このdaemonを実行すると、動作状況が出力されるようになる(このことにより、何が何を引きおこしているのか知るのが楽になる)。デフォルトでは全てのデバッグメッセージはオフであり、こちらの方が若干動作が速くなる。
  • 正しいvmlinuxとユーザスペース実行ファイルが、正しいcoLinuxドライバと共に利用されているかどうかを確認するために、バージョンナンバーのAPIが追加された
  • coLinuxをシャットダウンするときの微小なメモリリークを修正。
  • Linux portにおいて、ドライバの参照カウンタを修正。
  • ネットワークドライバ(conet)が、チェックサムを確認するようになった(PCAPによって受信されるネットワークパケットは実にひどい様だ)。
  • alias="hda2"のようなブロックデバイスエイリアスが追加された。コンフィグレーションファイルの<block_device>要素に前述のようなエイリアスを追加することができ、coLinuxにマウントさせるようにすることができる(root=がついていても)。注意: cobdXデバイスとそれのエイリアスは排他的である。つまり、同時にその両者をマウントすることはできない。
  • Linuxゲスト内での浮動小数点状態保護を修正。現在では、coLinuxはflops20テストプログラムをパスすることができる。
  • Linuxゲスト用に新しいタイマを実装した。これによりtime-going-back問題が修正される。
  • メッセージパッシング処理を向上させた。これによりネットワークが若干高速化されるかもしれない。
  • Win32-TAPドライバがVersion 8.1にアップグレードされた。このバージョンはドライバのコードはまったく変更されていない。しかし、TAPドライバを同梱している他のプロジェクトに、複数のTAPドライバが共存(例えばOpenVPNとcoLinux)できるようにドライバの識別子が変更されたことを通知するためにリリースされた(???)。従って、coLinuxは、TAPドライバをTAPxxxxco(xxxxはドライババージョン)としてインストールするようになる。インストール後、「ネットワークとダイアルアップ接続」においてデバイス名に"(coLinux)"が追加されていることに気づくであろう。古いドライバはアンインストールするまでそのままである。
  • MACアドレスが指定されない場合は、TAPドライバと同じプリフィックス(00:FF:XX:XX:XX:XX)を用いたランダムなMACアドレスを使用するようになった。
  • 2KBバイト以上のサイズのネットワークパケットの送受信に関するバグを修正。
  • コンソールや他のDaemonが起動時にcolinux-daemonに接続できない問題を修正(Windowsのみ)。
  • linux.syusとvmlinuxのコンパイルに異なるバージョンのGCCコンパイラが使用されている場合にリブートを停止するバグを修正。
  • coLinuxのキーボード処理の向上(スキャンコードをWindowsからlinuxからに送るようにした)。
  • PAEセットアップ処理は作業中。

必要なパッケージのインストール

最新のcoLinuxは2.6系列カーネルのみサポートしています。なので、coLinux 0.6.1を使用している人は、必要なパッケージをインストールしておきます。

下記のコマンドで2.6系列のカーネルが要求するパッケージを調べましょう(「-s」を忘れずに)。

# apt-get update
# apt-get -s install kernel-image-2.6.6-1-386

次に、上記のコマンドでインストールしようとしたパッケージ(もちろんkernelパッケージ以外)をインストールしましょう。私は、dash, cramfsprogs, initrd-tools, module-init-toolsをインストールしました。

# apt-get install dash cramfsprogs initrd-tools module-init-tools

ついでにパッケージをアップグレードしておきましょう(これはcoLinux-20040710を既に使っている人もやっておきましょう)。

# apt-get update
# apt-get upgrade

以前のcoLinuxのアンインストール

まず、coLinuxを動かしている人はShutdownさせましょう。これには、coLinuxにログインしてshutdownコマンドを実行しても良いですし、coLinuxをサービスで動かしている場合は「コントロールパネル→管理ツール→サービス」の「Cooperative Linux」を右クリックして「停止」を選択しても良いです。

サービスで動かしている場合はコマンドプロンプトで以下のコマンドを打って、サービスからcoLinuxを削除しておきます。

C:\coLinux> colinux-daemon --remove-service
Cooperative Linux Daemon, 0.6.1
Compiled on Sat May 29 16:20:11 2004

daemon: removing service 'Cooperative Linux'
daemon: service 'Cooperative Linux' removed successfully.

次に、今まで使ってた設定ファイルのバックアップを取って起きましょう。特に、ファイル名がdefault.colinux.xmlのままの人は名前を変えておきましょう。

最後に、旧バージョンをアンインストールします。これはコントロールパネルの「アプリケーションの追加と削除」で「coLinux」を選択すればOKです。

coLinux 20041007のインストール

まずブツをhttp://www.colinux.org/snapshots/からダウンロードします。ダウンロードするファイル名はcoLinux-20041007.exeです。

インストールしたファイルをダブルクリックするとインストーラが起動します。ここからは0.6.1と同じなのでこちらを見てください。必要な人は、WinPCapもインストールしておきましょう。

設定ファイルの作成

自分の環境に合わせて、設定ファイルを作成しましょう。標準でついてきたdefault.colinux.xmlと、バックアップしておいた自分の設定ワイルを比較しながら作成します。

私はとりあえず以下のようにしてみました(行頭の数字は説明のためのものです)。

3行目には自分のルートイメージ、4行目にはスワップイメージ、7行目のメモリサイズです。ルートイメージ、スワップイメージの用意できていない方は、こっちを見て用意しましょう。

6行目はinitrdの指定です。以前のバージョンとの大きな違いはinitrdファイルが付いてきたことです(多分)。initrdとは初期RAMディスクの略で、linuxがブートする際に使用するRAMディスクです。このRAMディスクに起動に必要なファイル(モジュールとか)を入れておけば、rootディスクの内容とカーネルのバージョンが一致しない場合などにも起動させることができます。なお、このRAMディスクはcoLinuxをインストールしたディレクトリにinitrd.gzという名前で圧縮済みイメージファイルとしておかれています。

9行目はネットワークの設定です。これは以前のバージョンと一緒です。こちらの「ネットワークの設定」を見て適切なnameを指定します。

< ?xml version="1.0" encoding="UTF-8"?>
<colinux>
    <block_device index="0" path="\DosDevices\c:\coLinux\root.img" enabled="true"></block_device>
    <block_device index="1" path="\DosDevices\c:\coLinux\swap.img" enabled="true"></block_device>
    <bootparams>root=/dev/cobd0</bootparams>
    <initrd path="initrd.gz"></initrd>
    <image path="vmlinux"></image>
    <memory size="128"></memory>
    <network index="0" name="Local Area Network" type="bridged"></network>
</colinux>

動作確認

coLinuxの起動はコマンドプロンプトから行います。
colinux-daemon.exeに"-c"オプションをつけて、
設定ファイルを指定する必要があります。

コマンドプロンプトで以下のコマンドを入力して、coLinuxのコンソールが起動するのを確認しましょう。

C:\Documents and Settings\scratchpad> cd c:\coLinux
C:\coLinux> colinux-daemon -c my.colinux.xml

以前は、手動でモジュールを展開しておかないと、起動時にいろいろ起こられたのですが、このバージョンからinitrdがサポートされたためそんな心配はありません。
下記のように起動するはずです。

console-0.6.1

ちゃんと起動したらrootでログインして下記コマンドでcoLinuxをシャットダウンしましょう。

# shutdown -h now

coLinuxをサービスとして利用する

これは、0.6.1と一緒ですね。以下のコマンドを打ち込んでサービスとして登録しましょう。

設定ファイルの指定をフルパスで行ったら、何故かサービスの起動に失敗するようになりました。とりあえず、設定ファイルをcoLinuxをインストールしたフォルダに置いておいて、"-c"の後には設定ファイルのファイル名のみを指定しておけばよいようです。

C:\Documents and Settings\scratchpad> cd c:\coLinux
C:\coLinux> colinux-daemon --install-service -c my.colinux.xml

上記のコマンドを打ち込むと以下のように表示されるはずです。

C:\coLinux> colinux-daemon --install-service -c my.colinux.xml
Cooperative Linux Daemon, 0.6.2-pre4
Compiled on Thu Oct  7 13:35:51 2004

daemon: installing service 'Cooperative Linux'
daemon: service command line: "C:\coLinux\colinux-daemon.exe" --run-service "Cooperative Linux" -d -c "my.colinux.xml"
daemon: setting restart options
daemon: service installed.

サービスの起動

この状態ではサービスに登録されているだけなので、起動はしていません。まだ、起動時に自動で起動するようになっていません。

そこで「コントロールパネル」→「管理ツール」→「サービス」からサービスの設定を変更します。「サービス」を開くとインストールされているサービス一覧が表示されますので、名前が「Cooperative Linux」となっている行を選択して右クリックでプロパティを選ぶと下のダイアログが表示されます。

service-0.6.1

このダイアログボックスの「開始ボタン」を押しましょう。これでcoLinuxがサービスとして起動します。

サービスの状態が「開始」になるので、とりあえずcoLinuxが動いたのがわかりますが、確認するにはtelnetやsshでネットワーク接続してみるか、coLinuxをインストールしたフォルダにあるcolinux-console-fltk.exeかcolinux-console-net.exeをダブルクリックすることによってコンソールを表示させることができます。

サービスの自動起動

無事にサービスとしてcoLinuxが動いているのが確認できたら、Windowsの起動時にcoLinuxが自動的に起動するようにしましょう。

これは簡単で、上記のダイアログボックスのスタートアップの種類を「自動」にすればOKです。

おしまい

以上で20041007への移行は完了です。

ネットワークが修正されたかチェックしたところ、やっぱりUDPが怪しいです。NFSをUDPでまともに動きません(WinPCap環境での話。TAP-Win32は未確認)。今回もNFS over TCPならば何とか大丈夫です。

あんまり正確な測定ではないのですが、またWinPCap接続でのNFS over TCPの速度比較をしてみました。比較内容は4MBのデータのRead/Write時間です。順調に早くなってはきていますが、まだまだのようです。

表: NFS over TCPでの転送時間
0.6.1 20040710 20041007
Read: 約25秒 約15秒 約7秒
Write: 約38秒 約31秒 約20秒

おまけ

20041007版で標準でついてくるカーネルでサポートしているファイルシステムを調べると以下のように表示されます。

結構たくさんのファイルシステムがサポートされてます。メジャーどころでないのはxfsぐらいでしょうか?

scratchpad@colinux> cat /proc/filesystem
nodev   sysfs
nodev   rootfs
nodev   bdev
nodev   proc
nodev   sockfs
nodev   binfmt_misc
nodev   futexfs
nodev   tmpfs
nodev   pipefs
nodev   eventpollfs
nodev   devpts
reiserfs
ext3
ext2
nodev   ramfs
msdos
vfat
iso9660
nodev   devfs
nodev   smbfs
nodev   autofs
nodev   rpc_pipefs
nodev   nfs

フォローする