Da bleibt dir nur die Harte schiene, dieser FAQ ist noch Fertig aber genau das was dein Problem Betrifft.
Benötigte RPM Pakete : udev(SuSE & Mandrake), hwinfo(SuSE), coreutils
Benötigte Kernel-Module : ub, usb_storage, scsi_mod, sr_mod, sd_mod, sg
Je nach USB Mainboard Chipsatz : (ehci|ohci|uhci)-hcd, ( Siehe man lspci )
Kurze-Anmerkung:
Einige werden jetzt sagen das kann doch Yast oder SuSEplugger, schön und gut - auf meinem SuSE System gibt es kein Yast und erst recht keine SuSEplugger Nach 8 jahren SuSE Linux braucht man Yast nicht unbedingt und subfs fliegt bei mir sofort runter, Kommentare über ein warum erspaare ich euch hier. Damit wird der FAQ auch für Leute Interessant bei denen Yast/Plugger bei der Konfiguration versagt
Und los gehts.
1) Gerät(Festplatte) Aufstellen und einschalten:
Wichtig: Steckt den USB Stecker des Gerätes aber noch NICHT an den Rechner!
2) Vorbereitung:
Öffnet die Konsole und wechselt in das Verzeichnis "/sys/block" und gebt "dir" ein. Hier werden die vom Kernel erkannten Blockorientierten Hardware Geräte-Schnittstellen angezeigt. Steckt nun die externe Festplatte an den USB Anschluß eures Rechners, wartet einige Sekunden gebt erneut "dir" ein. Das NEU hinzugekommene Verzeichnis ist die externe USB-Platte. Damit wir alle benötigten Informationen der neuen Hardware Komponente erhalten verwenden wir das im Paket udev enthaltene Program "udevinfo". Mit "udevinfo -h" bekommt man die Hilfe angezeigt. Wir wollen alles über das Gerät erfahren und geben deshalb in der Konsole
Code:
udevinfo -a -p /sys/block/<ordner>
ein. Last diese Ausgabe bitte stehen und öffnet eine neue Konsole wir benötigen diese Informationen noch zu einem späteren Zeitpunkt. Die jenigen von euch die kein udev zu verfügung haben können diese Informationen auch als root mit
Code:
lsusb -v > lsusb.log
ziehen und in eine Log Schreiben.
3) Block-Devices:
In der neu geöffneten Konsole sehen wir erst einmal nach ob die zum einhängen benötigten Blockorientierte Geräte vorhanden sind.
Code:
// /dev/<block-device><*> ist gleich /sys/block/<device><partition>
// Beispiel:
ls -l /dev/uba*
Wenn keine Block-Geräte vorhanden sind müssen wir sie anlegen! Bei SuSE Distributions werden diese Devices mit (hwscan/udev/device-mapper) beim Booten angelegt! /dev/ub* ist bei mir MAJOR 180 und MINOR 0 bis 20 weitere Informationen zu mknod findet ihr unter "man mknod" oder "/usr/src/<kernel-source-dir>/Documentation/devices.txt"
An welchen Punkt der Kernel unser Gerät eingehangen hat ist uns nun bekannt.
4) udev in Verbindung mit coldplug/hotplug
Ein Problem bei usb Schnittstellen liegt dabei das euer System nicht vorraus bestimmen kann an welchen BUS die Harware Schnittstelle eingehangen wird, die Information wann und wo sich die Schnittstelle befindet wird vom eingehängten Gerät zur Verfügung gestellt. Hier kommt Hotplug ins Spiel. Dabei gibt es für jedes Gerät oder Schnittstelle einen Event, der vom zugehörigen Agenten verarbeitet wird. Geräteevents werden auf zwei Arten ausgelöst. Einmal beim Kernel, wenn die Verbindung zu einem Gerät hergestellt wird oder von Coldplug welches einen Listener auf die Busstellen erzeugt an dem keine Schnittstelle gefunden wurde. Einen guten FAQ zu diesem Thema findet in der SuSE Support Datenbank . Daraus ergibt sich ein Problem für User die kein subfs verwenden. Die Device Einträge in der /etc/fstab würden sich je nach Reihenfolge der Eingehängten Geräte Ändern. Um dies zu umgehen wird udev verwendet. udev sucht beim Initialisieren der Schnitstelle an Hand der Serien Nummer und Vendor ID den passenden Eintrag und setzt eine Verknüpfung im Verzeichnis /dev die Definitionen dieser Verknüpfungen findet ihr in /etc/udev/rules.d/50-udev.rules. Damit die Konfiguration für euch besser ersichtlich wird erstellen wir unter Punkt 5 eine Step bei Step Konfiguration an Hand dieses Beispiels, einer USB-2 Festplatte Western Digital. Mein ScSI-System besitzt außer dem Mainbord USB Anschluß noch eine ALI-PCI-USB Schnittstellenkarte. Ich verwende keine initrd und habe bis auf NVidia und Sound alle wichtigen Hardware Module im Kernel Image (Kernel-2.6.11.6) fest eingebunden. Um nicht zu sehr zu verwirren werde ich die Info auf das Nötigste beschränken und auf die entsprechenden Links der Development/FAQ Seiten verweisen.
5) Konfiguration von udev
In der Konsole mit der Ausgabe von udevinfo -a -p /sys/block/<ordner> werdet ihr bestimmt schon eure Hardware Komponente entdeckt haben. Hier gibt es vier wichtige Angaben ( BUS, serial, idVendor, idProduct ). Die Werte dieser Ausgabe benötigen wir zur Konfiguration. Siehe auch "man udev" oder http://linux-hotplug.sourceforge.net/
Code:
BUS : gibt den Bustype an der von Hotplug gesucht wird!
serial : die Serien Nummer des Gerätes.
idVendor : Hersteller Id
idProduct : Produkt Id
Somit stehen uns folgende Konfigurations Parameter zur verfügung.
Code:
BUS="usb" : Bustype
PROGRAM : Anwendung zum einhängen ( siehe ls /sbin/udev.* und "man udev" )
ID : ACHTUNG: Nur angeben wenn sich das Gerät immer an der gleichen Steckverbindung befindet! z.B. Scanner/Modem
SYSFS{serial} : Serien Nummer
SYSFS{idProduct} : Produkt ID
SYSFS{idVendor} : Hersteller ID
NAME="%k" : die von sysfs erzeugte Kernel device ( /sys/block/<device><partition> )
SYMLINK : Hier geben wir an mit welcher Symbolischer Name erzeugt werden soll. Dies ist auch gleichzeitig der Device-Name in der /etc/fstab
Mein Ausgabeabschnitt von "udevinfo -a -p /sys/block/ubb"
Code:
looking at the device chain at '/sys/devices/pci0000:00/0000:00:10.3/usb2/2-4':
BUS="usb"
ID="2-4"
SYSFS{bConfigurationValue}="1"
SYSFS{bDeviceClass}="00"
SYSFS{bDeviceProtocol}="00"
SYSFS{bDeviceSubClass}="00"
SYSFS{bMaxPower}=" 0mA"
SYSFS{bNumConfigurations}="1"
SYSFS{bNumInterfaces}=" 1"
SYSFS{bcdDevice}="0412"
SYSFS{bmAttributes}="c0"
SYSFS{detach_state}="0"
SYSFS{devnum}="3"
SYSFS{idProduct}="0402"
SYSFS{idVendor}="1058"
SYSFS{manufacturer}="Western Digital"
SYSFS{maxchild}="0"
SYSFS{product}="External HDD"
SYSFS{serial}="5743414C3933343335323037"
SYSFS{speed}="480"
SYSFS{version}=" 2.00"
Ergibt bei mir unter SuSE in der 50-udev.rules diesen einzeiligen Eintrag.
Code:
BUS="usb", PROGRAM="/sbin/udev.get_persistent_device_name.sh", ID="2-4", SYSFS{serial}="5743414C3933343335323037", SYSFS{idProduct}="0402", SYSFS{idVendor}="1058", NAME="%k", SYMLINK="western"
Beim anschließen des Gerätes wird unter /dev ein Symbolischer Link mit dem namen "western" angelegt. Somit kann jetzt in der /etc/fstab folgender Eintrag erzeugt werden. ( siehe auch "man fstab" oder "/usr/src/<kernel-source-dir>/Documentation/filesystems/vfat.txt" )
Code:
/dev/western /media/usb-hdd vfat rw,gid=6,fmask=0133,noauto,user,noexec,iocharset=utf8 0 0
Mit "ls -l /dev/western" kann man Testweise prüfen an welche Device die Sympbolische Verknüpfung hängt. Unter SuSE muß hwscan im Runlevel Aktiviert sein (/sbin/chkconfig -l hwscan). Wenn dies nicht der Fall ist gebt in der Konsole als root /sbin/chkconfig --add hwscan ein. (siehe auch /sbin/chkconfig --list oder "man chkconfig") Wenn die Einträge noch nicht Vorhanden sein sollten müssen unter /etc/init.d die entsprechenden Dienste neu gestartet werden. Für nicht Linux versierte wenn die Dienste aktiviert sind, ein "rccoldplug restart" oder neu Booten tut es auch
mfg undefined
USB-Links:
http://www.linux-usb.org
http://portal.suse.com/sdb/de/
http://usb.in.tum.de/linux-usb/
http://it.linux-usb.org
http://linux-usb.sourceforge.net
http://www.qbik.ch/usb/devices/
Lesezeichen