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
Plan 9 第3版ロゴ |
---|
古い解説と新しい解説が入り乱れています。 --- そのうちに整理しましょう
さらに、半年前の記事が現在では修正を要する場合もあります。書かれた日付を見て判断してください。
定年退職の結果、引越ししました。
http://p9.nyx.link
(旧 http://plan9.aichi-u.ac.jp
)
http://ar.nyx.link
(旧 http://ar.aichi-u.ac.jp
)
彼らは、現在進行しているコンピュータの利用形態 - 分散環境 - に 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 のコミュニティはメーリングリスト 9fans を通じて活動を行っている。今年(2006)初めて国際的なワークショップをスペインのマドリードで開催した。日本からは筆者と佐藤さんが参加し発表を行った。最後に集合写真を撮った。(実際の参加者は 40 名弱である)
参加者の発表論文一覧
http:/iwp9-2006/
当時の Plan 9 開発の中心になっていた Russ Cox さんは上から 2 段目の右から 2 人目である。今回初めて顔を合わせて、握手を求められたとき思わず "Oh, you are very young!" と言ってしまった。ちなみに筆者は前から 2 段目の左から 2 人目である。
Plan9 サーバーは非常に堅牢で、しかも優れたバックアップのメカニズムを持っている。過去のファイルの状態が瞬間的にわかるだけではなく、変更履歴を追うことも可能である。以下ではこの能力を活用して、同一のネットワークにある他のホストのバックアップシステムとして Plan9 を利用することを考えてみよう。そのために何が準備され、どこまで達成されているかを解説する。
現在では殆どすべての 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 の履歴管理は実用的である。
TextEdit.app
を使うのは止めたほうが良い。mi.app
あるいは atom.app
が推奨される。ただし両方共問題を含んでいる。( http:/p9p/
を見よ)
昔はコマンドのリモート実行と言えば 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 |
マウントはリモートマシンのファイル参照、転送の初心者向けのインターフェースを提供する。
mount request | 評価 | command | comment |
---|---|---|---|
Plan9 → Plan9 | ◎ | 9fs |
|
Plan9 → unix | ◎ | sshfs |
注1 |
unix/win → unix | ◎ | sshfs |
注2 |
unix → Plan9 | ◯ | 9pfuse |
注3 |
リモートの unix ホストをローカルな unix クライアントにマウントする、つまり sshfs
がうまく働くには、ホスト側で sshd が動いていること、ローカル側で fuse が動いていることが必要である。Linux では fuse は標準インストールされていて、標準的に使える。Mac の場合には macFUSE のインストールが必要であるが、難しくはなかったと思う。FreeBSD は厄介で、「動かない!」との悲鳴がネットに散らばっている。この問題は別に解説する。
sshfs
を使うのは 9front の場合である。他に unix 側で u9fs
を動かす方法もある。その場合 Plan9 側では 9fs
コマンドでマウントする。http:/fuse/
を見よ。(他の OS でも同様な修正が必要かも...)
unix 側に Plan9 のミニ環境を構成する方法もある。例えば VirtualBox で Plan9 が動く。(Parallels では動かない)
しかし VirtualBox の場合は、ホストの unix 側とのインターフェースがとりにくい。(ファイル転送や Copy&Paste)
Russ の 9vx を使う方法だとインターフェース問題は解決されるが、Macでは(現在) 9vx は動かない。それに 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 追加)
https://support.apple.com/ja-jp/HT201341
https://swtch.com/drawterm/
https://code.9front.org/hg/drawterm
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 側に出さないためのパッチが含まれている。
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)
http:fuse/index.html
/System/Library/Extensions/9p.kext
はあるものの、現在の Apple は、kernel 拡張に対しては厳しい姿勢を採っていて、使えない。新しい macOS は正式に 9P に対応したらしい。
ネットの記事
http://landley.net/kdocs/Documentation/filesystems/9p.txt
http://landley.livejournal.com/48698.html
https://www.kernel.org/doc/ols/2010/ols2010-pages-109-120.pdf
(2010)http://www.slideshare.net/ericvh/virtfs
(slide)http://www.linux-kvm.org/page/9p_virtio
https://swtch.com/plan9port/man/man4/9pfuse.html
Plan9port とは unix への Plan9 ソフトウェアの移植集である。作者は Russ Cox。勿論、Plan9 のソフトウェアの中には移植不能のものも存在するが、それでもかなり多数のソフトウェアが移植されている。直ちに役立つ有益なツールは Plan9 の標準シェルとエディタではないかと思う。
Plan9port のインストールの方法を紹介する。
Plan9port http:p9p/index.html
Unix port of rc http:rc/rc3.html
LANの中で発達した NFS は消えていくだろう。
CIFSもサポートが打ち切られるだろう[3]。
http:nfs/
http:aquarela/
[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
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 によって、場所を変えて再開されている。基本的にはそのまま維持する方針らしい。
https://9p.io/
(David du Colombier)http://9legacy.org/
(David du Colombier)
Grid Computing をもう一度考え直してみたいと思っています。
Plan9 コミュニティでは 10 年前に Grid Computing で盛り上がっていたのですが、技術的な目標をクリアする目処がはっきりした段階で、熱が冷めてしまったようです。このコミュニティは技術屋さんの集まりですから... 当時、コミュニティが Grid に求めていたのは並列計算ですが、求めるものが悪かったのかもしれません。それでも、マルチドメイン認証など、大きな成果を得ました。
最近はビッグデータが話題になります。データの自動収集が可能になり、記憶装置が安価になった結果、巨大なデータを保存するようになり、その解析が要求されるようになったのですね。問題は、このデータをどこで解析するかです。現在は Web 全盛ですが、Web のように、クライアントにデータをコピーする訳にはいきません。データが大きすぎるのです。しかしプログラムはデータに比べて圧倒的に小さいのです。するとプログラムをサーバーに運んでサーバー側で処理するのが正しい考え方です。これは Web の HTTP とは逆の考え方です。
クライアント側の任意のプログラムをサーバーに運んで実行するので、サーバーのセキュリティが大問題になります。サーバーを守るためには、サーバーには一切の書き込みを許さないのが一番良いのですが、他方ではクライアントのプログラムをサーバーで実行し、結果を受け取れないといけません。そんなことが可能か? あなたならどうします?
注: この図は SVG file。 Safari OK。 Chrome は NG かも知れない。
Plan9流の回答が http:9grid2/index.html
にあります。
cpdir copies directory contents recursively.
list directory recursively.
http://plan9.bell-labs.com/plan9/
Bell Labs Plan 9 Page # GONE!http://www.vitanuova.com
Vita Nouvahttp://v9fs.sourceforge.net/rfc/
Rfc 9p2000 (draft)http://9front.org/
9fronthttp://www.9atom.org/
9atom # GONE!http://www.9legacy.org/intro.html
9legacyhttp://lsub.org/ls/research.html
# GONE!http://cat-v.org
CAT-V
http://swtch.com/plan9port/
Plan 9 port to other OS by Russ Coxhttp://swtch.com/
Russ Coxhttp://www.terzarima.net/plan9/
Charles Forsythhttp://www.fywss.com/plan9/
Steve Kotsopouloshttp://lsub.org/who/nemo/
Fco.J.Ballesteroshttp://ants.9gridchan.org/
ANTS by Mycroftivhttp://www.9gridchan.org/antfarm/
ANTS by Mycroftivhttp://www.collyer.net/who/geoff/9/
Geoff Collyer's Plan 9 softwarehttp://9front.org/cinap.html
Cinap Lenrekhttp://www.9netics.com/
Skip Tavakkolianhttps://www.kix.in/plan9/
Ananthttp://9grid.net/
John Floren
https://tip9ug.jp
Tokyo Inferno / Plan 9 Users Group (TIP9UG)http://d.hatena.ne.jp/oraccha/
Plan9 日記http://p9.nyx.link/netlib/
(My netlib for Plan 9)
http://pdos.csail.mit.edu/6.828/2007/lec/l-plan9.html
http://www.kix.in/plan9/freed07-plan9.pdf
http://lwn.net/Articles/137439/
http://www.cs.unm.edu/~fastos/05meeting/PLAN9NOTDEADYET.pdf
http://swtch.com/~rsc/talks/nauth.pdf
http:wiki/mailing_lists/
(mirror)
9fans のアーカイブは