ви можете використовувати це програмне забезпечення 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 / module:
vi /etc/modules
[...]
usbip
usbip_common_mod
Тепер ми можемо запустити демон демона usbip:
root@server1:~# usbipd -D
Bind usbip.ko to a usb device to be exportable!
Тепер приєднайте USB-пристрій, який ви хочете експортувати на сервер - тут я використовую флешку SanDisk USB.
Виконай команду 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
Ідентифікатор продавця / пристрою моєї флеш-пам’яті 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
Як бачите, ідентифікатор постачальника / пристрою моєї флеш-пам’яті 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!
Ось так, тепер ми можемо використовувати флешку SanDisk USB на віддаленому клієнті 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.)
Ви повинні знайти флешку SanDisk USB у висновку (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 для прив’язки USB до локальної системи (інший комутатор прив'язує пристрій до локальної системи, щоб він більше не був доступний у мережі):
сервер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
Джерело підручника (сторона сервера)
Джерело підручника (сторона клієнта)