Ich weiß, dass das /dev
Verzeichnis Gerätedateien speichert, aber ist das /dev
Verzeichnis der einzige Ort, an dem Gerätedateien gespeichert werden können, oder ist es einfach eine Konvention, Gerätedateien im /dev
Verzeichnis zu speichern?
Antwort1
Es ist nur eine Konvention. Tatsächlich chroot
kö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/foo
wird 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/tty1
ist dies der gemeinsame Name für die erste virtuelle Konsole auf einer Linux-Maschine; /dev/ttyS0
ist 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.