- Настройка USB-сервера Ubuntu на базе usbip
- Установка и запуск
- Настройка клиента
- Автозапуск
- Автозапуск сервера
- Автозапуск клиента Windows
- Возможные проблемы
- 1. usbip_common_mod.ko and usbip.ko must be loaded
- 2. /usr/sbin/usbipd: No such file or directory
- 3. usbip: error: failed to open /usr/share/hwdata//usb.ids
- 4. usbip err . recv op_common
- 5. (attach_device) cannot find device
- 6. udev_device_new_from_subsystem_sysname failed
- Установка usbip на ubuntu 12.04 server
- Пробрасываем USB–ключ в облако (Linux клиент — Linux сервер)
- Установка и настройка USB Redirector на сервере с подключенным ключом USB
- Установка клиента USB Redirector в облаке
Настройка USB-сервера Ubuntu на базе usbip
В инструкции описан процесс настройки бесплатного решения для редиректа USB устройства с сервера на любой другой компьютер сети. Это может пригодиться, например, для проброса USB токена на виртуальную машину или несетевого принтера. В рамках примера сервер будет на Linux Ubuntu, клиент — на Windows (проверено на 7, 10, Server 2008 и 2012).
Установка и запуск
В Ubuntu установка инструмента проброса USB выполняется следующей командой:
apt-get install linux-tools-`uname -r`
* в моем случае была выполнена установка linux-tools-4.4.0-128-generic, где 4.4.0-128-generic — версия ядра, используемого в Ubuntu.
Подгружаем модули драйверов USB:
Запускаем usbip в качестве демона:
Смотрим список подключенных USB устройств:
root@usb:/usr/src# usbip list -l
— busid 2-1.3 (8564:1000)
Transcend Information, Inc. : JetFlash (8564:1000)
— busid 2-1.4 (1c4f:0026)
SiGma Micro : Keyboard (1c4f:0026)
Теперь можно расшарить флешку:
usbip bind -b 2-1.3
Должны увидеть на подобие:
usbip: info: bind device on busid 2-1.3: complete
Настройка клиента
Выполним настройку на базе операционной системы Windows.
Скачиваем драйвер и утилиту для Windows. Распаковываем архив usbip.zip.
Открываем диспетчер устройств (команда devmgmt.msc или правой кнопкой по Этот компьютер в проводнике — Управление — Диспетчер устройств).
Кликаем по Действие — Установить старое устройство:
Выбираем ручную установку устройства — показать все устройства — Установка с диска и выбираем файл USBIPEnum.inf (находится в каталоге usbip, который мы распаковали ранее).
Будет обнаружено устройство USB/IP Enumerator — кликаем Далее, чтобы его установить. Мы должны его увидеть среди системных устройств.
Теперь открываем командную строку (cmd.exe) и переходим в распакованный каталог, например:
* где C:\Users\user\Downloads\usbip — полный путь до папки.
Смотрим список расшаренных USB устройств на сервере:
usbip -l 192.168.0.15
* где 192.168.0.15 — IP-адрес сервера USB.
Мы получим ответ, на подобие этого:
C:\Users\user\Downloads\usbip>usbip -l 192.168.0.15
— 192.168.0.15
2-1.3: unknown vendor : unknown product (8564:1000)
: /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3
: (Defined at Interface level) (00/00/00)
Теперь можно примонтировать устройство:
usbip.exe -a 192.168.0.15 2-1.3
* если увидим ошибку . cannot find device, переходим к решению.
Автозапуск
Данная инструкция предполагала разовый запуск как сервера, так и клиента. После перезапуска системы, работоспособность будет потеряна до повторного ввода команд. Попробуем настроить автоматический запуск сервера и клиента.
Автозапуск сервера
Добавляем модули в автозапуск:
usbip-core
usbip-host
vhci-hcd
Создаем юнит в systemd:
[Service]
ExecStart=/scripts/usbipd
Type=oneshot
RemainAfterExit=yes
Перечитываем конфигурацию systemd и разрешаем запуск созданного нами юнита:
systemctl enable usbipd
Создаем каталог хранения скрипта и сам скрипт:
usbipd -D
usbip bind -b $bindID
usbip attach —remote=localhost —busid=$bindID
sleep 2
usbip detach —port=00
Разрешаем запуск скрипта:
chmod +x /scripts/usbipd
systemctl start usbipd
systemctl status usbipd
Для окончательного тестирования можно перезагрузить сервер.
Автозапуск клиента Windows
Пишем небольшой батник:
cd C:\Users\user\Downloads\usbip
usbip.exe -a 192.168.0.15 2-1.3
* C:\Users\user\Downloads\usbip — путь, где хранится распакованная утилита; 192.168.0.15 — адрес сервера USB; 2-1.3 — идентификатор USB устройства на сервере.
Сохраняем скрипт с расширением bat или cmd. Запускаем планировщик заданий и добавляем новую задачу.
На вкладке Общие отмечаем Выполнять вне зависимости от регистрации пользователя и ставим галочку Выполнить с наивысшими правами:
В триггерах выбираем При запуске системы:
На вкладке Действия выбираем Запуск программы и прописываем путь до скрипта, который мы сохранили ранее:
На вкладке Параметры ставим галочку При сбое выполнения перезапускать через и снимаем галочку Останавливать задачу, выполняемую дольше:
Для проверки, можно запустить вручную задачу на исполнение или перезагрузить компьютер.
Возможные проблемы
1. usbip_common_mod.ko and usbip.ko must be loaded
Ошибка появляется при попытке выполнить usbipd -D.
Причина: был установлен пакет usbip вместо linux-tools- .
Решение: удаляем usbip:
apt-get remove usbip
Ставим нужный пакет:
apt-get install linux-tools-`uname -r`
2. /usr/sbin/usbipd: No such file or directory
Данная ошибка также появляется при попытке выполнить usbipd -D.
Причина: Нужный бинарник для запуска находится по другому пути — /usr/bin/usbipd.
Решение: создаем симлинк:
ln -s /usr/bin/usbipd /usr/sbin/usbipd
3. usbip: error: failed to open /usr/share/hwdata//usb.ids
Выскакивает при попытке посмотреть список устройств командой usbip list -l.
Причина: необходимый файл usb.ids находится в другой директории.
Решение: создаем каталог /usr/share/hwdata:
Создаем симлинк на существующий файл:
ln -s /usr/share/misc/usb.ids /usr/share/hwdata/usb.ids
4. usbip err . recv op_common
При попытке запустить утилиту в командной строке Windows получаем ошибки:
usbip err: usbip_network.c: 121 (usbip_recv_op_common) recv op_common, -1
usbip err: usbip.c: 216 (query_exported_devices) recv op_common
usbip err: usbip.c: 288 (show_exported_devices) query
Причина: ошибка в бинарном файле для Windows.
Решение: открыть exe-файл в HEX редакторе, например, HxD. И в адресах смещения 00000CBC и 00000E0A заменить 06 на 11:
5. (attach_device) cannot find device
При попытке монтирования устройства в Windows, выскакивает ошибка с похожим текстом:
usbip err: usbip_windows.c: 829 (attach_device) cannot find device
Причина: недоработка серверного ПО — при расшаривании USB не считывается количество дескрипторов.
Решение: примонтировать устройство на сервере с последующим отмонтированием:
usbip attach —remote=localhost —busid=2-1.3
* в моем случае устройство имеет идентификатор 2-1.3.
* смотрим номер порта, на котором висит наше примонтированное устройство.
usbip detach —port=00
6. udev_device_new_from_subsystem_sysname failed
При попытке монтирования устройства на клиенте получаем ошибку с текстом:
libusbip: error: udev_device_new_from_subsystem_sysname failed
usbip: error: open vhci_driver
usbip: error: query
Причина: не подключен модуль vhci-hcd.
Решение: разово выполняем команду:
и добавляем в файл /etc/modules строку vhci-hcd.
Источник
Установка usbip на ubuntu 12.04 server
Здравствуйте, сегодня я хочу рассказать вам как поставить usbip на сервер с установленной ubuntu 12.04 server.
USBIP(USB over IP) служит для проброса usb устройства по сети, будь то windows или linux клиент. Серверная часть увы только под linux.
Данное решение самый лучший, бесплатный и по моему единственный продукт позволяющий пробрасывать практически любые usb устройства.
1. Установка серверной части USBIP.
Шаги установки/настройки ubuntu 12.04 server я пропущу.
1.1 Для начала требуется обновить систему.
1.2 Добавим репозиторий с usbip. Пакет есть и в стандартном репозитории, но там он оказался не рабочим.
1.3 Установим пакет usbip и включим нужные модули.
1.4 Добавим нужные модули в автозагрузку. Для этого откроем файл /etc/modules в редакторе
и в конец добавим
1.5 Создадим init.d скрипт. Для этого скопируем /etc/init.d/skeleton
Далее отредактируем строки в /etc/init.d/usbip
После этого дадим права файлу
1.6 Добавим init.d скрипт в автозагрузку.
1.7 Пришло время запустить usbip на сервере, для этого запустим команду в консоли
Если команда не выдала ошибок, то все прошло удачно и можно приступать к пробросу usb устройства.
2. Проброс usb устройства.
Для начала нужно разрешить проброс на самом сервере. Для этого выведем список всех usb устройств подключенных к серверу. Введем:
Должно вывести что то похожее
где 1-2 id устройства, (8564:1000) ID устройства.
Для того что бы узнать какие устройства usb у вас подключены введите команду lsusb
Я буду пробрасывать устройство с ID 8564:1000 т.к. это моя usb флешка. Далее вводим команду:
Если вы увидели такой же ответ как и у меня значит все прошло удачно.
Теперь разрешим на файрволе подключаться к usbip демону который занял TCP порт 3240.
Можно подключаться к этому устройству удаленно.
3. Подключение устройства под Windows.
3.1 Установка драйвера.
Для начала вам потребуется скачать драйвера и exe’шник по этой ссылке
Распакуйте архив в папку c:\usbip для удобства. Теперь надо установить универсальный драйвер. Делается это легко(я опишу процесс только для win7 и win2k8r2):
Зайдите в Диспетчер устройств, в верхнем меню выберите Действие > Установить старое устройство
Везде жмите далее пока диспетчер не предложит Установить с диска.
Выбираем данный пункт, жмем обзор и идем в папку c:\usbip, там выбираем USBIPEnum.inf.
Устанавливаем данный драйвер. Переходим к следующему пункту.
3.2 Подключаем устройство.
Любым любимым способом открываем cmd.exe
далее вводим
Должно вывести примерно такое
Теперь приступим к непосредственно к самому подключению
И далее должно начаться подключение нового устройства.
Вот так легко можно пробросить одно usb устройство на другое примерно за 30 минут. В следующий раз я напишу как пробросить usb устройство с linux на linux. Спасибо что прочитали мой пост. Оставляйте в комментариях свои отзывы и предложения.
Источник
Пробрасываем USB–ключ в облако (Linux клиент — Linux сервер)
Заказчику потребовалось подключить USB–ключ для банковской системы к Linux–серверу в облаке, где он разворачивает свой разработанный продукт. Напрямую подключить USB–ключ к виртуальной машине нельзя — она работает в отказоустойчивом кластере и может быть смигрирована на любой из хост-серверов без даунтайма.
Давайте посмотрим, как реализовать проброс USB–ключа по сети в виртуальную машину с Linux в облаке Azure Pack Infrastructure от InfoboxCloud.
Раз подключить ключ к виртуальной машине нельзя — его нужно подключить к чему-то реальному. Есть аппаратные решения, например AnyWhere USB, но заказчик выбрал более универсальное решение: выделенный сервер в ЦОД Infobox (что для одного ключа получилось дешевле — аппаратные требования к выделенному серверу для такой задачи минимальны — можно использовать самый дешевый сервер с софтовым Raid).
Для проброса использовалось ПО USB Redirector (версия для Linux бесплатна). На выделенный сервер и в виртуальную машину в облаке была установлена Ubuntu 16.04 LTS и были применены все обновления.
Для установки USB Redirector потребуются исходные тексты ядра, установите их:
Теперь необходимо отключить обновления ядра ОС, так как они могут сломать работу USB Redirector (служба проброса после обновления ядра не будет запускаться до переустановки), если необходимо — их можно устанавливать вручную переустанавливая USB Redirector.
Установка и настройка USB Redirector на сервере с подключенным ключом USB
Скачайте USB Redirector:
Перейдите в папку с ним:
Разрешите запуск инсталлятора:
Если все прошло корректно, вы увидите сообщение об этом.
Добавьте службу проброса в автозагрузку, если ранее этого не произошло:
Подключив USB–ключ к выделенному серверу проверим какие USB–устройства доступны:
Есть 2 варианта расшарить устройство по сети.
В этом случае мы привязываемся к конкретному id устройства и порту, если включить usb-ключ в другой порт сервера — номер usb порта сменится и работать не будет.
В этом случае мы привязываемся только к id устройства. Теперь USB–устройство расшарено по сети.
Конечно делать его доступным для всех пользователей Интернет не правильно, поэтому добавим ограничения в firewall:
Где вместо *.*.*.* нужно написать адрес сервера, с которого разрешено подключение.
Установка клиента USB Redirector в облаке
Скачайте USB Redirector:
Перейдите в папку с ним:
Разрешите запуск инсталлятора:
Если все прошло корректно, вы увидите сообщение об этом.
Добавьте службу проброса в автозагрузку, если ранее этого не произошло:
Теперь добавим наш сервер:
Где вместо **.**.**.** нужно указать ip–адрес сервера.
Теперь можно посмотреть список доступных устройств:
Видим, что на сервере 1 доступно устройство 1.
Включаем автоматическое соединение с устройством:
USB–ключ был успешно проброшен в виртуальную машину в облаке.
Источник