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

スナップショットですがcoLinux-20040710がリリースされました。
ネットワーク系のバグが直っているというウワサなので試してみました。

リリースノートの適当訳

とりあえず、リリースノートの和訳です。かなり適当なので間違っているかもしれません。

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

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

2.6系列のカーネルには今まで使用してなかったパッケージが必要になる可能性があります。アップグレードする前に、あらかじめ入れておいた方が良いでしょう。下記のコマンドで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

coLinux0.6.1のアンインストール

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

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

coLinux-20040710のインストール

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

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

設定ファイルの修正

さて、とりあえず動くかどうか確認しましょう。
標準でついてきたdefault.colinux.xmlをmy.colinux.xmlにコピーして自分の環境に合わせて変更しましょう。

私はとりあえず以下のようにしてみました(行頭の数字は説明のためのものです)。
変更したところは、3行目には自分のルートイメージ、4行目にはスワップイメージ、7行目のメモリサイズです。
ルートイメージ、スワップイメージの用意できていない方は、
こっちを見て用意しましょう。

< ?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>
    <image path="vmlinux"></image>
    <memory size="128"></memory>
    <network index="0" type="tap"></network>
</colinux>

動作確認

coLinuxの起動はコマンドプロンプトから行います。0.6.0まではデフォルトでdefault.colinux.xmlを読み込んでくれたので、default.colinux.xmlを編集してcolinux-daemon.exeをダブルクリックすればよかったのですが、20040710では設定ファイルを指定する必要があります。

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

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

ルートイメージが0.6.0の人は、kernel2.4.26用のモジュールがない怒られると思いますが、下記のように起動するはずです。

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

# shutdown -h now

ネットワークの設定

基本的には0.6.0, 0.6.1とあまり変わらないようです。
こちらを見て設定しましょう。

ただし、設定ファイルのnetwork項目のname属性は、「ネットワークとダイアルアップ接続」を開いて表示される「接続の名前」をコピー&ペーストします。例えば、下図のようになっている場合は、

WinPCapを使う場合
<network index="0" name="Local Area Network" type=" bridged" />
TAP-Win32を使う場合
<network index="0" name="Local Area Network1" type="tap" />

とします。

なお、接続の名前は自分で半角英数字の名前に変更しました。
デフォルトの「ローカルエリア接続」という全角文字の名前では、うまくいきませんので注意してください。

ネットワークとダイアルアップ接続

Linuxモジュールの追加

coLinux起動時に表示される「モジュールがない」という警告ですが、これはcoLinuxをインストールしたフォルダにあるvmlinux-modules.tar.gzをcoLinux内で展開すれば消えます。

これもやることは0.6. 0,0.6.1と変わりません。こちらのページの一番下の項を見てください。

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

これは、0.6.1と一緒ですね。サービスとしてcoLinuxを起動すると、以下の利点があります。

  • HostPCの起動時に自動的にcoLinuxが立ち上がる
  • HostPCの終了時に自動的にcoLinuxが終了する

一見、なんてことのないメリットですが、私はcoLinuxを終了する前にWindowsを終了してしまってヤバイと思ったことが何度かありました。幸いディスクイメージは破壊されませんでしたが、自動的に終了するというのは精神衛生上よさそうです。

サービスの登録

さて、設定の仕方です。まずはcoLinuxをサービスとして登録しないといけません。

これもコマンドプロンプトから行います。以下のコマンドを打ち込みましょう。設定ファイルの指定がフルパスになっている点に注意してください(フルパスでなくてもいいかもしれませんが、念のため)。

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

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

C:\coLinux>colinux-daemon -c c:\coLinux\my.colinux.xml --install-service
Cooperative Linux Daemon, 0.6.1
Compiled on Sat May 29 16:20:11 2004

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

サービスの起動

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

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

service-0.6.1

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

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

サービスの自動起動

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

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

おしまい

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

開発チームもネットワークのパフォーマンスを問題視しているようで、今回のリリースで若干のパフォーマンスの向上が見られました。

ただ、NFSをUDPで動かすとやっぱりダメです(WinPCap環境での話。TAP-Win32は未確認)。今回もNFS over TCPならば何とか大丈夫です。

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

coLinux0.6.1
  • Read: 約25秒
  • Write: 約38秒
coLinux-20040710
  • Read: 約15秒
  • Write: 約31秒

相対的に見れば結構早くなっています。しかし、4MBのファイルの読み込みに15秒っていうのはまだまだ厳しいですね。

ちなみに、同じNFSサーバにAthlon1.2GHzの別のマシンで接続して同じテストをすると一瞬で終わってしまいます・・・

フォローする