Unterschiede zwischen den Revisionen 3 und 4
Revision 3 vom 2002-10-19 15:52:51
Größe: 2968
Kommentar:
Revision 4 vom 2002-10-19 16:47:31
Größe: 3259
Kommentar:
Gelöschter Text ist auf diese Art markiert. Hinzugefügter Text ist auf diese Art markiert.
Zeile 30: Zeile 30:
Manchmal braucht man auch ein device welches aus Platz oder Übersichtlichkeitsgründen nicht erzeugt wurde.
z.B Man baut den zweiten zusätzlichen IDE Adapter ein. Mit {{{ /dev/MAKEDEV hdi }}} erhält man seine Device
Einträge. -- AndreasSchockenhoff [[DateTime(2002-10-19T18:47:31)]]

Vorweg

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 (so etwa 30) 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 div. Funktionen dafür, im schlimmsten Fall muß man das via Assembler machen. Unter Linux geht das (Pseudocode) so etwa:

open(HDD, "/dev/hdb2");        # ("hdb2" im Verzeichnis "/dev")
print(HDD, "Dies würde 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.

Ja, falls er nicht /dev/MAKEDEV mit gelöscht hat :) . -- BennySiegert DateTime(2002-10-19T17:52:51)

Manchmal braucht man auch ein device welches aus Platz oder Übersichtlichkeitsgründen nicht erzeugt wurde. z.B Man baut den zweiten zusätzlichen IDE Adapter ein. Mit  /dev/MAKEDEV hdi  erhält man seine Device Einträge. -- AndreasSchockenhoff DateTime(2002-10-19T18:47:31)

JensBenecke

dev (zuletzt geändert am 2007-12-23 22:47:19 durch localhost)