możesz użyć tego oprogramowania usbip, a oto jak skonfigurować oprogramowanie i używać go zarówno po stronie serwera, jak i klienta
Uwagi:
W tym samouczku użyj server server1.example.com with IP
192.168.0.100
i client client1.example.com with IP 192.168.0.101
, zarówno z systemem Ubuntu Te ustawienia mogą się dla Ciebie różnić, więc musisz je w razie potrzeby zastąpić.
Również konto użyte w tym samouczku jest takie, root
że jeśli polecenie nie działa, użyj root
albo użyj sudo
przed poleceniem
Instalowanie i używanie USB / IP na serwerze
Możemy zainstalować usbip w następujący sposób:
apt-get install usbip
Następnie ładujemy moduły jądra usbip:
modprobe usbip
modprobe usbip_common_mod
Aby sprawdzić, czy naprawdę zostały załadowane, uruchom:
lsmod | grep usbip
Wynik powinien być podobny do tego:
root@server1:~# lsmod | grep usbip
usbip 15124 0
usbip_common_mod 13605 1 usbip
root@server1:~#
Aby upewnić się, że oba moduły są ładowane automatycznie przy każdym uruchomieniu systemu, możesz dodać je do / etc / modules:
vi /etc/modules
[...]
usbip
usbip_common_mod
Teraz możemy uruchomić demona usbip:
root@server1:~# usbipd -D
Bind usbip.ko to a usb device to be exportable!
Teraz podłącz urządzenie USB, które chcesz wyeksportować na serwer - używam tutaj dysku flash USB SanDisk.
Wykonaj polecenie lsusb
znaleźć odpowiedni identyfikator dostawcy / urządzenia, który ma postać:
Bus XXX Device YYY: ID VendorID:DeviceID
Dane wyjściowe na moim serwerze są następujące:
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
Identyfikator dostawcy / urządzenia mojego dysku flash USB SanDisk to 0781: 5151.
Teraz biegnij
usbip_bind_driver --list
root@server1:~# usbip_bind_driver --list
List USB devices
- busid 1-1 (0781:5151)
1-1:1.0 -> usb-storage
Jak widać, identyfikator dostawcy / urządzenia mojego dysku flash USB SanDisk (0781: 5151) odpowiada BUSID 1-1. Potrzebujemy tego, BUSID
aby podłączyć urządzenie USB do serwera:
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!
To wszystko, możemy teraz używać dysku flash USB SanDisk na zdalnym kliencie USB.
BTW, jeśli uruchomisz ...
netstat -tap
... powinieneś zobaczyć, że demon usbip nasłuchuje port 3240
więc upewnij się, że ten port nie jest blokowany przez zaporę:
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
Instalowanie i używanie USB / IP na kliencie
Musimy również zainstalować usbip na kliencie:
sudo apt-get install usbip
Następnie ładujemy vhci-hcd
moduł jądra:
modprobe vhci-hcd
Aby sprawdzić, czy naprawdę został załadowany, uruchom:
root@client1:~# lsmod | grep vhci_hcd
vhci_hcd 19800 0
usbip_common_mod 13605 1 vhci_hcd
Aby mieć pewność, że moduł zostanie załadowany automatycznie przy każdym uruchomieniu systemu, możesz dodać go do /etc/modules
:
vi /etc/modules
[...]
vhci-hcd
Teraz połącz się z serwerem usbip i uzyskaj listę dostępnych urządzeń USB:
usbip -l 192.168.0.100
(192.168.0.100 is the IP address of the usbip server.)
Powinieneś znaleźć dysk flash USB SanDisk na wyjściu (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)
Aby podłączyć to urządzenie do klienta, uruchom:
root@client1:~# usbip -a 192.168.0.100 1-1
8 ports available
port 0 attached
Teraz uruchom lsusb
i powinieneś znaleźć zdalne urządzenie USB na wyjściu klienta:
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
Możesz teraz używać zdalnego urządzenia USB tak, jakby to było lokalne urządzenie USB (np. Zamontuj je, sformatuj, napisz do niego, przeczytaj z niego itp.).
Odłączanie zdalnego urządzenia USB
Zdalne urządzenie USB można odłączyć w następujący sposób:
klient1:
Biegać...
usbip --port
... aby dowiedzieć się, jakiego portu używa zdalne urządzenie USB na kliencie - w tym przypadku jest to port 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>
Potrzebujemy numeru portu, aby odłączyć urządzenie:
usbip -d 00
root@client1:~# usbip -d 00
8 ports available
port 0 detached
Na serwerze używamy BUSID (1-1)
do powiązania urządzenia USB z systemem lokalnym (przełącznik --inne wiąże urządzenie z systemem lokalnym, dzięki czemu nie jest już dostępne w sieci):
serwer 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!
Teraz wróć do klienta i sprawdź, czy zdalne urządzenie USB jest nadal dostępne:
klient1:
Jeśli wszystko pójdzie dobrze, nie powinno być już na liście:
root@client1:~# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Spinki do mankietów
http://usbip.sourceforge.net
Źródło samouczka (po stronie serwera)
Źródło samouczka (po stronie klienta)