Kazi ya kuunganisha kifaa cha USB kwenye PC ya mbali kupitia mtandao wa ndani hutokea mara kwa mara. Chini ya kukata, historia ya utaftaji wangu katika mwelekeo huu imewekwa, na njia ya suluhisho iliyotengenezwa tayari kulingana na mradi wa chanzo-wazi. na maelezo ya vizuizi vilivyowekwa kwa uangalifu na watu mbalimbali kwenye njia hii, na pia njia za kuvipita.
Sehemu ya kwanza, ya kihistoria
Ikiwa mashine ni ya kawaida - yote haya ni rahisi. Utendaji wa usambazaji wa USB kutoka kwa seva pangishi hadi kwa mashine pepe ulionekana katika VMWare 4.1. Lakini katika kesi yangu, ufunguo wa usalama, unaotambulika kama WIBU-KEY, ulipaswa kuunganishwa kwa nyakati tofauti kwa mashine tofauti, na sio tu za kawaida.
Mzunguko wa kwanza wa utafutaji katika mwaka wa 2009 wa mbali ulinipeleka kwenye kipande cha chuma kinachoitwa
Faida:
- wakati mwingine hata inafanya kazi
Minus:
- haifanyi kazi kila wakati. Tuseme ufunguo wa ulinzi wa Guardant Stealth II hauanzi kupitia, ukiapa kwa hitilafu "kifaa hakiwezi kuwashwa".
- Programu ya usimamizi (kusoma - kuweka na kuteremsha vifaa vya USB) ni ya kusikitisha sana. Swichi za mstari wa amri, otomatiki - hapana, hazijasikia. Kila kitu ni kwa mkono tu. Jinamizi.
- programu ya udhibiti hutafuta kipande cha chuma chenyewe kwenye mtandao kwa utangazaji, kwa hivyo hii inafanya kazi tu ndani ya sehemu moja ya mtandao wa utangazaji. Huwezi kutaja anwani ya IP ya kipande cha chuma kwa mkono. Kipande cha chuma kwenye subnet nyingine? Kisha una tatizo.
- watengenezaji walifunga kwenye kifaa, haina maana kutuma ripoti za hitilafu.
Mzunguko wa pili ulifanyika kwa nyakati sio mbali sana, na ulinipeleka kwenye mada ya kifungu hicho - . Huvutia kwa uwazi, haswa tangu wavulana kutoka alisaini dereva kwa ajili yao Windows, kwa hivyo sasa kila kitu hufanya kazi hata kwenye x64 bila suluhisho zozote kama vile hali ya majaribio. Shukrani kubwa kwa timu ya ReactOS kwa hilo! Yote yanasikika vizuri, hebu tujaribu ili tuone kama ni kweli. Kwa bahati mbaya, mradi wenyewe umeachwa, na usaidizi ni vigumu kupatikana—lakini bado tunaufanyia kazi, msimbo chanzo upo, tutaupata!
Sehemu ya pili, server-linux
Seva ya USB/IP inayoshiriki vifaa vya USB kupitia mtandao inaweza tu kusanidiwa ndani LinuxMfumo wa Uendeshaji unaotegemea. Naam, Linux ni Linux, kwa hivyo hebu tuisakinishe kwenye mashine pepe. Debian 8 katika usanidi wa chini kabisa, mwendo wa kawaida wa mkono:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install usbipTulia. Zaidi ya hayo, Mtandao unapendekeza kwamba utahitaji kupakua moduli ya usbip, lakini - hello, reki ya kwanza. Hakuna moduli kama hiyo. Na yote kwa sababu miongozo mingi kwenye mtandao inarejelea tawi la zamani 0.1.x, na katika 0.2.0 ya hivi karibuni moduli za usbip zina majina tofauti.
Kwa hivyo:
sudo modprobe usbip-core
sudo modprobe usbip-host
sudo lsmod | grep usbipKweli, wacha tuongeze mistari ifuatayo kwa /etc/modules ili kuzipakia kiatomati wakati wa kuanza kwa mfumo:
usbip-core
usbip-host
vhci-hcdWacha tuanze seva ya usbip:
sudo usbipd -DZaidi ya hayo, akili ya ulimwengu wote inatuambia kuwa usbip inakuja na hati zinazoturuhusu kudhibiti seva - onyesha ni kifaa gani itashiriki kwenye mtandao, angalia hali, na kadhalika. Hapa chombo kingine cha bustani kinatungoja - hati hizi katika tawi la 0.2.x, tena, zimebadilishwa jina. Unaweza kupata orodha ya amri na
sudo usbipBaada ya kusoma maelezo ya amri, inakuwa wazi kwamba ili kushiriki kifaa cha USB kinachohitajika, usbip inataka kujua Kitambulisho chake cha Basi. Wapenzi watazamaji, reki namba tatu iko uwanjani: Kitambulisho cha Basi kitakachotupa lsusb (inaweza kuonekana kuwa njia iliyo wazi zaidi) - haifai kwake! Ukweli ni kwamba usbip hupuuza vifaa kama vibanda vya USB. Kwa hivyo, tutatumia amri iliyojengwa:
user@usb-server:~$ sudo usbip list -l
- busid 1-1 (064f:0bd7)
WIBU-Systems AG : BOX/U (064f:0bd7)Kumbuka: hapa kwenye orodha nitaelezea kila kitu kwa kutumia mfano wa ufunguo wangu maalum wa USB. Jina la maunzi yako na jozi ya VID:PID inaweza na itatofautiana. Yangu inaitwa Wibu-Systems AG: BOX/U, VID 064F, PID 0BD7.
Sasa tunaweza kushiriki kifaa chetu:
user@usb-server:~$ sudo usbip bind --busid=1-1
usbip: info: bind device on busid 1-1: completeHurrah, wandugu!
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)Hongera tatu, wandugu! Seva ilishiriki kipande cha chuma kwenye mtandao, na tunaweza kuiunganisha! Inabakia tu kuongeza kianzio otomatiki cha daemon ya usbip kwa /etc/rc.local
usbipd -DSehemu ya tatu, upande wa mteja na utata
Unganisha kifaa kilichoshirikiwa kwenye mashine inayoendesha mtandao Debian Nilijaribu mara moja kwenye seva hiyo hiyo, na kila kitu kiliunganishwa kikamilifu:
sudo usbip attach --remote=localhost --busid=1-1Tuendelee kwenye WindowsKatika kesi yangu ilikuwa Windows Server Toleo la Kawaida la 2008R2. Mwongozo rasmi unauliza kusakinisha kiendeshi kwanza. Utaratibu umeelezewa vizuri katika readme iliyojumuishwa na mteja wa Windows; tulifuata maagizo na kila kitu kilifanya kazi vizuri. Pia inafanya kazi bila matatizo yoyote kwenye XP.
Baada ya kufungua mteja, tunajaribu kuweka ufunguo wetu:
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 deviceOh oh. Hitilafu fulani imetokea. Tunatumia ujuzi wa Google. Kuna maelezo mafupi kwamba kuna kitu kibaya na viboreshaji; katika sehemu ya seva, watengenezaji walibadilisha toleo la itifaki wakati wa kubadilisha toleo la 0.2.0, lakini walisahau kufanya hivi kwenye mteja wa Win. Suluhisho lililopendekezwa ni kubadilisha mara kwa mara katika msimbo wa chanzo na kujenga upya mteja.
Lakini sitaki kabisa kupakua Visual Studio kwa ajili ya utaratibu huu. Lakini nina Hiew nzuri ya zamani. Katika msimbo wa chanzo, mara kwa mara hutangazwa kama neno mbili. Wacha tuangalie faili 0x00000106, tukibadilisha na 0x00000111. Kumbuka, agizo la byte limebadilishwa. Matokeo ni mechi mbili, kiraka:
[usbip.exe]
00000CBC: 06 11
00000E0A: 06 11Eeeee... ndio!
C:Program FilesUSB-IP>usbip -a %server-ip% 1-1
new usb device attached to usbvbus port 1Hii inaweza kumaliza uwasilishaji, lakini muziki haukucheza kwa muda mrefu. Baada ya kuwasha tena seva, niligundua kuwa kifaa kwenye mteja hakijawekwa!
C:Program FilesUSB-IP>usbip -a %server-ip% 1-1
usbip err: usbip_windows.c: 829 (attach_device) cannot find deviceNa ndivyo ilivyo. Hata Google inayojua yote haikuweza kujibu hili. Wakati huo huo, amri ya kuonyesha vifaa vinavyopatikana kwenye seva inaonyesha kwa usahihi kabisa—hii hapa, ufunguo, unaweza kuuweka. Ninajaribu kuuweka kutoka chini Linux - Inafanya kazi! Na tukijaribu kutoka chini WindowsAh, hofu - inafanya kazi!
Tatizo la mwisho: kuna kitu kinakosekana katika msimbo wa seva. Wakati wa kushiriki kifaa, hakisomi idadi ya maelezo ya USB kutoka kwake. Na wakati wa kupachika kifaa kutoka chini Linux, uwanja huu umejazwa. Kwa bahati mbaya, huku maendeleo yakiwa chini ya Linux Ninaifahamu "make && make install." Kwa hivyo tatizo lilitatuliwa kwa udukuzi mchafu—kuiongeza kwenye /etc/rc.local
usbip attach --remote=localhost --busid=1-1
usbip port
usbip detach --port=00Sehemu ya mwisho
Baada ya kugombana kidogo, inafanya kazi. Matokeo yaliyohitajika yamepatikana, sasa ufunguo unaweza kuwekwa kwenye PC yoyote (na haijapunguzwa, bila shaka, pia), ikiwa ni pamoja na nje ya sehemu ya mtandao wa utangazaji. Ikiwa unataka, unaweza kuifanya kwa kutumia hati ya ganda. Nini ni nzuri - furaha ni bure kabisa.
Ninatumai kuwa uzoefu wangu utasaidia habrazhiteli kuzunguka tafuta ambayo ilichapishwa kwenye paji la uso wangu. Asante kwa umakini wako!
Chanzo: mapenzi.com
