Plan 9とGo言語のブログ

主にPlan 9やGo言語の日々気づいたことを書きます。

今から始めるPlan 9

この記事はPlan 9 Advent Calendar 2019の2日目です。

ベル研の公式ディストリビューションは、2015年1月に最後のメンテナだったGeoff Collyerさんが離職されたことにより、現在活動が停止していますが、代わりにコミュニティで派生したものがいくつかあり、現在はそれらを使う方が主流です。あまり情報がまとまっていないので、個人的に把握しているものについて今から始める人のために様子をまとめてみます。

Plan 9 from User Space (plan9port)

インストール方法は過去に書いたのでこちらを参照ください。

これはOSではなく、Plan 9ツールをUnixに移植したものです。当然、Plan 9カーネルが提供する名前空間の編成などは使えませんが、acme(1)エディタやrc(1)シェルなどをPlan 9ネイティブのものと同じように使えますし、9p(1)コマンドで各9pサービスが提供する名前空間も扱えます。date(1)などUnixと同名のコマンドも含まれていますが、既存のシェルスクリプトなどを壊さないために、通常はUnix側を優先するようになっています。Plan 9側のコマンドを使いたい場合、9 lsのように9(1)で切り替えます。

おそらく、acme(1)またはrc(1)を使ってもらうのが実用的ですが、どちらも個性的なので最初は全然使い方がわからないと思いますので今後どこかで使い方を紹介する予定です。rc(1)コマンドライン履歴の機能を持っていないので、rlwrapから起動すると良いでしょう。

開発はGitHubのIssueやPull Requestを使って行います。以前はRuss Coxさんがマージしていましたが、2019年後半あたりからDan Crossさんが主にマージしているようです。(plan9port-dev)

9front

確か2011年ごろ、Plan 9公式の更新が滞り始めた頃にforkしたディストリビューションです。新しいハードウェア、暗号スイートの追加などが行われているので、ネイティブで動作するPlan 9をインストールするには、9frontを使うのが一番簡単だと思います。

ただし現在、公式のPlan 9とは異なる部分がいくつかあります。例えばファイルシステムcwfsまたはhjfsの2択で、公式が採用しているfossilディストリビューションに含まれてさえいないので、本来の雰囲気を楽しみたい人には向きません。個人的にもインストールはしたことがありますが、使ってはいないので、参考リンクだけ。

開発は独自のMercurialリポジトリで行なっているようです。

9legacy

ベル研Plan 9からの変更をパッチとして提供しています。当然パッチ集なので、

  1. ベル研Plan 9を入れる
  2. インターネットに接続できるように設定する
  3. 9legacyのパッチを適用する
  4. コンパイラなどのリビルド
  5. カーネルのリビルド

など、慣れない環境でこれを行うのは大変です。Downloadページで、パッチを適用したISOイメージやディスクイメージも提供されているので、最初はこれらを使うのが良いでしょう。GoのGo Dashboardで稼働しているPlan 9は9legacyのはず。

メンテナはDavid du Colombier(@0intro)さん。 GitHubplan9-contribにPull Requestを送るとたまに拾ってくれますが、このリポジトリは9legacyと同期されていないので、どういう基準でパッチが採用されているのかは分かりません。

plan9-rpi

Plan 9Raspberry Pi用ポートです。メンテナはRichard Millerさん。最新のカーネルソースコード/sources/contrib/miller/9/bcmにあるようです。公式サイト等は特になさそう?でした。

残念ながらRPi持っていないので使ったことはありませんが、RPi 4で動いたとの噂は聞いたことがあります。インストールはPlan9 on raspberry pi 3が良さそうな雰囲気ですが、URLが古いのでplan9.bell-labs.com9p.ioに置き換えて読みましょう。

Harvey OS

Plan 9のコードをgccclangコンパイルできるように変更したディストリビューションです。ANSI/POSIX環境の拡張なども含まれているようです。ソースのビルドには、mkfileの代わりにbuild.jsonが使われます。

いつの間にかDockerイメージも作られるようになっていました。一応起動はしましたが、まだExperimentalなのでうまく動いてくれなかった...

$ docker run -ti --rm harveyos/harvey

ドキュメント

plan9.bell-labs.comのミラーが9p.ioに置かれています。Wikiインストーラ等もミラーされているので、ドキュメントを参照したい場合はこれか、cat-v.orgを読むといいでしょう。