address Logo

9vx

目次

2008/07/19
2008/08/23

/image/under-construction

ようやく春学期の講義が終わった。僕の講義は春学期に偏っているので、春学期は猛烈に忙しい。しかも、さらに悪い事に、3月も末になって気付いたのだが、僕が昨年苦労して準備したスライドが消滅していたのだ、MacBook の 2.5 インチハードディスクが昨秋クラッシュして、講義関係の資料が消失してしまっている事に気がついたのだ。そういう事で 9fans の間では 9vx の話題で沸騰しているというのに僕は黙って ROM を決め込まざるを得なかった。

さて昨日ようやく 9vx を試す事ができた。久しぶりにエキサイトした。9vx に関しては 9fans 以外には知られていないと思えるので、まずは簡単に紹介しよう。

9vx とは?

9vx を理解するために、仮想化技術の話から始めるのが良いであろう。9vx は VM(仮想マシン)技術ではないが、目指すところは良く似ている。

VMWare, VirtualPC, Parallels などは、VM を実現するアプリケーションである。もちろん最終的に欲しいのは VM の下で動く OS (ゲスト OS) の環境である。
VM は仮想 CPU, 仮想ディスク、仮想ディバイスを持ち、それらはゲスト OS のコントロールの下で動く。ゲスト OS の下で、ゲスト OS のアプリケーションが(再コンパイルすることなく)そのまま動く。

9vx は vx32 の技術の応用に過ぎない。僕が理解する限り、vx32 は FreeBSD などの Linux アプケーションのバイナリ互換技術に近い。しかし vx32 はもっと進んでいる。ゲスト OS が直接的にホスト OS のアプリケーションンになってしまうのである。ゲスト OS には修正が必要である。しかしゲスト OS のアプリケーションはバイナリレベルで無修正のままゲスト OS 上で実行できる。その意味でゲスト OS は仮想(あるいは擬似) OS である。

インストール

9vx は ttp://swtch.com/9vx/ から取って来る。コンパイル済みのもの(freebsd,linux,osx)が置かれているので、直ちにインストールできる。

インストールの場所は、僕の場合には

    /usr/local/9vx-0.12

この下に Plan 9 の名前空間を構成する。例えば

    /usr/local/9vx-0.12/usr/arisawa/

など

-bash$ pwd
/usr/local/9vx-0.12
-bash$ 9vx.OSX

すると rio が立ち上がる。

設定

2008/08/23

9vx は Plan 9 端末と同様に /rc/bin/termrc を読みに行く。termrc の中で /lib/ndb/local と /rc/bin/termrc.local が読み取られる。そして最後に $home/lib/profile が読み取られ、rio が実行される。従って以下のファイルを好みに応じて編集すればよい。

特徴

最後の点について: ホスト OS(OSX) への窓は #Z である。従って、例えば

    bind '#Z' /n/host

/n/host 以下に OSX のファイルが現れる。

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

現在の 9vx のファイルシステム

OSX のファイルシステムがそのまま使われている。従ってユーザ名とグループ名は UNIX のそれである。

term% pwd
/usr/arisawa
term% ls -l
--rw-r--r-- Z 1 arisawa wheel 6148 Jul 13 07:24 .DS_Store
d-rwxr-xr-x Z 1 arisawa wheel  170 Jun 30 22:46 bin
d-rwxr-xr-x Z 1 arisawa wheel  238 Jul 13 06:40 lib
d-rwxr-xr-x Z 1 arisawa wheel  374 Jul 19 15:35 tmp
term% 

従って chown, chmod などは UNIX のセキュリティモデルの制約下にある。
/dev/cap がサポートされていない。(ユーザの変更に関して UNIX の制約を受ける)

真の Plan 9 端末と 9vx との比較論

2008/08/23

9vx は他のホスト OS の下に擬似的な Plan 9 端末を実現する。真の Plan 9 端末を普通の意味での Plan 9 端末として使う限りは 9vx を使っても不自由はしない。むしろ Plan 9 端末を仮想 PC の下で動かすのに比べると速度やホストインターフェースの点で圧倒的なアドバンテージがある。他方 Plan 9 端末はサーバ的な使い方、すなわち、ネットサービスも可能であるが、9vx では必要な機能がサポートされていない。

VGA は Plan 9 にとって(Plan 9 だけではなくマイナーな OS にとって)頭の痛い問題であった。ドキュメントなしに次々に独自仕様の VGA コントローラが出現し、極少数のメジャーな OS だけをサポートしている。そうした中で VESA 規格の出現は Plan 9 にとって朗報ではあるが、ハードウェアアクセラレーションが働かないので遅い。他方 9vx はホスト OS のグラフィックスを使うので高速な高速なグラフィックスが実現できる。従って端末に関する限り Plan 9 は VGA の問題から解放されたように見える。

しかしながら、VESA の出現によってネーティブな VGA のサポートが弱くなったような気がする。Plan 9 の開発は人手不足だから手が抜けるところは抜かれて行くだろう。僕としては開発環境に関しては本来の Plan 9 を使いたい。そのためにも PCI Express で使える VGA カード 1 枚で良いから Plan 9 でドライバをサポートして欲しいところである。

VESA に関する役立つ URL

以下単に僕のメモ。

具体例

plan9 on OSX
OSX: 変更の必要なし
plan9 kernel: 変更の必要あり
plan9 appls: 変更の必要なし

kernel への変更

メカ

vx32 とは?