9vx

新しいVMネタ。Russ CoxさんがホストOSを変更することなく、Plan9を実行できる9vxをアナウンスした。LinuxFreeBSDMacOS X上で動とのこと。技術的にはRussさんらがMITで研究開発しているvx32という仮想化支援ライブラリを使っている。今年の(今週やっていた)USENIXでも発表があったらしい。ここ数日の9fansは9vxの話題で持ち切りで、開発が進んでいる。

面白そうなので、後で試してみよう。

[追記:2008-07-15] 9vxを9vmと書いていたり、何も調べずに適当に書いていたので補足というよりも修正。9vxはPlan9カーネルユーザランドに移植したもので、その上でPlan9の実行バイナリを無変更で実行できるというもの。対応しているホストOSはLinuxMacOS XFreeBSD*1。実行速度はQEMUはもちろんVMWareよりも高速。9vxを実装するために、vx32というIA32用のsandboxingライブラリを使っている。sandboxを作る手法はいろいろあるけど、vx32はデータをsandboxするためにセグメンテーション、コードをsandboxするために動的コード変換を使っている。vx32のサンプルプログラムには9vxの他にもLinuxシステムコールをトラップしてjail化するものとか含まれているので、Plan9ネタに限定せず,興味がある人はいるのでは?
ちなみにvx32の作者であるBryan Ford氏、どこかで見た名前だなと思ったら、OSKitの人だった。

では、続いて、動かし方。ソースからコンパイルするにはvx32用のbinutils/gccが必要になるので、とりあえずバイナリをダウンロードする。

$ wget http://pdos.csail.mit.edu/~rsc/9vx-0.12.tar.bz2
$ tar jxvf 9vx-0.12.tar.bz2
$ cd 9vx-0.12
$ ./9vx.OSX -u glenda

お、早っ!

ネットワークに関して、Plan9プロトコルスタックは使われず、Linuxのソケットに置き換えられるので、実際のPlan9と微妙に挙動が違う。たとえば、ip/ipconfigやip/pingは動かない。でも、9fsとかはちゃんと使える。

[追記:2008-07-30] 有澤先生による9vx解説ページを発見。

9vx が OSX のアプリケーションに過ぎないので、シームレス。他方(現在のところ) Plan 9 の全てを利用できない。UNIX のセキュリティモデルの制約下にある。

*1:スレッドがらみの問題でLinux 2.4、FreeBSD 6では動かない。vx32がLinuxThreadsやlibkseに対応していないため。Linux 2.6、FreeBSD 7を使うこと。