|
LinuxNetMag #5
 Druckversion
|
|
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 ;-)
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.
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)
|