Usbstorage (oder allg USB): Freigabe entfernte Geräte

Hast Du Probleme mit Hardware, die durch die anderen Foren nicht abgedeckt werden? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
Benutzeravatar
ahasver
Beiträge: 11
Registriert: 12.02.2004 21:50:24

Usbstorage (oder allg USB): Freigabe entfernte Geräte

Beitrag von ahasver » 28.08.2004 16:47:17

Hallo,

wie bekomme ich den Kernel dazu, z.B. scsi0 zur Verwendung für neue Geräte freizugeben/zu "entladen" bzw. usb_storage beizubringen, daß es ein bestimmtes Gerät phyisch einfach nicht mehr gibt?
Wenn ich z.B. USB-Sticks unmounte und dann entferne, bleibt das Gerät z.B. als SCSI0 am Kernel registriert und Neuenameldungen erhalten dann scsi1/sda2 usw.
Gibt's da vielleicht mit so eine Art sauberer "Clean"- oder "Reset"-Funktion?
Und ich würde da gerne beim abschmieren der USB2.0-Platte (über dessen Chipset hier schon viel gejammert wurde) gerne die hängenden Kopier-Prozeß-Zombies kontrolliert nebenwirkungsfrei weg-bekommen, Gerät "busy" verhindert dann auch ein sauberes Herunterfahren.

Benutzeravatar
jack herer
Beiträge: 94
Registriert: 28.07.2003 19:48:17

Beitrag von jack herer » 28.08.2004 20:14:10

Ich weiß zwar nicht warum Du die Deviceeinträge zurücksetzen möchtest, aber wenn es Dir nur darum geht bestimmte Aktionen beim an- und abmelden von usb-Geräten durchzuführen, sieh Dir mal udev an.
Damit kannst Du Scripte ausführen, wenn ein Gerät angesteckt oder entfernt wird. Die Geräte werden von udev z.B. über die ID oder den Herstellernamen eindeutig erkannt.
Damit kannst Du dann auch ein usb-Gerät immer an die gleiche Stelle im Dateisystem mounten und umount ausführen sobald das Gerät entfernt wird.
Evtl. hilft Dir das ja weiter...

Benutzeravatar
ahasver
Beiträge: 11
Registriert: 12.02.2004 21:50:24

Beitrag von ahasver » 29.08.2004 12:48:34

Eventuell hilft mir so ein Script, nur ist für mich noch Woodo, ob, wann und wie denn bei USB-Speichermedien unter Linux die entsprechenden Unplug-Events generiert werden (sollten), wenn das eben, wie ich vermute, nicht kommt, nützt mir das nix. Beim Unmounten jedenfalls passiert da (zu Recht) noch nichts. Unter Windows wird beim Freigeben eines USB-Sticks auch die Spannung für den Stick abgeschaltet, so daß erkennbar die Kommunikation beendet ist, also für's System derUnplug erflolgt ist. Wie ich sowas unter Linux erreiche, wüßte ich gern.

Und wenn ein unbehandelter Fehler bei irgendeinem Gerät auftritt und das Gerät, wie im Falle der USB-Festplatte bei Synchronisations-Problemen während eines Datentransfers nicht mehr reagiert, bleibt das Gerät busy bis zum brutalen Neustart des Rechners. Der laufende Kopierprozess läßt sich jedenfalls nicht mehr killen. Das ist dann aber ein ähnliches Problem, wie wenn einem ein NFS-Mount während ner Datenübertragung verloren geht, also nicht so sehr USB-spezifisch....

Benutzeravatar
jack herer
Beiträge: 94
Registriert: 28.07.2003 19:48:17

Beitrag von jack herer » 29.08.2004 18:48:17

Welche Events meinst Du? Der Kernel sendet Nachrichten wenn ein Gerät angesteckt oder abgezogen wird. Udev kann Dir dann z.B. dabei helfen das Gerät immer an die gleiche Stelle im Dateisystem zu mounten.
Viel mehr als mounten und unmounten macht man zu diesem Zeitpunkt doch eh nicht.
Normalerweise reicht es wenn Du das Gerät unmountest, wartest bis alle Daten geschrieben sind und dann kannst Du es sicher entfernen.
Udev dabei einzusetzen ist wohl nur sinnvoll wenn Du das Gerät mit der Option sync mountest. Dann werden die Daten sofort, ohne den Umweg über den cache geschrieben und Du kannst das Gerät jederzeit entfernen. Das verlangsamt das Schreiben allerdings.
Und was willst Du noch machen wenn während des Schreibens ein Fehler auftritt? Dann solltest Du das Gerät doch auch entfernen können, das Schreiben ging ja eh schief ;-)

Antworten