LinuxNetMag
Devices unter Linux
Archiv | Home
Inhalt
   
LinuxNetMag #5

  Software
 Aktuell
kurz vorgestellt
SuSE7.0 Testbericht
Mozilla Preview
 Applikationen
Videoschnittsystem
Windows X-Server
Windowmanager
 3D
 Spiele
  
 

Hardware

TV-Karte
Wheel-Mouse
Webcam selbstgebaut
  
 

Netzwerk

Web2Fax-Gateway
Apache mit SSI
Booten übers Netz
Webcam-Streaming
offline Mailingliste
  
 Wissen
Abenteuer ReiserFS
Linux-Devices
LinuxExpo Brasilien
  
 

Sonstiges

Mailing-Liste
Gästebuch
Artikelliste
Unterstützen Sie uns !
zurück zur Hauptseite



Druckversion


  Devices Dies ist nicht notwendig für Einsteiger, es ist Hintergrundwissen über die Inhalte des mysteriösen `/dev' Verzeichnisbaums. Wer interessiert ist, lese weiter. Wer es nicht ist, mache lieber etwas sinnvolles, wie z.B. mit dem KDE THEME MANAGER rumspielen und das MATRIX Theme ausprobieren ;-)

Everything is a file

Dieses UNIX-Paradigma ist schon etliche Jahre alt (d.h. älter als Windows ;-)) und hat sich immer wieder bewährt. Alles, was du unter einem UNIX-System beschreiben oder lesen kannst, wird über eine mehr oder weniger abstrakte Datei angesprochen. Das fängt an bei ganz normalen Dateien ;), geht aber über Partitionen, Festplatten, allen anderen Massenspeichern, und ist bei Terminals ("Kommandozeilenfenstern") und Netzwerkgeräten noch lange nicht vorbei.

Warum das ganze? Der Einfachheit halber! Beispiel: Wie ändere ich unter DOS mit z.B. einem Pascal oder C-Programm den Bootsektor der zweiten Partition der ersten Festplatte? Es gibt sicher eine API und diverse Funktionen dafür, im schlimmsten Fall muß man das via Assembler machen. Unter Linux geht das (Pseudocode) so etwa:

 open(HDD, "/dev/hdb2");
 print(HDD, "Dies wird jetzt in den Boosektor der Platte geschrieben");
 close(HDD);

und gibt eine Fehlermeldung von wegen "Zugriff verweigert", wenn man keinen Schreibzugriff auf die Partition hat oder nicht ROOT ist (wäre auch dumm wenn nicht). Genauso geht es mit den seriellen Schnittstellen: Man kann `/dev/ttyS1' (`COM2:' unter DOS) einfach wie eine Datei öffnen und davon lesen und darein schreiben.

Die Platte/Partition wird einfach wie eine Datei behandelt. Genauso geht es mit Terminals, d.h. entweder den Textmodus-Kommandozeilen oder halt den X-Terminals. Es gibt dabei BLOCK DEVICES (alle Massenspeicher), CHARACTER DEVICES (Terminals, serielle Ports, alle "nicht-speichernden" Geräte), uvm.

Wie werden diese "Spezialdateien" von Linux behandelt, erstellt und interpretiert? Jede dieser Dateien in `/dev' (sie müssen übrigens nicht dort liegen, sie können auch an jeder anderen Stelle liegen) hat statt einer Größe zwei Nummern, eine Haupt- und eine Nebenzahl (Major/Minor Number). Diese sieht man, wenn man mit ls -l /dev mal in das entsprechende Verzeichnis reinguckt.

Wie diese Spezialdateien heißen, ist letzlich egal -- was sie tun, hängt vollständig von diesen beiden Ziffern ab. Und die wiederum sind in der Kerneldokumentation beschrieben, und zwar in der Datei `file:/usr/src/linux/Documentation/devices.txt'. Neu anlegen kann man sie mit dem fast überall in `/dev' rumliegenden Skript `MAKEDEV'. Es ist in sich selbst dokumentiert, einfach mit less anschauen.

Wer jemals aus Versehen seinen `/dev' Verzeichnisbaum gelöscht hat, wird dies zu schätzen wissen.

Wer steuert was?

Jede von Linux unterstützte Hardware-Komponente benötigt nun auch ein eigenes Device. Da mittlerweile eine riesige Anzahl an Geräten unterstützt werden, existieren auch entsprechend viele Devices.
Wer einen kurzen Eindruck von der Fülle der Devices haben will, sollte es mal mit dem Befehl

>> ls -l /dev/ | less
versuchen.

Wir wollen im Folgenden eine kurze Erklärung zu den jeweiligen Devices liefern, können dabei verständlicherweise aber nur auf die wichtigsten eingehen:

  • /dev/mem
    Dieses Device bietet Ihnen Zugriff auf Ihren Speicher

  • /dev/null
    Alles, was in dieses Device umgeleitet wird, verschwindet. Alle Daten werden verschluckt. Diese Funktion ist nützlich, um Programmeldungen zu unterdrücken:
    Sollte Sie ein Programm mit vielen ungewünschten Statusmeldungen überfluten, reicht ein:
    >> programm > /dev/null
    
    und alle Ausgaben des Programms werden unterdrückt.

  • /dev/zero
    /dev/zero funktioniert im Prinzip genau umgekehrt wie /dev/null. Wollen Sie eine Datei, die nur Nullen enthält, erzeugen, dann bietet Ihnen /dev/zero eine unerschöpfliche Quelle.

  • /dev/random
    hingegen liefert statt Nullen Zufallszahlen. Sollte ein Programm Zufallszahlen benötigen, kann es einfach auf dieses Device zurückgreifen, ohne daß man selbst einen Algorithmus schreiben muß.

  • /dev/urandom
    liefert genauso wie schon /dev/random Zufallszahlen, allerdings mit schlechterer Zufallsverteilung, dafür aber schneller.

  • /dev/ram
    bietet Zugriff auf Ihre erste Ram-Disk (also eine Partition, die statt auf einem physikalischen Medium im Ram-Speicher liegt. Ihr Inhalt wird deshalb beim Beenden des PCs normalerweise nicht abgespeichert und geht verloren, wenn man nicht selbst die Daten z.B. auf einer Platte sichert.
    Allerdings ist der Geschwindigkeitsgewinn eines solchen Devices nur minimal, da Linux sowieso alle Schreib- und Lesezugriffe auf Festplatte und Diskette zuerst nur im RAM zwischenspeichert und später dann erst auf die Platte schreibt.
    Somit ist ein RAM-Device zumeist nicht notwendig (falls Sie trotzdem eins benutzen wollen, müssen Sie die Unterstützung im Kernel aktivieren).

  • /dev/fd0
    zeigt direkt auf Ihr erstes Diskettenlaufwerk. Das Diskettenformat wird automatisch bestimmt (ob DD- oder HD-Disketten). Das zweite Diskettenlaufwerk wird mittels /dev/fd1 angesprochen.

  • /dev/hda
    verweist auf den Datenspeicher (zumeist Festplatte oder das CD-Rom-Laufwerk), welches sich als Master am ersten IDE-Port befindet.

  • /dev/hdb
    entspricht dann dem Slave am ersten IDE-Port.
    /dev/hdc und /dev/hdd sind dementsprechend Master bzw. Slave am zweiten IDE-Port.

  • /dev/hd?1 - /dev/hd?63
    Soll statt der gesamten Platte nur eine einzelne Partition angesprochen werden, geschieht dies über eine zusätzliche Nummer von 1 bis 63.
    Die Zahlen 1 bis 4 entsprechen dabei den primären Partitionen und die restlichen Devices von 5 bis 63 den logischen Partitionen.

  • /dev/lp0
    Darunter versteckt sich der Drucker am ersten Parallelport.

  • /dev/loop0
    ist ein Pseudo-Netzwerkdevice, das den lokalen Programmen ermöglicht, Ihren PC über die IP-Adresse 127.0.0.1 anzusprechen.

  • /dev/sda
    Besitzer von SCSI-Festplatten sprechen diese analog zu IDE-Festplatten mittels /dev/sda/ bis /dev/sdp (bis zu 16 SCSI-Platten sind möglich) an.

  • /dev/psaux
    ist das Device, das die Daten einer PS/2-Maus empfängt.

  • /dev/mouse
    hingegen ist das Device, welches die Daten einer seriellen Maus empfängt.

  • /dev/rtc
    Unter diesem Device verbirgt sich eine Echtzeit-Uhr. (Muß vorher im Kernel aktiviert werden).

  • /dev/sr0
    ist das Devise, welches zum Ansteuern von SCSI-CD-ROM Laufwerken zuständig ist. Weitere Laufwerke werden mittels /dev/sr1 ... angesprochen.
    Teilweise existiert auch die Bezeichnug /dev/scd statt /dev/sr.

  • /dev/js0
    Wer im Besitz eines analogen Joysticks ist und die entsprechenden Treiber in den Kernel kompiliert hat, kann den Joystick über dieses Device abfragen. Der zweite Joystick versteckt sich dann entsprechend hinter /dev/js1.

  • /dev/ippp0
    Besitzer eine ISDN-Karte, die zur Übertragung das Protokoll SyncPPP benutzen, sprechen diese über das Device /dev/ippp0 an.

  • /dev/pda - /dev/pdd
    Wer eine IDE-Disc am Parallelport benutzen will (z.B. am Laptop), spricht diese Geräte über das Device /dev/pda (erste Parallelport IDE-Disk) bis /dev/pdd (vierte Parallelport IDE-Disk) an.

  • /dev/video0
    Besitzer einer TV-Karte, können diese auch unter Linux benutzen. Die Karte wird per /dev/video0 angesteuert.

  • /dev/vtx
    Besitzt die TV-Karte auch einen Teletext-Decoder, wird dieser mittels /dev/vtx ausgelesen.

  • /dev/vttuner
    Um das Programm einer TV-Karte zu wechseln, besitzt die Karte einen Tuner. Dieser wird über /dev/vttuner gesteuert.

  • /dev/parport0
    Der Parallelport kann mittels /dev/parport gelesen und geschrieben werden (z.B. zum Ansteuern einer am Parallelport angebrachten Hardwarekomponente, wie man es etwa unter VMWare einstellen muss).
    Der zweite Parallelport benutzt dementsprechend das Device /dev/parport1

  • /dev/ttyS0 bis /ttyS61
    Wollen Sie Hardware am seriellen Port anschließen oder eine SLIP-Verbindung aufbauen, wird die Verbindung über die ttyS?-Devices aufgebaut.
    Es sind bis zu 61 serielle Verbindungen möglich.

  • /dev/3dfx
    Besitzer eine 3Dfx-fähien Karte, können dessen Fähigkeiten seit neuestem auch über das Device /dev/3dfx nutzen, entsprechende Treiber vorausgesetzt.


Dieser Text basiert z.T. auf Auszügen der Linux USER FAQ, und wurde uns freundlicherweise zur Verfügung gestellt von Jens Benecke, der Mitautor dieser FAQ ist.

Links
   Homepage des Autors (Jens Benecke): http://www.pinguin.conetix.de
   Linux USER FAQ (Deutsche Version): http://www.linuxfaq.de


Platz für Kommentare & Fragen:
(selbst eintragen)

 

Weitere Ausgaben Linux NetMag
[ #1 | #2 | #3 | #4 | Main ]