========== 有較新的修訂版,如有需要請參考 ==========
測試的結論先整理一下,免得有人像筆者一樣,試了半天才發現不合需求,而浪費時間。
- 目前的版本兩台電腦都需以 root 權限設定,才可順利重導 USB 裝置。
- 目前的版本只能『一對一重導』,尚不能『一對多分享』。
- USB 裝置所在電腦或稱為 Server(伺服器),接收重導那台稱為 Client(客戶端)。
- Client 端電腦若為「圖型化桌面環境」,重導後會『自動掛載』該 USB 裝置。
一、安裝 RPM Fusion 套件資料庫
這個 USB/IP 套件是收錄在 RPM Fusion - Free 這個套件資料庫,要先安裝它才可以繼續下面的步驟。詳細說明請參閱前文〝Fedora 一定要加裝的套件資料庫 – RPM Fusion〞,不在此贅述。二、安裝 USB/IP 及相關套件
無論是 USB/IP 的伺服器或客戶端都要安裝這些套件,安裝前先切換到 Root 權限,命令為:[root@Celeron-D ~]# yum install usbip kmod-staging另外,會再加裝幾個關聯套件:staging-kmod-addons 和 kmod-staging-xxxx。其中,xxxx 為 Linux 核心的版本。
三、USB/IP 伺服器的設定
安裝、啟動的步驟很簡單,[root@Core-i7 ~]# modprobe usbip-core前兩個命令是載入 USB/IP 伺服器所需的「核心模組」,第三個命令是啟動 USB/IP 伺服器,其中的參數為:限制使用 IPv4 及背景執行。若有開啟「防火牆」,記得要打個洞 TCP/3240,詳細步驟請參考前文〝Fedora 18 的「防火牆」設定(一):開「通訊埠」〞。
[root@Core-i7 ~]# modprobe usbip-host
[root@Core-i7 ~]# usbipd -4 -D
先用命令查詢一下在伺服器上,有哪些 USB 裝置可以被『重導』,
[root@Core-i7 ~]# usbip list -local假設欲設將『隨身碟(Flash Drive)』重導至客戶端,記住它的 BUS ID,上例中為 2-1.2。
- busid 1-1.1 (0cf3:3005)
Atheros Communications, Inc. : AR3011 Bluetooth (0cf3:3005)
- busid 1-1.2 (058f:a014)
Alcor Micro Corp. : Asus Integrated Webcam (058f:a014)
- busid 2-1.2 (058f:6387)
Alcor Micro Corp. : Flash Drive (058f:6387)
再將查詢所得的 BUS ID 告知 USB/IP 伺服器程式。
[root@Core-i7 ~]# usbip bind --busid=2-1.2最後出現『 complete 』表示重導功能已設定成功。
usbip: info: bind device on busid 2-1.2: complete
註:完成 USB/IP 伺服器的設定後,若這個隨身碟有掛載在這部電腦,將被『卸載』。
四、USB/IP 客戶端的設定
USB/IP 客戶端也要加載「核心模組」,命令如下:[root@Celeron-D ~]# modprobe usbip-core接著,可以開始進行『接收重導』的操作。
[root@Celeron-D ~]# modprobe vhci-hcd.ko
進行前,先查詢一下目前的 USB 裝置列表,
[root@Celeron-D ~]# usbip list -local由查詢結果可以看到,這些 USB 裝置都是客戶端電腦的 USB 裝置。
Local USB devices
=================
- busid 2-1 (03ee:641f)
Mitsumi : WIF-0402C Bluetooth Adapter (03ee:641f)
2-1:1.0 -> btusb
2-1:1.1 -> btusb
- busid 3-1 (0458:0003)
KYE Systems Corp. (Mouse Systems) : Genius NetScroll+ (0458:0003)
3-1:1.0 -> usbhid
用另一個命令確認一下,查詢目前被重導的 USB 裝置的接收情形,
[root@Celeron-D ~]# usbip port可以看到查詢結果,沒有接收到任何被重導的 USB 裝置。
Imported USB devices
====================
再進行接收前,先看看被伺服器重導出來的 USB 裝置有哪些?
[root@Celeron-D ~]# usbip list --remote=192.168.10.17上例中,伺服器的網路位址(IP)為 192.168.10.17。確定是要接收的 USB 裝置,就可繼續進行下面的操作。
Exportable USB devices
======================
- 192.168.10.17
2-1.2: Alcor Micro Corp. : Flash Drive (058f:6387)
: /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2
: (Defined at Interface level) (00/00/00)
接著,將被伺服器重導的 USB 裝置,與客戶端的 USB/IP 模組連結(即:接收『被重導』的 USB 裝置)。
[root@Celeron-D ~]# usbip attach --remote=192.168.10.17 --busid=2-1.2上例中,「192.168.10.17」是伺服器的網路位址,「2-1.2」是被伺服器所重導的 USB 裝置的 BUS ID。
查詢並確認在客戶端的 USB 裝置,
[root@Celeron-D ~]# usbip list --local可以看到被重導的裝置,已經列出來了(最後一項)。而 BUS ID 也被改成客戶端的編號,上例中為「5-1」。
Local USB devices
=================
- busid 2-1 (03ee:641f)
Mitsumi : WIF-0402C Bluetooth Adapter (03ee:641f)
2-1:1.0 -> btusb
2-1:1.1 -> btusb
- busid 3-1 (0458:0003)
KYE Systems Corp. (Mouse Systems) : Genius NetScroll+ (0458:0003)
3-1:1.0 -> usbhid
- busid 5-1 (058f:6387)
Alcor Micro Corp. : Flash Drive (058f:6387)
5-1:1.0 -> usb-storage
用另一個命令再確認一次,查詢目前被重導的 USB 裝置的接收情形,
[root@Celeron-D ~]# usbip port由查詢結果可以看,被伺服器所重導的 USB 裝置,已經被客戶端所接收了。上例中的結果顯示出重導的 USB 裝置的各項參數,其中「Port 00」是該 USB 裝置在 USB/IP 核心模組中的埠號,等一下將 USB 裝置歸建時需要用它。
Imported USB devices
====================
Port 00: <Port in Use> at High Speed(480Mbps)
unknown vendor : unknown product (058f:6387)
5-1 -> usbip://192.168.10.17:3240/2-1.2
-> remote bus/dev 002/004
最後,當不再使用這個 USB 裝置時,要將它歸建,將使用權交還 USB/IP 伺服器。
[root@Celeron-D ~]# usbip detach --port=0上例中,「0」是命令「usbip port」查詢結果中,該 USB 裝置在 USB/IP 核心模組中的埠號。
註:完成重導 USB 裝置的歸建操作後,若這個隨身碟有掛載在客戶端電腦,將被『卸載』。
已測試版本:
- Fedora: 19, 20
沒有留言:
張貼留言
感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)