日期:2014-05-16  浏览次数:20863 次

linux kvm 虚拟系统中蓝牙设备的添加

        主机OS为timesys,装上KVM虚拟机,在Virtual Machine Manager中安装同一版本系统后,虚拟系统能正常启动运行,但发现虚拟系统中无法找到蓝牙等设备。一番调查之后,发现原来需要手动添加设置才行。

首先介绍下本机的软硬件信息。

详细硬件配置如下:

     CPU: intel atom

     Chipset:intel eg20t

     Memory: 2G

     Hard disk: Toshiba SSD(30G)

     Bluetooth/WIFI: intel Advanced-N 6230

详细软件环境如下:

     Host OS: Timesys(基于Fedora 14的针对intel atom+eg20t定制版)

     Virtual OS: Timesys(同上)

   

蓝牙设备添加流程:

1: terminal 中超级用户身份执行lsusb 指令查看所有USB设备信息,如下图:



2:本机中的蓝牙模块为第二个设备: Bus 007 Device 002: ID 8086:0189 Intel Corp。007代表总线号,002表示设备号,8086为设备Vendor ID号,0189为Product ID 号。



3: 运行Virtual Machine Manager软件。双击已经安装好的虚拟系统(不要启动系统)。


4:点击第二个图标切换至设备信息详细模式(graphical console ---> hardware details),点击Add hardware。


5:弹出窗口中左侧设备分类栏中选择USB Host Device,然后在右侧显示的详细设备中根据步骤2记录的总线号和设备号找到对应的设备,选中,点击Finish。即可看到该设备 

    已成功添加进虚拟系统中了。


6:接下来就是添加虚拟系统的配置信息了,terminal 中超级用户运行:virsh edit xxx (xxx 为新建虚拟系统时定义的系统名称,本例中为my_virtual)。

7:在打开的配置文件中添加如下信息:

...(省略)...
    <devices>
    ...(省略)...
    <hostdev mode='subsystem' type='usb'>
      <source>
        <vendor id='0x8086'/>
        <product id='0x0189'/>
      </source>
    </hostdev>
  </devices>
...(省略)...
7:启动虚拟系统后,蓝牙设备就已经成功映射到虚拟系统中,经实际测试,与其他蓝牙设备通讯没有问题。


新的问题: 蓝牙设备添加进虚拟系统之后,一个新的问题出现了,虚拟系统启动之后。 主系统中蓝牙设备就消失了,关掉虚拟系统后,蓝牙设备在主系统中重新可见了。个人猜测可能是KVM库在内核运行时,对于蓝牙设备的I/O等操作拦截后直接转发到虚拟系统,导致主系统无法检测到蓝牙设备,后续有待考证,也希望有这方面研究的网友希望能赐教,一起探讨。