Zum Inhalt springen

Linux-Praxisbuch/ Gerätedatei

Aus Wikibooks

Geräte werden wie eine Datei behandelt

[Bearbeiten]

Bei dem Gerätekonzept unter Linux werden die Geräte oder Gerätegruppen genauso behandelt wie Dateien oder Dateiordner. Das heißt ein Gerät (z. B. ein Diskettenlaufwerk) oder Gerätegruppe (z. B. USB) erscheint z. B. als Dateiordner, in der z. B. verschiedene Geräte als Dateien liegen können, ein Drucker, Bildschirm, Maus u.s.w. erscheinen aber genauso nur als Datei oder Dateiordner. Aber im Unterschied zu anderen („normalen“) Dateien können Gerätedateien nicht einfach gelöscht oder neu angelegt werden. Geräte werden als normale Dateien angesprochen. Geräte befinden sich nach dem Wurzelverzeichnis im Verzeichnis /dev (vom engl. "Device", zu deutsch also "Gerät"). Der Name wird als Abkürzung der englischen Bezeichnung des Gerätes dargestellt. Gerätedateien werden unter Linux als special files bezeichnet.

Beispiele:

[Bearbeiten]
  • /dev/lp0 oder /dev/lp1 oder /dev/lp2 (line printer) Drucker, die Zahl steht für den Anschluss
  • /dev/fd0 (floppy disk) Diskettenlaufwerk, die Zahl steht für den Anschluss
  • /dev/ttyS0 erster serieller Port, die Zahl steht für den Anschluss
  • /dev/cdrom symbolischer Link auf ein CD-Laufwerk
  • /dev/hda (hard disk) oder /dev/hda1, a steht für die erste Festplatte am ATA-Controller. Entsprechend stehen b,c,d usw. für die folgenden Festplatten. Die Zahl steht für die Partition der Festplatte, wobei mit 1 angefangen wird zu zählen
  • /dev/console, ist die Systemkonsole
  • /dev/sda1 (2.4) bzw. /dev/uba1 (2.6) für Speichersticks.


neues Konzept

[Bearbeiten]

Das ganze bisherige Konzept der Gerätenamen unter Linux befindet sich zur Zeit in Veränderung. Der Grund liegt darin, daß Linux sozusagen auf Vorrat Geräte anlegt (dies kann man sehr deutlich sehen, wenn man in den Verzeichnisbereich /dev schaut, dort befinden sich tausende Dateien). Das neue Konzept soll dynamisch nur die Geräte anzeigen, die auch wirklich vorhanden sind. Viele Programme arbeiten noch mit dem alten Konzept, eine Migration wird deshalb nur langsam erfolgen. Das neue Konzept wird unter dem Begriff „Geräte-Datei-System“ fungieren.

Gerätedateien unter Unix

[Bearbeiten]

Unter Linux ist eine Gerätedatei eine Spezialdatei, die sich im Verzeichnis /dev und deren Unterverzeichnissen befindet und Zugriff auf ein Gerät (zum Beispiel eine Festplatte) oder eine andere Systemkomponente ermöglicht. Mit Hilfe einer solchen Datei kann von einem Anwendungsprogramm wie zum Beispiel einer Textverarbeitung über einen speziellen internen Treiber das zugehörige Gerät beziehungsweise eine Systemkomponente angesprochen werden. Die Gerätedatei dient dabei als Schnittstelle.

Es wird unterschieden zwischen

  • c – character devices: zeichenorientierte Geräte
  • b – block devices: blockorientierte Geräte
  • s – socket devices: sockelorientierte Geräte

Blockorientierte Geräte

[Bearbeiten]

Blockorientierte Geräte übertragen Daten in Blöcke und werden daher oft für parallele Datenübertragungen genutzt. Alle diese Geräte nutzen den betriebssystemeigenen Puffer. Beispiele:

  • fd0 1. Diskettenlaufwerk
  • hda IDE-Festplatte oder IDE-CD-ROM-Laufwerk am 1. Anschluss (Master)
  • hdb IDE-Festplatte oder IDE-CD-ROM-Laufwerk am 1. Anschluss (Slave)
  • hda1 1. Partition der ersten IDE-Platte
  • hda15 15. Partition der ersten IDE-Platte
  • sda SCSI-(Wechsel-)Platte, kleinste SCSI-ID (Linux)
  • sdb SCSI-(Wechsel-)Platte, nächst größere SCSI-ID (Linux)
  • sda1 1. Partition der ersten SCSI-(Wechsel-)Platte
  • sda15 15. Partition der ersten SCSI-(Wechsel-)Platte
  • cdrom Symbolischer Link auf CD-ROM-Laufwerk

Zeichenorientierte Geräte

[Bearbeiten]

Zeichenorientierte Geräte übertragen ein Zeichen zur selben Zeit, also seriell. Meist, aber nicht immer, werden Daten ungepuffert, also sofort übertragen. Beispiele:

  • mouse symbolischer Link auf Maus-Gerätedatei
  • ttyS0 1. Serielle Schnittstelle (unter Windows: COM1)
  • lp0 1. Parallele Schnittstelle
  • lp1 2. Parallele Schnittstelle
  • tty symbolische Links für Pseudoterminals
  • usbdev1.1 Gerätedateien für USB-Geräte

sowie alle virtuellen Gerätedateien

Die Netzwerkkarten (zum Beispiel Ethernet, ISDN) werden nicht über Gerätedateien sondern über den TCP/IP-Stack angesprochen, gleichwohl existieren oft auch Gerätedateien für Spezialanwendungen wie etwa zur direkten Ansteuerung der Hardware (Netlink Device, D-Channel, etc.).

Sockelorientierte Geräte

[Bearbeiten]

Obwohl solche Dateien unter /dev bzw. /devices liegen, handelt es sich nicht um Gerätedateien, sondern um eine Form von Interprozesskommunikation. Beispiele:

  • /dev/log Sockel für syslog d
  • /dev/gpmdata Sockel für den GPM-Maus-Multiplexer
  • /dev/printer Sockel für lpd

Virtuelle Gerätedateien

[Bearbeiten]

Einen Spezialfall stellen die virtuellen Gerätedateien dar. Bei diesen handelt es sich um Gerätedateien, mit denen kein echtes Gerät gesteuert wird. Beispiele:

  • /dev/null: verwirft jede Eingabe ohne eine Ausgabe zu produzieren
  • /dev/zero: produziert einen Zeichenstrom, der nur aus Null-Oktetts (in C -Notation: '\000') besteht
  • /dev/random: produziert echte Zufallszahlen oder wenigstens kryptografisch starke Pseudozufallszahlen
  • /dev/urandom: produziert Pseudozufallszahlen

Gerätedateien unter Windows

[Bearbeiten]

Auch unter Windows gibt es Gerätedateien: Auf sie wird beispielsweise beim Start von Windows 3.11 oder Windows 95/98/ME verwiesen, wenn die Startroutinen WIN.INI und SYSTEM.INI ablaufen. Sind die Gerätedateien nicht vorhanden, gibt es eine Fehlermeldung. Gerätetreiber unter Windows haben die Endung .vxd. Dabei handelt es sich jedoch nicht um Dateien, die als Schnittstelle dienen, sondern um Gerätetreiberdateien, die ausführbaren Code enthalten.

[Bearbeiten]