В комментариях к статье по настройке сервера VirtualHere была затронута тема настройки клиента Linux. Поэтому я решил в этой небольшой опорной статье разобрать, как выполняется типовой запуск клиента в качестве службы Ubuntu.
Сразу отмечу важный момент – использование клиента в качестве службы доступно только в полнофункциональной версии, т.е. на демо версии проверить не получится. Запуск службы вы настроить сможете, но вот подключить устройство по сети нет.
ВАЖНО: В Linux CentOS 8 и 9 из коробки нет модуля vhci_hcd. Поэтому нужно либо добавлять этот модуль вручную. Либо использовать контейнеры. Признаюсь честно, я потратил около 2-х часов на то, чтобы попробовать реализовать какой-то из этих вариантов, но из этого толком ничего не получилось. Пробовал даже сторонний модуль vhci_hcd от elrepo. Насколько я понял, модуль от elrepo не работает на ядре 4.18.0-394, а рассчитан на работу с более старой версией ядра. Но это только мои догадки – не так много у меня опыта работы с Linux. Если у кого-то получилось запустить клиент на CentOS 8 или 9 – поделитесь в комментариях опытом.
Общая схема
На рисунке ниже привожу общую схему решения.

Это будет достаточно простой типовой пример, но в то же время его будет достаточно для понимания общего принципа настройки. На сервере (10.10.10.37) будет подключен одино USB устройство – флешка на N-нное количество ГБ. На сторонге клиента (10.10.10.38) будет настроен запуск клиента в качестве службы Ubuntu.
Как на стороне сервера, так и на стороне клиента я установил ОС Ubuntu 20.04.4 LTS.
Настройка серверной части
Настройку серверной части я выполню в соответствии со статьей из этого руководства.
На сервер я подключил USB флешку на 64 ГБ.
sudo lsusb

roman@vhsrv:~$ sudo lsusb
[sudo] password for roman:
Bus 004 Device 002: ID 125f:dd33 A-DATA Technology Co., Ltd. ADATA USB Flash Drive
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
С этим накопителем мы и будем упражняться.
Настройка клиентской части
Сначала выполним загрузку клиента и настройку его запуска в качестве службы:
sudo su
wget https://www.virtualhere.com/sites/default/files/usbclient/scripts/virtualhereclient.service
wget https://www.virtualhere.com/sites/default/files/usbclient/vhclientx86_64
chmod +x ./vhclientx86_64
sudo mv ./vhclientx86_64 /usr/sbin
sudo mv virtualhereclient.service /etc/systemd/system/virtualhereclient.service
systemctl daemon-reload
systemctl enable virtualhereclient.service
systemctl start virtualhereclient.service
Проверим статус службы:
systemctl status virtualhereclient.service

root@vhclt:/home/roman# systemctl status virtualhereclient.service
● virtualhereclient.service - VirtualHere Client
Loaded: loaded (/etc/systemd/system/virtualhereclient.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-07-01 23:05:48 +07; 57s ago
Main PID: 3211 (vhclientx86_64)
Tasks: 9 (limit: 4582)
Memory: 16.4M
CGroup: /system.slice/virtualhereclient.service
└─3211 /usr/sbin/vhclientx86_64 -n
июл 01 23:05:48 vhclt systemd[1]: Starting VirtualHere Client...
июл 01 23:05:48 vhclt vhclientx86_64[3211]: VirtualHere Client: VirtualHere Client 5.3.4 starting (Compiled: Apr 25 2022 19:54:55)
июл 01 23:05:48 vhclt systemd[1]: Started VirtualHere Client.
июл 01 23:05:48 vhclt vhclientx86_64[3211]: VirtualHere Client: Client OS is Linux 5.13.0-52-generic x86_64
июл 01 23:05:48 vhclt vhclientx86_64[3211]: VirtualHere Client: Using config at /root/.vhui
июл 01 23:05:48 vhclt vhclientx86_64[3211]: VirtualHere Client: IPC available at /tmp/vhclient
июл 01 23:05:48 vhclt vhclientx86_64[3211]: VirtualHere Client: VirtualHere Client is running as a service
июл 01 23:05:48 vhclt vhclientx86_64[3211]: VirtualHere Client: Auto-find (Bonjour) on
июл 01 23:05:48 vhclt vhclientx86_64[3211]: VirtualHere Client: Auto-find (Bonjour SSL) on
июл 01 23:05:48 vhclt vhclientx86_64[3211]: VirtualHere Client: VirtualHere USB Server Trial Edition (10.10.10.37:7575)
Как видно из листинга выше – служба запустилась и работает коррректно.
Расширенно руководство по командам клиента доступно вот тут.
Укажем расположение сервера:
vhclientx86_64 -t "MANUAL HUB ADD,10.10.10.37:7575"

root@vhclt:/home/roman# vhclientx86_64 -t "MANUAL HUB ADD,10.10.10.37:7575"
OK
root@vhclt:/home/roman#
Теперь клиент должен увидеть наш сервер. Проверим:
vhclientx86_64 -t "LIST"

root@vhclt:/home/roman# vhclientx86_64 -t "LIST"
VirtualHere Client IPC, below are the available devices:
(Value in brackets = address, * = Auto-Use)
Desktop Hub (vhsrv:7575)
--> ADATA USB Flash Drive (vhsrv.41)
--> VMware Virtual USB Mouse (vhsrv.31)
Auto-Find currently on
Auto-Use All currently off
Reverse Lookup currently off
Reverse SSL Lookup currently off
VirtualHere Client is running as a service
root@vhclt:/home/roman#
Как видно из листинга выше клиент видит сервер (vhsrv:7575) и два USB устройства – наш USB накопитель и мышку.
Подключение устройства выполняется следующей командой (где vhsrv.41 – это внутренее имя устройства из листинга выше):
vhclientx86_64 -t "USE,vhsrv.41"
Повторюсь – использование консольного клиента доступно только в полнофункциональной версии.
Если у вас нет лицензии, то вы получите следующую ошибку в журнале:
root@vhclt:/home/roman# tail /var/log/syslog
Jul 1 23:34:27 vhclt VirtualHere Client: You need to purchase a license for your Server (10.10.10.37:7575) to enable access via a VirtualHere Client running as a service
Для того, чтобы устройство подключалось автоматически даже после перезагрузки системы используйте следующую комбинацию команд (где vhsrv.41 – это внутренее имя устройства из листинга выше):
vhclientx86_64 -t "USE,vhsrv.41"
vhclientx86_64 -t "AUTO USE DEVICE PORT,vhsrv.41"