有些时候KVM客户机还是要使用USB设备,比如USB密钥等
KVM命令行参数
-usb 打开usb驱动程序,启动客户机usb支持
-usbdevice devname 为客户机增加usb设备,devname有多种形式,详见man kvm,这里只涉及一种形式host:vendor_id:product_id,也就是-usbdevce vendor_id:product_id
获取USB设备参数
将usb设备插入主机之前
$lsusb > usb.old
usb设备插入主机之后
$lsusb > usb.new
然后
vimdiff usb.old usb.new
找到新增加的那一行,类似下面这行
Bus 002 Device 004: ID 13fd:1040 Initio Corporation
ID后面的两个字段分别是vendor_id和product_id
映射usb设备
客户机命令行添加这两个参数
sudo kvm -usb -usbdevice host:13fd:1040 …
这样客户机就可以看到映射的USB设备了
小问题
把移动硬盘映射到客户机做测试,虚拟客户机竟然无法启动了,从远程vnc看一直停留在Booting from Hard Disk…,搜索了下下也无结果,后来灵光一闪,是不是因为移动硬盘成了启动磁盘?果然如此,修改引导参数如下
-boot order=c,menu=on
这里增加了menu=on,这样启动的时候按F12可以选择从哪个驱动器启动,重新启动,果然看到移动硬盘成了第一个启动设备,选择本地硬盘正常启动系统,从客户机里也可以看到移动硬盘。
据了解,现在KVM还没有命令行参数可以设置从第二块硬盘启动,也有人在提这个事情,建议order=e从第二块硬盘启动,依次类推。
update:
参数-usbdevice devname映射普通的USB设备有两种格式,devname可以指定为
host:bus.addr
host:vendor_id:product_id
上面-usbdevice host:13fd:1040指定的是host:vendor_id:product_id这种格式,对于例子中显示的USB设备,也可以以host:bus.addr格式设定参数
host:2.4
其中2为总线号,4为设备在总线上的地址Bus 002 Device 004,但是使用host:bus.addr这种格式有一个缺点,如果USB设备换一个插口,其总线和设备号会发生变化,而host:vendor_id:product_id这种格式则不受影响,即便客户机换到另一台主机上跑也是一样。
update again(09/19/2012):
KVM主机上插了两个同类型的usb设备,这个两个usb设备的verdor_id和product_id竟然完全一样,那只能通过host:bus.addr这种方式为客户机指定usb设备了,不然kvm主机会不知所措吧。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | 获取USB设备参数 将usb设备插入主机之前 $lsusb > usb.old usb设备插入主机之后 $lsusb > usb. new 然后 vimdiff usb.old usb. new 找到新增加的那一行,类似下面这行 Bus 002 Device 004: ID 13fd:1040 Initio Corporation ID后面的两个字段分别是vendor_id和product_id 宿主机上新建usb_device.xml usb_device.xml内容如下 < hostdev mode= 'subsystem' type= 'usb' managed= 'yes' > < source> < vendor id= '0x13fd' /> < product id= '0x1040' /> < /source> < /hostdev> 最后一步绑定 [root@node-16 ~]# virsh attach-device 虚拟机名字 usb_device.xml Device attached successfully 成功绑定 可以查看配置文件: virsh dumpxml 虚拟机名字,存在下面一段: < hostdev mode= 'subsystem' type= 'usb' managed= 'yes' > < source> < vendor id= '0x13fd' /> < product id= '0x1040' /> < /source> < alias name= 'hostdev0' /> < /hostdev> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
2017-11-06 高Cpu占用的线程进程
2015-11-06 openStack 瓶颈测试
2015-11-06 2015/11/06 社保查询系统持续 挂机ing
2015-11-06 openStack 性能开测
2013-11-06 C链表
2013-11-06 C投票系统
2013-11-06 文件的定位与出错检查