Plan9環境

2002年4月にPlan 9 の第4版がリリースされました(Plan 9 4th Ed.版)。
Plan9はベル研で研究されているオープンソースの分散OSです。
Plan9にはCPUサーバ、ファイルサーバ、名前空間など独特のアーキテクチャがあります。

ここでは一つのPCで動作する「単体版のPlan9(ftp版)」を手軽に体験する方法として、
Plan9をHDDにインストールせずにCD-ROMから直接起動して使用する方法を紹介します。
(ネットワーク機能も使用できます)

尚、HDDにPlan9をインストールするケースはこちらで紹介しています。

今回使用したマシン環境は次の通りです。
CPU:Celeron 500MHz
VGA:Intel 82810(i810)
モニタ:ADI MicroScan M700
LANカード:Intel EtherExpress PRO/100 S(i82557)
キーボード:日本語キーボード
マウス:3ボタンマウス(PS/2) Logicool SM-23R
(2ボタンマウスの場合はShift+右ボタンで3ボタンマウスの中ボタンをエミュレート可能)


(1)CD-ROMイメージの入手とCD-ROMの作成

http://plan9.bell-labs.com/plan9dist/download.htmlから「plan9.iso.bz2」という圧縮ファイル(約64MB)をダウンロードします。
このファイルを解凍(Linux環境の場合:「bunzip2 -k plan9.iso.bz2」)して「plan.iso」というCD-ROMイメージファイル(212,635,648バイト)を得ます。
このCD-ROMイメージファイルをCD-Rに書き込むとブータブルCD-ROMが出来上がります。


(2)CD-ROMブートからデスクトップ表示までの操作手順



(3)端末ウィンドウの追加表示と端末ウィンドウサイズの変更方法

RcというのはPlan9標準のシェルです。
シェル画面のことをここでは端末ウィンドウ(端末画面)と呼ぶことにします。

まず最初に表示されるデスクトップにある端末画面でコマンド操作はできます。




ここでは端末ウィンドウの追加表示方法及び端末ウィンドウサイズの変更方法を説明します。



(4)Rioについて

RioはPlan9の標準ウィンドウシステムです。
Rioウィンドウシステムが立ち上がると一つのRioウィンドウ領域が表示されます。
rioコマンドを使用するとRioウィンドウ領域の中に別のRioウィンドウ領域を作成することができます。
さすがに分散OSだけあってこれは結構面白い発想だと思います。

ここではrioコマンドの使用例を紹介します。



(5)コマンドの所在

Plan9の多くのコマンド(cd,lc,ls,ps等)は/bin直下にあります。
しかし一部のコマンドは/binのサブディレクトリにあります。
/binのサブディレクトリにあるコマンドは「サブディレクトリ名/コマンド名」という形式で指定します(下例参照)。


Plan9には「find」コマンドがありません。
もし「ping」コマンドの所在を確認したいのであれば「du -a /bin | grep ping」でファイルサイズと一緒にコマンドパス名が得られます。


(6)ネットワーク機能の利用

CD-ROMからPlan9を直接起動してネットワークカードが自動認識された場合にはネットワーク機能も手軽に体験することができます。
特にインターネットに接続されたルータやDHCPサーバがあればルータ経由でPlan9からインターネット利用もできます。



(7)DOS形式FDのマウント

CD-ROMブート環境でもFDのマウントはできます。
例えばDOS形式のFDのマウントは次のコマンドで行えます。
(マシン環境によってはdosサービスの自動起動が失敗することがありますが、その場合は「dossrv」コマンドで手動起動します)

mount -c /srv/dos /n/a: /dev/fd0disk
ls -l /n/a: (mountコマンドを投入した端末画面でのみ書き込み含めたFD操作が可能)
unmount /n/a:

「-c」オプションを省略した場合、マウントしたDOS形式FDへの書き込みではFD内の最上位レベルのディレクトリは作成できません。
例えば「mkdir /n/a:/myplan9」コマンド実行すると、
「can't create /n/a:/myplan9: mounted directory forbids creation」エラーとなります。
同じくFDのディレクリ内でないところにファイルを書き込む場合も同じようなエラーとなります。
例えば「man factotum > /n/a:/manfact.txt」コマンドを実行すると、
「can't open: mounted directory forbids creation」エラーとなります。

「-c」オプションを省略してもDOS/Windows上であらかじめFD内に作成しておいたディレクトリに対してはサブディレクトリやファイルを作成することは可能です。


(8)画像ビューア

Plan9にはgif, jpg, ppm, pngなどの画像表示コマンド(画像ビューア)があります。
Plan9のCD-ROMにはサンプル画像がありますので以下のようなコマンドで画像表示することができます。
尚、画像表示用のコマンドを入力するとその端末ウィンドウは画像ウィンドウになります。

上記の表示例

更に、アニメーションgif画像のアニメーション表示もできます(その1その2)。


(9)3ボタンマウス

主に端末画面やテキストエディタ(後述)で3ボタンマウスの中ボタンによるポップアップメニューが使い勝手を向上させます。
端末画面のポップアップメニューではsnarf(クリップボードのようなsnarfバッファへのデータコピー)&paste(snarfバッファからのデータ貼り付け)が使えるのでコマンド入力の手間がかなり省けます。



尚、画像ビューアなどでは3ボタンマウスの中ボタンには対応していません。


(10)テキストエディタ

Plan9にはedエディタの他にRioウィンドウシステムで動作するテキストエディタとしてsamとacmeがあります。
個人的にはマウス操作のし易いsamの方が使いやすい感じがします。



(11)日本語表示

Plan 9はunicode対応ですのでUTF-8形式のテキストファイルなら日本語表示が可能です。



(12)VNC

Plan9ではVNC(Virtual Network Computing)機能が標準コマンドとしてサポートされています。
vncsはVNCサーバ起動コマンドであり、vncvはVNCビューア起動コマンドです。
CD-ROMから単体版のPlan9を直接起動した場合でもVNCが使用できます。



(13)メモリファイルシステム

Plan9ではメモリファイルシステムが使用できます。
特にPlan9をHDDにインストールせずにCD-ROMから直接起動する環境ではPlan9のメモリファイルシステムを有効活用できます。
Plan9をHDDにインストールせずにCD-ROMから直接起動する環境では通常のPlan9ファイルシステムにあるファイルを更新したり新規ファイル/新規ディレクトリの作成ができません。
またMS-DOS形式FDにソースプログラムを置いてコンパイルして作成したプログラムは実行形式ファイル扱いにできないためそのプログラムを実行することはできません。


メモリファイルシステムの簡単な使用例を下記に紹介します。



(14)ユーザプログラムの作成

メモリファイルシステムを使用すればユーザプログラムの作成、テストができるようになります。
それではCD-ROMから直接起動するPlan9環境で簡単なプログラムを作成してみましょう。
今回のテーマはカレントユーザ名を表示するプログラムの作成です。
(カレントユーザ名表示のコマンドとしてwhoがありますが、whoはシェルスクリプトになっています)

【前準備】
メモリファイルシステムを作成、マウントしてそこをカレントディレクトリにします。

ramfs -m /n/temp
cd /n/temp

【プログラムソース(ファイル名:printuser.c)】
sam printuser.cで下記のプログラムソースファイルを作成します(sam画面例)。
#include <u.h>
#include <libc.h>
void
main(void){
  print("%s\n",getuser()); ※ここはprint("%q\n",getuser());でもOKです。
}
【コンパイルとプログラム作成(プログラムファイル名:printuser)】

8c printuser.c (printuser.8の生成)
8l -o printuser printuser.8 (-oオプション省略時は8.outが生成されます)

【実行(実行画面例)】

term% printuser
glenda
term%


(15)その他