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.100und 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 rootoder sudoden 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-hcdKernelmodul:
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 lsusbSie 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)