Ist das Verzeichnis /dev der einzige Ort in Linux, an dem Gerätedateien gespeichert werden können?

Ist das Verzeichnis /dev der einzige Ort in Linux, an dem Gerätedateien gespeichert werden können?

Ich weiß, dass das /devVerzeichnis Gerätedateien speichert, aber ist das /devVerzeichnis der einzige Ort, an dem Gerätedateien gespeichert werden können, oder ist es einfach eine Konvention, Gerätedateien im /devVerzeichnis zu speichern?

Antwort1

Es ist nur eine Konvention. Tatsächlich chrootkönnen in einer Umgebung oder einem Container (z. B. Docker) Geräteeinträge an anderer Stelle vorhanden sein.

Was einen Geräteeintrag zu einem Geräteeintrag macht, ist dieTypdes Eintrags, nicht seines Namens

So zum Beispiel:

% ls -ld /dev/vda
brw-rw---- 1 root disk 253, 0 May 26 07:00 /dev/vda

Das erste „b“ bedeutet, dass es sich um ein Blockgerät handelt. „253“ ist die Hauptgerätenummer und „0“ die Nebengerätenummer. In diesem Fall

% grep virt /proc/devices
253 virtblk

Das Hauptgerät 253 ist also mit der virtuellen Blockebene verbunden.

Sie werden merken, dass der Name „vda“ hier keine Rolle spielt!

Ich könnte

sudo mknod /tmp/foo b 253 0

Jetzt /tmp/foowird auf genau dieselben Daten zugegriffen:

% sudo dd if=/dev/vda bs=256b count=1 | sum
....
40545   128

% sudo dd if=/tmp/foo bs=256b count=1 | sum
....
40545   128

Gemeinsame Namen sind für Menschen und Konfigurationsdateien wichtig (z. B. /dev/tty1ist dies der gemeinsame Name für die erste virtuelle Konsole auf einer Linux-Maschine; /dev/ttyS0ist der gemeinsame Name für den ersten seriellen Port), aber es sind der Typ (Block/Zeichen) und die Haupt-/Nebennummer, die dafür sorgen, dass es funktioniert.

verwandte Informationen