デバイス擬似ファイルシステムは /dev にマウントでき、 こうすると従来の Linux デバイスのサブディレクトリに置き換わります。 あるいは別の場所(例えば /devfs)にマウントすることも可能 で、既存のデバイス構造へ追加も可能です。
devfs を使わないと、通常デバイス名はルートパーティションの dev ディレクトリ内で扱われます。したがって、デバイス名 (およびそのパーミッション)は、ファイル・システムと同じ永続性を持ちます。 デバイス名があっても、必ずしもデバイス(もしくはそのデバイスのドライバさえ)が その時に存在するわけではありません。ユーザがデバイス名のエントリーを作成する 手間(mknodを使って)を省くため、ほとんどの Linux ディストリビューションには何千ものデバイス名が /dev ディレクトリに入っています。アプリケーションがデバイス名を open() しようとした 時にerrno 値 ENODEV が返された場合は、対応するデバイス(もしくはドライバ)がその 時に利用できないことを示します。
devfs は違った方法をとります。デバイス名が存在すれば、すなわち対応する デバイス(とドライバ)が存在することを意味します。
devfs を /dev にマウントしている場合、SCSI デバイス のプライマリーデバイス名はこのようになります。
/dev/scsi/host0/bus0/target1/lun0/disc [ディスク全体] /dev/scsi/host0/bus0/target1/lun0/part6 [パーティション 6] /dev/scsi/host0/bus0/target1/lun0/generic [sg デバイスのディスク] /dev/scsi/host1/bus0/target2/lun0/cd [CD リーダーもしくは CD ライター] /dev/scsi/host1/bus0/target2/lun0/generic [sg デバイスの CD] /dev/scsi/host2/bus0/target0/lun0/mt [テープ モード 0 リワインド] /dev/scsi/host2/bus0/target0/lun0/mtan [テープ モード 3 リワインドなし] /dev/scsi/host2/bus0/target0/lun0/generic [sg デバイスのテープ] |
(「disc」というスペルに注意。devfs の開発者は、米語のこの綴りがお気に入り)。 devfs の名前付け規則は、Section 3.1で論じている SCSI の アドレス付けにぴったりマッチしていることがわかるでしょう。IDE サブシステム が同じような(「scsi」という単語を「ide」に置き換えた)規則で devfs デバイスを 名付けている点も覚えておくと良いと思います。devfs はChapter 12 でさらに論じます。