Gerätedateien (engl.: Devices) enthalten im Unterschied zu »normalen« Dateien keine Daten. Ein Zugriff des Betriebssystems auf eine Gerätedatei bedeutet einen Zugriff auf das entsprechende Peripheriegerät, welches durch die Gerätedatei dargestellt wird. Häufig wird zwischen Gerät und Gerätedatei gar nicht mehr unterschieden, für beide wird einfach der Begriff »Device« verwendet.
Informationen über das Anlegen von Gerätedateien im Verzeichnis
/dev
finden Sie im Kapitel »Creating Devices in the /dev
directory« der Serial HOWTO.
Devices haben unter Linux Major und Minor Numbers. Jeder serielle
Port kann durch zwei gültige Gerätedatein im /dev
-Verzeichnis
repräsentiert sein: ttyS
und cua
. Die entsprchenden
Gerätetreiber (d.h. die Software, die auf diese Dateien zugreift)
verhalten sich leicht unterschiedlich. Das cua
-Device ist überholt
und wird in Zukunft nicht mehr verwendet werden (siehe auch
Die cua-Gerätedatei).
DOS/Windows verwendet den Namen »COM« für die seriellen
Schnittstellen, während das setserial
-Programm die Namen »tty00«,
»tty01«, ... gebraucht. Verwechseln Sie diese Bezeichner nicht mit
/dev/tty0
, /dev/tty1
, usw., die für Ihre Konsole
verwendet werden, aber keine seriellen Ports sind. Die standardmäßigen
DOS-Namen (COM1, usw) und I/O-Adressen sind in folgender Tabelle
aufgeführt (die Werte auf Ihrem System können evtl. davon abweichen):
set- IO
DOS serial major minor major minor Adresse
COM1 tty00 /dev/ttyS0 4, 64; /dev/cua0 5, 64 3F8
COM2 tty01 /dev/ttyS1 4, 65; /dev/cua1 5, 65 2F8
COM3 tty02 /dev/ttyS2 4, 66; /dev/cua2 5, 66 3E8
COM4 tty03 /dev/ttyS3 4, 67; /dev/cua3 5, 67 2E8
In allen Linux-Distributionen sollten die ttyS
-Devices bereits
angelegt sein (und auch die cua
-Devices, bis sie endgültig abgeschafft
werden). Sie können dies durch folgende Befehle überprüfen:
ls -l /dev/cua*
ls -l /dev/ttyS*
Bei einigen Installationen werden zwei zusätzliche Devices
angelegt, /dev/modem
für das Modem und /dev/mouse
für die Maus. Beides sind symbolische Links auf die entsprechende
Gerätedatei in /dev
, die Sie während der Installation
ausgewählt haben (wenn Sie eine Bus-Maus haben ist
/dev/mouse
ein Link auf das Bus-Maus Device).
Es gab einige Diskussionen um den Sinn von /dev/mouse
und
/dev/modem
. Von der Verwendung dieser symbolischen Links wird
abgeraten. Insbesondere könnten sich Probleme mit den Lock-Dateien
ergeben, wenn Sie das Modem für eine Einwahl von aussen zur Verfügung
stellen wollen und /dev/modem
verwenden. Sie können diese
Links verwenden, aber stellen Sie sicher, dass sie auf das
richtige Device verweisen. Andererseits müssen Sie u.U. andere
Applikationen umkonfigurieren, wenn Sie diese Links verändern oder
löschen.
Jedes ttyS
Device hat eine korrespondierendes cua
Device.
Aber das cua
Device wird in Zukunft abgeschafft, und so empfiehlt
es sich, ttyS
zu verwenden (solange cua
nicht explizit
notwendig ist). Es gibt einen Unterschied zwischen cua
und ttyS
,
aber ein findiger Programmierer kann es erreichen, dass sich ein
ttyS
Port wie ein cua
Port verhält, so dass es keine
Notwendigkeit mehr für cua
gibt. Eine Ausnahme bilden
einige ältere Programme, die cua
verwenden müssen.
Worin besteht nun der Unterschied? Der hauptsächliche Unterschied
zwischen cua
und ttyS
besteht darin, was in einem
C-Programm passiert, wenn ein normaler open()
-Aufruf versucht,
einen Port zu öffnen. Ein cua
Port kann einfach geöffnet werden,
selbst wenn die Modem Signalleitungen überprüft werden und die
DCD Leitung ein Öffnen eigentlich verbietet (weil sich niemand eingewählt
hat und es daher auch kein Trägersignal gibt). Durch schlaue
Programmierung kann man es aber erreichen, dass sich ein ttyS
Port genauso verhält wie ein cua
Port.
Dies ist der Grund, warum cua
früher für abgehende und ttyS
für
eingehende Verbindungen verwendet wurde.
Ab Linux Kernel 2.2 wird eine Warnmeldung in die Kernel-Logdatei
geschrieben, wenn ein cua
Port verwendet wird. Dies ist ein Zeichen
dafür, dass cua
Ports nicht mehr lange unterstützt werden.