è possibile utilizzare questo software usbip e questo è come impostare il software e utilizzarlo sia sul lato server che sul lato client
Appunti:
In questo tutorial usare la server server1.example.com with IP
192.168.0.100
e client client1.example.com with IP 192.168.0.101
, entrambi in esecuzione Ubuntu Queste impostazioni potrebbero differire per voi, in modo da avere a sostituirli, se del caso.
Inoltre, l'account utilizzato in questa esercitazione è root
quindi se un comando non funziona, utilizzare root
o utilizzare sudo
prima del comando
Installazione e utilizzo di USB / IP sul server
Possiamo installare usbip come segue:
apt-get install usbip
Successivamente cariciamo i moduli del kernel usbip:
modprobe usbip
modprobe usbip_common_mod
Per verificare se sono stati effettivamente caricati, esegui:
lsmod | grep usbip
L'output dovrebbe essere simile a questo:
root@server1:~# lsmod | grep usbip
usbip 15124 0
usbip_common_mod 13605 1 usbip
root@server1:~#
Per assicurarsi che entrambi i moduli vengano caricati automaticamente ogni volta che si avvia il sistema, è possibile aggiungerli a / etc / modules:
vi /etc/modules
[...]
usbip
usbip_common_mod
Ora possiamo avviare il demone usbip:
root@server1:~# usbipd -D
Bind usbip.ko to a usb device to be exportable!
Ora collega un dispositivo USB che desideri esportare sul server: sto usando un'unità flash USB SanDisk qui.
Esegui il comando lsusb
per trovare l'ID fornitore / dispositivo corrispondente che si presenta sotto forma di:
Bus XXX Device YYY: ID VendorID:DeviceID
L'output sul mio server è il seguente:
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
L'ID fornitore / dispositivo dell'unità flash USB SanDisk è 0781: 5151.
Adesso corri
usbip_bind_driver --list
root@server1:~# usbip_bind_driver --list
List USB devices
- busid 1-1 (0781:5151)
1-1:1.0 -> usb-storage
Come vedi, l'ID fornitore / dispositivo dell'unità flash USB SanDisk (0781: 5151) corrisponde al BUSID 1-1. Ne abbiamo bisogno BUSID
per collegare il dispositivo USB al server:
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!
Questo è tutto, ora possiamo usare l'unità flash USB SanDisk su un client usbip remoto.
A proposito, se corri ...
netstat -tap
... dovresti vedere che il demone usbip è in ascolto port 3240
quindi assicurati che questa porta non sia bloccata dal tuo firewall:
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
Installazione e utilizzo di USB / IP sul client
Dobbiamo installare anche usbip sul client:
sudo apt-get install usbip
Successivamente cariciamo il vhci-hcd
modulo del kernel:
modprobe vhci-hcd
Per verificare se è stato caricato, esegui:
root@client1:~# lsmod | grep vhci_hcd
vhci_hcd 19800 0
usbip_common_mod 13605 1 vhci_hcd
Per assicurarsi che il modulo venga caricato automaticamente ogni volta che si avvia il sistema, è possibile aggiungerlo a /etc/modules
:
vi /etc/modules
[...]
vhci-hcd
Ora connettiti al server usbip e ottieni un elenco dei dispositivi USB disponibili:
usbip -l 192.168.0.100
(192.168.0.100 is the IP address of the usbip server.)
È necessario trovare l'unità flash USB SanDisk nell'output (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)
Per collegare quel dispositivo al client, eseguire:
root@client1:~# usbip -a 192.168.0.100 1-1
8 ports available
port 0 attached
Ora esegui lsusb
e dovresti trovare il dispositivo USB remoto nell'output sul client:
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
Ora puoi utilizzare il dispositivo USB remoto come se fosse un dispositivo USB locale (ad es. Montalo, formattalo, scrivilo, leggilo da un modulo, ecc.).
Scollegamento di un dispositivo USB remoto
Un dispositivo USB remoto può essere rimosso come segue:
client1:
Correre...
usbip --port
... per scoprire la porta che il dispositivo USB remoto utilizza sul client - in questo caso è la porta 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>
Abbiamo bisogno del numero di porta per staccare il dispositivo:
usbip -d 00
root@client1:~# usbip -d 00
8 ports available
port 0 detached
Sul server, usiamo il BUSID (1-1)
per collegare il dispositivo USB al sistema locale (l'interruttore --other collega il dispositivo al sistema locale in modo che non sia più disponibile sulla rete):
server1:
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!
Ora torna al client e controlla se il dispositivo USB remoto è ancora disponibile:
client1:
Se tutto va bene, non dovrebbe più essere elencato:
root@client1:~# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
link
http://usbip.sourceforge.net
Fonte del tutorial (lato server)
Fonte del tutorial (lato client)