USB 重定向
USB 设备在 Citrix Workspace 应用程序与 Linux VDA 桌面之间共享。将 USB 设备重定向到桌面后,您可以像使用本地连接的 USB 设备那样使用该设备。
提示:
当网络延迟低于 100 毫秒时,我们建议使用 USB 重定向。当网络延迟超过 200 毫秒时,请勿使用 USB 重定向。
USB 重定向包含三个主要方面的功能:
- 开源项目实施 (VHCI)
- VHCI 服务
- USB 服务
开源 VHCI:
这部分 USB 重定向功能发展了通过 IP 网络的通用 USB 设备共享系统。它由 Linux 内核驱动程序和一些用户模式库组成,这些库使您可以与内核驱动程序通信以获取所有 USB 数据。在 Linux VDA 实现中,Citrix 重用 VHCI 的内核驱动程序。但是,Linux VDA 与 Citrix Workspace 应用程序之间的所有 USB 数据传输都封装在 Citrix ICA 协议软件包中。
VHCI 服务:
VHCI 服务是 Citrix 提供用来与 VHCI 内核模块通信的开源服务。此服务充当 VHCI 与 Citrix USB 服务之间的网关。
USB 服务:
USB 服务用作管理 USB 设备上的所有虚拟化和数据传输的 Citrix 模块。
USB 重定向的工作方式
通常情况下,如果 USB 设备成功重定向至 Linux VDA,会在系统 /dev 路径中创建一个或多个设备节点。但是,重定向的设备有时不可用于活动的 Linux VDA 会话。USB 设备依赖于驱动程序才能正常使用,且有些设备需要特殊的驱动程序。如果并未提供驱动程序,活动 Linux VDA 会话无法使用重定向的 USB 设备。为确保 USB 设备的连接性,请安装驱动程序并正确配置系统。
Linux VDA 支持一组成功重定向至客户端和从客户端重定向的 USB 设备。
支持的 USB 设备
下列设备已确认支持此 Linux VDA 版本。可以随意使用其他设备,但会有意外结果:
注意:
Linux VDA 仅支持 USB 2.0 协议。
USB 大容量存储设备 | VID:PID | 文件系统 |
---|---|---|
Netac Technology Co., Ltd |
0dd8:173c | FAT32 |
Kingston Datatraveler 101 II |
0951:1625 | FAT32 |
Kingston Datatraveler GT101 G2 |
1567:8902 | FAT32 |
SanDisk SDCZ80 flash drive |
0781:5580 | FAT32 |
WD HDD |
1058:10B8 | FAT32 |
USB 3D 鼠标 | VID:PID |
---|---|
3DConnexion SpaceMouse Pro |
046d: c62b |
USB 扫描仪 | VID:PID |
---|---|
Epson Perfection V330 photo |
04B8: 0142 |
配置 USB 重定向
有一个 Citrix 策略控制是否启用或禁用 USB 设备重定向。还可以使用 Delivery Controller 策略指定设备类型。为 Linux VDA 配置 USB 重定向时,请配置以下策略和规则:
- 客户端 USB 设备重定向策略
- 客户端 USB 设备重定向规则
启用 USB 重定向
在 Citrix Studio 中,启用(或禁用)与客户端之间的 USB 设备重定向(仅限工作站主机)。
在编辑设置对话框中:
- 选择允许。
- 单击确定。
设置 USB 重定向规则
启用 USB 重定向策略后,使用 Citrix Studio 设置重定向规则,方法是指定允许(或拒绝)在 Linux VDA 上使用哪些设备。
在客户端 USB 设备重定向规则对话框中:
- 单击新建添加重定向规则,或单击编辑检查现有规则。
- 创建(或编辑)规则后,单击确定。
有关如何配置通用 USB 重定向的详细信息,请参阅 Citrix Generic USB Redirection Configuration Guide(《Citrix 通用 USB 重定向配置指南》)。
构建 VHCI 内核模块
USB 重定向依赖于 VHCI 内核模块(usb-vhci-hcd.ko
和 usb-vhci-iocif.ko
)。这些模块包含在 Linux VDA 发行版中(作为 RPM 软件包的一部分)。它们根据正式的 Linux 发行版内核进行编译,请见下表:
支持的 Linux 发行版 | 内核版本 |
---|---|
Amazon Linux 2 | 4.14.281-212 |
Debian 11.3 | 5.10.0-12 |
RHEL 8.x、Rocky Linux 8 | 4.18.0-372 |
RHEL 7.9、CentOS 7.9 | 3.10.0-1160 |
SUSE 15 | 5.3.18 |
Ubuntu 22.04 | 5.15.0-37 |
Ubuntu 20.04 | 5.4.0-117 |
Ubuntu 18.04 | 4.15.0-184 |
重要:
如果您的计算机的内核与为 Linux VDA 构建的驱动程序不兼容,USB 服务可能无法启动。在这种情况下,仅当您构建自己的 VHCI 内核模块时,才能使用 USB 重定向功能。
确认您的内核与 Citrix 构建的模块是否一致
在命令行上,运行以下命令来确认内核是否一致:
insmod /opt/Citrix/VDA/lib64/usb-vhci-hcd.ko
<!--NeedCopy-->
如果命令运行成功,则内核模块已成功加载,且版本与 Citrix 安装的模块一致。
如果命令运行后显示错误,则内核与 Citrix 模块不一致,必须重新构建。
重新构建 VHCI 内核模块
如果您的内核模块与 Citrix 的版本不一致,请执行以下操作:
-
从 Citrix 下载站点下载 LVDA 源代码。选择 Linux Virtual Delivery Agent (sources) 部分中的文件。
-
提取 citrix-linux-vda-sources.zip 文件。导航到 linux-vda-sources/vhci-hcd-1.15.zip,然后使用
unzip vhci-hcd-1.15.zip
命令提取 VHCI 源文件。 -
确保安装了 Linux VDA 软件包,然后运行以下命令之一:
-
sudo bash ctxusbcfg.sh dkms
使用此命令,您可以使用动态内核模块支持 (DKMS) 程序来管理 VHCI 内核模块。DKMS 不适用于 SUSE。
注意:
sudo bash ctxusbcfg.sh dkms
命令会在您的 VDA 上安装kernel-devel
和DKMS
程序。在 RHEL 和 CentOS 上安装程序时,该命令会在 VDA 上安装并启用 Extra Packages for Enterprise Linux (EPEL) 存储库。当您进行重大内核升级(例如,从版本 4.x.y 升级到版本 5.x.y)时,DKMS 可能无法构建 VHCI 内核模块(
usb-vhci-hcd.ko
和usb-vhci-iocif.ko
)。如果 DKMS 失败,请再次运行sudo bash ctxusbcfg.sh dkms
。 -
sudo bash ctxusbcfg.sh build
此命令在不使用 DKMS 选项的情况下构建和安装 VHCI 内核模块。
-
解决 USB 重定向问题
请根据本节中的信息解决您在使用 Linux VDA 时可能遇到的各种问题。
无法卸载重定向的 USB 磁盘
Linux VDA 使用管理权限管理从 Citrix Workspace 应用程序重定向的所有 USB 磁盘,以确保只有所有者能够访问重定向的设备。因此,您只能使用管理权限卸载设备。
停止重定向 USB 磁盘时文件丢失
如果使用 Citrix Workspace 应用程序的工具栏立即停止重定向 USB 磁盘,您在磁盘上修改或创建的文件可能会丢失。出现此问题是因为您将数据写入文件系统时,系统在文件系统中装载内存缓存。数据并未写入磁盘本身。如果使用 Citrix Workspace 应用程序的工具栏停止重定向,则没有时间将数据刷新至磁盘,从而导致数据丢失。为了解决此问题,请先在终端使用 sync 命令将数据刷新至磁盘,然后再停止 USB 重定向。
Citrix Workspace 应用程序的工具栏中无设备
有时,您可能无法看到 Citrix Workspace 应用程序的工具栏中没有列出设备,这表示没有进行 USB 重定向。如果遇到问题,请验证以下各项:
- 策略已配置为允许 USB 重定向
- 内核模块与您的内核兼容
当 USB 设备在 Citrix Workspace 应用程序的工具栏中显示,但这些设备都标有受策略限制时,重定向失败
出现此问题时,请执行以下操作:
- 配置 Linux VDA 策略以启用重定向。
-
检查是否在 Citrix Workspace 应用程序的注册表中配置了任何其他策略限制。请检查注册表路径中的 DeviceRules,以确保此设置未拒绝访问该设备:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\ICA Client\GenericUSB
USB 设备已成功重定向,但无法在会话中使用
通常情况下,只能重定向受支持的 USB 设备。其他设备可能也会重定向到活动 Linux VDA 会话。对于每个重定向的设备,都会在系统 /dev 路径中创建用户拥有的节点。但是,用户是否可以成功使用设备由驱动程序和配置决定。如果您发现拥有(已插入)的某个设备无法访问,请将该设备添加到不受限制策略。
注意:
对于 USB 驱动器,Linux VDA 会配置和装载磁盘。用户(且仅限安装它的所有者)无需执行任何其他配置即可访问该磁盘。未包含在受支持设备列表中的设备可能不是这种情况。