drcux schriebbrikler schrieb
heißt das, früher mußte man so eine datei für jedes gerät selber schreiben?
Nein, diese wurden/werden vom Kernel(modul) erstellt.
Beispiel:
[root@detlef-x230l ~]# ls /dev/video0
ls: Zugriff auf '/dev/video0' nicht möglich: Datei oder Verzeichnis nicht gefunden
[root@detlef-x230l ~]# modprobe uvcvideo
[root@detlef-x230l ~]# ls /dev/video0
/dev/video0
Hinzuzufügen wäre da noch (da brikler ja nach früher fragte):
Früher/ursprünglich war /dev und dessen Inhalt ein normales Verzeichniss, wie jedes andere auch ("statisches /dev").
Im Beispiel von drcux wäre nach dem Entladen vom Videomodul das Device (der Device-Node) als "Datei" wohl erhalten geblieben - ohne passendes Modul halt ohne Funktionalität. Nur das erstmalige Erstellen des Nodes wird/wurde vom Modul/Treiber/Kernel einem meistens abgenommen.
Diese Device-Nodes sind halt insofern "Spezialdateien", da sie über den Typ (block,char,fifo) und über Major/Minor an eine bestimmte Hardware gekoppelt sind. Mit mknod konnte/kann man z.B. weitere Device-Nodes für SCSI-Geräte hinzufügen wenn der Kernel z.B. per Default nur 16 Nodes (Bsp. /dev/scsi/0/sg*) erzeugte, man aber 20 Geräte am Bus hatte. Als Admin mußte man sich doch mehr selbst um das "richtige" Vorhandensein bzw. Entfernen von den Devicenodes kümmern. Eine spätere Variante war /dev beim Bootvorgang zu löschen und über den Kernel jedesmal "frisch" aufzubauen. Seit der generellen Nutzung von "initial ram disks" ist das statische /dev passé.
Heute ist /dev eines der virtuellen Dateisysteme, wird also beim Boot regelmäßig komplett neu "erstellt" und im Betrieb dynamisch verwaltet.
Und mit "alles ist eine Datei" ist v.a. für die Programmierer interessant. Anstatt sich mit sowas wie DLLs oder Einsprungadressen u.ä. rumzuschlagen kann er meist ein "Gerät" eben wie eine Datei verwenden. Das könnte (ich kann kein C, nur als beispiel-code) vereinfacht so sein:
geraet = fopen("/dev/dingsbums", "r") /* Genau mit dem gleichen Code wie er eben auch eine Textdatei öffnen würde */
interpretiere_die_Daten_und_mach_was_sinnvolles( geraet )
fclose(geraet)
Und ob /dev/dingsbums nun vom Hersteller A oder Hersteller B kommt, daß braucht den Programmierer für den Code zum Zugriff (fopen) darauf dann nicht zu kümmern.
Stark vereinfacht...
Und dieses Verhalten ist halt auch für den "Normaluser" interessant, da über den Mechanismus z.B. "Daten" auf ein Bandgeräte/Tape geschrieben werden können oder von /dev/video ein "Film/Stream" ausgelesen werden kann, eben *ohne* explizite Nutzung eines "Backup-Programms" oder eines "Fernsehprogramms". Auch wieder etwas "vereinfacht".
Wenn ich über /dev/sda mit "einfachsten" Mitteln ("Editoren", cat, dd, echo) an Dinge wie MBR oder Image der HD kommen kann, ohne - wie andere Systeme - spezielle Programme zu brauchen, dann ist das IMHO sehr von Vorteil.