Омода кардани USB/IP

Вазифаи пайваст кардани дастгоҳи USB ба компютери дурдаст тавассути шабакаи маҳаллӣ мунтазам ба миён меояд. Дар доираи бурида, таърихи ҷустуҷӯҳои ман дар ин самт муайян карда шудааст ва роҳи ҳалли омода дар асоси лоиҳаи кушодаасос USB/IP бо тавсифи монеахое, ки одамони гуногун дар ин рох бодиккат гузоштаанд, инчунин роххои рафъи онхо.

Қисми якум, таърихӣ

Агар мошин виртуалӣ бошад - ҳамаи ин осон аст. Функсияи интиқоли USB аз ҳост ба мошини виртуалӣ дар VMWare 4.1 пайдо шуд. Аммо дар ҳолати ман, калиди амниятӣ, ки ҳамчун WIBU-KEY шинохта мешавад, бояд дар вақтҳои гуногун ба мошинҳои гуногун пайваст карда мешуд, на танҳо виртуалӣ.
Даври аввали ҷустуҷӯ дар дури 2009 маро ба як пораи оҳан бурд TrendNet TU2-NU4
Тарафдор:

  • баъзан ҳатто кор мекунад

Эзоҳ:

  • на хамеша кор мекунад. Фарз мекунем, ки калиди муҳофизатии Guardant Stealth II тавассути он оғоз намешавад ва қасам хӯрдан бо хатогии "дастгоҳро оғоз кардан мумкин нест".
  • Нармафзори идоракунӣ (хондан - васлкунӣ ва ҷудо кардани дастгоҳҳои USB) то ҳадде ғамгин аст. Гузаришҳои сатри фармон, автоматика - не, нашунидам. Ҳама чиз танҳо дастӣ аст. Кобус.
  • нармафзори назоратӣ пораи оҳанро дар шабака тавассути пахш ҷустуҷӯ мекунад, бинобар ин ин танҳо дар як сегменти шабакаи пахш кор мекунад. Шумо наметавонед суроғаи IP-и пораи оҳанро дастӣ муайян кунед. Як пораи оҳан дар зершабакаи дигар? Пас шумо мушкилот доред.
  • таҳиягарон дар дастгоҳ хол гирифтаанд, фиристодани гузоришҳои хатогӣ бефоида аст.

Даври дуюм дар замонҳои на он қадар дур рӯй дод ва маро ба мавзӯи мақола бурд - Лоиҳаи USB/IP. Бо ошкоро ҷалб мекунад, махсусан аз бачаҳо аз ReactOS онҳо ба як драйвер барои Windows имзо гузоштанд, аз ин рӯ ҳама чиз ҳатто дар x64 бе ягон асобача мисли ҳолати санҷишӣ кор мекунад. Барои он ташаккури зиёд ба дастаи ReactOS! Ҳама чиз зебо садо медиҳад, биёед кӯшиш кунем, ки онро ҳис кунем, оё ин дар ҳақиқат чунин аст? Мутаассифона, худи лоиҳа низ партофта шудааст ва шумо наметавонед ба дастгирӣ такя кунед - аммо дар он ҷое, ки мо аз байн нарафтем, манбаъ он ҷост, мо онро мефаҳмем!

Қисми дуюм, сервер-linux

Сервери USB/IP, ки дастгоҳҳои USB-ро тавассути шабака мубодила мекунад, метавонад танҳо дар OS-и Linux асосёфта насб карда шавад. Хуб, Linux Linux аст, мо Debian 8-ро дар мошини виртуалӣ бо конфигуратсияи ҳадди ақал, ҳаракати стандартии дастӣ насб мекунем:

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

Ҳалли. Ғайр аз он, Интернет пешниҳод мекунад, ки шумо бояд модули usbip-ро зеркашӣ кунед, аммо - салом, раке аввал. Чунин модул вуҷуд надорад. Ва ҳама аз он сабаб, ки аксари дастурҳо дар шабака ба филиали кӯҳнаи 0.1.x ишора мекунанд ва дар охирин 0.2.0 модулҳои usbip номҳои гуногун доранд.

Аз ин рӯ,

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

Хуб, биёед сатрҳои зеринро ба /etc/modules илова кунем, то онҳо ҳангоми оғози система ба таври худкор бор кунанд:

usbip-core
usbip-host
vhci-hcd

Биёед сервери usbip-ро оғоз кунем:

sudo usbipd -D

Ғайр аз он, тафаккури универсалӣ ба мо мегӯяд, ки usbip бо скриптҳое меояд, ки ба мо имкон медиҳанд серверро идора кунем - нишон диҳед, ки кадом дастгоҳро тавассути шабака мубодила мекунад, вазъиятро бубинед ва ғайра. Дар ин ҷо моро боз як асбоби боғӣ интизор аст - ин скриптҳо дар шохаи 0.2.x, боз номгузорӣ шудаанд. Шумо метавонед рӯйхати фармонҳоро бо

sudo usbip

Пас аз хондани тавсифи фармонҳо маълум мешавад, ки барои мубодилаи дастгоҳи зарурии USB, usbip мехоҳад ID-и автобуси худро бидонад. Тамошобинони мӯҳтарам, ракеи рақами сеюм дар майдон аст: ID-и автобус, ки ба мо медиҳад лусб (ин роҳи возеҳтарин ба назар мерасад) - ин ба вай мувофиқ нест! Далели он аст, ки usbip сахтафзорро ба мисли USB hub нодида мегирад. Аз ин рӯ, мо фармони дарунсохтро истифода мебарем:

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

Эзоҳ: минбаъд дар рӯйхатҳо ман ҳама чизро бо истифода аз мисоли калиди махсуси USB-и худ тавсиф мекунам. Номи сахтафзори шумо ва ҷуфти VID:PID метавонанд фарқ кунанд ва хоҳанд буд. Мина Wibu-Systems AG номида мешавад: BOX/U, VID 064F, PID 0BD7.

Акнун мо метавонем дастгоҳи худро мубодила кунем:

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

Ура, рафикон!

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)

Се муборак, рафикон! Сервер пораи оҳанро тавассути шабака мубодила кард ва мо метавонем онро пайваст кунем! Танҳо барои илова кардани худкори демони usbip ба /etc/rc.local боқӣ мемонад

usbipd -D

Қисми сеюм, тарафи муштарӣ ва печида

Ман кӯшиш кардам, ки дастгоҳи муштаракро тавассути шабака ба мошини Debian дар ҳамон сервер пайваст кунам ва ҳама чиз хуб пайваст шуд:

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

Биёед ба Windows гузарем. Дар ҳолати ман он Windows Server 2008R2 Standard Edition буд. Дастури расмӣ аз шумо хоҳиш мекунад, ки аввал драйверро насб кунед. Тартиб дар Readme ба муштарии Windows замимашуда ба таври комил тавсиф шудааст, мо ҳама чизро тавре ки навишта шудааст, иҷро мекунем, ҳама чиз кор мекунад. Дар XP он низ бе ягон мушкилот кор мекунад.

Пас аз кушодани муштарӣ, мо кӯшиш мекунем калиди худро насб кунем:

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

Оҳ оҳ. Чизе хато кард. Мо маҳорати Google-ро истифода мебарем. Дар бораи он, ки дар константаҳо чизе нодуруст аст, қайд карда мешавад; дар қисми сервер, таҳиягарон ҳангоми гузаштан ба версияи 0.2.0 версияи протоколро иваз карданд, аммо онҳо инро дар муштарии Win фаромӯш карданд. Ҳалли пешниҳодшуда тағир додани константа дар коди сарчашма ва аз нав сохтани муштарӣ мебошад.

Аммо ман аслан намехоҳам Visual Studio-ро ба хотири ин тартиб зеркашӣ кунам. Аммо ман як Ҳюи хубе дорам. Дар коди ибтидоӣ, доимӣ ҳамчун калимаи дугона эълон карда мешавад. Биёед ба файли 0x00000106 назар кунем ва онро бо 0x00000111 иваз кунем. Дар хотир доред, ки тартиби байт баръакс аст. Дар натиҷа ду бозӣ, патч:

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

Эээ... ҳа!

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

Ин метавонист презентатсияро ба охир расонад, аммо мусиқӣ муддати тӯлонӣ навохта нашуд. Пас аз бозоғоз кардани сервер, ман фаҳмидам, ки дастгоҳ дар мизоҷ насб нашудааст!

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

Ва тамом. Ҳатто Google-и ҳама огоҳ наметавонад ба ин барои ман ҷавоб диҳад. Ва дар айни замон, фармони намоиш додани дастгоҳҳои дар сервер мавҷудбуда комилан дуруст нишон медиҳад - ин ҷо калид аст, шумо метавонед онро насб кунед. Ман кӯшиш мекунам, ки аз зери Linux насб кунам - он кор мекунад! Ва агар ҳоло аз зери Windows кӯшиш кунед? Оҳ, ин кор мекунад!

Ракеи охирин: дар коди сервер чизе илова карда нашудааст. Ҳангоми мубодилаи дастгоҳ, он шумораи тасвирҳои USB-ро аз он намехонад. Ва ҳангоми насб кардани дастгоҳ аз зери Linux, ин майдон пур карда мешавад. Мутаассифона, ман бо таҳияи Linux дар сатҳи "сохта ва насб кардан" шинос ҳастам. Аз ин рӯ, мушкилот бо як хаки хеле ифлос ҳал карда мешавад - илова ба /etc/rc.local

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

Қисми ниҳоӣ

Пас аз чанд скрипка, он кор мекунад. Натиҷаи дилхоҳ ба даст оварда шуд, акнун калидро метавон ба ҳама гуна компютер васл кард (ва албатта, васлнашуда низ), аз ҷумла берун аз сегменти шабакаи пахш. Агар шумо хоҳед, шумо метавонед онро бо истифода аз скрипти shell иҷро кунед. Чӣ хуб аст - лаззат комилан ройгон аст.
Умедворам, ки таҷрибаи ман ба habrazhiteli кӯмак мекунад, ки дар атрофи раке, ки дар пешонии ман навишта шудааст, ба даст оранд. Ба диққататон ташаккур!

Манбаъ: will.com

Илова Эзоҳ