/dev
ディレクトリにデバイス ファイルが格納されることは知っていますが、/dev
デバイス ファイルが格納される場所はディレクトリのみでしょうか、それともデバイス ファイルをディレクトリに格納するのが慣例なのでしょうか/dev
?
答え1
これは単なる慣例です。実際、chroot
環境またはコンテナー (例: docker) では、デバイス エントリが他の場所に存在する可能性があります。
デバイスエントリをデバイスエントリにするのは、タイプエントリー名ではなくエントリー番号
たとえば、次のようになります。
% ls -ld /dev/vda
brw-rw---- 1 root disk 253, 0 May 26 07:00 /dev/vda
最初の「b」はブロックデバイスであることを意味します。「253」はメジャーデバイス番号で、「0」はマイナーデバイス番号です。この場合
% grep virt /proc/devices
253 virtblk
したがって、主要デバイス 253 は仮想ブロック レイヤーに関連しています。
ここでは、「vda」という名前は重要ではないことに気付くでしょう。
できるよ
sudo mknod /tmp/foo b 253 0
今、/tmp/foo
まったく同じデータにアクセスします:
% sudo dd if=/dev/vda bs=256b count=1 | sum
....
40545 128
% sudo dd if=/tmp/foo bs=256b count=1 | sum
....
40545 128
共通名は人間や設定ファイルにとって重要です (例: は/dev/tty1
Linux マシン上の最初の仮想コンソールの共通名、/dev/ttyS0
は最初のシリアル ポートの共通名) が、それが機能するのはタイプ (ブロック/文字) とメジャー/マイナー番号のおかげです。