扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
问题
某些特殊应用程序可能依赖于加密狗等专用硬件
当程序运行的时候,需要在服务器的USB端口(或者串口、并口)上插上相关硬件
在这种场景下,虚拟化的VPS内如何调用这些特殊硬件呢?
解决方案
1. 首先将设备连接到硬件节点,并正确安装驱动
本文中的例子是一个USB的加密狗
登陆到硬件节点,打开设备管理器,看USB设备中,是否出现了USB DOG设备(一定要正确配置驱动)
如果硬件节点本身不能识别这个设备,那么VPS内也就无法使用。
2. 查询设备的Device ID
登陆到硬件节点,执行命令:vzdevctl devtree
执行结果会返回几十个硬件设备,从中找到要挂载的设备
例如下边是显示出来的usb dog设备
Device: USB\VID_08E2&PID_0002\5&129A3D7C&0&2
Status: Started
Disableable
Removable
Class: USB
Name: MicroDog USB Device
Connected: No
Command 'devtree' is successfully finished
C:\>
从这个命令返回中,可以看到device id,即“USB\VID_08E2&PID_0002\5&129A3D7C&0&2”这个编号。
3. 创建虚拟的硬件设备
命令格式vzdevctl add
将其中的vps id替换为要绑定的vps id,设备id替换为上个步骤查询出来的编号
alias别名任意取一个即可,例如dog
完整命令如下:
C:\> vzdevctl add 736 --deviceid "USB\VID_08E2&PID_0002\5&129A3D7C&0&2" --alias dog --connect --onboot
Device USB\VID_08E2&PID_0002\5&129A3D7C&0&2 already shared for VPS 736
C:\>
4. 挂载设备
上一步仅仅是共享设备,但还没挂载,下边的命令是挂载设备:
C:\Documents and Settings\Administrator>vzdevctl connect 736 --deviceid "USB\VID_08E2&PID_0002\5&129A3D7C&0&2"
Command 'connect' is successfully finished
C:\Documents and Settings\Administrator>
命令中的device id就是设备编号
如果挂载成功,应该返回提示信息successfully finished
5. 确认是否挂载成功,再次运行vzdevctl devtree
从返回的设备列表中,再次找到刚才的设备
Device: USB\VID_08E2&PID_0002\5&129A3D7C&0&2
Status: Started
Disableable
Removable
Class: USB
Name: MicroDog USB Device
Connected: Yes
VPS: 736
State: Active
Command 'devtree' is successfully finished
可以看到,一开始这个设备显示为Connected:No
而现在挂载完毕后,显示Yes了,并显示挂载到VPS 736上
6. 登陆到VPS中,打开VPS自己的设备管理器,应该可以看到刚才挂载的设备
现在可以正常使用这个设备了
------------
注意:本文的方法只对串口、并口、USB接口三种形式的接口有效
对硬盘光驱等设备的挂载,请使用相关的对应方法,请查阅相应文档。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者