Sie können diesen Software- Uspip verwenden. Auf diese Weise können Sie die Software einrichten und sowohl auf der Server- als auch auf der Clientseite verwenden
Anmerkungen:
Verwenden Sie in diesem Tutorial das server server1.example.com with IP
192.168.0.100
und client client1.example.com with IP 192.168.0.101
, beide unter Ubuntu. Diese Einstellungen können für Sie unterschiedlich sein, daher müssen Sie sie gegebenenfalls ersetzen.
Das in diesem Lernprogramm verwendete Konto ist also das root
, wenn ein Befehl nicht funktioniert, verwenden Sie entweder den root
oder sudo
den Befehl vor dem Befehl
Installieren und Verwenden von USB / IP auf dem Server
Wir können usbip wie folgt installieren:
apt-get install usbip
Anschließend laden wir die usbip-Kernelmodule:
modprobe usbip
modprobe usbip_common_mod
Um zu überprüfen, ob sie wirklich geladen wurden, führen Sie Folgendes aus:
lsmod | grep usbip
Die Ausgabe sollte dieser ähnlich sein:
root@server1:~# lsmod | grep usbip
usbip 15124 0
usbip_common_mod 13605 1 usbip
root@server1:~#
Um sicherzustellen, dass beide Module beim Booten des Systems automatisch geladen werden, können Sie sie zu / etc / modules hinzufügen:
vi /etc/modules
[...]
usbip
usbip_common_mod
Jetzt können wir den usbip-Daemon starten:
root@server1:~# usbipd -D
Bind usbip.ko to a usb device to be exportable!
Schließen Sie nun ein USB-Gerät an, das Sie auf den Server exportieren möchten. Ich verwende hier ein SanDisk-USB-Flash-Laufwerk.
Führen Sie den Befehl aus lsusb
So finden Sie die entsprechende Hersteller- / Geräte-ID in Form von:
Bus XXX Device YYY: ID VendorID:DeviceID
Die Ausgabe auf meinem Server ist wie folgt:
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
Die Hersteller- / Geräte-ID meines SanDisk USB-Flash-Laufwerks lautet 0781: 5151.
Jetzt renn
usbip_bind_driver --list
root@server1:~# usbip_bind_driver --list
List USB devices
- busid 1-1 (0781:5151)
1-1:1.0 -> usb-storage
Wie Sie sehen, entspricht die Hersteller- / Geräte-ID meines SanDisk USB-Flash-Laufwerks (0781: 5151) der BUSID 1-1. Wir benötigen dies BUSID
, um das USB-Gerät an den Server anzuschließen:
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!
Das war's, wir können jetzt das SanDisk USB-Flash-Laufwerk auf einem Remote-USB-Client verwenden.
Übrigens, wenn du rennst ...
netstat -tap
... Sie sollten sehen, dass der USB-Dämon zuhört port 3240
Stellen Sie daher sicher, dass dieser Port nicht von Ihrer Firewall blockiert wird:
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
Installieren und Verwenden von USB / IP auf dem Client
Wir müssen usbip auch auf dem Client installieren:
sudo apt-get install usbip
Danach laden wir das vhci-hcd
Kernelmodul:
modprobe vhci-hcd
Führen Sie Folgendes aus, um zu überprüfen, ob es wirklich geladen wurde:
root@client1:~# lsmod | grep vhci_hcd
vhci_hcd 19800 0
usbip_common_mod 13605 1 vhci_hcd
Um sicherzustellen, dass das Modul beim Booten des Systems automatisch geladen wird, können Sie es hinzufügen zu /etc/modules
:
vi /etc/modules
[...]
vhci-hcd
Stellen Sie nun eine Verbindung zum USB-Server her und erhalten Sie eine Liste der verfügbaren USB-Geräte:
usbip -l 192.168.0.100
(192.168.0.100 is the IP address of the usbip server.)
Sie sollten das SanDisk USB-Flash-Laufwerk im Ausgang finden (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)
Führen Sie Folgendes aus, um das Gerät an den Client anzuschließen:
root@client1:~# usbip -a 192.168.0.100 1-1
8 ports available
port 0 attached
Führen lsusb
Sie nun aus und Sie sollten das entfernte USB-Gerät in der Ausgabe auf dem Client finden:
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
Sie können das Remote-USB-Gerät jetzt so verwenden, als wäre es ein lokales USB-Gerät (z. B. mounten, formatieren, schreiben, lesen usw.).
Entfernen eines Remote-USB-Geräts
Ein entferntes USB-Gerät kann wie folgt getrennt werden:
client1:
Lauf...
usbip --port
... um herauszufinden, welchen Port das entfernte USB-Gerät auf dem Client verwendet - in diesem Fall 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>
Wir benötigen die Portnummer, um das Gerät zu trennen:
usbip -d 00
root@client1:~# usbip -d 00
8 ports available
port 0 detached
Auf dem Server verwenden wir das BUSID (1-1)
, um das USB-Gerät an das lokale System zu binden (der Schalter --other bindet das Gerät an das lokale System, sodass es nicht mehr über das Netzwerk verfügbar ist):
Server 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!
Gehen Sie nun zurück zum Client und prüfen Sie, ob das Remote-USB-Gerät noch verfügbar ist:
client1:
Wenn alles gut geht, sollte es nicht mehr aufgelistet werden:
root@client1:~# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Links
http://usbip.sourceforge.net
Quelle des Tutorials (Serverseite)
Quelle des Tutorials (Client-Seite)