2010年(1)
分类: LINUX
2010-03-19 14:19:24
按:虚拟了一个供KVM使用的Windows,但是一直不知道guest OS如何使用识别使用USB设备,煞是郁闷。昨天终于找到方法,不胜欢喜。重要的实践意义在于:我的工商银行U盾可以在虚拟机里用了,我不再依赖于物理的Windows来处理网银了。本页短链接:
要在guest OS中使用USB设备,简单地说,就是在kvm启动命令行加入参数:
-usb -usbdevice host:vid:pid |
就行了,其中vid指vendor id, pid是指product id.
比如我的U盘,vid是0e8d,pid是0002,那么启动时加入的参数就是:
-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设备的vid和pid是使用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
注意:
一定要用sudo来执行命令,否则USB设备无法加载(出现Permission denied的报错)。
USB设备要在启动guest OS之前就连上机器,否则无法识别。
类似于声卡,guest OS用了之后,host OS就不能再使用这个设备了。
每个USB设备理论上都唯一的vid:pid值。
注:昨天看过本站另一篇帖子:但这个帖子里有一些和我情况不一样的地方,详见该帖第5楼。