背景
当边缘设备系统出现故障时,我们往往需要通过重刷操作系统来进行恢复,但边缘设备的刷机通常是需要连接usb线的,一般会让客户邮寄回来刷机再发货,这一来一回会造成不少的时间成本和邮费成本;如果让客户自行刷机,复杂的刷机环境搭建方法和刷机流程又对客户的技术能力有一定要求,且会带来不好的服务体验。本文介绍一种将客户现场usb设备映射到本机进行远程刷机的方法,该方法无需在用户电脑搭建刷机环境,也无需用户进行刷机操作,只需配合执行usb映射的脚本即可。
实现
要想实现远程usb操作,需要解决两个技术问题:1、usb接口共享,2、内网端口访问。USB Redirector和花生壳可以分别解决1和2两个问题,但这两款软件是商用收费软件;此处我们介绍使用两款开源免费软件的实现方法:usbip和nps。nps已在我的另一篇文章“nps实现端口转发”里详细介绍,所以此处着重描述usbip分享usb端口的过程。
usbipd-win服务端:https://github.com/dorssel/usbipd-win
usbip-win客户端:https://github.com/cezanne/usbip-win
环境准备:公网服务器117.34.212.11(nps服务器)、客户PC机192.168.1.100(nps客户端和usbipd服务器)、运维人员PC机192.168.137.2(usbip客户端)
1、客户PC机
(1) 下载安装usbipd-win_2.4.1.msi,并开放本机3240端口;
(2) 查看本地usb设备id并将目标设备设置为共享;
usbipd --help usbipd list usbipd bind --force --busid=<BUSID>
(3) 通过“nps实现端口转发”的方法将192.168.1.100:3240映射为公网117.34.212.11:3240;
2、运维人员PC机
(1) 下载并解压usbip-win-0.3.6-dev.zip;
(2) 安装证书:双击usbip_test.pfx启动安装,注意“存储位置”选择“本地计算机”,其他默认即可;
(3) 开启测试模式:管理员身份CMD执行bcdedit.exe /set TESTSIGNING ON,重启生效;
(4) 安装VHCI驱动:管理员身份CMD执行 usbip.exe install、pnputil /add-driver usbip_vhci_ude.inf、pnputil /add-driver usbip_vhci.inf;
(5) 查看并挂载客户PC机的usb端口:usbip list --remote=117.34.212.11, usbip attach --remote=117.34.212.11 --busid=1-8
3、刷机等业务操作
至此,usb设备已完成远程挂载到本机上,可以安装“ibox系统备份与恢复”进行刷机等usb操作。