使用ESXi时,我们有时会直通网卡或者显卡给虚拟机使用,让虚拟机独占该物理设备,减少虚拟化造成的性能损耗,相关教程网上也比较多。今天我们来尝试下直通USB键鼠,这样虚拟的桌面系统(Windows,Linux,macOS等)就可以配合直通显卡接显示器以后直接当一台物理机使用了。
1. 首先要查询USB键鼠的VID和PID,在windows,macOS系统上插上设备查询或者插在ESXi主机上利用lsusb查询都可以。
查询设备pid和vid
图中是vid在前,pid在后。Cypress这个是我的Filco键盘,Dell这个就是个鼠标。
2. 通过ESXi网页终端来编辑虚拟机的高级设置或者ssh到ESXi修改虚拟机的vmx文件,加入允许USB HID设备开关和具体直通的USB设备id。
编辑设置->虚拟机选项->高级->编辑配置。
编辑配置
添加如下参数,vid在前,pid在后。确定,保存。
添加参数
3. ssh访问ESXi,并使用vi修改/etc/vmware/config, 加入上面添加的要直通的设备ID。
添加直通USB设备ID
4. 如上设置后下次ESXi重启时VMkernel还会获取设备的控制权,我们需要到ESXi启动引导中禁用掉VMkernel对上述设备获取控制权。
ssh到ESXi里,使用vi修改/bootbank/boot.cfg, 在启动参数后面加上CONFIG./USB/quirks=0x04b4:0x120d::0xffff:UQ_KBD_IGNORE:0x413c:0x301a::0xffff:UQ_KBD_IGNORE
(顺序为vid:pid::0xfff)
修改ESXi启动引导参数
保存后重启ESXi,然后我们就可以编辑虚拟机设置来添加USB键鼠设备了。
5. 添加其它设备,USB设备,自动会同时创建一个USB控制器,键鼠用USB2.0即可。
添加USB设备
6. 保存后启动该虚拟机系统,如果直通了显卡并外接显示器,那么就可以直接看着显示器里该系统启动,并且可以使用USB键鼠来操作了。
在虚拟机中lsusb查看直通的USB键鼠
以上操作步骤参考了troubleshooting-device-passthrough-with-vmware-workstation-and-vmware-fusion, how-to-passthrough-usb-keyboard-mouse-hid-and-ccid-devices-to-vm-in-esxi 和 passthrough-usb-devices-from-esxi-to-vm
另外,此方法并非官方推荐的做法,根据 https://kb.vmware.com/s/article/1021345,官方更加建议使用一个PCI插槽的USB controller (上面有USB 接口), 把整个controller设备直通给VM ,然后让虚拟机系统来识别连接在上面的USB设备。适用于常见的USB设备如键鼠,耳麦,智能卡读卡器,U盾等。除了主机板载的USB controller之外,类似的PCI USB controller如下面的型号都可以使用:
NEC chipset PCI-E usb3 controller(Chipset: NEC d720200, model:MC210)
Ti chipset PCI-E usb3 controller