主机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等操作拦截后直接转发到虚拟系统,导致主系统无法检测到蓝牙设备,后续有待考证,也希望有这方面研究的网友能一起探讨。