9vx
新しいVMネタ。Russ CoxさんがホストOSを変更することなく、Plan9を実行できる9vxをアナウンスした。Linux、FreeBSD、MacOS X上で動とのこと。技術的にはRussさんらがMITで研究開発しているvx32という仮想化支援ライブラリを使っている。今年の(今週やっていた)USENIXでも発表があったらしい。ここ数日の9fansは9vxの話題で持ち切りで、開発が進んでいる。
面白そうなので、後で試してみよう。
[追記:2008-07-15] 9vxを9vmと書いていたり、何も調べずに適当に書いていたので補足というよりも修正。9vxはPlan9カーネルをユーザランドに移植したもので、その上でPlan9の実行バイナリを無変更で実行できるというもの。対応しているホストOSはLinux、MacOS X、FreeBSD*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 のセキュリティモデルの制約下にある。