See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Gerätenamen unter Linux – Wikipedia

Gerätenamen unter Linux

aus Wikipedia, der freien Enzyklopädie

Gerätenamen unter Linux sind als Dateinamen im Verzeichnisbaum „/dev“ eingetragen.

Inhaltsverzeichnis

[Bearbeiten] Einführung

Wie bei Unix üblich folgt auch Linux dem Grundsatz "alles ist eine Datei". Das gilt ebenso für die Schnittstellen von Gerätetreibern. Jedes Gerät unter Linux wird durch eine Datei im Verzeichnisbaum /dev/ angesprochen.

Jede Gerätedatei ist eine spezielle Datei welche im Dateisystem zusätzlich zu den Zugriffsberechtigungen die Attribute Minor- und Major-Nummer besitzen. Der Knotentyp ist entweder c - character Device - zeichenorientiertes Gerät - oder b - block device - blockorientiertes Gerät. Über die Minor- und Major-Nummern sowie den Typ werden die Kernelschnittstellen und somit der Gerätetreiber definiert welche über die Gerätedatei ansprechbar sind.

Diese Art von special files - Spezialdateien, da sie keine Daten wie übliche Dateien enthalten - können mit dem Kommando mknod angelegt werden. Gerätedateien können wie Dateien ebenso gelöscht werden - dadurch bleibt der Gerätetreiber zwar geladen, das Gerät ist aber von Programmen mangels Schnittstelle nicht mehr nutzbar.

Die Ein- und Ausgabe auf den Geräten erfolgt wie bei einer Datei. Abhängig von der Hardware erfolgt diese zeichenweise (serielle Schnittstellen, Soundgeräte, virtuelle Konsolen...) oder blockweise (alle Arten von Laufwerken). Mit den üblichen Systembefehlen können so auch Daten ein- oder ausgelesen werden: $ cat dateiname.au > /dev/dsp (gibt das Musikstück aus dateiname.au auf der Soundkarte aus, sprich: spielt es ab), $ cat /dev/random (zeigt einen Zufallswert des internen Zufallsgenerators an), $ cat /dev/sndstat (gibt den Status des Sound-Subsystems aus).

Die Dateinamen für Gerätedateien sind theoretisch beliebig, aus Gründen der Einheitlichkeit hat man sich aber auf bestimmte Standards geeinigt. Werden mehrere Geräte eines Typen benutzt so werdend die Dateinamen mit einer laufenden Nummer versehen. Wie in der Informatik üblich beginnt man mit der Zählung bei 0.

[Bearbeiten] Beispiele für Gerätedateinamen

  • /dev/lp0 - line printer - parallele Schnittstelle, früher üblicherweise zum Anschluss von Druckern verwendet
  • /dev/fd0 - floppy disk - Diskettenlaufwerk
  • /dev/ttyS0 - teletype serial - serielle Schnittstelle
  • /dev/null - null device - ein Nicht-Gerät, gibt nichts aus, alles was hierhin ausgegeben wird verschwindet. Wird häufig zur Entsorgung unerwünschter Befehlsausgaben benutzt: $ befehl > /dev/null.
  • /dev/console - Kernel-Konsole
  • /dev/hda - hard disc a - Gerät am IDE-Bus, der Buchstabe definiert den Anschluss am Bus (a - Master an IDE0, b - Slave an IDE0, c - Master an IDE1, d - Slave an IDE1...), eine nachfolgende Zahl repräsentiert die Partition auf dem betreffenden Laufwerk, hier beginnt die Zählung bei 1. Somit kann das gesamte Laufwerk (z. B. /dev/hda) im Rohmodus oder eine bestimmte Partition (z. B. /dev/hda1) als Dateisystem angesprochen werden.
  • /dev/sda - scsi disc a - wie bei IDE-Festplatten, allerdings auf SCSI- und verwandte Geräte angewandt (so auch S-ATA). Unter Linux werden alle Wechsellaufwerke als SCSI-Laufwerke verwaltet, so z. B. USB-Festplatten, USB-Sticks, Speicherkarten und Weiteres.

Um Gerätedateien zusätzlich zu ihrer offiziellen eine leichter zu merkende Bezeichnung zu geben wird hier, wie im Dateisystem üblich, auf symbolische Links zurückgegriffen. So findet man in vielen Systemen folgende üblichen Links:

  • /dev/cdrom -> /dev/hdc oä. Blockgerät, IDE-Blockgerät an welchem das CD-Laufwerk angeschlossen ist
  • /dev/mouse -> /dev/psaux, /dev/ttyS0 oder /dev/input/mice
  • /dev/dsp -> /dev/sound/dsp0

[Bearbeiten] Neue Konzepte zur Verwaltung der Gerätedateien

Anfänglich wurden Gerätedateien manuell mit dem Kommando mknod erstellt.

Installierte man ursprünglich einen neuen Treiber, so mussten eine oder mehrere Gerätedateien angelegt werden um die benötigte Schnittstelle zu schaffen. Viele Linux-Distributionen lieferten daher im /dev-Verzeichnisbaum bereits tausende von Gerätedateien mit, unmöglich zu wissen, ob diese jemals benötigt werden würden. Dies war einerseits unübersichtlich, andererseits war es schwierig, automatisch neue Treiber für neue Hardware zu laden, da die Gerätedateien immer manuell gepflegt werden mussten. Gerade einem Anwender ist diese Aufgabe nicht zu überlassen.

Innerhalb mehrere Jahre und Kernel-Releases wurden so zwei neue Konzepte entwickelt:

[Bearbeiten] devfs

Im Kernelbaum 2.2 wurde das devfs - ein Device Filesystem - ein Gerätedateisystem - eingeführt. Die Idee war einfach:

Im Kerneltreiber sind die entsprechenden Schnittstellen (Minor- und Major-nummern sowie der Typ) definiert, dh. der Kernel kennt die aktuell benötigten Schnittstellen. Die Gerätenamen könnten ebenfalls im entsprechenden Kernelmodul festgelegt werden, womit der Kernel die Erzeugung der Gerätedateien selbst übernehmen könnte.

Es gab somit ein Dateisystem welches in das Verzeichnis /dev gemountet wurde. Dort hatte der Kernel, vergleichbar mit dem /proc-Verzeichnis, die benötigten Gerätedateien mit Hilfe des devfsd automatisch erzeugt.

Der Device Filesystem Daemon war in der Datei /etc/devfsd.conf konfigurierbar. So konnte man unter anderem die gewünschten Berechtigungen oder Besitzverhältnisse je Gerät oder Gerätegruppe eintragen.

[Bearbeiten] udev

Nach reiflicher Überlegung schien das System mit devfs doch zu unflexibel. Gefordert wurde ein System, das beim Einstecken neuer Hardware reagiert, die entsprechenden Kernelmodule lädt und die Gerätedateien anlegt bzw. beim Ausstecken der Geräte diese wieder entfernt. Zusätzlich sollte es möglich sein, über ein Regelwerk selbst zu definieren, welches Namensschema man für seine Gerätedateien anwenden möchte, wie diese in Unterverzeichnissen strukturiert werden sollen etc.

Mit der Einführung von Kernel 2.6 wurde udev das neue Geräteverwaltungskonzept. Ähnlich wie bei devfs gibt es auch hier einen Daemon der im Userspace läuft und die eigentliche Arbeit erledigt. Bei udev kommt jedoch kein eigenes Dateisystem zum Einsatz.

Das Konzept um udev ist einiges umfangreicher, so wurde gleichzeitig ein neues Hotplug-Konzept eingeführt, da Gerätedateiverwaltung und automatische Gereäteerkennung nun Hand in Hand spielen sollten:

Wird unter Linux nun ein Gerät angeschlossen, so wird dies vom entsprechenden Bus-Treiber (USB, PCI, SCSI...) dem Kernel mitgeteilt. Dieser stößt dann den unter /sbin/hotplug befindlichen Helfer an. Die im Userspace laufende Software Hotplug kommt mit einer Hardware-Datenbank – welche auch manuell erweitert werden kann – und sucht darin anhand der übergebenen Hersteller- (vendor id) und Produktnummer (product id) das passende Kernelmodul und lädt dieses. Das Kernelmodul stellt eine neue Schnittstelle zur Verfügung welche durch den ebenfalls im Userspace laufenden udevd – Udev Daemon – eine Gerätedatei erzeugen lässt. Der udevd beinhaltet eine flexible wie auch komplexe Konfiguration im Verzeichnis /etc/udev. Wie bei devfs können hier die Berechtigungen und Besitzer einer Gerätedatei festgelegt werden, aber auch die og. Regeln zur Benennung und Strukturierung der Dateien.

[Bearbeiten] Siehe auch


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -