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ブートからデスクトップ表示までの操作手順
- まずCD-ROMからブートすると次のスタートアップメニューが表示されます。
ここで「2」を指定します。
- LANカードの自動検出
Plan9サポート対象のLANカードであれば自動検出されます。
- 続く「root is from ...」ではそのまま「Enter」キーを押します。
- ログインユーザ名は標準で登録済みの「glenda」(Plan9マスコット名)を指定します(パスワードはありません)。
- マウスポートを指定します。
マウス種別(2ボタン,3ボタン)の指定はありません。
- VGAサイズを指定します(とりあえずデフォルトで構いません)。
- モニタについては実際のものに合わせます(vga, multisync, multisync75等)。
- ここでデスクトップ画面が自動表示されます。
もしmonitor指定に打ち間違いがあるとデスクトップ画面は表示されずに、コンソールに「term%」と表示されます。
このような場合には「aux/vga -m multisync -l 640x480x8 ; rio -i riostart」などと打ち直せばデスクトップ画面が表示されます。
少しズームイン表示(acmeエディタでreadme.rioファイルが表示されています)。
- GUI画面の印象
- プログラムメニューが無いためどんなプログラムを起動できるかが不明。
- ウィンドウタイトル、プルダウンメニュー、ボタン等が無く素朴な画面構成。
(但し、acmeエディタには3ボタンマウスの中ボタンで操作するテキストタイプのメニューあり(新発想))
- 平面的な見栄え。
- スクロールはマウスの左ボタンと右ボタンでスクロールするためちょっと不便。
- 要するに現状のPlan 9プロジェクトではGUIにはあまり力を入れていないということでしょうか...。
- システムリブート方法
システムのリブートは「reboot」コマンド、または「Ctrl+Alt+Delete」キーで行えます。
(3)端末ウィンドウの追加表示と端末ウィンドウサイズの変更方法
RcというのはPlan9標準のシェルです。
シェル画面のことをここでは端末ウィンドウ(端末画面)と呼ぶことにします。
まず最初に表示されるデスクトップにある端末画面でコマンド操作はできます。
ここでは端末ウィンドウの追加表示方法及び端末ウィンドウサイズの変更方法を説明します。
- デスクトップの右クリックメニューで「New」を選択。
- マウスの右ボタンを押したまま矩形を描きます。
- 矩形サイズの端末ウィンドウが生成されます。
- 端末ウィンドウのサイズを変更するには端末ウィンドウの枠をマウスの左ボタンで適当なサイズになるまでドラッグします。
- 端末ウィンドウのサイズが変更されて表示されます。
- 端末ウィンドウを非表示にするにはデスクトップの右クリックメニューで「Hide」を選択し、非表示にしたい端末ウィンドウをマウスの右ボタンでクリックすればOKです。
(デスクトップの右クリックメニューの選択直後はマウスの右ボタンを使用します)
(4)Rioについて
RioはPlan9の標準ウィンドウシステムです。
Rioウィンドウシステムが立ち上がると一つのRioウィンドウ領域が表示されます。
rioコマンドを使用するとRioウィンドウ領域の中に別のRioウィンドウ領域を作成することができます。
さすがに分散OSだけあってこれは結構面白い発想だと思います。
ここではrioコマンドの使用例を紹介します。
- Rioウィンドウ領域の中に端末ウィンドウを追加します。
- 追加した端末ウィンドウの中でrioコマンドを実行します。
この時rioコマンドを実行した端末ウィンドウ自体がRioウィンドウ領域に変化します。
- 上記を繰り返し、端末ウィンドウから変化したRioウィンドウ領域内に更に端末ウィンドウを追加します。
- ネストされたRioウィンドウ領域例
(5)コマンドの所在
Plan9の多くのコマンド(cd,lc,ls,ps等)は/bin直下にあります。
しかし一部のコマンドは/binのサブディレクトリにあります。
/binのサブディレクトリにあるコマンドは「サブディレクトリ名/コマンド名」という形式で指定します(下例参照)。
- aux/vga
- disk/fdisk
- disk/kfscmd
- disk/prep
- ip/ipconfig
- ip/ping
- ip/gping(これはグラフ表示付きのpingです)
- ip/iproute(自IPアドレス等の確認用)
- ip/traceroute
- ip/httpd/httpd(これはちょっと紛らわしい感じです)
Plan9には「find」コマンドがありません。
もし「ping」コマンドの所在を確認したいのであれば「du -a /bin | grep ping」でファイルサイズと一緒にコマンドパス名が得られます。
(6)ネットワーク機能の利用
CD-ROMからPlan9を直接起動してネットワークカードが自動認識された場合にはネットワーク機能も手軽に体験することができます。
特にインターネットに接続されたルータやDHCPサーバがあればルータ経由でPlan9からインターネット利用もできます。
- ip/ipconfigの実行
引数の無い「ip/ipconfig」コマンドを実行するとPlan9のDHCPクライアント機能が働きPlan9マシンにIPアドレスが割り当てられます。
- ip/iprouteの実行
「ip/iproute」コマンドを実行するDHCPによってPlan9マシンに割り当てられたIPアドレス等を確認できます。
- pingとgping
plan9の公式Webサイトであるplan9.bell-labs.comのIPアドレスに対してpingとgpingを実行してみます。
- ftpの利用(インターネット編)
DNSのことは考えずにインターネットのftpサーバのIPアドレスをftpfsコマンドで直接指定してftpサーバに接続し、ユーザID,パスワードを指定します。
ftpログインが成功するとftp接続したそのユーザIDのカレントディレクトリが/n/ftpに自動マウントされます。
自動マウントされた後は/n/ftp下のディレクトリに対してローカルファイルシステムのように操作することができます。
- ftpサーバへのアップロード
cpコマンドでファイルを/n/ftp/xxxに書き込んだり、「ps -a > /n/ftp/plan9ps.txt」のような出力切り替え等によりファイルを簡単にアップロードできます。
- ftpサーバからのダウンロード
cpコマンドでメモリファイルシステムにファイルダウンロードができます。
ramfs -m /n/temp
cp /n/ftp/xxx /n/temp
ftp接続の解除は「unmount /n/ftp」で行います。
- LAN内ftpの利用
Plan9とLAN接続されているLinuxのftpサーバアクセスも上記と同じ手順で行います。
- telnetによるOracleアクセス
Plan9からLinuxにtelnet接続してSQL*PLusによるOracleアクセスを行ってみました。
(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 /sys/doc/venti/Block.gif(ブロック図の画像)
- jpg /sys/src/cmd/gs/jpeg/testimg.jpg(花の画像)
上記の表示例。
更に、アニメーションgif画像のアニメーション表示もできます(その1、その2)。
(9)3ボタンマウス
主に端末画面やテキストエディタ(後述)で3ボタンマウスの中ボタンによるポップアップメニューが使い勝手を向上させます。
端末画面のポップアップメニューではsnarf(クリップボードのようなsnarfバッファへのデータコピー)&paste(snarfバッファからのデータ貼り付け)が使えるのでコマンド入力の手間がかなり省けます。
尚、画像ビューアなどでは3ボタンマウスの中ボタンには対応していません。
(10)テキストエディタ
Plan9にはedエディタの他にRioウィンドウシステムで動作するテキストエディタとしてsamとacmeがあります。
個人的にはマウス操作のし易いsamの方が使いやすい感じがします。
- samエディタ
samでは3ボタンマウスの中ボタンでコピー&ペースト(snarf&paste)メニューやlook(文字列検索)等のポップアップメニューが使用できます。
尚、2ボタンマウスでは中ボタンのエミュレートは行われないためこれらのメニュー操作は行えません。
- acmeエディタ
acmeにはテキストタイプのメニュー(Snarf, Paste, Look等)があります(samのようなポップアップメニューは表示されません)。
最上段右端の「Exit」メニューを中ボタンクリックするとacmeは終了し、端末画面表示に戻ります。
尚、テキストタイプのメニュー操作は3ボタンマウスの中ボタンで行います。
2ボタンマウスでは中ボタンのエミュレートは行われないためテキストタイプのメニュー操作は行えません。
(11)日本語表示
Plan 9はunicode対応ですのでUTF-8形式のテキストファイルなら日本語表示が可能です。
- まずunicode用フォントファイルを指定してRioを起動します。
例:「rio -f /lib/font/bit/lucm/unicode.9.font」
- 次にそのRio領域内に端末画面を追加します。
- DOS形式FD内のテキストファイルを表示してみます。
(unicode用フォントファイルを指定していないRio環境では日本語表示はできません)
(12)VNC
Plan9ではVNC(Virtual Network Computing)機能が標準コマンドとしてサポートされています。
vncsはVNCサーバ起動コマンドであり、vncvはVNCビューア起動コマンドです。
CD-ROMから単体版のPlan9を直接起動した場合でもVNCが使用できます。
- WindowsでのVNCサーバ起動
WinVNC.exeを起動し、Display Number(:0)とpasswordを設定します。
(VNCサーバマシンのIPアドレスを126.0.0.10とします)
- Plan9でのVNCビューア起動
「vncv 126.0.0.10:0」コマンドを実行すると次のように出ます。
!Adding key: proto=vnc server=126.0.0.10:0
password:
ここでパスワードを入力するとFactotum(認証エージェント)への認証情報登録も完了しVNCサーバマシンの画面が表示されます。
(下の画面はPlan9側からWindowsのPhotoshopを操作している例です)
尚、パスワード入力直後にVNCサーバマシンの画面が表示されずVNCサーバとのコネクションがすぐ切れてしまう場合があります。
その場合は再度「vncv 126.0.0.10:0」コマンドを実行します(Factotumへの認証情報登録が済んでいるためパスワード要求はありません)。
するとVNCサーバのデスクトップ画面がPlan9側に表示されます。
(13)メモリファイルシステム
Plan9ではメモリファイルシステムが使用できます。
特にPlan9をHDDにインストールせずにCD-ROMから直接起動する環境ではPlan9のメモリファイルシステムを有効活用できます。
Plan9をHDDにインストールせずにCD-ROMから直接起動する環境では通常のPlan9ファイルシステムにあるファイルを更新したり新規ファイル/新規ディレクトリの作成ができません。
またMS-DOS形式FDにソースプログラムを置いてコンパイルして作成したプログラムは実行形式ファイル扱いにできないためそのプログラムを実行することはできません。
メモリファイルシステムの簡単な使用例を下記に紹介します。
- メモリファイルシステムの作成とマウント
ramfs -m /n/temp(-mでマウント先を指定します:デフォルトは/tmp)
- メモリファイルシステムへのファイル書き出し
ls > /n/temp/ls.txt
cat /n/temp/ls.txt
(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)その他
- VGA情報の確認
VGA情報は「cat /dev/vgactl」で確認できます。
- ウィンドウリスト表示
winwatchコマンドを使用するとウィンドウリスト表示できます。
- ちょっとしたアピアランスの変更
標準的なウィンドウ枠の色は「緑色」でフォントの色は「黒」です。
カレントウィンドウに対して「Esc」キーを押すとウィンドウ枠の色及びフォントの色は共に「藍色」になります(再度「Esc」キーを押すと元に戻ります)。
- lensコマンド
lensコマンドを使うと画面を拡大して見ることができます。
マウスの左ボタンでスクロールし、右ボタンクリックで拡大率を大きくすることができます(acmeエディタの拡大例)。
- Plan9のソースファイル
Plan9のソースファイルは/system/srcディレクトリにあります。
例えばrioコマンドのソースファイルは/system/src/cmd/rio下にあり、それらのファイルは次の通りです(mkfile含む)。
- dat.h
- data.c
- fns.h
- fsys.c
- mkfile
- rio.c
- scrl.c
- time.c
- util.c
- wctl.c
- wind.c
- xfid.c
- CD-ROMブート環境での制約事項
CD-ROMブート環境ではファイルシステムの更新はあまりエミュレートされないようです。
例えば/usr/glendaにあるファイルを更新しようとするとパーミッションエラーとなります。
- 別マシンでのCD-ROMブートテスト
VGAとしてnVIDIA GeForce3を使用したPentium4マシンでもテストしてみました。
Rioの初期画面は「マウントしたFDがどの端末画面からもアクセスできて、更に日本語表示もできること」を実現するために以下のコマンドで表示させてみました。
mount -c /srv/dos /n/a: /dev/fd0disk
aux/vga -m multisync -l 1024x768x16 ; rio -f /lib/font/bit/lucm/unicode.9.font
「cat /dev/vgactl」では次のように表示されます。
type nvidia
size 1024x768x16 r5g6b5
(以下省略)
試しに一番大きな端末ウィンドウに背景画像的な画像を表示させてみました(デスクトップはこんな感じ)。
画像が小さくて見ずらいですが動作しているウィンドウは次の通りです。
- 一番大きなウィンドウ:Windowsの背景画像
- 画面左上:stats
- 画面右上:sam(日本語テキスト表示)
- 画面中段の左:jpg(画像ビューア)
- 画面中段中央:「lc /n/a:」の実行(DOS形式FD内の日本語ディレクトリ名が正しく表示されます)
- 画面中段の右:winwatch
- 画面左下:「cat /dev/vgactl」の実行
- 画面右下:「man cpu」の実行
- VMware環境での実行
VMware環境下でもPlan9をCD-ROMからブートして利用できます(VMware Workstation 3.2でのPlan9画面例)。
VMware環境でのPlan9実行方法はこちらで紹介しています。
- 9wm(Plan9ウィンドウマネジャを模したXウィンドウマネジャ)
Plan9ウィンドウマネジャを模したXウィンドウマネジャとして9wmというものがあります(Plan9 8-1/2ウィンドウマネジャライク)。
Linuxでの9wmの使用例はこちらです。