Kenji Arisawa
E-mail: arisawa@aichi-u.ac.jp

Aichi University
Kurozasa 370, Miyoshi-cho
Aichi, Japan
Powered by Pegasus

DOSSRV - DOS file interface -

2002/08/10 改訂
1998/08/08

ここでは Plan9 の DOS ファイルの扱いを解説する。話を簡単にするために話題をフロッピーディスクに限定する。


/dev/fd0disk

	ls /dev
を実行すると
	fd0ctl
	fd0disk
が見えるであろう。
fd0disk はドライブ A のフロッピーディスクであり Plan9 では通常のファイルと同一の扱いを受けている。(fd0ctl はコントロールの口である。解説は省略する。)

物理フォーマットは

	disk/format /dev/fd0disk
で行う。DOSの FAT を入れたい場合には
	disk/format -d /dev/fd0disk
を実行すればよい。

またフロッピーディスクの内容をまるごとファイルにコピーしたい場合には

	cp /dev/fd0disk foo
を実行すればファイル foo にコピーされる。

UNIX の様に文字型デバイス /dev/rfd0 と、ブロック型デバイス /dev/fd0 の区別が無い事に注意する。従ってフォーマットの場合とマウントの場合にどちらの型のデバイスを指定するのか迷う事はない。


/srv/dos

dossrv は ファイルを DOS ファイルシステムとして解釈してくれるサービスプログラムである。dossrv が実行されていると /srv/dos が見える。(dossrv の実行時オプションによっては dos ではなく他の名前になっているかも知れない。)

/srv/dos は dossrv に要求を伝え、結果を聞き取るパイプの口である。そしてこのままではファイルシステムの体裁をとっていない。


mount

dossrv に対象となるファイル(デバイス) を知らせ、Plan9 のファイルシステムの一部として見せかけるのは mount コマンドの役目である。
	mount /srv/dos /n/fd0 /dev/fd0disk
を実行すれば、/dev/fd0disk が DOS ファイルシステムと解釈されて、それが /n/fd0 以下に見える事になる。( ディレクトリ /n/fd0 は前もって作っておく必要がある。)

実際の Plan9 の操作に於ては DOS ファイルシステムを扱うのにユーザが直接 mount コマンドを扱う必要はない。以下の3つのコマンド

	a:
	b:
	c:
が初めから備わっており、これらのコマンドによって各々
	/n/a:
	/n/b:
	/n/c:
にマウントされる(注)。
注: 第4版では /n/a, /n/b, /n/c からも参照できる。

UNIX との比較

Plan9 では mount コマンドの対象はディレクトリ /srv 内のファイルである。
そしてマウントとサービスが明確に分離されている。
(読者は FreeBSD などの mount_msdos コマンドと比較すればよい。)

UNIX では mount の実行には root 特権が必要であった。
Plan9 ではサービスの実行は、(それがデバイスを対象としている場合には、)デバイスの所有者のみが許可される。他方 mount は誰にも実行が許される(注)。 そして mount の効果は mount を実行したユーザの範囲に留まる。

注: Plan9 のファイルシステムの場合には、そのファイルシステムのユーザとして登録されており、かつ認証に合格する事が必要である。またサービスの実行者が mount を許すユーザの範囲を指定する事もできる。
Plan9 の mount の役割はとても柔軟であり、デバイスだけではなく普通のファイルをもマウントしてくれる。ファイル foo を DOS フロッピーディスクのイメージとせよ。その下で、
	mount /srv/dos /n/fd0 foo
を実行すれば /n/fd0 以下には foo の内容が DOS のフロッピーディスクと同じ様に現われる。従って foo の内容を知る事ができるばかりか編集さえも可能なのである。Plan9 の通常のコマンドやツールを使って。我々はフロッピーディスクを保管する必要は無くなった!