Ang tahas sa pagkonektar sa usa ka USB device sa usa ka hilit nga PC pinaagi sa usa ka lokal nga network kanunay nga mitungha. Ubos sa pagputol, ang kasaysayan sa akong mga pagpangita niini nga direksyon gitakda, ug ang dalan sa usa ka andam nga solusyon nga gibase sa usa ka open-source nga proyekto
Unang bahin, makasaysayanon
Kung ang makina virtual - kining tanan sayon. Ang pagpaandar sa USB forwarding gikan sa usa ka host ngadto sa usa ka virtual machine nagpakita sa VMWare 4.1. Apan sa akong kaso, ang yawe sa seguridad, nga mailhan nga WIBU-KEY, kinahanglan nga konektado sa lainlaing mga oras sa lainlaing mga makina, ug dili lamang mga virtual.
Ang unang hugna sa pagpangita sa layo nga 2009 nagdala kanako ngadto sa usa ka piraso sa puthaw nga gitawag
Mga Pro:
- usahay mutrabaho pa gani
Kahinumduman:
- dili sa kanunay molihok. Ibutang ta nga ang Guardant Stealth II nga yawe sa pagpanalipod dili magsugod pinaagi niini, nga nanumpa nga adunay sayup nga "ang aparato dili masugdan".
- Ang software sa pagdumala (pagbasa - pag-mount ug pag-unmount sa mga USB device) makalolooy sa hilabihan. Ang mga switch sa command line, automation - wala, wala makadungog. Ang tanan pinaagi lang sa kamot. Nightmare.
- ang control software nangita sa piraso sa puthaw mismo sa network pinaagi sa pagsibya, mao nga kini molihok lamang sulod sa usa ka bahin sa broadcast network. Dili nimo matino ang IP address sa piraso sa puthaw pinaagi sa kamot. Usa ka piraso sa puthaw sa ubang subnet? Unya naa kay problema.
- ang mga nag-develop nakapuntos sa aparato, walaβy kapuslanan ang pagpadala mga taho sa bug.
Ang ikaduhang hugna nahitabo sa mga panahon nga dili kaayo layo, ug nagdala kanako sa hilisgutan sa artikulo -
Ikaduha nga bahin, server-linux
Ang USB/IP server nga nag-ambit sa mga USB device sa usa ka network mahimo lang i-set up sa Linux-based OS. Aw, Linux ang Linux, busa i-install sa Debian 8 virtual machine sa minimum nga pagsumpo, standard nga paglihok sa kamot:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install usbip
Nahusay. Dugang pa, ang Internet nagsugyot nga kinahanglan nimo nga i-download ang usbip module, apan - hello, ang una nga rake. Walay ingon nga module. Ug ang tanan tungod kay kadaghanan sa mga manwal sa network nagtumong sa mas karaan nga sanga nga 0.1.x, ug sa pinakabag-o nga 0.2.0 ang usbip modules adunay lain-laing mga ngalan.
Busa:
sudo modprobe usbip-core
sudo modprobe usbip-host
sudo lsmod | grep usbip
Aw, atong idugang ang mosunod nga mga linya sa /etc/modules aron awtomatik nga ma-load kini sa pagsugod sa sistema:
usbip-core
usbip-host
vhci-hcd
Atong sugdan ang usbip server:
sudo usbipd -D
Dugang pa, ang unibersal nga hunahuna nagsulti kanamo nga ang usbip adunay mga script nga nagtugot kanamo sa pagdumala sa server - ipakita kung unsang aparato ang ipaambit niini sa network, tan-awa ang kahimtang, ug uban pa. Dinhi ang laing himan sa tanaman nagpaabot kanamo - kini nga mga script sa 0.2.x nga sanga, pag-usab, giilisan ang ngalan. Makuha nimo ang usa ka lista sa mga mando nga adunay
sudo usbip
Human mabasa ang paghulagway sa mga sugo, kini nahimong tin-aw nga aron sa pagpakigbahin sa gikinahanglan nga USB device, usbip gusto nga masayud sa iyang Bus ID. Minahal nga mga tumatan-aw, ang rake number three naa sa arena: ang Bus ID nga maghatag kanamo lsusb (Kini daw ang labing klaro nga paagi) - dili kini angay kaniya! Ang kamatuoran mao nga ang usbip wala magtagad sa hardware sama sa USB hubs. Busa, atong gamiton ang built-in nga sugo:
user@usb-server:~$ sudo usbip list -l
- busid 1-1 (064f:0bd7)
WIBU-Systems AG : BOX/U (064f:0bd7)
Hinumdomi: pagkahuman niini sa mga lista akong ihulagway ang tanan gamit ang pananglitan sa akong piho nga USB key. Ang imong ngalan sa hardware ug VID:PID nga pares mahimo ug magkalainlain. Ang akoa gitawag og Wibu-Systems AG: BOX/U, VID 064F, PID 0BD7.
Karon mahimo na namon ipaambit ang among aparato:
user@usb-server:~$ sudo usbip bind --busid=1-1
usbip: info: bind device on busid 1-1: complete
Hurrah, mga kauban!
user@usb-server:~$ sudo usbip list -r localhost
Exportable USB devices
======================
- localhost
1-1: WIBU-Systems AG : BOX/U (064f:0bd7)
: /sys/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb1/1-1
: Vendor Specific Class / unknown subclass / unknown protocol (ff/00/ff)
Tulo ka kalipay, mga kauban! Gipaambit sa server ang piraso sa puthaw sa network, ug makonektar namo kini! Nagpabilin lamang nga idugang ang autostart sa usbip daemon sa /etc/rc.local
usbipd -D
Ikatulo nga bahin, bahin sa kliyente ug makalibog
Gisulayan nako ang pagkonekta sa gipaambit nga aparato sa network sa usa ka makina nga Debian dayon sa parehas nga server, ug maayo ang tanan nga konektado:
sudo usbip attach --remote=localhost --busid=1-1
Mopadayon kita sa Windows. Sa akong kaso kini Windows Server 2008R2 Standard Edition. Gihangyo ka sa opisyal nga giya nga i-install una ang drayber. Ang pamaagi hingpit nga gihulagway sa readme nga gilakip sa windows client, gibuhat namo ang tanan sumala sa nahisulat, ang tanan nagtrabaho. Sa XP nagtrabaho usab kini nga walaβy mga problema.
Pagkahuman sa pag-unpack sa kliyente, gisulayan namon nga i-mount ang among yawe:
C:Program FilesUSB-IP>usbip -a %server-ip% 1-1
usbip err: usbip_network.c: 121 (usbip_recv_op_common) recv op_common, -1
usbip err: usbip_windows.c: 756 (query_interface0) recv op_common
usbip err: usbip_windows.c: 829 (attach_device) cannot find device
Oh oh. Naay nahitabo. Gigamit namo ang kahanas sa Google. Adunay mga tipik nga naghisgot nga adunay usa ka butang nga sayup sa mga makanunayon; sa bahin sa server, gibag-o sa mga developer ang bersyon sa protocol kung nagbalhin sa bersyon 0.2.0, apan nakalimot sila nga buhaton kini sa kliyente nga Win. Ang gisugyot nga solusyon mao ang pagbag-o sa kanunay sa source code ug pagtukod pag-usab sa kliyente.
Apan dili gyud ko gusto nga i-download ang Visual Studio alang sa kini nga pamaagi. Apan ako adunay usa ka maayo nga tigulang nga Hiew. Sa source code, ang makanunayon gideklarar nga doble nga pulong. Atong tan-awon ang file alang sa 0x00000106, ilisan kini sa 0x00000111. Hinumdomi, ang byte order gibali. Ang resulta mao ang duha ka posporo, patch:
[usbip.exe]
00000CBC: 06 11
00000E0A: 06 11
Eeeee... oo nga!
C:Program FilesUSB-IP>usbip -a %server-ip% 1-1
new usb device attached to usbvbus port 1
Mahimong tapuson niini ang presentasyon, apan ang musika wala magdugay. Human sa pag-reboot sa server, akong nakita nga ang device sa kliyente wala ma-mount!
C:Program FilesUSB-IP>usbip -a %server-ip% 1-1
usbip err: usbip_windows.c: 829 (attach_device) cannot find device
Ug mao na. Bisan ang tanan nga nahibal-an sa Google dili makatubag niini alang kanako. Ug sa parehas nga oras, ang mando nga ipakita ang mga aparato nga magamit sa server nga husto nga gipakita - ania kini, ang yawe, mahimo nimo kini i-mount. Gisulayan nako ang pag-mount gikan sa ilawom sa Linux - kini molihok! Ug kung karon sulayan gikan sa ilawom sa Windows? Oh shit - kini molihok!
Ang katapusan nga rake: adunay wala gidugang sa code sa server. Kung nagpaambit sa usa ka aparato, wala kini mabasa ang gidaghanon sa mga USB descriptor gikan niini. Ug kung gi-mount ang aparato gikan sa ilawom sa Linux, kini nga uma napuno. Ikasubo, pamilyar ako sa pag-uswag ubos sa Linux sa lebel sa "make && make install". Busa, ang problema masulbad sa usa ka medyo hugaw nga hack - pagdugang sa /etc/rc.local
usbip attach --remote=localhost --busid=1-1
usbip port
usbip detach --port=00
Katapusan nga bahin
Human sa pipila ka paglitok, kini molihok. Nakuha na ang gitinguha nga resulta, karon ang yawe mahimong ma-mount sa bisan unsang PC (ug dili ma-mount, siyempre, usab), lakip ang gawas sa bahin sa broadcast network. Kung gusto nimo, mahimo nimo kini gamit ang script sa shell. Unsa ang nindot - ang kalipay hingpit nga libre.
Nanghinaut ko nga ang akong kasinatian makatabang sa habrazhiteli sa paglibot sa rake nga gipatik sa akong agtang. Salamat sa imong pagtagad!
Source: www.habr.com