A’ gleusadh USB/IP

Bidh an obair a bhith a’ ceangal inneal USB ri PC iomallach tro lìonra ionadail ag èirigh gu cunbhalach. Fon ghearradh, tha eachdraidh mo rannsachaidhean air an taobh seo air a mhìneachadh, agus an t-slighe gu fuasgladh deiseil stèidhichte air pròiseact stòr fosgailte USB/IP le tuairisgeul air na cnapan-starra a chuir diofar dhaoine air an t-slighe seo gu faiceallach, a bharrachd air dòighean air faighinn seachad orra.

Pàirt a h-aon, eachdraidheil

Ma tha an inneal mas-fhìor - tha seo uile furasta. Nochd comas-gnìomh gluasad USB bho òstair gu inneal brìgheil ann an VMWare 4.1. Ach anns a ’chùis agam, dh’ fheumadh an iuchair tèarainteachd, a tha aithnichte mar WIBU-KEY, a bhith ceangailte aig amannan eadar-dhealaichte ri diofar innealan, agus chan e a-mhàin feadhainn brìgheil.
Thug a’ chiad chuairt sgrùdaidh anns an 2009 fad às mi gu pìos iarainn ris an canar TrendNet TU2-NU4
Pros:

  • uaireannan bidh e eadhon ag obair

Cons:

  • chan eil e an-còmhnaidh ag obair. Osbarr nach tòisich iuchair dìon Guardant Stealth II troimhe, a’ mionnachadh leis a’ mhearachd “chan urrainnear an inneal a thòiseachadh”.
  • Tha bathar-bog riaghlaidh (leugh - a’ cur suas agus a’ cur suas innealan USB) foighidneach ris an fhìor cheann. Suidsichean loidhne-àithne, fèin-ghluasad - chan eil, cha chuala. Tha a h-uile dad dìreach le làimh. trom-laighe.
  • bidh am bathar-bog smachd a’ lorg am pìos iarainn fhèin san lìonra le bhith a’ craoladh, agus mar sin chan obraich seo ach taobh a-staigh aon roinn lìonra craolaidh. Chan urrainn dhut seòladh IP a’ phìos iarainn a shònrachadh le làimh. Pìos iarainn ann an subnet eile? An uairsin tha duilgheadas agad.
  • luchd-leasachaidh air an sgòradh air an inneal, tha e gun fheum aithisgean bug a chuir.

Thachair an dàrna cuairt aig amannan nach robh cho fada air falbh, agus thug e mi gu cuspair an artaigil - Pròiseact USB / IP. A 'tàladh le fosgarrachd, gu h-àraidh bhon a tha na balaich bho ReactOS chuir iad ainm ri draibhear airson Windows, agus mar sin a-nis tha a h-uile dad ag obair eadhon air x64 às aonais crutches sam bith mar mhodh deuchainn. Airson mòran taing don sgioba ReactOS! Tha a h-uile dad a’ faireachdainn breagha, feuchaidh sinn ri faireachdainn, a bheil e dha-rìribh mar sin? Gu mì-fhortanach, tha am pròiseact fhèin air a thrèigsinn cuideachd, agus chan urrainn dhut cunntadh air taic - ach far nach deach am fear againn à sealladh, tha an stòr ann, nì sinn a-mach e!

Pàirt a dhà, server-linux

Chan urrainnear frithealaiche USB/IP a bhios a’ roinn innealan USB thairis air lìonra a stèidheachadh ach air OS stèidhichte air Linux. Uill, is e Linux Linux, mar sin stàlaich air inneal brìgheil Debian 8 anns an rèiteachadh as ìsle, gluasad làimhe àbhaisteach:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install usbip

Suidhich. Nas fhaide, tha an eadar-lìon a 'moladh gum feumadh tu am modal usbip a luchdachadh sìos, ach - hello, a' chiad ràcan. Chan eil modal mar sin ann. Agus a h-uile càil leis gu bheil a ’mhòr-chuid de na leabhraichean-làimhe air an lìonra a’ toirt iomradh air a ’mheur as sine 0.1.x, agus anns an 0.2.0 as ùire tha ainmean eadar-dhealaichte aig na modalan usbip.

Mar sin:

sudo modprobe usbip-core
sudo modprobe usbip-host
sudo lsmod | grep usbip

Uill, cuiridh sinn na loidhnichean a leanas ri /etc/modules gus an luchdachadh gu fèin-ghluasadach aig toiseach tòiseachaidh an t-siostaim:

usbip-core
usbip-host
vhci-hcd

Feuch an tòisich sinn am frithealaiche usbip:

sudo usbipd -D

A bharrachd air an sin, tha an inntinn uile-choitcheann ag innse dhuinn gu bheil usbip a ’tighinn le sgriobtaichean a leigeas leinn an frithealaiche a riaghladh - seall dè an inneal a bhios e a’ roinn thairis air an lìonra, faic an inbhe, agus mar sin air adhart. An seo tha inneal gàrraidh eile a 'feitheamh oirnn - tha na sgriobtaichean sin anns a' mheur 0.2.x, a-rithist, air an ath-ainmeachadh. Gheibh thu liosta òrdughan le

sudo usbip

Às deidh dhut an tuairisgeul air na h-òrdughan a leughadh, bidh e soilleir, gus an inneal USB a tha a dhìth a cho-roinn, gu bheil usbip ag iarraidh fios a bhith agad air an ID Bus aige. A luchd-amhairc, tha rake àireamh a trì san raon: an ID Bus a bheir dhuinn lsusb (bhiodh e coltach gur e an dòigh as fhollaisiche) - chan eil e freagarrach dhi! Is e an fhìrinn gu bheil usbip a’ seachnadh bathar-cruaidh mar mòr-ionadan USB. Mar sin, cleachdaidh sinn an àithne togte:

user@usb-server:~$ sudo usbip list -l
 - busid 1-1 (064f:0bd7)
   WIBU-Systems AG : BOX/U (064f:0bd7)

Thoir an aire: an seo anns na liostaichean bheir mi cunntas air a h-uile càil a’ cleachdadh an eisimpleir den iuchair USB shònraichte agam. Faodaidh agus bidh an t-ainm bathar-cruaidh agad agus paidhir VID:PID eadar-dhealaichte. Canar Wibu-Systems AG ris a’ mhèinn: BOX/U, VID 064F, PID 0BD7.

A-nis is urrainn dhuinn an inneal againn a cho-roinn:

user@usb-server:~$ sudo usbip bind --busid=1-1
usbip: info: bind device on busid 1-1: complete

Hurrah, a chompanaich!

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)

Triùir aoibhneis, a chompanaich! Roinn an frithealaiche am pìos iarainn thairis air an lìonra, agus is urrainn dhuinn a cheangal! Chan eil air fhàgail ach tòiseachadh fèin-ghluasadach an daemon usbip a chur ri /etc/rc.local

usbipd -D

Pàirt a trì, taobh teachdaiche agus troimh-chèile

Dh’ fheuch mi ris an inneal co-roinnte a cheangal thairis air an lìonra ri inneal Debian anns a’ bhad air an aon fhrithealaiche, agus bha a h-uile càil ceangailte gu math:

sudo usbip attach --remote=localhost --busid=1-1

Gluaisidh sinn air adhart gu Windows. Anns a 'chùis agam b' e Windows Server 2008R2 Standard Edition a bh 'ann. Tha an iùl oifigeil ag iarraidh ort an dràibhear a stàladh an toiseach. Tha an dòigh-obrach air a mhìneachadh gu foirfe anns an readme a tha ceangailte ris an neach-dèiligidh windows, bidh sinn a’ dèanamh a h-uile càil mar a tha e sgrìobhte, bidh a h-uile dad ag obair a-mach. Air XP bidh e cuideachd ag obair gun duilgheadas sam bith.

Às deidh dhuinn an neach-dèiligidh a dhì-phapadh, feuchaidh sinn ris an iuchair againn a chuir suas:

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

Ach oh. Chaidh rudeigin ceàrr. Bidh sinn a’ cleachdadh sgil Google. Tha iomraidhean criomagach ann gu bheil rudeigin ceàrr air na cunntasan; ann am pàirt an fhrithealaiche, dh’ atharraich an luchd-leasachaidh an dreach protocol nuair a thionndaidh iad gu dreach 0.2.0, ach dhìochuimhnich iad seo a dhèanamh anns a’ chleachdaiche Win. Is e am fuasgladh a thathar a’ moladh an seasmhach atharrachadh sa chòd stòr agus an neach-dèiligidh ath-thogail.

Ach chan eil mi dha-rìribh ag iarraidh Visual Studio a luchdachadh sìos air sgàth a’ mhodh-obrach seo. Ach tha seann Hiew math agam. Anns a’ chòd stòr, tha an seasmhach air ainmeachadh mar fhacal dùbailte. Nach seall sinn san fhaidhle airson 0x00000106, a’ cur 0x00000111 na àite. Cuimhnich, tha òrdugh byte air a thionndadh air ais. Is e an toradh dà gheama, paiste:

[usbip.exe]
00000CBC: 06 11
00000E0A: 06 11

Eeeee... tha!

C:Program FilesUSB-IP>usbip -a %server-ip% 1-1
new usb device attached to usbvbus port 1

Dh’ fhaodadh seo a bhith air crìoch a chuir air an taisbeanadh, ach cha do chluich an ceòl fada. Às deidh dhomh an t-seirbheisiche ath-thòiseachadh, lorg mi nach eil an inneal air an neach-dèiligidh air a chuir suas!

C:Program FilesUSB-IP>usbip -a %server-ip% 1-1
usbip err: usbip_windows.c: 829 (attach_device) cannot find device

Agus sin agad e. Cha b’ urrainn eadhon Google a bha eòlach air seo a fhreagairt dhòmhsa. Agus aig an aon àm, tha an àithne airson na h-innealan a tha rim faighinn air an fhrithealaiche a thaisbeanadh gu ceart a’ nochdadh - seo e, an iuchair, is urrainn dhut a chuir suas. Feuchaidh mi ri sreap bho fo Linux - tha e ag obair! Agus ma tha thu a-nis feuch bho fo Windows? O shit - tha e ag obair!

An ràcan mu dheireadh: chan eil rudeigin air a chur ris ann an còd an fhrithealaiche. Nuair a bhios tu a’ roinneadh inneal, cha leugh e an àireamh de thuairisgeulan USB bhuaithe. Agus nuair a thèid an inneal a chuir suas bho Linux, tha an raon seo air a lìonadh. Gu mì-fhortanach, tha mi eòlach air leasachadh fo Linux aig an ìre “dèan && dèan stàladh”. Mar sin, tha an duilgheadas air fhuasgladh le hack caran salach - a’ cur ri /etc/rc.local

usbip attach --remote=localhost --busid=1-1
usbip port
usbip detach --port=00

Pàirt dheireannach

Às deidh beagan fìdhlearachd, bidh e ag obair. Chaidh an toradh a tha thu ag iarraidh fhaighinn, a-nis faodar an iuchair a chuir suas gu PC sam bith (agus gun a bhith air a chuir suas, gu dearbh, cuideachd), a’ toirt a-steach an fheadhainn taobh a-muigh roinn an lìonra craolaidh. Ma tha thu ag iarraidh, faodaidh tu a dhèanamh le bhith a’ cleachdadh sgriobt shligean. Dè tha math - tha an toileachas gu tur an-asgaidh.
Tha mi an dòchas gun cuidich an t-eòlas agam habrazhiteli gus faighinn timcheall air an ràcan a chuir a-steach air mo bheulaibh. Tapadh leibh airson an aire agad!

Source: www.habr.com

Cuir beachd ann