யூ.எஸ்.பி/ஐ.பி

உள்ளூர் நெட்வொர்க் வழியாக USB சாதனத்தை தொலை கணினியுடன் இணைக்கும் பணி தொடர்ந்து எழுகிறது. வெட்டுக்கு கீழ், இந்த திசையில் எனது தேடல்களின் வரலாறு அமைக்கப்பட்டுள்ளது, மேலும் திறந்த மூல திட்டத்தின் அடிப்படையில் ஆயத்த தீர்வுக்கான பாதை அமைக்கப்பட்டுள்ளது. USB/IP இந்த பாதையில் பல்வேறு நபர்களால் கவனமாக அமைக்கப்பட்ட தடைகள் மற்றும் அவற்றைத் தவிர்ப்பதற்கான வழிகள் பற்றிய விளக்கத்துடன்.

பகுதி ஒன்று, வரலாற்று

இயந்திரம் மெய்நிகர் என்றால் - இவை அனைத்தும் எளிதானது. ஒரு ஹோஸ்டிலிருந்து ஒரு மெய்நிகர் இயந்திரத்திற்கு USB பகிர்தல் செயல்பாடு VMWare 4.1 இல் தோன்றியது. ஆனால் என் விஷயத்தில், WIBU-KEY என அடையாளம் காணக்கூடிய பாதுகாப்பு விசை, வெவ்வேறு நேரங்களில் வெவ்வேறு இயந்திரங்களுடன் இணைக்கப்பட வேண்டும், மேலும் மெய்நிகர் மட்டும் அல்ல.
தொலைதூர 2009 இல் முதல் சுற்று தேடுதல் என்னை ஒரு இரும்புத் துண்டுக்கு அழைத்துச் சென்றது TrendNet TU2-NU4
நன்மை:

  • சில நேரங்களில் அது கூட வேலை செய்கிறது

தீமைகள்:

  • எப்போதும் வேலை செய்யாது. "சாதனத்தைத் தொடங்க முடியாது" என்ற பிழையுடன் சத்தியம் செய்வதன் மூலம், Guardant Stealth II பாதுகாப்பு விசை அதன் மூலம் தொடங்கவில்லை என்று வைத்துக்கொள்வோம்.
  • மேலாண்மை மென்பொருளானது (யூ.எஸ்.பி சாதனங்களைப் படிக்க - ஏற்றுதல் மற்றும் அவிழ்த்தல்) மிகவும் பரிதாபகரமானது. கட்டளை வரி சுவிட்சுகள், ஆட்டோமேஷன் - இல்லை, கேட்கவில்லை. எல்லாம் கையால் தான். கெட்ட கனவு.
  • கட்டுப்பாட்டு மென்பொருளானது நெட்வொர்க்கில் உள்ள இரும்புத் துண்டை ஒளிபரப்புவதன் மூலம் தேடுகிறது, எனவே இது ஒரு ஒளிபரப்பு நெட்வொர்க் பிரிவில் மட்டுமே வேலை செய்யும். கையால் இரும்புத் துண்டின் ஐபி முகவரியைக் குறிப்பிட முடியாது. மற்ற சப்நெட்டில் இரும்புத் துண்டு? அப்போது உங்களுக்கு ஒரு பிரச்சனை.
  • டெவலப்பர்கள் சாதனத்தில் மதிப்பெண் பெற்றனர், பிழை அறிக்கைகளை அனுப்புவது பயனற்றது.

இரண்டாவது சுற்று மிகவும் தொலைவில் இல்லாத காலங்களில் நடந்தது, மேலும் கட்டுரையின் தலைப்புக்கு என்னை அழைத்துச் சென்றது - USB/IP திட்டம். வெளிப்படைத்தன்மையுடன் ஈர்க்கிறது, குறிப்பாக தோழர்களிடமிருந்து ReactOS அவர்கள் விண்டோஸிற்கான இயக்கியில் கையொப்பமிட்டனர், எனவே இப்போது சோதனை முறை போன்ற ஊன்றுகோல் இல்லாமல் x64 இல் கூட எல்லாம் வேலை செய்கிறது. இதற்காக, ReactOS குழுவிற்கு நன்றிகள் பல! எல்லாம் அழகாக இருக்கிறது, அதை உணர முயற்சிப்போம், அது உண்மையில் அப்படியா? துரதிர்ஷ்டவசமாக, திட்டமும் கைவிடப்பட்டது, மேலும் நீங்கள் ஆதரவை நம்ப முடியாது - ஆனால் எங்களுடையது மறைந்து போகாத இடத்தில், ஆதாரம் உள்ளது, அதை நாங்கள் கண்டுபிடிப்போம்!

பகுதி இரண்டு, சர்வர்-லினக்ஸ்

நெட்வொர்க்கில் USB சாதனங்களைப் பகிரும் USB/IP சேவையகத்தை Linux அடிப்படையிலான OS இல் மட்டுமே அமைக்க முடியும். சரி, லினக்ஸ் என்பது லினக்ஸ், டெபியன் 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 அதன் பஸ் ஐடியை அறிய விரும்புகிறது என்பது தெளிவாகிறது. அன்பான பார்வையாளர்களே, ரேக் நம்பர் மூன்று அரங்கில் உள்ளது: இது நமக்குத் தரும் பேருந்து ஐடி lsusb (இது மிகவும் வெளிப்படையான வழி என்று தோன்றுகிறது) - அது அவளுக்கு பொருந்தாது! யூஎஸ்பி ஹப்கள் போன்ற ஹார்டுவேரை usbip புறக்கணிக்கிறது என்பதே உண்மை. எனவே, உள்ளமைக்கப்பட்ட கட்டளையைப் பயன்படுத்துவோம்:

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)

மூன்று வாழ்த்துக்கள், தோழர்களே! சர்வர் இரும்புத் துண்டை நெட்வொர்க்கில் பகிர்ந்து கொண்டது, அதை நாம் இணைக்க முடியும்! /etc/rc.local க்கு usbip டீமனின் ஆட்டோஸ்டார்ட்டைச் சேர்க்க மட்டுமே உள்ளது.

usbipd -D

பகுதி மூன்று, வாடிக்கையாளர் பக்கமும் குழப்பமும்

நெட்வொர்க்கில் பகிரப்பட்ட சாதனத்தை டெபியன் மெஷினுடன் அதே சர்வரில் உடனடியாக இணைக்க முயற்சித்தேன், எல்லாம் நன்றாக இணைக்கப்பட்டுள்ளது:

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

விண்டோஸுக்கு செல்லலாம். என் விஷயத்தில் அது Windows Server 2008R2 ஸ்டாண்டர்ட் எடிஷன். அதிகாரப்பூர்வ வழிகாட்டி முதலில் இயக்கியை நிறுவும்படி கேட்கிறது. விண்டோஸ் கிளையண்டுடன் இணைக்கப்பட்ட ரீட்மீயில் செயல்முறை சரியாக விவரிக்கப்பட்டுள்ளது, அது எழுதப்பட்டதைப் போலவே நாங்கள் எல்லாவற்றையும் செய்கிறோம், எல்லாம் செயல்படும். 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

ஓ ஓ. ஏதோ தவறு நடந்துவிட்டது. கூகுளின் திறமையைப் பயன்படுத்துகிறோம். மாறிலிகளில் ஏதோ தவறு இருப்பதாக துண்டு துண்டான குறிப்புகள் உள்ளன; சர்வர் பகுதியில், டெவலப்பர்கள் பதிப்பு 0.2.0 க்கு மாறும்போது நெறிமுறை பதிப்பை மாற்றினர், ஆனால் அவர்கள் வின் கிளையண்டில் இதைச் செய்ய மறந்துவிட்டனர். முன்மொழியப்பட்ட தீர்வு மூலக் குறியீட்டில் மாறிலியை மாற்றி கிளையண்டை மீண்டும் உருவாக்குவது.

ஆனால் இந்த நடைமுறைக்காக நான் உண்மையில் விஷுவல் ஸ்டுடியோவைப் பதிவிறக்க விரும்பவில்லை. ஆனால் என்னிடம் ஒரு நல்ல பழைய ஹியூ உள்ளது. மூலக் குறியீட்டில், மாறிலி இரட்டை வார்த்தையாக அறிவிக்கப்படுகிறது. 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

அவ்வளவுதான். எல்லாம் தெரிந்த கூகுளால் கூட இதற்கு பதில் சொல்ல முடியவில்லை. அதே நேரத்தில், சேவையகத்தில் கிடைக்கும் சாதனங்களைக் காண்பிப்பதற்கான கட்டளை மிகவும் சரியாகக் காட்டுகிறது - இங்கே அது, விசை, நீங்கள் அதை ஏற்றலாம். நான் லினக்ஸின் கீழ் இருந்து ஏற்ற முயற்சிக்கிறேன் - அது வேலை செய்கிறது! இப்போது விண்டோஸ் கீழ் இருந்து முயற்சி செய்தால்? அடடா - அது வேலை செய்கிறது!

கடைசி ரேக்: சர்வர் குறியீட்டில் ஏதாவது சேர்க்கப்படவில்லை. ஒரு சாதனத்தைப் பகிரும் போது, ​​அதிலிருந்து USB டிஸ்கிரிப்டர்களின் எண்ணிக்கையைப் படிக்காது. லினக்ஸின் கீழ் இருந்து சாதனத்தை ஏற்றும்போது, ​​​​இந்த புலம் நிரப்பப்படுகிறது. துரதிர்ஷ்டவசமாக, லினக்ஸின் கீழ் "மேக் && மேக் இன்ஸ்டால்" மட்டத்தில் மேம்பாட்டை நான் நன்கு அறிந்திருக்கிறேன். எனவே, பிரச்சனை ஒரு அழுக்கு ஹேக் மூலம் தீர்க்கப்படுகிறது - /etc/rc.local சேர்க்கிறது

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

பகுதி இறுதி

சில பிட்லிங்க்குப் பிறகு, அது வேலை செய்கிறது. விரும்பிய முடிவு பெறப்பட்டது, இப்போது விசையை எந்த கணினியிலும் ஏற்றலாம் (மற்றும், நிச்சயமாக, ஒளிபரப்பு நெட்வொர்க் பிரிவுக்கு வெளியே உள்ளவை உட்பட). நீங்கள் விரும்பினால், ஷெல் ஸ்கிரிப்டைப் பயன்படுத்தி அதைச் செய்யலாம். எது நல்லது - இன்பம் முற்றிலும் இலவசம்.
என் அனுபவம் என் நெற்றியில் பதிந்த ரேக்கைச் சுற்றி வர ஹப்ராஜிதெலிக்கு உதவும் என்று நம்புகிறேன். உங்கள் கவனத்திற்கு நன்றி!

ஆதாரம்: www.habr.com

கருத்தைச் சேர்