有些时候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主机会不知所措吧。

获取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>

  

最新文章

  1. 模块度与Louvain社区发现算法
  2. 基础总结篇之一:Activity生命周期
  3. MVC字符串处理及MVC @RenderSection小计
  4. muduo库安装
  5. HDU-1542 Atlantis(离散化+扫描线)
  6. This is a sandbox of markdown
  7. S​Q​L​ ​S​e​r​v​e​r​中​​的​P​W​D​E​N​C​R​Y​P​T​与​P​W​D​C​O​M​P​A​R​E​函​数
  8. 服务器编程入门(2)IP协议详解
  9. 大并发连接的oracle在Linux下内存不足的问题的分析(转)
  10. SpringMVC是什么?
  11. 在前端页面对easyui中的datagrid与jqgrid加载后的数据进行操作
  12. 开始食用grpc(之一)
  13. ECMAScript 6 新特性-set。const
  14. hadoop-1.0.1根目录下的jar包
  15. CAN control
  16. 【BZOJ2594】【WC2006】水管局长
  17. Linux 建立 TCP 连接的超时时间分析(解惑)
  18. SQL语句中LEFT JOIN、JOIN、INNER JOIN、RIGHT JOIN的区别?
  19. CentOS7 中安装 MySQL
  20. oozie错误:javax.servlet.jsp.el.ELException: variable [***] cannot be resolved

热门文章

  1. java集合之HashMap源码解析
  2. 黄聪:VS2017调试时提示“运行时无法计算表达式的值”
  3. 【VSCode】Windows下VSCode编译调试c/c++【更新】
  4. Windows下利用TortoiseSVN搭建本地SVN服务器
  5. gcc编译工具生成动态库和静态库之一----介绍
  6. 【IIS错误】未能加载文件或程序集“AAAAA”或它的某一个依赖项。试图加载格式不正确的程序。
  7. Ansible基础入门
  8. 查看设备uuid的命令-blkid
  9. maven使用笔记--在父pom中声明过的jar可以被继承,使子项目不用写版本号由父pom控制
  10. arcgis for android 读取shp文件中文乱码解决方法