Вы можете использовать это программное обеспечение usbip, и это, как настроить программное обеспечение и использовать его как на стороне сервера, так и на стороне клиента.
Ноты:
В этом учебном пособии используйте server server1.example.com with IP
192.168.0.100
и client client1.example.com with IP 192.168.0.101
, и Ubuntu, оба работающие. Эти параметры могут отличаться для вас, поэтому вы должны заменить их там, где это необходимо.
Кроме того, учетная запись, используемая в этом руководстве, является root
таковой, если команда не работает, либо используйте, root
либо используйте sudo
перед командой
Установка и использование USB / IP на сервере
Мы можем установить usbip следующим образом:
apt-get install usbip
После этого мы загружаем модули ядра usbip:
modprobe usbip
modprobe usbip_common_mod
Чтобы проверить, действительно ли они были загружены, запустите:
lsmod | grep usbip
Вывод должен быть похож на этот:
root@server1:~# lsmod | grep usbip
usbip 15124 0
usbip_common_mod 13605 1 usbip
root@server1:~#
Чтобы убедиться, что оба модуля загружаются автоматически при каждой загрузке системы, вы можете добавить их в / etc / modules:
vi /etc/modules
[...]
usbip
usbip_common_mod
Теперь мы можем запустить демон usbip:
root@server1:~# usbipd -D
Bind usbip.ko to a usb device to be exportable!
Теперь подключите USB-устройство, которое вы хотите экспортировать на сервер - здесь я использую флешку SanDisk.
Выполнить команду lsusb
найти соответствующий идентификатор поставщика / устройства в виде:
Bus XXX Device YYY: ID VendorID:DeviceID
Вывод на моем сервере выглядит следующим образом:
root@server1:~# lsusb
Bus 001 Device 002: ID 0781:5151 SanDisk Corp. Cruzer Micro Flash Drive
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Идентификатор производителя / устройства USB-накопителя SanDisk: 0781: 5151.
Теперь беги
usbip_bind_driver --list
root@server1:~# usbip_bind_driver --list
List USB devices
- busid 1-1 (0781:5151)
1-1:1.0 -> usb-storage
Как видите, идентификатор поставщика / устройства USB-накопителя SanDisk (0781: 5151) соответствует BUSID 1-1. Нам нужно это BUSID
подключить USB-устройство к серверу:
root@server1:~# usbip_bind_driver --usbip 1-1
** (process:765): DEBUG: 1-1:1.0 -> usb-storage
** (process:765): DEBUG: unbinding interface
** (process:765): DEBUG: write "add 1-1" to /sys/bus/usb/drivers/usbip/match_busid
** Message: bind 1-1 to usbip, complete!
Вот и все, теперь мы можем использовать USB-флешку SanDisk на удаленном клиенте usbip.
Кстати, если вы бежите ...
netstat -tap
... вы должны увидеть, что демон usbip слушает port 3240
поэтому, пожалуйста, убедитесь, что этот порт не заблокирован вашим брандмауэром:
root@server1:~# netstat -tap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 *:ssh *:* LISTEN 537/sshd
tcp 0 0 *:3240 *:* LISTEN 762/usbipd
tcp 0 52 server1.example.com:ssh 192.168.0.199:4024 ESTABLISHED 667/0
tcp6 0 0 [::]:ssh [::]:* LISTEN 537/sshd
Установка и использование USB / IP на клиенте
Нам также нужно установить usbip на клиенте:
sudo apt-get install usbip
После этого мы загружаем vhci-hcd
модуль ядра:
modprobe vhci-hcd
Чтобы проверить, действительно ли он был загружен, запустите:
root@client1:~# lsmod | grep vhci_hcd
vhci_hcd 19800 0
usbip_common_mod 13605 1 vhci_hcd
Чтобы убедиться, что модуль загружается автоматически при каждой загрузке системы, вы можете добавить его в /etc/modules
:
vi /etc/modules
[...]
vhci-hcd
Теперь подключитесь к серверу usbip и получите список доступных USB-устройств:
usbip -l 192.168.0.100
(192.168.0.100 is the IP address of the usbip server.)
Вы должны найти USB-накопитель SanDisk на выходе (BUSID 1-1):
root@client1:~# usbip -l 192.168.0.100
- 192.168.0.100
1-1: SanDisk Corp. : Cruzer Micro Flash Drive (0781:5151)
: /sys/devices/pci0000:00/0000:00:07.2/usb1/1-1
: (Defined at Interface level) (00/00/00)
: 0 - Mass Storage / SCSI / Bulk (Zip) (08/06/50)
Чтобы подключить это устройство к клиенту, запустите:
root@client1:~# usbip -a 192.168.0.100 1-1
8 ports available
port 0 attached
Теперь запустите, lsusb
и вы должны найти удаленное USB-устройство в выводе на клиенте:
root@client1:~# lsusb
Bus 001 Device 002: ID 0781:5151 SanDisk Corp. Cruzer Micro 256/512MB Flash Drive
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Теперь вы можете использовать удаленное USB-устройство, как если бы оно было локальным USB-устройством (например, смонтировать его, отформатировать, записать на него, прочитать с него и т. Д.).
Отсоединение удаленного USB-устройства
Удаленное USB-устройство можно отсоединить следующим образом:
client1:
Запустить...
usbip --port
... чтобы узнать порт, который удаленное USB-устройство использует на клиенте - в данном случае это порт 00:
root@client1:~# usbip --port
8 ports available
Port 00: <Port in Use> at High Speed(480Mbps)
SanDisk Corp. : Cruzer Micro 256/512MB Flash Drive (0781:5151)
1-1 -> usbip://192.168.0.100:3240/1-1 (remote devid 00010002 (bus/dev 001/002))
1-1:1.0 used by usb-storage
/sys/class/bsg/1:0:0:0/device
/sys/class/scsi_device/1:0:0:0/device
/sys/class/scsi_disk/1:0:0:0/device
/sys/class/scsi_host/host1/device
/sys/class/usb_endpoint/usbdev1.4_ep02/device
/sys/class/usb_endpoint/usbdev1.4_ep81/device
/sys/block/sdb/device
Port 01: <Port Available>
Port 02: <Port Available>
Port 03: <Port Available>
Port 04: <Port Available>
Port 05: <Port Available>
Port 06: <Port Available>
Port 07: <Port Available>
Нам нужен номер порта для отсоединения устройства:
usbip -d 00
root@client1:~# usbip -d 00
8 ports available
port 0 detached
На сервере мы используем BUSID (1-1)
для привязки устройства USB к локальной системе (переключатель --other привязывает устройство к локальной системе, чтобы оно больше не было доступно по сети):
сервер1:
usbip_bind_driver --other 1-1
root@server1:~# usbip_bind_driver --other 1-1
** (process:7333): DEBUG: write "del 1-1" to /sys/bus/usb/drivers/usbip/match_busid
** Message: bind 1-1 to other drivers than usbip, complete!
Теперь вернитесь к клиенту и проверьте, доступно ли удаленное USB-устройство:
client1:
Если все идет хорошо, это больше не должно быть перечислено:
root@client1:~# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
связи
http://usbip.sourceforge.net
Источник учебника (на стороне сервера)
Источник учебника (Клиентская часть)