puede usar este software usbip y así es cómo configurar el software y usarlo tanto en el lado del servidor como del cliente
Notas:
En este tutorial, utilice el comando server server1.example.com with IP
192.168.0.100
y client client1.example.com with IP 192.168.0.101
, ambos ejecutando Ubuntu. Estas configuraciones pueden ser diferentes para usted, por lo que debe reemplazarlas cuando corresponda.
Además, la cuenta utilizada en este tutorial es la siguiente: root
si un comando no funciona, use root
o use sudo
antes del comando
Instalación y uso de USB / IP en el servidor
Podemos instalar usbip de la siguiente manera:
apt-get install usbip
Luego cargamos los módulos del kernel usbip:
modprobe usbip
modprobe usbip_common_mod
Para verificar si realmente se cargaron, ejecute:
lsmod | grep usbip
El resultado debe ser similar a este:
root@server1:~# lsmod | grep usbip
usbip 15124 0
usbip_common_mod 13605 1 usbip
root@server1:~#
Para asegurarse de que ambos módulos se carguen automáticamente cada vez que inicie el sistema, puede agregarlos a / etc / modules:
vi /etc/modules
[...]
usbip
usbip_common_mod
Ahora podemos iniciar el demonio usbip:
root@server1:~# usbipd -D
Bind usbip.ko to a usb device to be exportable!
Ahora conecte un dispositivo USB que desee exportar al servidor; estoy usando una unidad flash USB SanDisk aquí.
Ejecutar el comando lsusb
para encontrar la identificación del proveedor / dispositivo correspondiente que tiene la forma de:
Bus XXX Device YYY: ID VendorID:DeviceID
El resultado en mi servidor es el siguiente:
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
La identificación del proveedor / dispositivo de mi unidad flash USB SanDisk es 0781: 5151.
Ahora corre
usbip_bind_driver --list
root@server1:~# usbip_bind_driver --list
List USB devices
- busid 1-1 (0781:5151)
1-1:1.0 -> usb-storage
Como puede ver, la identificación del proveedor / dispositivo de mi unidad flash USB SanDisk (0781: 5151) corresponde al BUSID 1-1. Necesitamos esto BUSID
para conectar el dispositivo USB al servidor:
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!
Eso es todo, ahora podemos usar la unidad flash USB SanDisk en un cliente USB remoto.
Por cierto, si corres ...
netstat -tap
... deberías ver que el demonio usbip está escuchando port 3240
así que asegúrese de que su firewall no bloquee este puerto:
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
Instalación y uso de USB / IP en el cliente
También necesitamos instalar usbip en el cliente:
sudo apt-get install usbip
Luego cargamos el vhci-hcd
módulo del núcleo:
modprobe vhci-hcd
Para verificar si realmente se cargó, ejecute:
root@client1:~# lsmod | grep vhci_hcd
vhci_hcd 19800 0
usbip_common_mod 13605 1 vhci_hcd
Para asegurarse de que el módulo se carga automáticamente cada vez que inicia el sistema, puede agregarlo a /etc/modules
:
vi /etc/modules
[...]
vhci-hcd
Ahora conéctese al servidor usbip y obtenga una lista de dispositivos USB disponibles:
usbip -l 192.168.0.100
(192.168.0.100 is the IP address of the usbip server.)
Debería encontrar la unidad flash USB SanDisk en la salida (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)
Para conectar ese dispositivo al cliente, ejecute:
root@client1:~# usbip -a 192.168.0.100 1-1
8 ports available
port 0 attached
Ahora ejecute lsusb
y debería encontrar el dispositivo USB remoto en la salida del cliente:
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
Ahora puede usar el dispositivo USB remoto como si fuera un dispositivo USB local (por ejemplo, montarlo, formatearlo, escribirlo, leerlo, etc.).
Desconectar un dispositivo USB remoto
Un dispositivo USB remoto se puede desconectar de la siguiente manera:
cliente1:
Correr...
usbip --port
... para averiguar el puerto que utiliza el dispositivo USB remoto en el cliente, en este caso, el puerto 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>
Necesitamos el número de puerto para desconectar el dispositivo:
usbip -d 00
root@client1:~# usbip -d 00
8 ports available
port 0 detached
En el servidor, usamos BUSID (1-1)
para vincular el dispositivo USB al sistema local (el otro interruptor conecta el dispositivo al sistema local para que ya no esté disponible en la red):
servidor 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!
Ahora regrese al cliente y verifique si el dispositivo USB remoto todavía está disponible:
cliente1:
Si todo va bien, ya no debería aparecer en la lista:
root@client1:~# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Enlaces
http://usbip.sourceforge.net
Fuente del tutorial (lado del servidor)
Fuente del tutorial (lado del cliente)