KVM使用USB设备的方法

按:虚拟了一个供KVM使用的Windows,但是一直不知道guest OS如何使用识别使用USB设备,煞是郁闷。昨天终于找到方法,不胜欢喜。重要的实践意义在于:我的工商银行U盾可以在虚拟机里用了,我不再依赖于物理的Windows来处理网银了。本页短链接:http://is.gd/aOjRo

要在guest OS中使用USB设备,简单地说,就是在kvm启动命令行加入参数: 

-usb -usbdevice host:vid:pid

就行了,其中vidvendor id, pid是指product id.

比如我的U盘,vid0e8dpid0002,那么启动时加入的参数就是:

-usb -usbdevice host:0e8d:0002

附上完整的启动命令行:

sudo kvm -m 384 -hda $osimg -localtime -net nic -net user -boot c -smp 2 -usb -usbdevice host:0e8d:0002 -name for_work


找到USB设备的vidpid是使用USB设备的关键,每一个设备的vid:pid都是唯一的,以下是查找方法:

USB设备未连上笔记本时,执行 lsusb,连上后检测到USB设备后,再执行一次lsusb,对比前后信息,找出变化的记录。如我的:

插入前执行lsusb输出:

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 04f3:0230 Elan Microelectronics Corp.
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

插入后执行lsusb输出:

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 006: ID 0e8d:0002 MediaTek Inc.
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 04f3:0230 Elan Microelectronics Corp.
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub


对比前后的输出内容,注意变化,上面加粗的那行是新检测到USB设备我的U盘的信息,其中,vid:pid=0e8d:0002

注意:

  1. 一定要用sudo来执行命令,否则USB设备无法加载。

  2. USB设备要在启动guest OS之前就连上机器,否则无法识别。

  3. 类似于声卡,guest OS用了之后,host OS就不能再使用这个设备了。

  4. 每个USB设备理论上都唯一的vid:pid值。

你可能感兴趣的:(Linux,kvm)