v9fs

Linuxでもカーネル2.6.14からv9fs(9P2000ファイルシステム)がメインラインにマージされている.

使い方は簡単.ベル研のソースコードリポジトリをmountするときは,こんな感じ.

# modprobe 9p2000
# 
# mkdir /n/sources
# mount -t 9P -o proto=tcp 204.178.31.8 /n/sources

また,Plan9portは,UNIX上でPlan9環境をエミュレートするコマンド群だが,v9fsにも対応している.例えば,Plan9portのacmdを動かすと,acmeプロセスの名前空間をv9fs経由でアクセスできる.

acmeを起動すると,"/tmp/ns.$USER.:0/acme"などというファイルが作られるので,次のようにmountする.namespaceは,"/tmp/ns.$USER.:0"を返すコマンド.先に挙げた例と違い"proto=tcp"じゃなくて,"proto=unix"となっているのは,UNIXドメインソケット経由で9Pをやりとりするから.

# mount -t 9P -o proto=unix,name=$USER,uid=`id -u`,gid=`id -g` `namespace`/acme /mnt/9

これで/mnt/9以下にacme名前空間が見える.

% lc /mnt/9
1       acme    cons    consctl draw    editout index   label   new

で,

% echo Hello, world! >> /mnt/9/1/body

とか実行すると,acmeのウィンドウに"Hello, world!"の文字が表示される"じゃなくて">>"であることに注意.しばらくこれでハマった.">*1.もう少し詳しくは,acmeとwinを参照.

*1:">"じゃなくて">>"であることに注意.しばらくこれでハマった.