- busid 1-5 (0c45:6370)
Microdia : unknown product (0c45:6370)Данная инструкция позволяет пробросить USB-токен с физического хоста на на удалённый хост, в том числе и виртуальны
Установка и запуск
Базовая настройка (на всех хостах)
Установить пакеты
sudo apt install linux-modules-extra-`uname -r` linux-tools-`uname -r` hwdata
Добавить в файл /etc/modules-load.d/modules.conf строки:
vhci_hcd
usbip_core
usbip_host
Перезагрузить систему
Создать файл запуска сервиса /etc/systemd/system/usbipd.service, со следующим содержимым:
[Unit]
Description=USB/IP server
After=network.target
[Service]
ExecStart=/usr/bin/usbipd
[Install]
WantedBy=multi-user.target
Включить и запустить сервис:
systemctl enable usbipd.service
systemctl start usbipd.service
Настройка отдающей стороны
Подключить USB-токен к системе и убедиться что он доступен
Просмотр доступных для раздачи локальных устройств:
usbip list -l
Вывод должен быть примерно таким:
- busid 1-5 (0c45:6370)
Microdia : unknown product (0c45:6370)
- busid 1-6.1 (9710:7840)
MosChip Semiconductor : MCS7820/MCS7840 2/4 port serial adapter (9710:7840)
- busid 1-6.2 (9710:7840)
MosChip Semiconductor : MCS7820/MCS7840 2/4 port serial adapter (9710:7840)
- busid 1-8 (046d:c31c)
Logitech, Inc. : Keyboard K120 (046d:c31c)
- busid 1-9.4 (0a89:0030)
Aktiv : Rutoken ECP (0a89:0030)
Подключение устройства к раздаче:
usbip bind -b [busid]
Отключение от раздачи:
usbip unbind -b [busid]
Настройка принимающей стороны (сервер ELM Offline)
Просмотр доступных для подключения удаленных устройств:
usbip list -r [remote_IP]
Подключение устройства:
usbip attach -r [remote_IP] -b [busid]
Просмотр подключенных устройств:
usbip port[busid]
Если есть подключенные устройства, то вывод должен быть примерно таким:
Imported USB devices
====================
libusbip: error: fopen
libusbip: error: read_record
Port 00: <Port in Use> at Full Speed(12Mbps)
Aktiv : Rutoken ECP (0a89:0030)
2-1 -> unknown host, remote port and remote busid
-> remote bus/dev 001/003
Так же, при успешном подключении устройства, оно должно появиться в списке lsusb. Например, так:
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 002: ID 0a89:0030 Aktiv Rutoken ECP
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 015 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 014 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 013 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 012 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 011 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 010 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 009 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 008 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 007 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 006 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0627:0001 Adomax Technology Co., Ltd QEMU USB Tablet
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Отключение устройства:
usbip detach -p [port_number]
Автоматизация запуска
Автоматизация отдающей стороны
Создаем скрипт автообновления инструментов и расшаривания устройства usbipd /scripts/usbipd
#!/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
bindID='1-1' # BusID нашего USB-устройства на сервере
kernel_version=$(uname -r) - # создание переменной, содержащей текущую версию ядра системы
apt install linux-tools-$kernel_version # установка инструментов проброса для актуальной версии ядра
usbipd -D
sleep 1
usbip bind -b $bindID # делаем USB-устройство на сервере доступным для проброса
usbip attach --remote=localhost --busid=$bindID
sleep 3
usbip detach --port=00
Выдаем разрешение на запуск скрипта:
chmod ugo+x usbipd
Обновляем конфигурацию systemd и добавляем юнит в автозапуск:
systemctl daemon-reload
systemctl enable usbipd
Автоматизация принимающей стороны
Создаем скрипт подключения /root/script/usbip_client
#!/bin/sh
apt-get install linux-tools-`uname -r` -y
sleep 1
usbip attach --remote=[remote_IP] --busid=[busid]
sleep 1
echo "Подключенные устройства:"
usbip port
Даем разрешение на запуск скрипта:
chmod ugo+x usbip_client
Cоздаем новый юнит для запуска автоматического подключения USB-устройства /etc/systemd/system/usbip_client.service
[Unit]
Description=usbip_client
After=network.target
[Service]
ExecStart=/bin/sh /root/script/usbip_client
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Обновляем конфигурацию systemd и добавляем юнит в автозапуск:
systemctl daemon-reload
systemctl enable usbip_client
- busid 1-6.1 (9710:7840)
MosChip Semiconductor : MCS7820/MCS7840 2/4 port serial adapter (9710:7840)
- busid 1-6.2 (9710:7840)
MosChip Semiconductor : MCS7820/MCS7840 2/4 port serial adapter (9710:7840)
- busid 1-8 (046d:c31c)
Logitech, Inc. : Keyboard K120 (046d:c31c)
- busid 1-9.4 (0a89:0030)
Aktiv : Rutoken ECP (0a89:0030)
|