Monday, July 14, 2008

KVM guest 连接 USB 设备临时解决办法

默认的 kvm guest 启动并未模拟 usb, 模拟 usb,需要启动时加上 -usb 参数,qemu 为 guest模拟一个 8 port 的 Intel SB82371 UHCI USB 控制器。

kvm -hda /path/to/your/kvm/image/hda.qcow2

在使用 USB 之前,需要找出 USB 的设备 ID,如:

$lsusb
Bus 007 Device 002: ID 05ac:8502 Apple Computer, Inc.

输出中的 05ac:8502,分别为 <VendorID>:<ProductID>

启动 guest 系统后, CTRL + ALT + 2 转到 Monitor ,手工加载 usb 设备(用上面的输出替换):

#usb_add host:<VendorID>:<ProductID>
Could not open /proc/bus/usb/devices

回到 host 系统发现 /proc/bus/usb/devices 文件不存在,google 后发现相关的 Ubuntu BUG report。Ubuntu 等发行版早将 /proc/bus/usb/devices deprecated 一年之久,hardy 已经完全转向 /dev/bus/usb/devices,相比较 proc 获得有更灵活的权限控制、安全性更高。Ubuntu bug report 中给出了 workaround。

编辑 '/etc/init.d/mountdevsubfs.sh' 取消 40 行后的相应注视:

 # 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

执行这个脚本。

$ sudo /etc/init.d/mountdevsubfs.sh start

用此法成功加在招行 USB key,可以进入专业版,实际实验查帐等操作正常,转帐验证时候失败。

No comments:

Post a Comment