Comment 27 for bug 156085

Revision history for this message
TJ (tj) wrote :

Emmet is, unfortunately, correct. I had forgotten to re-disable the section in /etc/init.d/mountdevsubfs.sh too.

The devices file itself is created when a usbfs mount is created, using:

$ mkdir .usbfs
$ sudo mount -n -t usbfs -obusmode=0700,devmode=0600,listmode=0644 usbfs .usbfs
$ ls .usbfs
001 002 003 004 005 devices
$ cat devices
$ cat .usbfs/devices

T: Bus=05 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 8
B: Alloc= 0/800 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 2.06
S: Manufacturer=Linux 2.6.22-14-generic ehci_hcd
...

Unless there is some over-arching reason *not* to use usbfs then the best solution is, I think, to amend /etc/init.d/mountdevsubfs.sh so instead of:

 #
 # Magic to make /proc/bus/usb work
 #
 #mkdir -p /dev/bus/usb/.usbfs
 #domount usbfs "" /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
 #ln -s .usbfs/devices /dev/bus/usb/devices
 #mount --rbind /dev/bus/usb /proc/bus/usb

we have

 #
 # Magic to give virtual machines (KVM/QEMU, VirtualBox, VMWare, etc) access to host USB devices
 #
 mkdir -p /dev/bus/usb/.usbfs
 domount usbfs "" /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
 ln -s .usbfs/devices /dev/bus/usb/devices

This could be added as an additional stanza (which takes the solution back to amending the "sysvinit" package).

The alternative is to add a complete new set of scripts and links, either:

/etc/rc.S/S12mountdevusbfs -> /etc/init.d/mountdevusbfs.sh

or

/etc/rc2.d/S20mountdevusbfs -> /etc/init.d/mountdevusbfs.sh

That, coupled with the alteration to KVM/QEMU would solve the issue.

Comments please?