Defect #46

usb-storage kernel-module von Linux blockiert die Verwendung von USB-devices bei VMWare und WinXX

Added by dschulz almost 6 years ago. Updated over 5 years ago.

Status:Erledigt Start date:
Priority:Normal Due date:
Assignee:dsuchod % Done:

0%

Category:konzept
Target version:-
Resolution:worksforme

Description

Verwendet man unter SuSE-Linux 10.0 VMWare (egal ob player oder Vollversion) mit einem Windows-Image (geübt mit: 98/2000/XP) dann kann man auf einen USB-Stick oder ein USB-DVD oder eine USB-Festplatte nur genau einmal direkt nach dem booten zugreifen, wenn es frisch eingestöpselt wird. Hat man aber unter Linux schon einmal auf ein solches USB-device zugegriffen, dann kommt die Meldung, dass der Zugriff blockiert ist und man das entsprechende kernel-module von Hand entladen soll. Für den Stick reicht es als root 'rmmod usb-storage' auszuführen und man hat dann nach einem erneuten einstöpseln wieder Zugriff auf den Stick. Das kommt am häufigsten vor. Bei einem USB-DVD heisst das module dann etwas anders, der Mechanismus ist aber der gleiche.

History

Updated by dsuchod almost 6 years ago

  • Status changed from Neu to Erledigt
  • Resolution set to worksforme

Das Problem sollte jetzt gefixt sein. Wenn vmware=yes in der Client-Konfiguration auftaucht, wird ein /etc/udev/rules.d/01-udev-vm.rules generiert, welches zum Testen, ob VMware läuft auf var/X11R6/bin/vm-udev zugreift. Letzteres wird ebenfalls nur bei vmware=yes angelegt.

#!/bin/sh
# /var/X11R6/bin/vm-udev Script for blocking linux from handling usb devices
# during vmware sessions. If you like to remove certain modules add them
# to the list below - Dirk von Suchodoletz, <dirk@goe.net>
RET=1
ps aux |grep -i vmware| grep -v "grep" &>/dev/null && {
  RET=0
  rmmod usb-storage & >/dev/null
}
exit $RET
}

Für die ältere 9.3 gibts eine andere Lösung, die dann /etc/hotplug.d/usb/50-...
patcht.

Updated by dsuchod almost 6 years ago

Das Skript kann man auch noch so erweitern, dass auch andere Devices zur
Sicherheit vorher nochmal entladen werden: Bluetooth, Headset, ... Bei
schon gesteckten Geräten klappt das Konzept dann aber nicht. Erstmal muss irgendein USB-Stack das Event mitkriegen, reines Polling zwischendurch reicht wohl nicht ...

Updated by anonymous almost 6 years ago

Einige Änderungen:
/var/X11R6/bin/vm-udev

STATE=1
ps aux |grep -i vmware| grep -v "grep" &>/dev/null && STATE=0
echo "$1 $ACTION $STATE" >> /tmp/blub
[ x$ACTION = xremove ] && { [ $STATE = 0 ] && /sbin/rmmod usb-storage &>/dev/null; }
exit $STATE

und in /etc/udev/rules.d/01-udev-vm.rules
SUBSYSTEM=="usb", ACTION=="add", PROGRAM="/var/X11R6/bin/vm-udev", OPTIONS="ignore_device" 
SUBSYSTEM=="usb", ACTION=="remove", PROGRAM="/var/X11R6/bin/vm-udev" 

Also available in: Atom PDF