ubuntuusers.de

Du betrachtest eine alte Revision dieser Wikiseite.

udev

Artikel wird überarbeitet

Dieser Artikel wird momentan überarbeitet.

  • Geplante Fertigstellung: 25.03.2013

  • Derzeitig gültiger Artikel: udev

  • Bearbeiter: BillMaier

Solltest du dir nicht sicher sein, ob an dieser Anleitung noch gearbeitet wird, kontrolliere das Datum der letzten Änderung und entscheide, wie du weiter vorgehst.


Achtung: Insbesondere heißt das, dass dieser Artikel noch nicht fertig ist und dass wichtige Teile fehlen oder sogar falsch sein können. Bitte diesen Artikel nicht als Anleitung für Problemlösungen benutzen!

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

./udev_logo.png udev ist ein Programm, das die Gerätedateien im Verzeichnis /dev dynamisch verwaltet. Dies geschieht sowohl beim Bootvorgang als auch durch nachträgliches An- oder Abstecken eines Gerätes im laufenden Betrieb (Hotplug). Bekommt udev vom Kernel Informationen über ein Gerät (sog. device uevents), wertet es diese anhand fester, aber frei konfigurierbarer Regeln aus.

Hinweis:

Seit Ubuntu 10.04 Lucid Lynx werden über udev auch Eingabegeräte konfiguriert, da HAL entfällt. Weitere Hinweise hierzu findet man im englischen Wiki 🇬🇧.

udev-Regeln

Eine udev-Regel enthält mindestens eine Bedingung und mindestens eine Zuweisung. Treffen alle Bedingungen einer Regel auf ein Gerät zu, werden die Zuweisungen dieser Regel ausgeführt. Es können mehrere Regeln auf ein Gerät angewendet werden. Damit ist es z.B. möglich, zusätzlich zu den Standardregeln eigene Regeln auf das gleiche Gerät anzuwenden.

Standardregeln

Die Standardregeln liegen zum Großteil in /lib/udev/rules.d/. Nur noch wenige Systemregeln wie z.B. für die Netzwerkkarten sind unter /etc/udev/rules.d/ zu finden. Die einzelnen Regeldateien beginnen mit einer zweistelligen Zahl und werden in alphanumerischer Reihenfolge abgearbeitet. So ist sicher gestellt, dass wichtige Regeln zuerst behandelt werden. Werden mehrere Regeln in eine Regeldatei geschrieben, werden diese zeilenweise voneinander getrennt.

Beispiele für Standardregeln

# block
SUBSYSTEM=="block", GROUP="disk"

Dieses Beispiel zeigt eine Standardregel aus der Datei 50-udev-default.rules. Sie besagt: Gehört ein erkanntes Gerät zum Subsystem "block", wird ihm die Gruppe "disk"[3] zugewiesen.

Das nächste Regel ist etwas länger: Wird ein Gerät im Subsystem "net" mit der MAC-Adresse 57:04:b6:c2:6c:z3 erkannt, bekommt es den Namen "eth0" - und damit die Gerätedatei /dev/eth0.

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="57:04:b6:c2:6c:z3", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" 

Eigene Regeln

Sinn eigener Regeln

Standardmäßig werden Gerätenamen unter Linux "hochgezählt". So heißt z.B. der erste USB-Stick /dev/sda1, der zweite /dev/sdb1. Das System kennt zunächst keinen Unterschied zwischen beiden Sticks.

Dazu einige Beispiele:

  • Auf einer USB-Festplatte liegen mp3-Dateien. Da die Platte immer anders eingebunden wird, wird die Sammlung vom Mediaplayer immer neu eingelesen.

  • Soll über ein Skript von oder zu einem Laufwerk kopiert werden (z.B. bei Backups oder beim Kopieren von SD-Karten), empfiehlt sich ebenfalls die Verwendung einer eigenen Regel, da man hierdurch eine Unabhängigkeit von der Einschaltreihenfolge erreicht.

  • Ein Gerät verschwindet plötzlich aus dem System, Gerätedateien, z.B. /dev/cdrom funktionieren nicht mehr. SCSI-Geräte werden bei Fehlern einfach "hochgezählt" und fehlerhafte Gerätedateien verworfen. Ein zunächst als sr0 eingebundenes Gerät heißt nach einem Trennen der Verbindung ("disconnect") etwa sr1, und der zugehörige Verweis - z.B. von /dev/cdrom auf /dev/sr0 - ist dann nicht mehr verwendbar.

Eigene Regeln sind immer dann sinnvoll, wenn Geräte (hier: USB-Massenspeicher) mit eindeutig zugeordneten Verzeichnis- oder Gerätenamen eingebunden werden sollen.

Durch die großen Möglichkeiten von udev lässt sich auch erreichen, dass beim Anstecken eines Gerätes ein Skript ausgeführt wird. Das kann z.B. sehr hilfreich für Backups sein. (s. #Erstellen-eigener-Regeln)

Beispiele

#Beispiel 1: USB HDD Musik
SUBSYSTEMS=="usb", KERNEL=="sd?1", ATTRS{serial}=="ABCDEF012345", SYMLINK+="musik"
#Beispiel 2: externes LG DVD-ROM
SUBSYSTEMS=="scsi", KERNEL=="sr?", ATTRS{model}=="DVD-ROM GDR8163B", SYMLINK+="dvd-rom-lg"
#Beispiel 3: USB-Stick für Backups
SUBSYSTEMS=="usb", KERNEL=="sd?1", ATTRS{idVendor}=="0204", ATTRS{idProduct}=="0275", SYMLINK+="usbstick", RUN+="/usr/local/bin/usbstick-backup"
#Beispiel 4: Handy sync
SUBSYSTEMS=="usb", ATTRS{serial}=="123456789123456789" , OWNER="benutzername"

Hier sieht man vier Beispiele für eigene udev-Regeln.

  • Beispiel 1: Hier wird für eine USB-Festplatte mit der Seriennummer die Gerätedatei /dev/musik als Symlink erzeugt.

  • Beispiel 2: Ein externes USB-DVD-Laufwerk mit der Modellbezeichnung "DVD-ROM GDR8163B" wird immer mit demselben Gerätenamen /dev/dvd-rom-lg eingebunden, unabhängig davon, ob es zuvor als sr1, sr2 oder sr3 eingebunden wird.

  • Beispiel 2: Ein USB-Stick, der die Herstellernummer "0204" und die Produktnummer "0275" übermittelt, wird als /dev/usbstick erzeugt und ein Skript usbstick-backup gestartet.

  • Das vierten Beispiel schaltet ein Mobilegerät am USB-Port für den Zugriff als normaler Benutzer frei. Das ermöglicht die Synchronisierung z.B. per OpenSync.

Hinweis:

In grafischen Systemen werden externe Dateisysteme in aller Regel mit dem Partitionsnamen oder der UUID in das Verzeichnis /media eingebunden. Dadurch ist eine gewisse Eindeutigkeit gewährleistet, die aber bei einer Neuformatierung des Datenträgers wieder verloren geht. Udev-Regeln können sich hingegen an Kriterien orientieren, die fester und eindeutiger mit dem Gerät selbst "verbunden" sind.

Erstellen eigener udev-Regeln

Hier wird die Erstellung eigener udev-Regeln am Beispiel einer USB-Festplatte und eines externen USB-DVD-Laufwerks erklärt.

Die Aufgabe ist, die USB-Festplatte beim Einschalten oder Anstecken automatisch einzubinden und ein Backup-Skript zu starten, um eine bequeme Datensicherung durchzuführen.

Die Aufgabe für das DVD-Laufwerk ist simpler. Es geht darum, dass das Gerät immer unter einem spezifischen Gerätenamen verfügbar ist.

Zunächst müssen möglichst eindeutige Informationen über das jeweilige Gerät ausgelesen werden. Je nachdem, um was für ein Gerät es sich handelt (und wie es angeschlossen wurde) eignen sich hierfür unterschiedliche Schlüssel und Werkzeuge. Als Universalwerkzeug eignet sich udevadm.

Dazu eignen sich insbesondere:

  • Die Seriennummer des Geräts (falls vorhanden und nicht NULL)

  • Die Kombination aus Herstellerkennung und der Produktkennung

  • Die Kombination aus Hersteller und Modellbezeichnung

Informationen kann man auf mehrerlei Weise sammeln.

1a. Daten über ein USB-Gerät herausfinden mit lsusb

Zunächst die USB-Festplatte: Zuerst sollte man das Gerät anstecken oder einschalten und im Terminal[1] folgenden Befehl ausführen:

lsusb 

Die Ausgabe sieht dann in etwa wie folgt aus:

Bus 005 Device 036: ID 04b4:6830 Cypress Semiconductor Corp. USB-2.0 IDE Adapter
Bus 005 Device 033: ID 144d:c019
Bus 005 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000

Anhand der Bus-Nummer und der Device-Nummer fragt man jetzt mit der Option -v detailiertere Informationen über das Gerät ab. Dazu muss der Datenträger allerdings eingehängt sein, was sich bei Bedarf mit mount[4] prüfen lässt.

sudo lsusb -vs  005:036 

Hinweis:

Die Ausgabe lässt sich mit less oder more seitenweise begrenzen.

Bus 005 Device 013: ID 04b4:6830 Cypress Semiconductor Corp. USB-2.0 IDE Adapter
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x0ab4 Cypress Semiconductor Corp.
  idProduct          0x685a USB-2.0 IDE Adapter
  bcdDevice            0.01
  iManufacturer          56 Cypress Semiconductor
  iProduct               78 USB2.0 Storage Device
  iSerial               100 ABCDEF012345
  bNumConfigurations      1

Hier sind vor allem die Zeilen idVendor, idProduct und iSerial interessant, da sich ihre Werte aufgrund ihrer Eindeutigkeit relativ gut für eine udev-Regel verwenden lassen." Sollte der Wert der iSerial NULL betragen, kommen als Alternative die Schlüssel idVendor und idProduct"0x0ab4" mit den Werten "0x685a" in Betracht.

Mit diesen Angaben lassen sich bereits funktionierende Bedingungen für eine eigene Udev-Regel bauen. Weiter mit Beschreibung.

1b. Daten über beliebige Geräte auslesen mit udevadm

SCSI- oder andere Geräte können eine andere Vorgehensweise nötig machen. Dazu verwendet man die Angaben aus der Logdatei /var/log/syslog. Dort werden am Ende die Linuxkernel-Informationen anzeigt, z.B. mit dem Befehl

tail -n 10 -f /var/log/syslog 

Wie oben sollte man anschließend das Gerät - den Scanner, ein SCSI-Laufwerk, Mobiltelefon, Kamera - anstecken oder einschalten. Die Ausgabe für ein externes USB-DVD-Gerät, welches als SCSI-Gerät erkannt wird, zeigt, was nach dem Einstecken passiert.

[51755.613225] usb 4-1: new high speed USB device using ehci_hcd and address 16
[51755.754296] usb 4-1: configuration #1 chosen from 1 choice
[51755.766872] scsi13 : SCSI emulation for USB Mass Storage devices
[51755.767872] usb-storage: device found at 16
[51755.767880] usb-storage: waiting for device to settle before scanning
[51760.764575] usb-storage: device scan complete
[51760.769702] scsi 13:0:0:0: CD-ROM            HL-DT-ST DVD-ROM GDR8163B 0L23 PQ: 0 ANSI: 0
[51760.790142] sr1: scsi3-mmc drive: 52x/52x cd/rw xa/form2 cdda tray
[51760.790274] sr 13:0:0:0: Attached scsi CD-ROM sr1
[51760.790372] sr 13:0:0:0: Attached scsi generic sg1 type 5

Wie man sieht, wurde ein externes CD-ROM-USB-Laufwerk eingesteckt, das jedoch als SCSI-Gerät erkannt und geführt wird: sr1. Wenn die Erkennung des Gerätes nach ein paar Sekunden abgeschlossen ist, kann man die Ausgabe abbrechen. Eine Kontrolle im /dev/-(Geräte)-Verzeichnis zeigt die Existenz des neuen Gerätes /dev/sr1:

ls -l /dev/sr1 

Nun kann man mit diesem Gerätenamen (/dev/sr1) genaue Informationen darüber finden, mit welchen Attributen das Gerät im System geführt wird. Diese Attribute können später 1:1 für eine udev-Regel verwendet werden. Die Eingabe des Befehls

udevadm info --query=all --attribute-walk --name=/dev/sr1 

führt meist zu einer sehr langen Ausgabe, da alle beim Einstecken des Gerätes beteiligten Systeme angezeigt werden. Dies können z.B. sein

  • einzelne Chipsätze, Controller

  • Subsysteme, wie verschiedene USB Systeme (1.0, 1.1, 2.0)

  • Linux-Treiber (z.B. ehci_hcd)

  • einzelne Partitionen des Gerätes

Entsprechend abgestimmt kann die Erkennung dieser Geräte mit udev für einen speziellen Zweck erfolgen. Es ist jedoch mit ein wenig Fantasie möglich, die Spreu vom Weizen zu trennen.

Die Ausgabe der beteiligten (Unter-)Systeme erfolgt blockweise. Jeder Block beginnt mit:

looking at ...

Der erste Ausgabeblock für das obige Gerät lautet z.B.

looking at device '/block/sr1':
  KERNEL=="sr1"
  SUBSYSTEM=="block"
  [...]

Der nächste und in diesem Fall interessante Ausgabeblock:

looking at parent device '/devices/pci0000:00/[...gekürzt]':
[...]
SUBSYSTEMS=="scsi"
[...]
ATTRS{model}=="DVD-ROM GDR8163B"
ATTRS{vendor}=="HL-DT-ST"
[...]

(ab hier wird es doppelt. Das lässt sich sicher vereinfachen...)

Hier bekommt man direkt die nötigen Informationen, welche später als "Filter" zur Erkennung eines spezifischen Gerätes verwendet werden können. Hier nimmt man die Modellnummer (ATTRS{model}), um das DVD-Laufwerk als solches eindeutig zu erkennen. Der Unterschied zur Methode mit lsusb ist, dass man dies für beliebige Geräte anwenden kann und direkt die Attributnamen (ATTRS{...}) für die Erstellung der udev-Regeln verwenden kann. Beliebt ist auch die Seriennummer des Gerätes, meist ATTRS{serial}.

Achtung!

Eine Kombination von Attributen aus mehreren Elternsystemen ist nicht möglich. Es können aber mehrere Attribute aus einem Elternsystem mit Attributen des eignetlichen Geräts kombiniert werden.

2. udev-Regel schreiben und speichern

noch umschreiben:

Eigene udev-Regeln legt man im Verzeichnis /etc/udev/rules.d/ ab. Um sicher zu gehen, dass die eigenen Regeln vor den Systemstandards ausgeführt werden, sollte man die Datei mit einer niedrigen Zahl beginnen lassen. (Muss noch verifiziert werden. Andere Quellen beginnen für eigene Regeln > 70) Wichtig ist auch, dass die Dateien, die die Regeln enthalten, mit .rules enden, da sie sonst nicht ausgeführt werden. udev-Regeln erstellt man in einem Editor mit Root-Rechten [2]. Es ist vorteilhaft für spätere Änderungen, nicht mit Kommentaren zu sparen.

# USB-Festplatte für Backups

Nun geht es an das eigentliche Erstellen der udev-Regel. Da die Festplatte am USB-Port hängt, wird dies der erste Teil der Regel:

SUBSYSTEMS=="usb"

USB-Festplatten werden vom Kernel meist mit /dev/sda oder /dev/sdb usw. benannt –––– naja, was heißt "meist" ⇒ lieber das Ergebnis aus der Recherche bzw. Informationssamlung anfügen –––––- , die erste Partition dann /dev/sda1 usw. Daher wird als Regel gesetzt, dass das Gerät als sd?1 erkannt werden wird:

SUBSYSTEMS=="usb", KERNEL=="sd?1"

Nun braucht man die Werte, die man vorher ermittelt hat. Ist die iSerial vorhanden bzw. nicht Null, ist der beste Weg, das Gerät über die Seriennummer zu erkennen:

SUBSYSTEMS=="usb", KERNEL=="sd?1",ATTRS{serial}=="Hier Serialnummer einfügen"

Ist die iSerial nicht gesetzt, kann man die Erkennung auch alternativ über idProduct:

SUBSYSTEMS=="usb", KERNEL=="sd?1",ATTRS{idProduct}=="685a"

oder über idVendor:

SUBSYSTEMS=="usb", KERNEL=="sd?1",ATTRS{idVendor}=="0ab4"

oder über eine Kombination aus beiden:

SUBSYSTEMS=="usb", KERNEL=="sd?1",ATTRS{idVendor}=="0ab4", ATTRS{idProduct}=="685a"

machen.

Ist das geschehen, kann man bestimmen, welche zusätzliche Gerätedatei das Gerät bekommen soll:

SUBSYSTEMS=="usb", KERNEL=="sd?1",ATTRS{serial}=="ABCDEF012345",SYMLINK+="backup"

Das Gerät steht dann künftig unter /dev/backup zur Verfügung.

Hinweis:

In den Standardregeln wird die Zuweisung für eine Gerätedatei oft mit dem Schlüssel NAME erzeugt. Dies verleitet möglicherweise dazu, in eigenen Regeln NAME="backup" zu schreiben. Laut der Manpage von udev ist aber insgesamt nur eine Zuweisung für ein Gerät über NAME vorgesehen. Im Zweifelsfall sollte deshalb der Schlüssel SYMLINK verwendet werden, da hier mehrere Zuweisungen pro Gerät möglich sind (deshalb auch der Operator +=). So wird ein Konflikt mit einer NAME-Zuweisung in einer Standardregel vermieden.

Mit der gleichen Methode wurde die Regel für das externe DVD-Laufwerk erstellt (drittes Beispiel der Einführung). Lediglich wurden zur näheren Bestimmung des Gerätes SUBSYSTEMS=="scsi" und das Attribut ATTRS{model} verwendet. Dies genügt zur eindeutigen Bestimmung.

# LG DVD-ROM
SUBSYSTEMS=="scsi", KERNEL=="sr?", ATTRS{model}=="DVD-ROM GDR8163B", SYMLINK+="dvd-rom-lg"

Abschließend muss die Datei im Verzeichnis /etc/udev/rules.d/ gespeichert werden, z.B. als 70-usb-storage-custom.rules. Ein paar Richtlinien, nach denen man die Zahl am Anfang aussuchen sollte, finden sich in der Datei /etc/udev/rules.d/README.

Neustart des udev-Systems

Ein Neustart von udev ist eigentlich nicht erforderlich, da udev beim Anschließen eines neuen Gerätes automatisch die Regeln im Verzeichnis /etc/udev/rules.d/ durchgeht.

Hier die unterschiedlichen Varianten zur Prüfung der Regeln vorstellen.

Das System prüft eine udev-Regel in /etc/udev/rules.d/ sofort beim Speichern der Datei und protokolliert mögliche Fehler in /var/log/syslog. Es empfiehlt sich deshalb, die Log-Datei in einem Fenster mit tail -n 10 -f /var/log/syslog offen zu halten. Selbst auskommentierte Zeilen werden hier auf Ihre Syntax geprüft, auch wenn sie nicht angewendet werden.

Je nach System kann ein Neustart dennoch sinnvoll sein, wenn man nicht sicher ist, dass udev die gespeicherten Regeln gleich einliest und auf Fehler überprüft.

Dazu verwendet man den Befehl:

sudo reload udev 

Wurden Regeln für fest eingebaute Geräte (z.B. PCI-Karten) festgelegt, muss udev zusätzlich dazu veranlasst werden, alle Geräte neu einzulesen. Dies geschieht mittels

sudo udevadm trigger 

Wurde die Regel für entfernbare Geräte erstellt, können diese einfach entfernt und wieder eingesteckt werden.

Funktionstest

Der Funktionstest ist recht einfach durchzuführen, dazu muss man einfach die USB-Festplatte abziehen und neu anstecken. Ist dann eine Gerätedatei /dev/backup erstellt worden, hat alles geklappt. Wenn nicht, dann ist an der udev-Regel etwas falsch, und man sollte sie korrigieren.

> HIER NOCH DIE TESTFUNKTIONEN VON UDEVADM EINFÜGEN. == Einbinden eines Datenträgers im Dateisystem

Über einen erstellten Symlink kann ein Datenträger wie gewohnt im Dateisystem eingebunden [1] werden. Für einen vernünftige Lösung bietet sich das Einbinden per /etc/fstab [4] an.

Automatischer Start eines Skripts

Man kann über udev ein Skript automatisch starten lassen, wenn ein Gerät erkannt wird. Hierzu werden der udev-Regel zwei weitere Punkte hinzugefügt:

SUBSYSTEMS=="usb",ACTION=="add",KERNEL=="sd?1",ATTRS{serial}=="ABCDEF012345",SYMLINK+="backup",RUN+="/usr/local/bin/backup"

Der Punkt ACTION=="add" sorgt dafür, dass die Regel nur zutrifft, wenn das Gerät neu angeschlossen wird. Anderenfalls würde das auszuführende Skript nach Beenden sofort automatisch erneut gestartet werden.

Der Punkt RUN+="/usr/local/bin/backup" ruft das Skript /usr/local/bin/backup auf. Dabei muss darauf geachtet werden, dass das Skript mit vollständiger Pfadangabe aufgerufen wird. Dem Punkt RUN kann immer nur ein einzelner Befehl (mit Parametern) übergeben werden. Allerdings lassen sich über mehrere RUN+="..."-Einträge mehrere Befehle hintereinander ausführen:

SUBSYSTEMS=="usb",ACTION=="add",KERNEL=="sd?1",ATTRS{serial}=="ABCDEF012345",SYMLINK+="backup",RUN+="/usr/bin/logger Starte Backup.", RUN+="/usr/local/bin/backup"

In obigem Beispiel wird vor Ausführung des Backup-Skripts die Zeile "Starte Backup." in das Systemlog geschrieben.

Das Skript /usr/local/bin/backup wird nun beim Anstecken der USB-Festplatte gestartet. Voraussetzung ist ein Header des Skripts mit einem gülten Shebang. Dabei muss es sich selbst um das korrekte Einbinden kümmern:

1
2
3
4
5
#!/bin/sh

mount /media/backup
backup.start
eject /media/backup

Nutzung in der grafischen Oberfläche

Beispiel 1

Adam hat zu wenig Festplattenspeicherplatz auf seinem PC. Er entschließt sich, eine externe USB-Festplatte zu kaufen, um damit seine Musiksammlung auszulagern. Er hört und verwaltet seine Musiksammlung mit Banshee und möchte dies auch unkompliziert weiterhin tun. Er entschließt sich, die externe Festplatte so zu integrieren, dass sie beim Anschließen sofort einsatzbereit ist und Banshee anfangen kann zu spielen. Ist die Festplatte nicht angeschlossen, ist die Musiksammlung in Banshee leer.

Folgende Schritte werden durchgeführt:

  1. Eine Regel für udev erstellen

  2. In fstab vier neue Einträge festlegen

Musiksammlung - Die udev-Regel erstellen

Zunächst wird mit einem Editor mit Root-Rechten eine neue Datei erstellt, z.B. /etc/udev/rules.d/50-usb-storage-custom.rules. Inhalt der Datei:

# USB Festplatte für Musik
SUBSYSTEMS=="usb", KERNEL=="sd?1", ATTRS{serial}=="ABCDEF012345", SYMLINK+="Adam-Music", RUN+="/bin/mount /media/Adam-Music", RUN+="/bin/mount /media/Adam-Music/Music", RUN+="/bin/mount /media/Adam-Music/.config/banshee", RUN+="/bin/mount /media/Adam-Music/.config/banshee-1"

Die Regel identifiziert zuerst die externe Festplatte anhand der Seriennummer und ordnet ihr eine Gerätedatei zu. Danach wird die Festplatte erst einmal allgemein eingebunden ("mounted"). Dann werden noch weitere Aktionen durchgeführt: Das "Mounten" des Ordners mit der großen Musiksammlung und das Einbinden der beiden Konfigurationsordner von Banshee, in denen unter anderem die Musikdatenbank gespeichert ist.

Musiksammlung - fstab anpassen

Damit die Kommandos wie z.B.

/bin/mount /media/Adam-Music/Music 

richtig ausgeführt werden können, müssen in die Datei /etc/fstab folgende Zeilen hinzugefügt werden:

# Adam-Music
/dev/Adam-Music /media/Adam-Music ext3 users,atime,noauto,rw,nodev,exec,nosuid 0 0
/media/Adam-Music/Music  /home/adam/Music  none  user,bind  0  0
/media/Adam-Music/.config/banshee  /home/adam/.config/banshee  none  users,bind  0  0
/media/Adam-Music/.config/banshee-1  /home/adam/.config/banshee-1  none  users,bind  0  0

Die Festplatte ist in diesem Fall mit ext3 formatiert.

Musiksammlung: Ein paar Hinweise

  • Auf der externen Festplatte existieren drei Ordner: Music, .config/banshee und .config/banshee-1. Der Inhalt der drei Ordner wurde anfangs von den gleichnamigen Ordnern aus dem Homeverzeichnis von Adam auf die externe Festplatte verschoben.

  • Die Mountpoints /media/Adam-Music, /home/adam/Music, /home/adam/.config/banshee und /home/adam/.config/banshee-1 müssen vor dem ersten Einbinden bspw. mit mkdir angelegt werden.

  • Sind in den Mountpoints vor dem Einhängen der Ordner von der externen Festplatte schon Dateien vorhanden, so werden sie beim Einbinden "überdeckt". Das heißt, sie sind nicht mehr erreichbar, wenn die externe Festplatte angeschlossen ist. Nach dem Aushängen sind die Daten wieder frei zugänglich. Es empfiehlt sich, die Mountpoints leer zu lassen.

  • Ist die externe Festplatte gerade einmal nicht angeschlossen und Banshee wird gestartet, ist die Musiksammlung von Banshee naturgemäß leer. Außerdem generiert Banshee automatisch Inhalte in die beiden Ordner /home/adam/.config/banshee und /home/adam/.config/banshee-1, sofern die Ordner leer sind. Dies kann ignoriert werden, da dies den Mountvorgang nicht stört (siehe vorherigen Punkt).

  • Die externe Festplatte sollte nur angeschlossen oder ausgehängt werden, wenn Banshee gänzlich (auch im Hintergrund) geschlossen ist, da es sonst zu Dateifehlern kommen kann.

  • Soll die Festplatte im laufenden Betrieb entfernt werden, muss das Aushängen über ein Terminal und mit Root-Rechten erfolgen.

  • Wenn die Festplatte schon beim Hochfahren von Ubuntu angeschlossen ist, ist die Musiksammlung schon automatisch eingehängt.

  • Wenn der PC heruntergefahren ist, kann die externe Festplatte problemlos entfernt werden.

Beispiel 2

Viele Nutzer haben neben Ubuntu auch noch eine Partition (hier /dev/sda1) mit Windows. Diese Partition wird unter Orte und im Nautilus ständig angezeigt, obwohl man sie gar nicht braucht.

Mit Hilfe der folgenden Regel kann die Partition leicht ausgeblendet werden.

KERNEL=="sda1", ENV{UDISKS_PRESENTATION_HIDE}="1"

Probleme

Probleme mit einigen Digitalkameras

Es kann sein, dass eine Kamera nicht als Massenspeichermedium erkannt wird, sondern nur über das Protokoll Gphoto2 🇬🇧 arbeitet. In diesem Fall erfolgt die Bearbeitung durch normale ("Userspace") Programme anstatt über einen Kernel-Treiber. Das Problem daran ist vor allem, dass die später erwähnten Kernel-Namen in diesem Fall nicht funktionieren, da die Kamera ja kein Block-Device ist.

Die Ausgabe von lsusb -v ist leer

Wenn mit lsusb das gewünschte Gerät angezeigt wird, die Ausgabe von lsusb -vs <BUS>:<DEVICE> aber leer bleibt, liegt das wahrscheinlich daran, dass das Gerät nicht eingehängt ist. Möglicherweise wurde das Gerät zwar bereits eingehängt, hat sich aber in den Ruhezustand verabschiedet. In diesem Fall empfiehlt es sich, das Gerät ab- und wieder anzustecken. Dadurch ändert sich aber die Device-Nummer, sodass lsusb erneut ausgeführt und die neue Nummer zur Abfrage durch lsusb -vs <BUS><DEVICE> verwendet werden muss.

Diese Revision wurde am 6. März 2013 17:37 von BillMaier erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Hardware, System