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
2021/09/27 追加 http:drawterm/index.html
2021/10/12 追加 http:admin/server.html
2021/10/18 改訂 (全般)
2021/11/25 追加 9P http:/9p/index.html
2022/01/06 追加 http:admin/server.html
2022/01/27 追加 Golang のインストール http:golang/index.html
2023/08/06 追加 rc http:/rc/rc3.html
2023/11/13 補足 http:/admin/index.html
2023/11/26 追加 Lua on Plan9 http:/lua/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 追加
2021/10/18 改訂

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

拡大写真

参加者の発表論文一覧
http:/iwp9-2006/

当時の 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
2021/10/02 改定

Plan9 サーバーは非常に堅牢で、しかも優れたバックアップのメカニズムを持っている。過去のファイルの状態が瞬間的にわかるだけではなく、変更履歴を追うことも可能である。以下ではこの能力を活用して、同一のネットワークにある他のホストのバックアップシステムとして Plan9 を利用することを考えてみよう。そのために何が準備され、どこまで達成されているかを解説する。

2.1.1. はじめに

2021/10/02

現在では殆どすべての unix 系の OS では sshd を動かせる。OS のインストール時に常時動かすか否かが問い合わされるので Yes と答えるべき項目であろう。以下では sshd が動いていると仮定する。

sshd が動いていれば何が幸せか? ホストの管理を集中化できることである。我が家には OS が異なる多数のサーバーが動いている。これらのすべてを居間に置いてある MacBook (以下 mbook と言う)から管理する。これが僕のやり方である。
sshd が動いているホストには mbook から ssh でログインできて、管理に必要なコマンドを実行できる。メモが必要であれば mbook 側でメモをとる。

sshd が動いているホストのファイルシステムは sshfs でクライアント側 (mbook) にマウントできる。マウントさえできれば、ファイル管理に Mac の Finder を使える。Finder のカラム表示は使いやすく。これを使ってリモートホストのファイルにアクセスできるのは、非常にありがたいのだ1

Plan9 のサーバーが我が家のホストのファイルシステムをマウントできると何が幸せか? 優秀な履歴管理システムを備えた堅牢なバックアップシステムが手に入ったことになる。かっては u9fs が必要であったので、いくらかの手間を要した。しかし現在では Plan9 側で sshfs がちゃんと動くので手間なしにやっていける。ただし、古典的な Plan9 ではなく、派生 OS の 9front が必要である。

我が家の unix 系のサーバーではどれも sshd が動いている。従って Plan9 サーバーからマウントできて、Plan9 側にバックアッフを作成できる。必要なツールは Plan9 側で準備すればよい。
僕の mbook はサーバーとして設定していない。しかし以下で解説する drawterm によって Plan9 サーバーに mbook のバックアップを作ることができる。

なお Mac は Time Machine と称する独自のバックアッブシステムを持っている。Apple は Time Machine によって、安全なシステム更新(マシン交換)を可能にしたと考えてよい。しかし、僕が日常的に使えるシステムとして Time Machine が役に立った記憶がない。履歴管理が貧弱で使い物にならないのだ。その点 Plan9 の履歴管理は実用的である。


注1. ネットワーク上のファイルの編集に TextEdit.app を使うのは止めたほうが良い。mi.app あるいは atom.app が推奨される。ただし両方共問題を含んでいる。( http:/p9p/ を見よ)

2.1.2. リモート実行

2021/10/02 改定

昔はコマンドのリモート実行と言えば telnet であったが、現在ではセキュリティの問題によって使われていない。安全な環境なら、使っても構わないのだが、サーバーが telent によるアクセスを受け入れるようにするためには(サーバー側の)特別の設定が必要になる。

現在では telnet に代わって ssh である。ssh によるアクセスを受け入れるようにするためには(サーバー側の)特別の設定が必要になる。OS のインストール時に sshd を動かすか否かの選択ができると思うので、以下では sshd が動いていると仮定する。

現在では unix の相互環境では ssh が、Plan9 の相互環境では cpu が使われている。unix から Plan9 へは drawterm が、Plan9 から unix へは ssh が標準的な方法である。

補足的な説明が必要である。

Plan9 の cpu コマンドは ssh と機能的に同じではない。cpu は、リモート実行だけではなく、クライアントのファイルシステムをリモート側にマウントする。従ってホスト側ではホストのツールを使ってクライアントのファイルを操れる。例えばホストとクライアント間のファイルのコピーに cp コマンドが使える。

drawterm は、 unix から Plan9 にアクセスするための、 unix 用の ツールである1。ssh と異なりグラフィク端末を実現している。また cpu コマンドと同様に、クライアントのファイルシステムをリモート側にマウントする。

表に、標準的なリモート実行コマンドをまとめる。

mount request 評価 command comment
Plan9 → Plan9 cpu
Plan9 → unix ssh 注2
unix → unix ssh
unix/win → Plan9 drawterm 注3
注1: drawterm のオリジナル作成者は Russ であるが、現在では Cinap のものの方が使いやすい
注2: unix ホストの ssh のバージョンの影響を受けていたが、現在(2021)は問題ない
注3: drawterm のインストールが必要である。unix 側に X11 環境、あるいは類似のグラフィクス環境が要求される。問題になるのは FreeBSD であるが、Xorg のバイナリインスールで十分

2.1.3. mount

2021/09/20 改定

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

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

リモートの unix ホストをローカルな unix クライアントにマウントする、つまり sshfs がうまく働くには、ホスト側で sshd が動いていること、ローカル側で fuse が動いていることが必要である。Linux では fuse は標準インストールされていて、標準的に使える。Mac の場合には macFUSE のインストールが必要であるが、難しくはなかったと思う。FreeBSD は厄介で、「動かない!」との悲鳴がネットに散らばっている。この問題は別に解説する。

注1: sshfs を使うのは 9front の場合である。他に unix 側で u9fs を動かす方法もある。その場合 Plan9 側では 9fs コマンドでマウントする。
注2: fuse が必要。Linux では標準インストールされている。
注3: fuse と Plan9port が必要。Linux の場合には 9mount の方が使いやすい。
Mac の場合、コードの修正が必要。そして安定していない。 http:/fuse/ を見よ。(他の OS でも同様な修正が必要かも...)

2.1.4. 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 がメンテしている。

もっと詳しい解説が http:drawterm/ にあります。(2021-09-27 追加)


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

2.3. u9fs

2017/06/13 更新
2021/09/20 更新

9front では sshfs がサポートされているので、これでマウントできれば u9fs は不要である。しかし、sshfs のプロトコルは非常に複雑で、バージョンの影響を受けやすい。安全な環境では、sshfs が使えない場合 u9fs で代用可能である。

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

2021/11/23 更新

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

FUSEに相当する Plan9 のインターフェースは 9P である。 FUSE が 9P を話せれば、Plan9 のファイルシステムをマウントできる。FUSE が 9P を話せるためには通訳が必要である。Russ による 9pfuse はそうした通訳である。9P は Macではカーネル拡張としもサポートされている2

File sharing protocol としての 9P は、ついに主要な 3 OS (Windows, macOS, Linux)で標準サポートされるに至った。Plan9 の utf-8 が standard になったのと同様に、9P は間違いなく standard となっていく。

これについての詳しい記事が http:/9p/ にある。

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


注1: FUSE の技術は文献[1]に詳しい。
注2: /System/Library/Extensions/9p.kext はあるものの、現在の Apple は、kernel 拡張に対しては厳しい姿勢を採っていて、使えない。新しい macOS は正式に 9P に対応したらしい。

ネットの記事

2.5. Plan9port

2017/06/13

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

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

Plan9port http:p9p/index.html
Unix port of rc http:rc/rc3.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 ページの維持ができなくなっている。
現在は David du Colombier によって、場所を変えて再開されている。基本的にはそのまま維持する方針らしい。

4. 現在やっていること

2016/01/01

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

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

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

Is it possible to accept both requirement?

注: この図は SVG file。 Safari OK。 Chrome は NG かも知れない。

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. cpdir

cpdir copies directory contents recursively.

5.7. lr

list directory recursively.

5.8. その他

6. Plan 9 関係へのリンク

6.1. 海外(団体)

6.2. 海外(個人)

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

6.4. Web 上の記事

6.5. News Group

現在 Plan9 関係の活動の中心は Plan9 の派生 OS である 9front に移っている。9front のメーリングリストへの参加の方法は
に書かれている。
本家のメーリングリスト(9fans)はまだ健在で、登録の方法は
に書かれている。

9fans のアーカイブは

にある。

7. Papers