Gerätedatei: Unterschied zwischen den Versionen

Aus Mikiwiki
Wechseln zu: Navigation, Suche
(Weblinks)
 
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 
Die <b>Gerätedatei</b> (auch: Spezialdatei; engl. device file, device node) ist eine besondere Art von [[Datei]]en, die unter fast allen [[Unix]]-Derivaten und vielen anderen [[Betriebssystem]]en genutzt wird.
 
Die <b>Gerätedatei</b> (auch: Spezialdatei; engl. device file, device node) ist eine besondere Art von [[Datei]]en, die unter fast allen [[Unix]]-Derivaten und vielen anderen [[Betriebssystem]]en genutzt wird.
  
Jede Gerätedatei im Verzeichnis "/dev" ermöglicht [[Anwendungsprogramm]]en unter Benutzung des [[Kernel]]s den Zugriff auf eine bestimmtes [[Gerät]] (engl. device) bzw. eine Hardwarekomponente des Systems. Es handelt sich nicht um Dateien im eigentlichen Sinn, aber aus der Sicht eines Programms erscheinen sie wie Dateien - sie lassen sich über dieselben Systemaufrufe öffnen, lesen, schreiben oder schliessen. Beim Zugriff auf eine solche Gerätedatei erkennt der Kernel die I/O-Anforderung und reicht sie an einen Gerätetreiber weiter, der die entsprechende Operation ausführt - etwa Daten aus einer seriellen Schnittstelle lesen oder Daten an eine Soundkarte schicken.
+
Jede Gerätedatei im Verzeichnis "/dev" ermöglicht [[Anwendungsprogrammen]] unter Benutzung des [[Kernels]] den Zugriff auf eine bestimmtes [[Gerät]] (engl. device) bzw. eine Hardwarekomponente des Systems. Es handelt sich nicht um Dateien im eigentlichen Sinn, aber aus der Sicht eines Programms erscheinen sie wie Dateien - sie lassen sich über dieselben Systemaufrufe öffnen, lesen, schreiben oder schliessen. Beim Zugriff auf eine solche Gerätedatei erkennt der Kernel die I/O-Anforderung und reicht sie an einen [[Gerätetreiber]] weiter, der die entsprechende Operation ausführt - etwa Daten aus einer seriellen Schnittstelle lesen oder Daten an eine Soundkarte schicken.
  
 
Untereinander unterscheiden sich die Gerätedateien durch ihren Namen, ihren Typ (Block- oder Zeichengerät) und ihre Major- sowie Minor-Nummer. Beispielsweise repräsentiert auf einem Linux-System die Gerätedatei "/dev/hda1" die erste Partition der Festplatte "/dev/hda" und trägt dabei die Major-Nummer 3 und die Minor-Nummer 1.
 
Untereinander unterscheiden sich die Gerätedateien durch ihren Namen, ihren Typ (Block- oder Zeichengerät) und ihre Major- sowie Minor-Nummer. Beispielsweise repräsentiert auf einem Linux-System die Gerätedatei "/dev/hda1" die erste Partition der Festplatte "/dev/hda" und trägt dabei die Major-Nummer 3 und die Minor-Nummer 1.
  
Zum Anlegen einer neuen Gerätedatei wird der Shell-Befehl [[mknod]] verwendet. Bei traditioneller Verwaltung dieser Dateien geschieht das während der Installation. Das Verzeichnis "/dev" enthält danach einen Eintrag für jedes gerät, das der Systemverwalter vielleicht einmal dem System hinzufügen möchte. Allerdings leidet die Übersichtlichkeit unter der Fülle an Einträgen, die zudem für den konkreten Rechner grösstenteils unnötig sind. Bei diesem herkömmlichen Ansatz bestimmt die Reihenfolge, in der Geräte angeschlossen werden darüber, welches gerät der Kernel welcher Gerätedatei zuordnet. Die erste erkannte SCSI-Paltte bildet sich beispielsweise immer auf die Gerätedatei "/dev/sda" ab, die nächste entsprechend auf "/dev/sdb". Das kann dazu führen, dass ein und dasselbe Gerät zu verschiedenen Zeiten über mehrere Gerätedateien erreichbar ist und der Rechner es entsprechend in verschiedene Verzeichnisse einhängt.
+
Zum Anlegen einer neuen Gerätedatei wird der Shell-Befehl [[mknod]] verwendet. Bei traditioneller Verwaltung dieser Dateien geschieht das während der Installation. Das Verzeichnis "/dev" enthält danach einen Eintrag für jedes gerät, das der Systemverwalter vielleicht einmal dem System hinzufügen möchte. Allerdings leidet die Übersichtlichkeit unter der Fülle an Einträgen, die zudem für den konkreten Rechner grösstenteils unnötig sind. Bei diesem herkömmlichen Ansatz bestimmt die Reihenfolge, in der Geräte angeschlossen werden darüber, welches Gerät der Kernel welcher Gerätedatei zuordnet. Die erste erkannte SCSI-Paltte bildet sich beispielsweise immer auf die Gerätedatei "/dev/sda" ab, die nächste entsprechend auf "/dev/sdb". Das kann dazu führen, dass ein und dasselbe Gerät zu verschiedenen Zeiten über mehrere Gerätedateien erreichbar ist und der Rechner es entsprechend in verschiedene Verzeichnisse einhängt.
  
 
Die bessere Lösung ist dabei , dass das System die Gerätedatei erst dann anlegt oder löscht, wenn der benutzer Hardware hinzufügt oder entfernt. Über die Zuordnung von Namen zu Geräten entscheiden dann Regeln anstelle der Reihenfolge. So kann etwa sichergestellt werden, dass eine bestimmte Festplatte immer über dieselbe Datei zu erreichen ist und sich immer an derselben Stelle ins Dateisystem einbindet - ganz gleichgültig, welche anderen Geräte zu welchem Zeitpunkt den Bus mitbenutzen oder nicht.
 
Die bessere Lösung ist dabei , dass das System die Gerätedatei erst dann anlegt oder löscht, wenn der benutzer Hardware hinzufügt oder entfernt. Über die Zuordnung von Namen zu Geräten entscheiden dann Regeln anstelle der Reihenfolge. So kann etwa sichergestellt werden, dass eine bestimmte Festplatte immer über dieselbe Datei zu erreichen ist und sich immer an derselben Stelle ins Dateisystem einbindet - ganz gleichgültig, welche anderen Geräte zu welchem Zeitpunkt den Bus mitbenutzen oder nicht.
Zeile 60: Zeile 60:
 
| hda
 
| hda
 
| b
 
| b
| 1. ATA/IDE-Gerät (Festplatte, CD/DVD-Laufwerk, usw.). Die Ausgabe von "ls -l /dev/hda" zeigt anstelle der Dateigrösse zwei Nummern: das sind die "major device number" und die "minor device number". Jede "major number" ist einem Gerätetreiber zugeordnet. Die "minor number" geht zu dem Gerät, das den Treiber benutzt (z. B. ein ATA/IDE-Treiber, der Festplatten, CD-ROMs und andere Hardware verwaltet).
+
| 1. ATA/IDE-Gerät (Festplatte, CD/DVD-Laufwerk, usw.). Die Ausgabe von "ls -l /dev/hda" zeigt anstelle der Dateigrösse zwei Nummern: das sind die "major device number" und die "minor device number". Jede "major number" ist einem [[Gerätetreiber]] zugeordnet. Die "minor number" geht zu dem Gerät, das den Gerätetreiber benutzt (z. B. ein ATA/IDE-Treiber, der Festplatten, CD-ROMs und andere Hardware verwaltet).
 
|-
 
|-
 
| ht0
 
| ht0
Zeile 108: Zeile 108:
 
| sda
 
| sda
 
| b
 
| b
| 1. SCSI-Gerät (SATA-Festplatte, USB-Speichergerät, Zip-Laufwerk)
+
| 1. SCSI-Gerät (SATA-Festplatte, USB-Speichergerät, ZIP-Laufwerk)
 
|-
 
|-
 
| sg*
 
| sg*
 
|
 
|
| Generische SCSI-Geräte, auf die Programme ohne Umweg über den Kernel zugreifen können. Solche Geräte werde3n von Scan- und Brennprogrammen verwendet.
+
| Generische SCSI-Geräte, auf die Programme ohne Umweg über den Kernel zugreifen können. Solche Geräte werden von Scan- und Brennprogrammen verwendet.
 
|-
 
|-
 
| st0
 
| st0
Zeile 137: Zeile 137:
 
|}
 
|}
  
Eine Zusammenfassung der unter [[Linux]] vorhandenen Gerätedateien gehört seit der Kernel-Version 1.3.25 zu den Quellen und findet sich in der Datei "/usr/src/linux-2.4.18.SuSE/Documentation/devices.txt".
+
Eine Zusammenfassung der unter [[Linux]] vorhandenen Gerätedateien gehört seit der Linux-Kernel-Version 1.3.25 zu den Quellen und findet sich in der Datei "/usr/src/linux-2.4.18.SuSE/Documentation/devices.txt".
  
 
== Verwendung ==
 
== Verwendung ==
Zeile 154: Zeile 154:
 
== Weblinks ==
 
== Weblinks ==
  
{{Weblinks1|{{url_dewikipedia|Gerätedatei|Gerätedatei}}
+
{{Weblinks}}
}}
+
{{url_dewikipedia|Gerätedatei|Gerätedatei}}
 +
{{Fuss}}
  
  
 
{{cat|Betriebssystem}}
 
{{cat|Betriebssystem}}
 
{{cat|Datei}}
 
{{cat|Datei}}
{{cat|Gerät}}
+
{{cat|Gerätedatei}}
 +
{{cat|Gerätetreiber}}
 
{{cat|Linux}}
 
{{cat|Linux}}
 
{{cat|Unix}}
 
{{cat|Unix}}

Aktuelle Version vom 10. Februar 2010, 03:54 Uhr

Die Gerätedatei (auch: Spezialdatei; engl. device file, device node) ist eine besondere Art von Dateien, die unter fast allen Unix-Derivaten und vielen anderen Betriebssystemen genutzt wird.

Jede Gerätedatei im Verzeichnis "/dev" ermöglicht Anwendungsprogrammen unter Benutzung des Kernels den Zugriff auf eine bestimmtes Gerät (engl. device) bzw. eine Hardwarekomponente des Systems. Es handelt sich nicht um Dateien im eigentlichen Sinn, aber aus der Sicht eines Programms erscheinen sie wie Dateien - sie lassen sich über dieselben Systemaufrufe öffnen, lesen, schreiben oder schliessen. Beim Zugriff auf eine solche Gerätedatei erkennt der Kernel die I/O-Anforderung und reicht sie an einen Gerätetreiber weiter, der die entsprechende Operation ausführt - etwa Daten aus einer seriellen Schnittstelle lesen oder Daten an eine Soundkarte schicken.

Untereinander unterscheiden sich die Gerätedateien durch ihren Namen, ihren Typ (Block- oder Zeichengerät) und ihre Major- sowie Minor-Nummer. Beispielsweise repräsentiert auf einem Linux-System die Gerätedatei "/dev/hda1" die erste Partition der Festplatte "/dev/hda" und trägt dabei die Major-Nummer 3 und die Minor-Nummer 1.

Zum Anlegen einer neuen Gerätedatei wird der Shell-Befehl mknod verwendet. Bei traditioneller Verwaltung dieser Dateien geschieht das während der Installation. Das Verzeichnis "/dev" enthält danach einen Eintrag für jedes gerät, das der Systemverwalter vielleicht einmal dem System hinzufügen möchte. Allerdings leidet die Übersichtlichkeit unter der Fülle an Einträgen, die zudem für den konkreten Rechner grösstenteils unnötig sind. Bei diesem herkömmlichen Ansatz bestimmt die Reihenfolge, in der Geräte angeschlossen werden darüber, welches Gerät der Kernel welcher Gerätedatei zuordnet. Die erste erkannte SCSI-Paltte bildet sich beispielsweise immer auf die Gerätedatei "/dev/sda" ab, die nächste entsprechend auf "/dev/sdb". Das kann dazu führen, dass ein und dasselbe Gerät zu verschiedenen Zeiten über mehrere Gerätedateien erreichbar ist und der Rechner es entsprechend in verschiedene Verzeichnisse einhängt.

Die bessere Lösung ist dabei , dass das System die Gerätedatei erst dann anlegt oder löscht, wenn der benutzer Hardware hinzufügt oder entfernt. Über die Zuordnung von Namen zu Geräten entscheiden dann Regeln anstelle der Reihenfolge. So kann etwa sichergestellt werden, dass eine bestimmte Festplatte immer über dieselbe Datei zu erreichen ist und sich immer an derselben Stelle ins Dateisystem einbindet - ganz gleichgültig, welche anderen Geräte zu welchem Zeitpunkt den Bus mitbenutzen oder nicht.

Eine Zeitlang konkurrierten die Systeme devfs und udev um die Rolle des intelligenten Geräteverwalters; inzwischen flog devfs endgültig aus dem Kernel.

Arten von Gerätedateien

Unix unterscheidet grundsätzlich zwei Arten von Geräten.

Abkürzung Gerätetyp Beispiele
b blockorientiertes Gerät (engl. block device) Festplatte
c zeichenorientiertes Gerät (engl. character device) serielle Leitung, Arbeitsspeicher, Magnetband

Zu den wichtigsten Gerätedateien im Verzeichnis "/dev" gehören die folgenden.

Gerätename Typ Gerät
audio c Soundkarte, Sun-kompatbibles I/O
cdrom l Soft-Link auf vorhandenes CD-ROM-Laufwerk
console c Systemkonsole
cuaN c Callout-Geräte (COM1...)
dsp c Soundgerät.
dvd l Soft-Link auf vorhandenes DVD-Laufwerk
fd0 b 1. Diskettenlaufwerk
hda b 1. ATA/IDE-Gerät (Festplatte, CD/DVD-Laufwerk, usw.). Die Ausgabe von "ls -l /dev/hda" zeigt anstelle der Dateigrösse zwei Nummern: das sind die "major device number" und die "minor device number". Jede "major number" ist einem Gerätetreiber zugeordnet. Die "minor number" geht zu dem Gerät, das den Gerätetreiber benutzt (z. B. ein ATA/IDE-Treiber, der Festplatten, CD-ROMs und andere Hardware verwaltet).
ht0 c 1. IDE-Bandlaufwerk
lp0 c 1. parallele Schnittstelle
midi Soundgerät.
mixer c Soundgerät.
mouse l Soft-Link auf Mausschnittstelle, z. B. "ttyS0"
null c Das Daten-Nirwana. Was dahin geschrieben wird, wird sofort fortgeworfen. Wird aus "/dev/null" gelesen, so erhält man ein "end of file" (EOF).
psaux c PS/2-kompatible Maus
ptyN c Pseudoterminals
rmt0 l Soft-Link auf das 1. SCSI-Bandlaufwerk "st0"
nrmt0 l Soft-Link auf das 1. SCSI-Bandlaufwerk "st0" im "Non-rewind"-Modus (kein Zurückspulen)
scda b 1. SCSI-CD/DVD-Laufwerk
sda b 1. SCSI-Gerät (SATA-Festplatte, USB-Speichergerät, ZIP-Laufwerk)
sg* Generische SCSI-Geräte, auf die Programme ohne Umweg über den Kernel zugreifen können. Solche Geräte werden von Scan- und Brennprogrammen verwendet.
st0 c 1. SCSI-Bandlaufwerk
tape l Soft-Link auf Magnetband
ttyn c virtuelle Konsolen (n ist eine Nummer)
ttyS* c serielle Schnittstellen (n ist eine Nummer). Die Schnittstellen werden mit "cat /proc/ioports" angezeigt, "cat /proc/interrupts" zeigt allerdings nur die aktiven Geräte.
  • "/dev/ttyS0" (IRQ4, port 0x3f8) entspricht "COM1" unter Microsoft DOS.
  • "/dev/ttyS1" (IRQ3, port 0x2f8) entspricht "COM2" unter Microsoft DOS.
zero c Wird von hier gelesen, so erhält man Null-Zeichen (jedes Bit ist eine Null).

Eine Zusammenfassung der unter Linux vorhandenen Gerätedateien gehört seit der Linux-Kernel-Version 1.3.25 zu den Quellen und findet sich in der Datei "/usr/src/linux-2.4.18.SuSE/Documentation/devices.txt".

Verwendung

Ausgabe der Datei "file" auf den Drucker am ersten parallelen Port "/dev/lp0". Dieser Befehl benötigt keine besondere Software, um den Drucker anzusprechen.

$ cat file > /dev/lp0

Herausfinden, von welchem Typ ein Eintrag im Verzeichnis "/dev" ist. Das erste Zeichen der Ausgabe bezeichnet den Typ.

$ ls -lL /dev/tty0
crw-rw---- 1 root root 4, 0 2008-11-03 19:13 /dev/tty0
$ ls -lL /dev/sda
brw-rw---- 1 root disk 8, 0 2008-11-03 19:13 /dev/sda

Weblinks

Herausgeber Sprache Webseitentitel Anmerkungen
country DE.gif Wikipedia ger Gerätedateiwbm Enzyklopädischer Artikel