নেটওয়ার্কে ইউএসবি ড্রাইভ ভাগ করুন


8

নেটওয়ার্কের মাধ্যমে একটি ইউএসবি ডিভাইস ভাগ করার জন্য আমি একটি নিখরচায় পদ্ধতি খুঁজছি। আমি একটি রাস্পবেরিপি (রাস্পবিয়ান) পেয়েছি যার সাথে একটি ইউএসবি ডিভাইস সংযুক্ত রয়েছে। আমি আমার লিনাক্স সার্ভার থেকে এই ডিভাইসে কমান্ড গ্রহণ এবং প্রেরণে সক্ষম হতে চাই।

আমি চেষ্টা করেছি remserialকিন্তু আমি ক্লায়েন্টকে সার্ভারের সাথে সংযোগ করতে পারছি না। আমি চেষ্টা করেও VirtualHereতা ক্র্যাশ হয়ে গেছে

এটি করার কিছু বিনামূল্যে সমাধান জানেন?

সম্পাদনা:

এই টিউটোরিয়ালটির জন্য Thx, আমি এটি চেষ্টা করেছিলাম তবে আমার কিছুটা সমস্যা হয়েছে:

pi@raspberrypi /boot $ zcat /proc/config.gz |grep USBIP
CONFIG_USBIP_CORE=m
CONFIG_USBIP_VHCI_HCD=m
CONFIG_USBIP_HOST=m
# CONFIG_USBIP_DEBUG is not set
pi@raspberrypi /boot $ sudo modprobe usbip-core
pi@raspberrypi /boot $ sudo modprobe usbip-host
pi@raspberrypi /boot $ sudo usbipd -D

pi@raspberrypi /boot $ usbip list -l
Local USB devices
=================
- busid 1-1 (0424:9514)
     1-1:1.0 -> hub
- busid 1-1.1 (0424:ec00)
     1-1.1:1.0 -> smsc95xx
- busid 1-1.3 (0403:6010)
     1-1.3:1.0 -> unknown
     1-1.3:1.1 -> unknown
- busid 1-1.4 (04f2:1126)
     1-1.4:1.0 -> usbhid
- busid 1-1.5 (04f2:1125)
     1-1.5:1.0 -> usbhid
     1-1.5:1.1 -> usbhid

pi@raspberrypi /boot $ sudo usbip --debug  bind -b 1-1.3
usbip: debug: /build/linux-tools-TqR1ks/linux-tools-3.2.17/drivers/staging/usbip/userspace/src/usbip.c:134:[run_command]
running command: `bind'
usbip: debug: /build/linux-tools-TqR1ks/linux-tools-3.2.17/drivers/staging/usbip/userspace/src/usbip_bind.c:162:[unbind_other]
1-1.3:1.0 -> unknown
usbip: debug: /build/linux-tools-TqR1ks/linux-tools-3.2.17/drivers/staging/usbip/userspace/src/usbip_bind.c:162:[unbind_other]
1-1.3:1.1 -> unknown
usbip: debug: /build/linux-tools-TqR1ks/linux-tools-3.2.17/drivers/staging/usbip/userspace/src/utils.c:65:[modify_match_busid]
write "add 1-1.3" to /sys/bus/usb/drivers/usbip-host/match_busid
usbip: debug: /build/linux-tools-TqR1ks/linux-tools-3.2.17/drivers/staging/usbip/userspace/src/usbip_bind.c:101:[bind_usbip]
bind driver at 1-1.3:1.0 failed
usbip: debug: /build/linux-tools-TqR1ks/linux-tools-3.2.17/drivers/staging/usbip/userspace/src/usbip_bind.c:101:[bind_usbip]
bind driver at 1-1.3:1.1 failed
usbip: error: could not bind device to usbip-host
usbip: debug: /build/linux-tools-TqR1ks/linux-tools-3.2.17/drivers/staging/usbip/userspace/src/utils.c:65:[modify_match_busid]
write "del 1-1.3" to /sys/bus/usb/drivers/usbip-host/match_busid
  pi@raspberrypi /boot $ sudo usbip --debug  bind -b 1-1.3:1.1
usbip: debug: /build/linux-tools-TqR1ks/linux-tools-3.2.17/drivers/staging/usbip/userspace/src/usbip.c:134:[run_command]
  running command: `bind'
usbip: debug: /build/linux-tools-TqR1ks/linux-tools-3.2.17/drivers/staging/usbip/userspace/src/usbip_bind.c:143:[unbind_other]
  problem getting device attributes: No such file or directory
usbip: error: could not unbind driver from device on busid 1-1.3:1.1
pi@raspberrypi /boot $

এটা কী হতে পারতো ?

উত্তর:


3

আপনি এই সফ্টওয়্যারটি ইউএসবিপ ব্যবহার করতে পারেন এবং সফ্টওয়্যারটি সেটআপ করতে এবং সার্ভার এবং ক্লায়েন্ট উভয় পক্ষেই এটি ব্যবহার করতে পারেন

মন্তব্য:

  1. এই টিউটোরিয়ালটিতে ওবুন্টু চলমান উভয়ই ব্যবহার করুন server server1.example.com with IP 192.168.0.100এবং client client1.example.com with IP 192.168.0.101আপনার জন্য এই সেটিংসটি পৃথক হতে পারে, সুতরাং আপনাকে উপযুক্ত যেখানে এগুলি প্রতিস্থাপন করতে হবে।

  2. এছাড়াও এই টিউটোরিয়ালে ব্যবহৃত অ্যাকাউন্টটি rootতাই যদি কোনও কমান্ড কাজ না করে হয় তবে কমান্ডের আগে ব্যবহার করুন rootবা ব্যবহার sudoকরুন

সার্ভারে ইউএসবি / আইপি ইনস্টল করা এবং ব্যবহার করা

আমরা নিম্নরূপে ইউএসবিপ ইনস্টল করতে পারি:

apt-get install usbip

এরপরে আমরা ইউএসবিপ কার্নেল মডিউলগুলি লোড করি:

modprobe usbip

modprobe usbip_common_mod

সেগুলি সত্যিই বোঝা হয়ে গেছে কিনা তা পরীক্ষা করতে, চালান:

lsmod | grep usbip

আউটপুট এই এক অনুরূপ হওয়া উচিত:

root@server1:~# lsmod | grep usbip
usbip                  15124  0
usbip_common_mod       13605  1 usbip
root@server1:~#

উভয় মডিউল স্বয়ংক্রিয়ভাবে লোড হয়ে যায় তা নিশ্চিত করার জন্য আপনি যখনই সিস্টেমটি বুট করেন, আপনি সেগুলি / etc / মডিউলগুলিতে যুক্ত করতে পারেন:

vi /etc/modules

[...]
usbip
usbip_common_mod

এখন আমরা ইউএসবিপ ডেমন শুরু করতে পারি:

root@server1:~# usbipd -D
Bind usbip.ko to a usb device to be exportable!

এখন আপনি একটি ইউএসবি ডিভাইস সংযুক্ত করুন যা আপনি সার্ভারে রফতানি করতে চান - আমি এখানে একটি সানডিস্ক ইউএসবি ফ্ল্যাশ ড্রাইভ ব্যবহার করছি।

কমান্ড কার্যকর করুন lsusb

সম্পর্কিত বিক্রেতার / ডিভাইস আইডি যা এই আকারে রয়েছে তা সন্ধান করতে:

Bus XXX Device YYY: ID VendorID:DeviceID

আমার সার্ভারে আউটপুট নিম্নরূপ:

root@server1:~# lsusb
Bus 001 Device 002: ID 0781:5151 SanDisk Corp. Cruzer Micro Flash Drive
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

আমার সানডিস্ক ইউএসবি ফ্ল্যাশ ড্রাইভের বিক্রেতা / ডিভাইস আইডি 0781: 5151।

এখন চালান

usbip_bind_driver --list
root@server1:~# usbip_bind_driver --list
List USB devices
 - busid 1-1 (0781:5151)
     1-1:1.0 -> usb-storage

আপনি দেখতে পাচ্ছেন, আমার সানডিস্ক ইউএসবি ফ্ল্যাশ ড্রাইভ (0781: 5151) এর বিক্রেতার / ডিভাইস আইডিটি 1-1 এর সাথে সামঞ্জস্য করে। BUSIDইউএসবি ডিভাইসটি সার্ভারের সাথে সংযুক্ত করার জন্য আমাদের এটি দরকার :

root@server1:~# usbip_bind_driver --usbip 1-1
** (process:765): DEBUG:  1-1:1.0       -> usb-storage
** (process:765): DEBUG: unbinding interface
** (process:765): DEBUG: write "add 1-1" to /sys/bus/usb/drivers/usbip/match_busid
** Message: bind 1-1 to usbip, complete!

এটি এখন, আমরা এখন রিমোট ইউএসবিপ ক্লায়েন্টে সানডিস্ক ইউএসবি ফ্ল্যাশ ড্রাইভ ব্যবহার করতে পারি।

বিটিডাব্লু, যদি আপনি চালান ...

netstat -tap

... আপনার দেখতে হবে যে ইউএসবিপ ডিমন শুনছে port 3240

সুতরাং দয়া করে নিশ্চিত করুন যে এই পোর্টটি আপনার ফায়ারওয়াল দ্বারা অবরুদ্ধ নয়:

root@server1:~# netstat -tap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 *:ssh                   *:*                     LISTEN      537/sshd
tcp        0      0 *:3240                  *:*                     LISTEN      762/usbipd
tcp        0     52 server1.example.com:ssh 192.168.0.199:4024      ESTABLISHED 667/0
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      537/sshd

ক্লায়েন্টে ইউএসবি / আইপি ইনস্টল ও ব্যবহার করা

আমাদের ক্লায়েন্টের পাশাপাশি ইউএসবিপ ইনস্টল করতে হবে:

sudo apt-get install usbip

এরপরে আমরা vhci-hcdকার্নেল মডিউলটি লোড করব :

modprobe vhci-hcd

এটি সত্যিই লোড হয়েছে কিনা তা পরীক্ষা করতে, চালনা করুন:

root@client1:~# lsmod | grep vhci_hcd
vhci_hcd               19800  0
usbip_common_mod       13605  1 vhci_hcd

আপনি যখনই সিস্টেমটি বুট করবেন তখন মডিউলটি স্বয়ংক্রিয়ভাবে লোড হয়ে যায় তা নিশ্চিত করার জন্য, আপনি এটি এতে যুক্ত করতে পারেন /etc/modules:

vi /etc/modules

[...]
vhci-hcd

এখন ইউএসবিপ সার্ভারের সাথে সংযোগ স্থাপন করুন এবং উপলভ্য ইউএসবি ডিভাইসের একটি তালিকা পান:

    usbip -l 192.168.0.100
(192.168.0.100 is the IP address of the usbip server.)

আপনার আউটপুটটিতে সানডিস্ক ইউএসবি ফ্ল্যাশ ড্রাইভটি পাওয়া উচিত (BUSID 1-1):

root@client1:~# usbip -l 192.168.0.100
- 192.168.0.100
     1-1: SanDisk Corp. : Cruzer Micro Flash Drive (0781:5151)
        : /sys/devices/pci0000:00/0000:00:07.2/usb1/1-1
        : (Defined at Interface level) (00/00/00)
        :  0 - Mass Storage / SCSI / Bulk (Zip) (08/06/50)

ডিভাইসটি ক্লায়েন্টের সাথে সংযুক্ত করতে, চালান:

root@client1:~# usbip -a 192.168.0.100 1-1
8 ports available
port 0 attached

এখন রান করুন lsusbএবং আপনার ক্লায়েন্টের আউটপুটে দূরবর্তী ইউএসবি ডিভাইসটি খুঁজে পাওয়া উচিত:

root@client1:~# lsusb
Bus 001 Device 002: ID 0781:5151 SanDisk Corp. Cruzer Micro 256/512MB Flash Drive
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

আপনি এখন দূরবর্তী ইউএসবি ডিভাইসটিকে ব্যবহার করতে পারেন যেন এটি কোনও স্থানীয় ইউএসবি ডিভাইস (যেমন এটি মাউন্ট করুন, এটি ফর্ম্যাট করুন, এতে লিখুন, ফর্মটি পড়ুন ইত্যাদি)।

একটি রিমোট ইউএসবি ডিভাইস আলাদা করা হচ্ছে

একটি দূরবর্তী ইউএসবি ডিভাইসটি নীচে পৃথক করা যেতে পারে:

client1:

চালান ...

usbip --port

... দূরবর্তী ইউএসবি ডিভাইস ক্লায়েন্টের জন্য ব্যবহার করে এমন পোর্টটি সন্ধান করতে - এই ক্ষেত্রে এটি পোর্ট 00:

root@client1:~# usbip --port
8 ports available

Port 00: <Port in Use> at High Speed(480Mbps)
       SanDisk Corp. : Cruzer Micro 256/512MB Flash Drive (0781:5151)
       1-1 -> usbip://192.168.0.100:3240/1-1  (remote devid 00010002 (bus/dev 001/002))
       1-1:1.0 used by usb-storage
           /sys/class/bsg/1:0:0:0/device
           /sys/class/scsi_device/1:0:0:0/device
           /sys/class/scsi_disk/1:0:0:0/device
           /sys/class/scsi_host/host1/device
           /sys/class/usb_endpoint/usbdev1.4_ep02/device
           /sys/class/usb_endpoint/usbdev1.4_ep81/device
           /sys/block/sdb/device
Port 01: <Port Available>
Port 02: <Port Available>
Port 03: <Port Available>
Port 04: <Port Available>
Port 05: <Port Available>
Port 06: <Port Available>
Port 07: <Port Available>

ডিভাইসটি আলাদা করতে আমাদের পোর্ট নম্বরটি প্রয়োজন:

usbip -d 00

root@client1:~# usbip -d 00
8 ports available

port 0 detached

সার্ভারে আমরা BUSID (1-1)ইউএসবি ডিভাইসটিকে স্থানীয় সিস্টেমে আবদ্ধ করতে ব্যবহার করি (- অন্য সুইচটি ডিভাইসটিকে স্থানীয় সিস্টেমে সংযুক্ত করে যাতে এটি আর নেটওয়ার্কে উপলব্ধ না হয়):

server1:

usbip_bind_driver --other 1-1

root@server1:~# usbip_bind_driver --other 1-1
** (process:7333): DEBUG: write "del 1-1" to /sys/bus/usb/drivers/usbip/match_busid
** Message: bind 1-1 to other drivers than usbip, complete!

এখন ক্লায়েন্টের কাছে ফিরে যান এবং রিমোট ইউএসবি ডিভাইসটি এখনও উপলব্ধ কিনা তা পরীক্ষা করুন:

client1:

সবকিছু ঠিকঠাক থাকলে, এটি আর তালিকাভুক্ত করা উচিত নয়:

root@client1:~# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 

লিংক

http://usbip.sourceforge.net

টিউটোরিয়াল উত্স (সার্ভার সাইড)

টিউটোরিয়ালের উত্স (ক্লায়েন্ট সাইড)


উবুন্টু ট্রাস্টি (১৪.০৪) ব্যবহারকারীদের জন্য নোট: আপনার ইউটোপিক বা বাইনারিগুলির সাথে নতুন এবং ফিডল থেকে একটি ব্যাকপোর্টেড কার্নেল প্রয়োজন। আরও তথ্যের জন্য bugs.launchpad.net/ubuntu/+s Source/usbip/+bug/898003 দেখুন । কোনও পুরানো সমর্থিত উবুন্টু সংস্করণ দুর্ভাগ্যক্রমে বাগ এবং জাহাজে অ-কর্মরত ইউএসবিপের সাথে ত্রুটিযুক্ত।
জার্মটভিডিজক

: এর আগেই ব্যবহারে এই উত্তর চেক করুন askubuntu.com/a/647071/187689
ইমান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.