Logo address

Plan 9

2014/11/23 改訂 remoty http:/remoty3/
2016/01/01 追加 現在やっていること
2016/02/17 補足 u9fs http:/u9fs/index.html
2016/05/12 改訂 rc http:/rc/index.html
2016/05/12 改訂 rc http:/rc/rc2.html
2017/06/08 改訂 MacFUSE 9P Bridge http:/fuse/index.html
2017/06/12 追加 Plan9port http:/p9p/index.html
2017/06/13 改訂 u9fs http:/u9fs/index.html
2017/06/17 改訂 Plan9 のインストール http:/install/index.html

9logo
Plan 9 第3版ロゴ
me
ここは Plan 9 オペレーティングシステムの専門ホームページです。

古い解説と新しい解説が入り乱れています。 --- そのうちに整理しましょう

さらに、半年前の記事が現在では修正を要する場合もあります。書かれた日付を見て判断してください。

定年退職の結果、引越ししました。
http://p9.nyx.link (旧 http://plan9.aichi-u.ac.jp)
http://ar.nyx.link (旧 http://ar.aichi-u.ac.jp)

1. Plan 9 とは

1.1. 誕生

Plan 9 は1995 年に Bell 研究所によってリリースされた新しいオペレーティングシステムである。Bell 研究所と言えば UNIX を開発した事で知られている。Plan 9 は UNIX を開発した同じグループが、UNIX の現在抱えている問題点を整理し、問題を克服する為に提唱したオペレーティングシステムである。

彼らは、現在進行しているコンピュータの利用形態 - 分散環境 - に UNIX がもはや適合できなくなったと感じている。

ネットワークには多数の UNIX ワークステーションが繋がっているが、ばらばらに管理され、管理者の私的な好みによってソフトウェアがインストールされ、その結果ワークステーションは事実上特定のユーザによって私物化されている。
かっての UNIX はどの端末にも等しいサービスを行い、ユーザがどの端末から利用しても自分の構築した環境の下で作業できた。この良い面がワークステーションによる分散環境の中で消失している。

UNIX の利用者がホストコンピュータから離れ、ワークステーションを使いたがるのは、
ワークステーションの下にはマウスとグラフィックスを使ったユーザフレンドリな環境があるからである。このような利用法を維持しながら、ネットワークに接続されているコンピュータたちをあたかも1つのコンピュータのように見せ、かっての UNIX のような、均一な、集中化された、しかもユーザの好みの環境を柔軟に構成できるオペレーティングシステムが必要であると彼らは考える。

Plan 9 はそのようなオペレーティングシステムを目指して開発された。

Dennis Ritchie による写真の説明 (2003/06/09 付けの 9fans の記事より)
Description: The Plan 9 system is now available for commercial research and development organizations. Members of the Computing Techniques Research Department, which developed the software, are (foreground, from left) Dennis Ritchie, Dave Presotto, Rob Pike, (background, from left) Tom Killian, Allen Eisdorfer, Tom Duff, Phil Winterbottom, Jim McKie, Howard Trickey and Sean Dorward. 2.Members of the Computing Techniques Research Department are in a lab setting, conversing with one another. BELL LABS NEWS JULY 24, 1995
Plan 9 は UNIX と比べて以下の特徴を持っている。
これらの特徴の多くは Plan 9 の名前空間の特異な性質と結びついている。

1.2. 現在のコミュニティ

2006/12/15 追加
Plan 9 のコミュニティはメーリングリスト 9fans を通じて活動を行っている。今年(2006)初めて国際的なワークショップをスペインのマドリードで開催した。日本からは筆者と佐藤さんが参加し発表を行った。最後に集合写真を撮った。(実際の参加者は 40 名弱である)

拡大写真

もっと多くの写真と参加者の発表論文やスライドは
http://cm.bell-labs.com/sources/contrib/iwp9-2006/
あるいは
http://lsub.org/iwp9/
から手に入る。
現在の Plan 9 開発の中心になっている Russ Cox さんは上から 2 段目の右から 2 人目である。今回初めて顔を合わせて、握手を求められたとき思わず "Oh, you are very young!" と言ってしまった。ちなみに筆者は前から 2 段目の左から 2 人目である。

1.3. Plan 9 のインストールと運用

1.4. Plan 9 の香り

1.5. プログラミング

1.6. UNIX との違い

1.7. Tips

1.8. その他

2. Plan9と他OSとの相互運用性

2.1. 概観

2016/03/29

2.1.1. mount

マウントはリモートマシンのファイル参照、転送の初心者向けのインターフェースを提供する。

mount request 評価 command comment
plan9 → plan9 9fs
plan9 → unix 9fs or srvssh 注1
unix/win → unix sshfs
unix → plan9 9pfuse 注3
他に Plan9 側のファイルシステムのマウントは WebDAV によっても可能であるが、Pegasus のインストールが必要である。WebDAV の設計はいかにも Microsoft 流であって嫌いである。

注1: 9fs の場合 unix 側で u9fs を動かす。srvssh の場合も u9fs のインストールが必要。srvssh は ssh ポート(22番) を利用したファイルシステムである。この点で sshfs と似ているが仕組みが異なる。9atom 付属の ssh2 が良い。
注3: Plan9 port が必要。ただし Mac の場合、コードの修正が必要。 http:/fuse/ を見よ。(他の OS でも同様な修正が必要かも...)

2.1.2. cpu/drawterm

Plan9 の cpu コマンドはリモート実行と共にクライアントのファイルシステムをリモート側にマウントする。ホスト側のポートは 17010 である。また同時に Plan9 の認証サーバーも使われている。unix ホストで同様なサービスはできていない。(実現するのはかなり難しいだろう)

表に、cpu コマンドと類似のツールの有無をまとめる。

mount request 評価 command comment
plan9 → plan9 cpu
plan9 → unix
unix → unix
unix/win → plan9 drawterm 注3
注3: drawterm のオリジナル作成者は Russ であるが、現在では Cinap のものの方が良い。

2.1.3. 9vx

unix 側に Plan9 のミニ環境を構成する方法もある。例えば VirtualBox で Plan9 が動く。(Parallels では動かない)
しかし VirtualBox の場合は、ホストの unix 側とのインターフェースがとりにくい。(ファイル転送や Copy&Paste)
Russ の 9vx を使う方法だとインターフェース問題は解決されるが、Macでは(現在) 9vx は動かない。それに drawterm の方が簡便であろう。

2.2. Drawterm

unix/OSX あるいは windows から Plan9 の CPU サーバーにリモートアクセスする。GUI ベースの端末であり、サーバーのファイルがマウスを使って編集できる。

一時期、OSX に関してよく落ちることがあった。原因は Russ の Drawterm では Mac の Carbon が使用されており、このことが問題を引き起こしていたためである。2015年にAppleはXQuartzプロジェクトを成功させた1。現在では XQuartz の下に美しい X11 アプリケーションが動く。今年(2016)に入って Cinap も Drawterm をリリースした。この drawterm では Mac 用は XQuartz が利用されている。これは安定して気持ち良く動く。

なお、Russ の Drawterm は現在 David du Colombier がメンテしている。


注1: XQuartzのインストールが必要である

2.3. u9fs

Unix を Plan 9 にマウントする (2017/06/13 改訂)

U9fs is a file server that can run on Linux, FreeBSD and MacOS. U9fs is used for mounting unix file system on Plan9. It is easy to install U9fs to Linux and FreeBSD. However MacOS is somewhat different and need much more instructions. In addition, utf-8 encoding of file and directory names of MacOS is called UTF8-MAC, which makes some problems. The fix is also instructed.

u9fs は Linux、FreeBSD、MacOS など unix 系の OS で動く簡易ファイルサーバーである。unix のファイルを Plan9 にマウントするのに使われる。LInux と FreeBSD では設定が簡単なのだが、MacOS は曲者で、詳しい解説が要求される。
ここでは特に MacOS の u9fs に焦点が当てられている。また、MacOS の UTF8:MAC の文字コードを Plan9 側に出さないためのパッチが含まれている。

http:/u9fs/index.html

2.4. 9PFUSE

2017/05/28 更新

Plan9 を除く普通のOSではファイルシステムのコードはカーネルの中に存在し、そのことが新しいファイルシステムをOSに組み込むことを困難(開発が困難なばかりか、OSの配布者以外は事実上配布不可能)にしていた。Plan9 ではファイルシステムのコードをカーネルの外に置き、カーネルにはファイルシステムとのインターフェースに関するコードを置く。この考え方はFUSE(Filesystem in Userspace)として他のOSでも採用されつつある1

FUSEに相当する Plan9 のインターフェースは 9P である。 FUSEが9Pを話せれば、Plan9 のファイルシステムをマウントできる。FUSEが9Pを話せるためにはカーネルのサポートが必要である。Macではすでにカーネル拡張としてサポートされている2。最近の 9pfuse は気持ち良く動く3
9Pを話すファイルサーバーが Plan9 以外にはなかったが、最近は Qemu でやれるらしい。

u9fs はなぜか 9pfuse ではマウントできない4

最新の OSXFUSE(osxfuse-3.5.8.dmg) の下で 9PFUSE を使う場合にはパッチが必要である。この点に関して筆者の詳しい記事が次にある。(2017/05/28)


注1: FUSE の技術は文献[1]に詳しい。
注2: /System/Library/Extensions/9p.kext
注3: コマンドで使う場合は十分に実用になっていると思う。Finder では、ファイルを生成する操作で問題が発生している。また数千あるいは数万のファイルを次々とサーバーにアップロードした場合に Busy 状態になる。原因不明。
注4: これは正しくないらしい。マウントができた。(2017/06/16)

ネットの記事

2.5. Plan9port

2017/06/13

Plan9port とは unix への Plan9 ソフトウェアの移植集である。作者は Russ Cox。勿論、Plan9 のソフトウェアの中には移植不能のものも存在するが、それでもかなり多数のソフトウェアが移植されている。直ちに役立つ有益なツールは Plan9 の標準シェルとエディタではないかと思う。

Plan9port のインストールの方法を紹介する。

Plan9port http:p9p/index.html

2.6. 消えゆくプロトコル

LANの中で発達した NFS は消えていくだろう。
CIFSもサポートが打ち切られるだろう[3]。

2.7. References

[1] CS135 FUSE Documentation
https://www.cs.hmc.edu/~geoff/classes/hmc.cs135.201109/homework/fuse/fuse_doc.html
[2] Mounting HDFS
https://wiki.apache.org/hadoop/MountableHDFS
[3] 最新のWindowsはSMB 1.0/CIFSのサポートを削除できる
http://www.atmarkit.co.jp/ait/articles/1501/19/news092.html

3. Mirror of Plan 9 Articles

ATT 分割以降の、Bell-Labs が辿った苦難の歴史を簡単に纏めておく

1984	ATT 分割 → Bell-labs は ATT Technologies(= 旧 Western Electric) 傘下に
1992	Plan 9 Operating System (first edition)
1995	Plan 9 Operating System (second edition)
1996	ATT Technologies → Lucent Technologies
2000	Plan 9 Operating System (third edition)
2002	Plan 9 Operating System (fourth edition) 9P2000
2002	Jan Hendrik Schön 事件
2007	Lucent Bell Laboratories and Alcatel Research 合併 → Alcatel-Lucent
2015	Nokia and Alcatel-Lucent 合併へ → Plan 9 page is closed?

現在は Plan9 の開発とサポートは Bell-Labs から離れ、9front と 9atom に移っている。
Bell-labs には今やかっての開発スタッフはいない。Google に移ってしまった。そのために Bell-Labs の Plan9 関係の Web ページの維持ができなくなっている。(しばらく closed であったが、また再開されている)

他に Net で見かけたミラー

4. 現在やっていること

2016/01/01

Grid Computing をもう一度考え直してみたいと思っています。
Plan9 コミュニティでは 10 年前に Grid Computing で盛り上がっていたのですが、技術的な目標をクリアする目処がはっきりした段階で、熱が冷めてしまったようです。このコミュニティは技術屋さんの集まりですから... 当時、コミュニティが Grid に求めていたのは並列計算ですが、求めるものが悪かったのかもしれません。それでも、マルチドメイン認証など、大きな成果を得ました。

最近はビッグデータが話題になります。データの自動収集が可能になり、記憶装置が安価になった結果、巨大なデータを保存するようになり、その解析が要求されるようになったのですね。問題は、このデータをどこで解析するかです。現在は Web 全盛ですが、Web のように、クライアントにデータをコピーする訳にはいきません。データが大きすぎるのです。しかしプログラムはデータに比べて圧倒的に小さいのです。するとプログラムをサーバーに運んでサーバー側で処理するのが正しい考え方です。これは Web の HTTP とは逆の考え方です。

クライアント側の任意のプログラムをサーバーに運んで実行するので、サーバーのセキュリティが大問題になります。サーバーを守るためには、サーバーには一切の書き込みを許さないのが一番良いのですが、他方ではクライアントのプログラムをサーバーで実行し、結果を受け取れないといけません。そんなことが可能か? あなたならどうします?

Is it possible to accept both requirement?

Plan9流の回答が http:9grid2/index.html にあります。

5. My Softwares for Plan 9

5.1. Pegasus

Pegasus は Plan 9 で動くウェブサーバで、Plan 9 らしい特徴を持っています。
また
など web サーバとしての基本的な能力も持っています。

5.2. Kirara

Kirara は Plan9 のためのフルテキスト・デスクトップ・サーチエンジンです。
詳しくは
を見てください。

5.3. Rit

Rit の名前の由来は Rc In Text である。
Rit はプログラム埋め込み型のテキストプロセッサである。その点で PHP と似ているのだが、埋め込まれるのは Plan9 のシェルスクリプト rc である。
従って Rit を使うには殆ど新しいルールは現れない。唯一つ、ドル記号 "$" が Rit を特徴づけている。
Rit は一般的なテキストプロセッサであるが、Javascript と相性が良く、CGI プログラミングで威力を発揮する。

5.4. Remoty

Remoty はブラウザから操作するホームページ管理ツールです。
ファイル管理だけではなく、テキストファイル(もちろん HTML ファイルも)の編集や、システムコマンドが実行できます。
サーバ上のファイルが直接編集できるので、サーバー環境の下での結果が直ちに確認できます。ftp や scp などを使ってファイルをアップロードする必要がなく、効率良くホームページを作れます。CGI プログラミングで特に威力を発揮します。

5.5. Plisten

A protected listener

5.6. その他

6. Plan 9 関係へのリンク

6.1. 海外(団体)

6.2. 海外(個人)

6.3. 国内(俺のもあるよと言う人は知らせて下さい)

6.4. Web 上の記事

6.5. News Group

現在のメーリングリストのアドレスは 9fans@9fans.net から配布されている。
登録の方法は
に書かれている。

アーカイブは

7. Papers