デバイスファイル自体はファイルではありません。これらは、Unixライクなオペレーティングシステムでデバイスを使用するためのI/Oインターフェイスです。これらはディスク上のスペースを使用しませんが、stat
コマンドによって報告されるように、iノードを使用します。
$ stat /dev/sda
File: /dev/sda
Size: 0 Blocks: 0 IO Block: 4096 block special file
Device: 6h/6d Inode: 14628 Links: 1 Device type: 8,0
デバイスファイルはファイルシステムで物理 iノードを使用しますか、また、なぜそれらが必要なのですか?
デバイスファイルにも権限があり、それらはiノードに保存されます。
ディレクトリは単にファイル名からiノードへのマッピングなので、名前が参照するもの(ファイル、シンボリックリンク、デバイス、FIFO、ソケット)に関するすべてがiノードにある必要があり、他に置く場所はありません。
デバイスに関する情報はiノードに保存されます。メジャーデバイス番号とマイナーデバイス番号、アクセス許可、タイムスタンプなどがあります。通常のファイルではなくブロックまたはキャラクターデバイスであることを示すtypeフィールドがそこに格納されます。
デバイスのiノードは、ファイルのブロックマップを含むフィールドを使用しません。
Iノードがない場合、問題のデバイスに関するすべての情報を保持するためのファイル名しかありません。これは、/dev/sda
のような「素敵な」デバイス名は問題外であることを意味します。/dev/ohci/sda
などの特定のドライバに関連付けることができる名前が必要です。
さらに重要なことに、iノードに依存するすべてのツール(stat
、ls
など)は、/dev
の下のパスを特別な方法で処理するように変更する必要があります。それは、現在の状況と比較して明らかな利点がない、非常に大量の作業になるでしょう。