Kenji Arisawa E-mail: arisawa@aichi-u.ac.jp Aichi University Kurozasa 370, Miyoshi-cho Aichi, JapanPowered 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 の通常のコマンドやツールを使って。我々はフロッピーディスクを保管する必要は無くなった!