coLinuxに第2の息吹

 Cooperative Linux(coLinux)は、GNU/LinuxがそのままWindows上で動作するという、仮想化の分野で独自の位置を占めている。2000年に始まったプロジェクトではあるが、最近やっと0.72になったばかり。しかし、andLinuxUlteo Virtual Desktopなどの著名プロジェクトに基盤技術を提供するだけのものは持っている。UbuntuのWubiやFedoraのLive USB-Creatorといったツールが示す通り、今、Windowsの利用者をGNU/Linuxに引き寄せることに関心が集まっている。そんな今こそ、coLinuxの背後にある技術に注目すべきではないだろうか。

 coLinuxは、Dan Aloniが2000年に取り組み始めたプロジェクトだ。当時AloniはWindows育ちのコンピューター科学科1年生だったが、フリーソフトウェアに熱中するようになり、User Mode Linux(テストのために仮想マシン上でGNU/Linuxを動かそうというプロジェクト)をCygwin(よく知られたWindows向けUnix風環境)に移植しようと思い立って、プロジェクトUmlwin32を立ち上げた(このプロジェクトは現在も存続するが、Aloni自身は積極的に関与していない)。

 やがて「WindowsのユーザーAPIは柔軟性が低く、Linuxカーネルをそのまま載せるには不十分だ」と確信するに至ったAloniは、LinuxカーネルのソースをCygwinの下でコンパイルしlinux.sysファイルを作ってみるなど(問題が多発して諦めた)、ほかの道を模索し始めた。そして、2003年、それまでに培ったLinuxカーネルについての知識を武器にAloniはゼロからcoLinuxを立ち上げた。

 2005年5月に小さな会社(2007年にIBMに買収された)を設立して以降、Aloniはプロジェクトの管理から遠ざかっている。現在、ストレージ・システム分野の仕事をしているAloniは「忙しすぎて、今は、Cooperative Linuxの維持管理に積極的に関わる余裕がない。しかし、気にはかけている」と言う。開発者用ページは古いままだが、プロジェクトは、今、Henry Nestlerが維持管理している。

 今もベータ段階にあるcoLinuxだが、主な利用者は2通り想定されている。1つは、古くからのプロジェクト・メンバーである岡島純が「デスクトップLinuxを一般の人々の手に」を標榜していることからわかるように「WindowsからLinuxへの王道を提供する」こと。2つめは、Cygwinとほぼ同じだが、フリーソフトウェアを長く使ってきた人が使い慣れたGNU/LinuxツールをWindowsでも使えるようにすることだ。

coLinuxの仕組み

 大概の仮想化方式とは異なり、coLinuxは、その名が示す通り、ホスト・オペレーティング・システムと仮想ネットワークを介してシステム・リソースを共用する。ホスト・オペレーティング・システムとの通信には3種類の方法を用いるが、最終的にはどれでもほぼ同じだ。また、ハードウェアというよりソフトウェアであるためきわめて容易に仮想ネットワークを変更できることから、いずれの場合も手順は簡単だ。こうしたコーポレーティブ方式には、独立した仮想マシンやオペレーティング・システム・エミュレーターとは異なり、システムにcoLinux用のメモリーを追加する必要がなく、アプリケーションをcoLinux上で動かしてもパフォーマンスがほとんど低下しないという利点がある。

 coLinuxはLinuxコードのシステム・コールを32ビットWindowsネイティブのシステム・コールに置き換えることで動作する。容易に想像できるように、実際にこの置き換えを行うにはきわめて長い時間と多大な労力を必要とする。しかも、基にするLinuxカーネルのバージョンが変われば作業をやり直さなければならない。Nestlerの見積もりでは、置き換えが必要な個所の約70%は前バージョンのものを流用できるが、残りは手作業の必要があるという。「その大部分は自動的なパッチ・ユーティリティーが利用できない」どころか、カーネル・ソース・リポジトリーにあるコメントを読み、変数の新設など、新機能やコードの変更個所を調べなければならない。

 Nestlerは、新しいカーネルを最初に動かすのは「非常に困難な作業」になることがあると言う。coLinuxでは起動の際ブート・レベルをすべて飛ばすため、この部分の変更個所の発見に時間を要することがあり、またホスト・システムをクラッシュさせるエラーになるのが普通だからだ。こうした難しさのため、coLinuxで使われているカーネルは2年前にリリースされた2.6.17が最新だ。約10時間で移植できることもあるが(Nestlerの最速記録)、この2.6.17は1か月以上かかった。プロジェクト・リソースが限られていることを考慮すると、開発者2人がそれぞれ毎週5~10時間取り組んで2か月以上かかる計算になる。

coLinuxの使用と派生品

 標準ディストリビューションをWindowsで動作するように書き換える方法は、coLinux wikiに説明されている。Getting Started with coLinuxだ。少々古いが、つまずきそうな個所は丁寧に説明されている。ただし、できあがったオペレーティング・システムにはコンソールはあるが、グラフィカル・インタフェース用のXサーバーはない。

 熟練者にはそれでもいいかもしれないが、単に見てみたいというだけの人はインストールが難しくデスクトップがないため、ほかの方法を試した方がいいだろう。NestlerによるとcoLinuxインストーラーをダウンロード単位の課金で販売しようかという動きがあるというが、あまり注目されていない。それよりも、andLinuxを利用する方がいいだろう。Ubuntuをベースとしており、既存のWindowsデスクトップに組み込まれる。元々、Linuxベースのハンドヘルド・ゲーム・コンソール上で動作するように開発されたもので、最近までcoLinuxの派生品として最もよく知られていた。

 最近、andLinuxの人気を脅かしているのは、Ulteo Virtual Desktopだ。現在、第2ベータだが、かなりの注目を集めている。あまり経験のない利用者でもウィザードを介して作業できるからだろう。また、このプロジェクトのチーム・リーダーがGael Duvalだということも理由の1つと思われる。Duvalは人気の高いMandrakeディストリビューション(現在のMandriva)の創始者の一人だ。まだベータ段階だが、安定性は非常によい。ただし、GNU/Linuxプログラムを数分以上放置し再び戻る際の応答が遅いことがある。

今後

 coLinuxは十分に確立された32ビットオペレーティング・システムだ。しかし、Nestlerによると、Vista 64ビットとWindows Server 2008 x64には大きな問題があるという。これらのシステムはMicrosoftが割り当てた署名でデジタル署名されたドライバーだけしか受け付けないのだ。しかも、フリーソフトウェアプロジェクトがそれを入手するのは不可能に近い。

 だが、Nestlerは次のように言ってのけた。「coLinuxの利用者はほとんどが個人(企業ではなく)だからWindows Server 2008は使っていないだろう。また、Vistaの利用者は、一般に、Linuxを欲しがらない」

 Nestlerの関心は、こうした問題より、最近のLinuxカーネルが持つ準仮想化機能を利用することの方に向いている。これを利用すればカーネルのバージョンが上がったときの移植が容易になるはずだからだ。Nestlerは、coLinuxが「CD-ROMでインストールし起動する普通のLinuxディストリビューション」になることを夢見ている。

 coLinuxが将来どこへ向かうとしても、興味をそそるプロジェクトであり続けるだろう(技術的に。そしてWindowsを走らせることに対するフリーソフトウェアの嫌悪は棚上げするとして)。coLinuxやその派生品を利用することで、一般利用者は利便性、そしてお好みのGNU/LinuxアプリケーションをWindowsデスクトップで動かすといういささか背徳の気配のあるスリルを味わうことができる。Nestlerも「coLinuxはソフトウェア開発者の関心を引いている。まったく異なるオペレーティング・システムの両方を見ることができるからだ」とコメントしている。

 AloniによるとLinus Torvaldsがかつて「ダーティー・ハック」と呼んだというプログラム、coLinuxはそれが作り出した領域で繁栄しているように思われる。

Bruce Byfield コンピューター・ジャーナリスト。Linux.comの常連。

Linux.com 原文