bạn có thể sử dụng phần mềm usbip này và đây là cách thiết lập phần mềm và sử dụng nó trên cả phía máy chủ và máy khách
Ghi chú:
Trong hướng dẫn này sử dụng server server1.example.com with IP
192.168.0.100
và client client1.example.com with IP 192.168.0.101
, cả chạy Ubuntu Các cài đặt này có thể khác nhau đối với bạn, vì vậy bạn phải thay thế chúng khi thích hợp.
Ngoài ra Tài khoản được sử dụng trong hướng dẫn này là root
như vậy nếu một lệnh không hoạt động hoặc sử dụng root
hoặc sử dụng sudo
trước lệnh
Cài đặt và sử dụng USB / IP trên máy chủ
Chúng tôi có thể cài đặt usbip như sau:
apt-get install usbip
Sau đó, chúng tôi tải các mô-đun hạt nhân usbip:
modprobe usbip
modprobe usbip_common_mod
Để kiểm tra xem chúng có thực sự được tải không, hãy chạy:
lsmod | grep usbip
Đầu ra phải tương tự như cái này:
root@server1:~# lsmod | grep usbip
usbip 15124 0
usbip_common_mod 13605 1 usbip
root@server1:~#
Để đảm bảo rằng cả hai mô-đun được tải tự động bất cứ khi nào bạn khởi động hệ thống, bạn có thể thêm chúng vào / etc / mô-đun:
vi /etc/modules
[...]
usbip
usbip_common_mod
Bây giờ chúng ta có thể bắt đầu trình nền usbip:
root@server1:~# usbipd -D
Bind usbip.ko to a usb device to be exportable!
Bây giờ hãy gắn thiết bị USB mà bạn muốn xuất sang máy chủ - Tôi đang sử dụng ổ flash USB SanDisk tại đây.
Thực hiện lệnh lsusb
để tìm ID nhà cung cấp / thiết bị tương ứng ở dạng:
Bus XXX Device YYY: ID VendorID:DeviceID
Đầu ra trên máy chủ của tôi như sau:
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
ID nhà cung cấp / thiết bị của ổ flash USB SanDisk của tôi là 0781: 5151.
Bây giờ chạy
usbip_bind_driver --list
root@server1:~# usbip_bind_driver --list
List USB devices
- busid 1-1 (0781:5151)
1-1:1.0 -> usb-storage
Như bạn thấy, ID nhà cung cấp / thiết bị của ổ flash USB SanDisk của tôi (0781: 5151) tương ứng với BusID 1-1. Chúng tôi cần điều này BUSID
để gắn thiết bị USB vào máy chủ:
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!
Thế là xong, giờ chúng ta có thể sử dụng ổ flash USB SanDisk trên máy khách usbip từ xa.
BTW, nếu bạn chạy ...
netstat -tap
... bạn sẽ thấy rằng daemon usbip đang nghe port 3240
vì vậy hãy chắc chắn rằng cổng này không bị chặn bởi tường lửa của bạn:
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
Cài đặt và sử dụng USB / IP trên máy khách
Chúng tôi cũng cần cài đặt usbip trên máy khách:
sudo apt-get install usbip
Sau đó, chúng tôi tải vhci-hcd
mô-đun hạt nhân:
modprobe vhci-hcd
Để kiểm tra xem nó có thực sự được tải không, hãy chạy:
root@client1:~# lsmod | grep vhci_hcd
vhci_hcd 19800 0
usbip_common_mod 13605 1 vhci_hcd
Để đảm bảo rằng mô-đun được tải tự động bất cứ khi nào bạn khởi động hệ thống, bạn có thể thêm nó vào /etc/modules
:
vi /etc/modules
[...]
vhci-hcd
Bây giờ kết nối với máy chủ usbip và nhận danh sách các thiết bị USB có sẵn:
usbip -l 192.168.0.100
(192.168.0.100 is the IP address of the usbip server.)
Bạn sẽ tìm thấy ổ flash USB SanDisk ở đầu ra (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)
Để gắn thiết bị đó vào máy khách, hãy chạy:
root@client1:~# usbip -a 192.168.0.100 1-1
8 ports available
port 0 attached
Bây giờ hãy chạy lsusb
và bạn sẽ tìm thấy thiết bị USB từ xa trong đầu ra trên máy khách:
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
Bây giờ bạn có thể sử dụng thiết bị USB từ xa như thể nó là một thiết bị USB cục bộ (ví dụ: gắn nó, định dạng, ghi vào nó, đọc mẫu, v.v.).
Tháo thiết bị USB từ xa
Một thiết bị USB từ xa có thể được tháo ra như sau:
khách hàng1:
Chạy...
usbip --port
... Để tìm ra cổng mà thiết bị USB từ xa sử dụng trên máy khách - trong trường hợp này là cổng 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>
Chúng tôi cần số cổng để tháo thiết bị:
usbip -d 00
root@client1:~# usbip -d 00
8 ports available
port 0 detached
Trên máy chủ, chúng tôi sử dụng BUSID (1-1)
để liên kết thiết bị USB với hệ thống cục bộ (công tắc - khác liên kết thiết bị với hệ thống cục bộ để thiết bị không còn khả dụng trên mạng nữa):
máy chủ 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!
Bây giờ hãy quay lại máy khách và kiểm tra xem thiết bị USB từ xa có còn không:
khách hàng1:
Nếu mọi việc suôn sẻ, nó không nên được liệt kê nữa:
root@client1:~# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Liên kết
http://usbip.sourceforge.net
Nguồn của hướng dẫn (Phía máy chủ)
Nguồn của hướng dẫn (Phía khách hàng)