USBIP配置方法及其部分理论的理解

1、USBIP工具简介

USBIP是用于将Linux系统上所识别到的USB设备通过以太网共享出来的一个工具,它可以使得USB外接设备可以跨电脑或跨服务器进行访问。在USBIP基本架构中,分服务端(Server)和客户端(Client)两种,其中服务端是指插入USB设备并将其共享出来的一端,而客户端则是连接共享USB的一端,目前USBIP已经是Linux内核的一个分支,Windows平台下也有相应的工具。
服务端的USB设备被USBIP共享出来后,如果有客户端连接这个共享USB设备成功,在网络层面上建立一个TCP连接,以满足对信令和数据的传输。

2、debian系Linux下USBIP的安装以及USBIP的四个内核模块的描述

2.1、USBIP在debian系Linux中的安装

USBIP工具的相关安装包目前是已经集成在debian的软件仓库中的,并且没有其他的Linux依赖,因此我们可以直接通过“apt install usbip”命令进行安装,倘若网络环境与互联网隔离,且没有部署相应的离线仓库,也可以将外网拉取的USBIP安装包直接通过dpkg的方式进行离线安装,相关安装如下图所示:
在这里插入图片描述

2.2、USBIP的四个基本模块

将USBIP安装完成后,进入/lib/modules/5.10.101-amd64-desktop/kernel/drivers/usb/usbip(具体路径视具体的Linux内核版本为准),可以看到此时USBIP生成了四个内核模块,分别为usbip-core.ko、usbip-host.ko、usbip-vudc.ko和vhci-hcd.ko,如下图所示:
在这里插入图片描述

个人针对于这四个模块的分工,如下表所示:
在这里插入图片描述

2.3、USBIP与普通USB通信的大体对比

普通USB设备被操作系统识别到后,通信架构如下图所示:
在这里插入图片描述

结合上图来看,我们可以大体上有这样的理解——设备侧指的是运行Linux系统的USB设备,主机侧指的是运行Linux电脑或者服务器主机,其中在设备侧中Gadget Function驱动及其API接口决定USB是以何种形态展现(例如手机USB插入电脑后,在电脑中被展现为U盘),此时设备侧的USB设备控制器通过UDC驱动控制USB设备,而设备侧的USB设备控制器在USB设备插入电脑后,将与电脑的USB主机控制器建立通信连接,这个连接处在USB总线上。
将以上结构对比在USBIP上后,Gadget+UDC驱动+USB设备控制器部分主要由usbip-vudc.ko承担,并交由usbip-host.ko在以太网上进行通信,而不再在USB总线上通信,而主机侧的USB主机控制器+USB主机控制器驱动部分则主要由vhci-hcd.ko承担。

3、配置USBIP实现USB设备共享

上述第二章已经描述了USBIP的安装以及相关模块的大体作用,在USBIP安装完成后,接下来就需要在服务端插入USB设备(如U盘),然后进行相关的配置,相应的步骤如下:

3.1、服务端

(1)输入命令“sudo modprobe usbip-host”与“usbipd -D”加载usbip-host内核模块:
在这里插入图片描述

(2)输入命令“usbip list -l”命令,查看服务端已经插入的USB设备,在下图中,“busid 4-2”是需要共享出去的USB设备:
在这里插入图片描述

(3)输入命令“usbip bind -b 4-2”(id值视实际而定),绑定需要共享出去的USB设备,如果提示complete,则表示共享成功,此时服务端配置完成:
在这里插入图片描述

3.2、客户端

(1)输入命令“sudo modprobe vhci-hcd”加载vhci-hcd内核模块:
在这里插入图片描述

(2)输入命令“sudo usbip list -r 192.168.100.43”查看服务端共享出来的USB设备列表:
在这里插入图片描述

(3)输入命令“usbip attach -r 192.168.100.191 -b 4-2”,连接服务端共享出来的USB设备:
在这里插入图片描述

以上USBIP共享配置完成后,客户端便可以对该USB设备进行操作了,而对于部分带GUI的Linux发行版(例如deepin/UOS)而言,如果服务端共享出来的USB设备是U盘,此时等待片刻,文件管理器便会自动将来自服务端U盘挂载上。
在这里插入图片描述

3.3、补充说明

针对目前主流的版本USBIP中,usbip-core、usbip-vudc是不需要手动加载(modprobe)的,但在较老版本的USBIP中,所有的模块都需要手动加载。

4、知识扩充:USBIP通信时,各个指令含义

下表中的指令是USBIP客户端和服务端之间在通信过程中所互相发送的指令,可以作为理论了解,实际运维配置时不涉及:
在这里插入图片描述

5、参考来源

https://blog.csdn.net/litao31415/article/details/107074146

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值