kvm-74 jest przyjemne

Wraz z wydaniem wersji 74 w kvm pojawiła się przydatna funkcjonalność: automatyczne podłączanie i odłączanie urządzeń USB. Zbędne jest wywoływanie usb_add z monitora, zamiast tego można:

qemu [... opcje ...] -usb -usbdevice 'host:0421:*'

co spowoduje, że emulator będzie periodycznie skanował urządzenia USB podłączane do gospodarza w poszukiwaniu urządzeń Nokia (idVendor = 0x0421) i jeśli takie znajdzie, "podłączy" je do gościa. Miłe.

Jeśli uruchamia się kvm/qemu z prawami nie-roota, tylko np. użytkownika będącego w grupie plugdev, to przydaje się taka regułka udev:

SUBSYSTEM=="usb", ACTION=="add", ATTR{dev}=="?*", GROUP="plugdev", \
 MODE="0660", PROGRAM="/bin/ln -sf /proc/bus/usb/devices /dev/bus/usb/devices"

I jeszcze mała łatka na kvm-74, która sprawia, że kvm, zamiast z /proc/bus/usb, korzysta z /dev/bus/usb (bo tam udev umie nadawać odpowiednie uprawnienia):

diff -ur a/qemu/usb-linux.c b/qemu/usb-linux.c
--- a/qemu/usb-linux.c  2008-08-27 10:53:37.000000000 +0200
+++ b/qemu/usb-linux.c  2008-09-08 12:33:03.000000000 +0200
@@ -65,7 +65,7 @@
 #define dprintf(...)
 #endif

-#define USBDEVFS_PATH "/proc/bus/usb"
+#define USBDEVFS_PATH "/dev/bus/usb"
 #define PRODUCT_NAME_SZ 32
 #define MAX_ENDPOINTS 16

Voila. Miłego wirtualizowania.