امروزه چند روش برای انتقال یک دستگاه USB به کامپیوتر یا ماشین مجازی دیگر از طریق شبکه وجود دارد.
محبوب ترین ها محصولات سخت افزاری مانند AnywhereUSB و محصولات کاملاً نرم افزاری هستند که من خودم آنها را امتحان کردم: USB Redirector و USB / IP.
من می خواهم در مورد روش جالب دیگری که مستقیماً با شبیه ساز QEMU کار می کند به شما بگویم.
این همچنین بخشی از پروژه ادویه است که به طور رسمی توسط RedHat نگهداری می شود.

UsbRedir یک پروتکل باز برای انتقال دستگاه های USB از طریق tcp به یک سرور مجازی از راه دور است که با پشتیبانی از RedHat به عنوان بخشی از پروژه ادویه تهیه شده است. اما همانطور که مشخص شد ، می توان آن را بدون ادویه نیز با موفقیت استفاده کرد. سرور usbredirserver است ، که دستگاه usb را روی یک پورت خاص fumble می کند و مشتری خود QEMU است که اتصال دستگاه usb صادر شده به یک کنترل کننده usb خاص ماشین مجازی شما را تقلید می کند. با تشکر از این روش ، کاملاً از هر سیستم عامل می توان به عنوان سیستم مهمان استفاده کرد ، زیرا حتی نمی داند که دستگاه از راه دور هدایت می شود و منطق آن با QEMU است.

اول ، چند کلمه در مورد راه حل های فوق.

  • AnywhereUSB یک راه حل بسیار خوب است ، اما گران است ، و اشکالات ناخوشایندی دارد ، به عنوان مثال ، اگر یک درایو فلش مشترک خراب شود ، فقط با حذف و قرار دادن فیزیکی می توانید دوباره آن را وصل کنید.
  • USB / IP - پروژه OpenSource. به نظر می رسد رها شده است. در واقع ، این بسیار حشره دار است. وقتی اتصال قطع می شود ، دستگاه اغلب منجمد می شود و ویندوز BSOD را نشان می دهد
  • تغییر مسیر USB - نرم افزار عالی. برای به اشتراک گذاشتن دستگاه ها از لینوکس به لینوکس رایگان است ، در همه موارد دیگر هزینه آن است ، نه به اندازه AnywhereUSB ، اما رایگان نیست همانطور که ما می خواهیم :)
همانطور که می بینید ، موارد زیادی برای انتخاب وجود دارد ، اما بیایید سرانجام راه دیگری را امتحان کنیم - UsbRedir؟

راه اندازی یک ماشین مجازی

برای اینکه بتوانید دستگاههای صادر شده را به کجا متصل کنید ، باید کنترل کننده های USB لازم را در ماشین مجازی ایجاد کنید:

  • uhci - برای USB1.0
  • ehci - برای USB2.0
  • xhci - برای USB3.0
For qemu (بدون libvirt)

برای راه اندازی ماشین مجازی گزینه هایی را به دستور اضافه کنید:
-device ich9-usb-ehci1، id \u003d ehci، addr \u003d 1d.7، چند منظوره \u003d روشن -device ich9-usb-uhci1، id \u003d uhci-1، addr \u003d 1d.0، چند منظوره \u003d روشن، masterbus \u003d ehci.0 ، firstport \u003d 0 -device ich9-usb-uhci2 ، id \u003d uhci-2 ، addr \u003d 1d.1 ، چند منظوره \u003d روشن ، masterbus \u003d ehci.0 ، firstport \u003d 2 -device ich9-usb-uhci3 ، id \u003d uhci-3 ، addr \u003d 1d.2 ، چند منظوره \u003d روشن ، masterbus \u003d ehci.0 ، firstport \u003d 4

برای libvirt
در فایل پیکربندی اصلی ماشین مجازی در میزبان & ltdevices & gt تمام کنترل کننده های USB را بردارید و بلوک زیر را اضافه کنید:

ضمناً ، اگر از spice استفاده می کنید ، با افزودن 3 دستگاه ویژه دیگر به کنترل کننده ها ، امکان هدایت دستگاه های usb از spice client به سرور امکان پذیر است.

مثال زیر اسپویلر

برای qemu
علاوه بر کنترلرهایی که قبلاً تعریف کردیم ، گزینه های زیر را به دستور شروع کار ماشین مجازی اضافه می کنیم:
-chardev spicevmc، name \u003d usbredir، id \u003d usbredirchardev1 -device usb-redir، chardev \u003d usbredirchardev1، id \u003d usbredirdev1، debug \u003d 3 -chardev spicevmc، name \u003d usbredir، id \u003d usbredirchardev2 -device usb-redir، chardev2 \u003d usbredirdev2 ، اشکال زدایی \u003d 3 -chardev spicevmc ، نام \u003d usbredir ، id \u003d usbredirchardev3 -device usb-redir ، chardev \u003d usbredirchardev3 ، id \u003d usbredirdev3 ، اشکال زدایی \u003d 3
برای libvirt
در پرونده پیکربندی اولیه ماشین مجازی در گره & ltdevices & gt ، علاوه بر کنترلرهایی که قبلاً تعریف کردیم ، گزینه های زیر را نیز اضافه کنید:

اکنون همه چیز برای ارسال آماده است.

شروع سرور

بسته سرور usbredirser را می توان تقریباً در همه توزیع های محبوب linux در مخازن استاندارد یافت.

ما درایو فلش USB را به کامپیوتر وارد می کنیم ، به خروجی دستگاه های USB نگاه می کنیم:
$ lsusb ... Bus 003 Device 011: ID 125f: c82a A-DATA Technology Co.، Ltd. ...

می بینیم که جفت vendorid: prodid برابر با 125f: c82a است و هسته به ترتیب درایو فلش usbbus-usbaddr 003-001 را تعریف کرده است.

حالا اجازه دهید آن را در پورت 4000 به اشتراک بگذاریم:

# استفاده از جفت فروشنده: prodid $ usbredirserver -p 4000 125f: c82a # استفاده از جفت usbbus-usbaddr $ usbredirserver -p 4000 003-011

اتصال دستگاه به ماشین مجازی

از طریق گزینه ها هنگام شروع VM

دستگاهی که باید به VM متصل شود را می توان هنگام راه اندازی با افزودن گزینه های زیر به دستور startup مشخص کرد

برای qemu
سوکت -چاردهو ، شناسه \u003d usbredirchardev1 ، پورت \u003d 4000 ، میزبان \u003d 192.168.1.123-دستگاه usb-redir ، چاردف \u003d usbredirchardev1 ، شناسه \u003d usbredirdev1 ، اتوبوس \u003d ehci.0 ، اشکال زدایی \u003d 4
برای libvirt
این بلوک قبل از برچسب قرار می گیرد & lt / devices & gtدر کنار کنترلرهایی که قبلاً تعریف کردیم:
همچنین می تواند با دستور اجرا شود virsh ضمیمه دستگاه

یا از طریق qemu-monitor

ما به hypervisor می رویم و دستورات زیر را در qemu-monitor دستگاه خود اجرا می کنیم:
# دستگاه ما سوکت chardev-add را اضافه کنید ، id \u003d usbredirchardev1 ، پورت \u003d 4000 ، میزبان \u003d 192.168.1.123 # آن را به دستگاه ehci controller (USB-2.0) وصل کنید usb-redir ، chardev \u003d usbredirchardev1 ، id \u003d usbredirdev1 ، bus \u003d ehci. 0 ، اشکال زدایی \u003d 4
برای غیرفعال کردن درایو فلش ، دستور زیر کافی است:
device_del usbredirdev1

این همه ، بعد از این مراحل ، VM شما درایو فلش USB را مشاهده می کند و می تواند بطور طبیعی با آن کار کند.

اگر دستگاه های زیادی وجود داشته باشد و همه آنها یکسان باشند

اینجاست که یک کار جالب ظاهر می شود ، چگونه چندین دستگاه یکسان را به ماشین های مجازی مختلف هدایت کنیم؟
در عین حال ، لازم به ذکر است که همه دستگاه ها فروشنده یکسانی دارند: جفت prodid ، و جفت usbbus-usbaddr اصلاً ثابت نیست ، به محض اینکه دستگاه را برداشته و وارد کنید ، بلافاصله usbaddr آن تغییر می کند.

من با udev حلش کردم
ضمناً ، اگر نحوه کار udev را کاملاً نمی دانید ، دبیان ویکی جالب است

و بنابراین بیایید شروع کنیم

ابتدا باید شماره سریال دستگاه خود را پیدا کنیم که توسط آن در udev شناسایی خواهیم کرد:

بیایید مانیتور udev را شروع کنیم:
مانیتور $ udevadm - محیط زیست --udev
و دستگاه خود را وارد کنید ، پس از آن بلافاصله لیستی از متغیرهای این دستگاه را که udev با مهربانی برای ما تنظیم کرده است مشاهده خواهیم کرد:
... UDEV add / devices / virtual / bdi / 8: 16 (bdi) ACTION \u003d add DEVPATH \u003d / devices / virtual / bdi / 8: 16 ID_SERIAL_SHORT \u003d 11C130317234004B SEQNUM \u003d 4352 SUBSYSTEM \u003d bdi USEC_INITIALIZED \u003d 189056149826 ...
اطلاعات مربوط به ویژگیهای سریال و سایر ویژگیها را می توان به روش دیگری بدست آورد ، اما باید در نظر داشت که برای نوشتن قوانین ، ما از متغیرهای دستور بالا استفاده خواهیم کرد ، و نه از ویژگیهای دستور زیر. در غیر این صورت ، هنگام جدا شدن دستگاه ، ماشه برقی آتش نمی گیرد.
$ udevadm info -a -n / dev / bus / usb / 003/011 | grep "(سریال)"

حالا بیایید یک پرونده /etc/udev/rules.d/99-usb-serial.rules ایجاد کنیم و قوانین زیر را در آن بنویسیم:
ACTION \u003d\u003d "افزودن" ، ENV (ID_SERIAL_SHORT) \u003d "11C130317234004B" ، RUN + \u003d "/ usr / bin / usbredirserver -p 4000 $ attr (busnum) - $ attr (devnum)" ACTION \u003d\u003d "حذف" ، ENV (ID_SERIAL_SHORT) ) \u003d "11C130317234004B" ، RUN + \u003d "/ usr / bin / fuser -k 4000 / tcp"

بارگیری مجدد قوانین udev:
$ udevadm control - قوانین بارگیری مجدد
تمام شد ، اکنون وقتی دستگاه خود را متصل می کنیم ، به طور خودکار درگاهی را که نیاز داریم جستجو می کند و هنگامی که سرور usbreders را قطع کنیم ، دیگر کار نمی کند.
دستگاه های دیگر را به صورت قیاس اضافه کنید.

همین. از حسن توجه شما تشکر میکنم:)

یکی از خوانندگان وبلاگ ، Vovets666 ، نرم افزار رایگان USBIP را امتحان کرد و پیشنهاد نوشتن مقاله در مورد آن را داد.

سلب مسئولیت:
همه آنچه در زیر توضیح داده شده دید شخصی من در مورد مسئله و چگونگی حل آن است که حقیقت نهایی نیست. کاملاً ممکن است گزینه های دیگری وجود داشته باشد ، من با لذت به آنها گوش خواهم داد. به عنوان یک دستورالعمل برای کار با نرم افزار ، از مطالب موجود در اینترنت استفاده شد ، حتی به خاطر نمی آورم کجا ... علاوه بر این ، به عنوان یک مدیر ویندوز ، من لینوکس را به صورت سطحی می شناسم ، من در شرایط ضرب العجل کار می کردم و زمان زیادی برای مطالعه سخت افزار / رقص با تنبور وجود داشت نداشت ، بنابراین من توصیف می کنم که چگونه این کار را برای کار انجام دادم ، و من مطمئن هستم که روش های دیگری نیز وجود دارد.

بنابراین ، ما ماشین های مجازی داریم - سرورهای 1C ، ساخته شده در MSWindowsServer 2008R2. این نرم افزار به کلیدهای سرور HASP متصل به آن نیاز دارد. همانطور که می دانید ، نمی توانید مستقیماً آنها را به Hyper-V به یک VM متصل کنید. وظیفه: ترجیحاً با استفاده از حداقل سخت افزار اضافی و هزینه های مجوز ، کلیدهای HASP را به سمت ماشین های مجازی بفرستید.

(Offtopic: 1C اخیراً امکان استفاده از مجوزهای نرم افزاری را بدون استفاده از کلیدهای HASP بدست آورده است (چیزی مانند فعال سازی با استفاده از پین کدها). اما تفاوت های ظریف وجود دارد: تعویض مجوز با فعال سازی نرم افزار رایگان نیست ، هنگام تغییر پیکربندی دستگاه لازم است فعال سازی مجدد ، پس از یک محدودیت مشخص ، اجازه فعال سازی به صلاحدید پشتیبانی فنی باقی می ماند که به هیچ وجه یخ نیست. بنابراین تصمیم گرفته شد که از روش قدیمی با کلیدهای HASP استفاده شود).

گزینه ها در نظر گرفته شد:

- روش ارائه شده توسط مایکروسافت (البته برای اهداف دیگر):
RemoteFX + RDP7.1. من به دلایلی آن را دوست نداشتم: شما به تجهیزات با پشتیبانی RemoteFX نیاز دارید ، خدمات اضافی باید در سرور 1C (سرویس دسترسی از راه دور دسک تاپ) افزایش یابد ، جلسه RDP باید دائما از میزبان به ماشین مجازی متصل شود ، از طریق آن کلید به جلو هدایت می شود ، مجوز مشتری برای دسترسی به RDS لازم است ... شاید من در هر یک از موارد موجود در این لیست اشتباه می کنم ، اما تعداد کل آنها روش را در جوانه هک می کند.

- دستگاه های سخت افزاری شخص ثالث. معایب: هزینه آنها زیاد است ، بعلاوه ، بعضی از دستگاهها با سازگاری با سیستم عامل مورد استفاده (مثلا Ubox 4100 که ما داریم) مشکل داشتند و سازنده قصد حل آنها را نداشت. به نظر می رسد اکنون مشکلات حل شده است (در مدل های دیگر) ، اما رسوب آن همچنان باقی است.

- نرم افزار شخص ثالث. معایب: برای عملکرد به عنوان سرور دستگاه USB به دستگاه جداگانه ای نیاز دارد و معمولاً به هزینه نیاز دارد. بعد از جستجو
از نرم افزار قابل قبول ، معلوم شد که از بین تمام نرم افزارهای کشف شده ، فقط بسته USBIP برای استفاده تجاری رایگان است. در آن ایستاد.

به خودی خود ، نصب و پیکربندی نرم افزار مشکلات بزرگی ایجاد نکرده است ؛ بسته شامل یک کتابچه راهنمای کوتاه به علاوه - اینترنت است.

بسته USBIP () برای کار به 2 ماشین پیکربندی شده نیاز دارد: یک سرور (کلید مستقیماً به آن متصل است) و یک سرویس گیرنده (این کلید به آن ارسال می شود). سرور
بخشی از USBIP فقط تحت Linux ، بخش مشتری - تحت Linux و Windows وجود دارد (از جمله 7 و 2008R2).

1) نصب سرور (دستگاهی که دستگاه USB متصل است).

ما از یک ماشین لینوکس به عنوان سرور استفاده می کنیم. من از Linux Ubuntu v.11.04 (مونتاژ Lubuntu که به عنوان کمترین میزان مصرف اعلام می شود) به عنوان ساده ترین سیستم (برای من) استفاده کردم: این سیستم بدون هیچ مشکلی نصب می شود ، به طور خودکار دستگاه های پلاگین جدید USB را قلاب می کند ، پس از نصب ، اجزای لازم به طور پیش فرض نصب می شوند ، علاوه بر این ، USBIP در مخزن وجود دارد. به منظور صرفه جویی در هزینه های سخت افزاری ، این دستگاه بصورت مجازی ایجاد شده و بر روی یک میزبان ESXi 4.1 ایجاد شده و در آن قرار گرفت و به نوبه خود ، کلید HASP با استفاده از روش استاندارد ESXi از میزبان ارسال شد.

نصب مشکلی ایجاد نکرد: ما سیستم را نصب می کنیم ، آن را به شبکه متصل می کنیم ، IP می گیریم ، USBIP و اجزای لازم برای کار را از طریق مدیر بسته نصب می کنیم. علاوه بر این ، ابزارهای VMware نصب شدند (از آنجا که این دستگاه یک ماشین مجازی در ESXi است).

در هر صورت ، بگذارید نحوه انجام این کار را به شما یادآوری کنم:

از طریق ضربه محکم و ناگهانی VMware ، دیسک را با نرم افزار متصل کنید (Inventory -\u003e Virtual Machine -\u003e Guest -\u003e Install / Upgrade VMware Tools). از این دیسک بایگانی را با نرم افزار به میز کار باز می کنیم. ما ترمینال را راه اندازی کرده و در آن تایپ می کنیم:

<имя пользователя>@<имя машины>: ~ $ سودو<путь до файла>\\ vmware-install.pl — پیش فرض

2) تنظیم سروریو اس بی کلیدها

ما ترمینال را راه اندازی می کنیم. اقدامات بعدی - از خط فرمان.

· ماژول های زیر را بارگیری کنید.

<имя пользователя>@<имя машины>:~$ sudo modprobe usbip

<имя пользователя>@<имя машины>:~$ sudo modprobe usbip_common_mod

usbip را به عنوان یک daemon سیستم اجرا کنید:

<имя пользователя>@<имя машины>:~$ sudo usbipd د

ما گرفتیم:

usbip.ko را به یک دستگاه usb متصل کنید تا صادر شود!

<имя пользователя>@<имя машины>:~$

توجه! ابتدا باید daemon را شروع کنید و سپس فقط دستگاه ها را به هم متصل کنید ، در غیر این صورت هنگام اتصال ممکن است خطاهایی روی مشتری رخ دهد. (یادداشت ها را ببینید)

برای مشاهده دستگاه های USB متصل ، دستور را اجرا کنید

<имя пользователя>@<имя машины>:~$ lsusb

لیستی از دستگاه های USB متصل به همراه شناسه های آنها مانند:

دستگاه XXX دستگاه YYY: شناسه فروشنده ID: DeviceID< نام دستگاه ها>

نوع:

اتوبوس 002 دستگاه 004: شناسه 0529: 0001 Aladdin Knowledge Systems HASP v0.06

اتوبوس 002 دستگاه 003: ID 0e0f: 0002 VMware، Inc. هاب USB مجازی

Bus 001 Device 001: ID 1d6b: 0002 Linux Foundation 2.0 root root

ترکیب VendorID: DeviceID را بخاطر بسپارید

دستور را اجرا می کنیم:

<имя пользователя>@<имя машины>:~$ sudo usbip_bind_driver — لیست

USBIP لیست تجهیزات متصل را بررسی می کند و آنها را با شناسه گذرگاه خود به شرح زیر نمایش می دهد:

- پرشور 2-1 (0529: 0001)

2-1: 1.0 -\u003e هیچ

- شلوغ 2-2 (0e0f: 0002)

2-2: 1.0 -\u003e مرکز

……..

در این حالت ، شناسه گذرگاه نشانگر دستگاه USB مورد نیاز ما "2-1" است.

· اکنون دستگاه را به سرور متصل می کنیم. ما تایپ می کنیم:

<имя пользователя>@<имя машины>::~$ sudo usbip_bind_driver —usbip 2-1

ما گرفتیم:

** (روند: 1483): DEBUG: 2-1: 1.0 -\u003e هیچ

** (روند: 1483): DEBUG: نوشتن "افزودن 2-1" به / sys / bus / usb / رانندگان / usbip / match_busid

** پیام: اتصال 2-1 به usbip ، کامل!

دستگاه به USBIP متصل است ، دسترسی از طریق دستگاه سرور محلی از بین رفته است.

· همچنین می توانید ببینید چه دستگاه هایی در حال حاضر به USBIP متصل هستند. برای این کار ، ما تایپ می کنیم:

<имя пользователя>@<имя машины>:~$ sudo usbip_bind_driver — لیست

ما گرفتیم:

- پرشور 2-1 (0529: 0001)

2-1: 1.0 -\u003e usbip

- شلوغ 2-2 (0e0f: 0002)

2-2: 1.0 -\u003e مرکز

دستگاهی با گذرگاه ID 2-1 به USBIP متصل است. این سیستم می تواند داده های مربوط به این دستگاه USB را از سیستم شما به سرویس گیرنده های از راه دور منتقل کند.

راه اندازی سرور کامل است. در صورت لزوم ، می توانید اضافه و حذف کنید
دستگاه های صادر شده

مولفه های USBIP - لینوکسسرورکاربرد: usbip_bind_driver

- ؟، -کمک زنگ زدن
مرجع
-Usbip busid دستگاهی را صادر کنید
-کار دیگر از یک دستگاه محلی استفاده کنید
راننده
—لیست کنید دستگاه های usb و آنها را چاپ کنید
رانندگان
—لیست 2 دستگاه های usb و آنها را چاپ کنید
درایورها در حالت تجزیه
- Alusbip همه دستگاه ها را قابل صادرات کنید

3) تنظیمات مشتری MS Windows

· کیت توزیع را بارگیری کنید. به هر دو نسخه - 0.1 و 0.2 نیاز داریم.

· USB / IPEnumenator را نصب کنید. این به عنوان یک دستگاه سیستم دلخواه با درایورهای دیسک نصب شده است. ما درایورها را از کیت توزیع 0.2 می گیریم:

برای ویندوز XP:

1. پرونده ها را در یک پوشه محلی باز کنید.

2. در صفحه کنترل ، روی "نصب سخت افزار" کلیک کنید ، در پنجره خوش آمد گویی جادوگر باز شده ، "بعدی" را کلیک کنید.

3. "بله ، دستگاه قبلاً متصل شده است" -\u003e "بعدی" را انتخاب کنید.

4. "افزودن دستگاه جدید" -\u003e "بعدی" را انتخاب کنید.

5. "نصب تجهیزات انتخاب شده از لیست به صورت دستی" -\u003e "بعدی" را انتخاب کنید.

7. "Install from disk" -\u003e "View" را انتخاب کنید ، پوشه دارای درایور باز شده را انتخاب کنید -\u003e "OK".

9. "جادوگر آماده نصب سخت افزار جدید است" -\u003e "بعدی" -\u003e پایان "را انتخاب کنید.

برای پنجره 7 (و 2008r2):

1. برای نصب درایورهای امضا نشده: cmd را از اجرا کنید
مدیر و "bcdedit / settestsigningon" را اجرا کنید.

2. پرونده ها را در یک پوشه محلی باز کنید.

3. "مدیر دستگاه" را باز کنید.

4- روی "نام رایانه" - "نصب دستگاه قدیمی" راست کلیک کنید (یا "اقدام" را از فهرست انتخاب کنید).

5- در پنجره خوش آمد گویی جادوگر که باز می شود ، روی "بعدی" کلیک کنید.

6. "نصب تجهیزات انتخاب شده از لیست به صورت دستی" -\u003e "بعدی" را انتخاب کنید.

8- گزینه "Install from disk" -\u003e "View" را انتخاب کنید ، پوشه دارای درایور unzipped را انتخاب کنید -\u003e "OK".

10. "جادوگر آماده نصب سخت افزار جدید است" -\u003e "بعدی" -\u003e "پایان" را انتخاب کنید.

همه این اقدامات همچنین در پرونده "استفاده" همراه با بسته USBIP به انگلیسی شرح داده شده است.

· ما دستگاه های USB را که به عنوان صادر شده در سرور مورد نیاز ما مشخص شده اند ، متصل می کنیم. برای اتصال ما استفاده می کنیمUSBIP از نسخه توزیع نسخه 0.1

cmd را اجرا کنید. بیایید ببینیم کدام دستگاه ها برای اتصال آماده هستند:

مسیر به usbip :\u003e usbip.exe -l

(server-ip - آدرس IP سرور دستگاه USB از نقطه 2)

ج:\ usbip> usbip من 192.168.1.13

usbip dbg: usbip_network.c: 229 (tcp_connect) تلاش 192.168.1.13 پورت 3240

usbip dbg: usbip_network.c: 249 (tcp_connect) به 192.168.1.13:3240 متصل است

— 192.168.1.13

usbip dbg: usbip.c: 423 (query_exported_devices) قابل صادر شدن 2 دستگاه

2-1: فروشنده ناشناخته: محصول ناشناخته (0529: 0001)

: /sys/devices/pci0000:00/0000:00:11.0.0/0000:02:02.0/usb2/2-1

: کلاس ناشناخته / زیر کلاس ناشناخته / پروتکل ناشناخته (ff / 00/00)

: 0 - کلاس ناشناخته / زیر کلاس ناشناخته / پروتکل ناشناخته (ff / 00/00)

در نتیجه ، می بینیم که در سرور 192.168.1.13 دستگاهی با گذرگاه شناسایی 2-1 آماده اتصال است - دستگاهی که در مرحله 2 پیکربندی کردیم. ممکن است دستگاه های بیشتری وجود داشته باشد.

مسیربهusbip:> usbip . سابق آ < سرور آی پی > یو اس بی شناسه

شناسه USB در مورد ما 2-1 است.

نامه های زیادی (لیست پارامترها) دریافت می کنیم و در آخر:

دستگاه usb جدید متصل به پورت usbvbus 2

دستگاه USB باید در سیستم سرویس گیرنده ظاهر شود. توصیه می شود پنجره ترمینال را نبندید.

مولفه های USBIP - ویندوزمشتریکاربرد: usbip

الف ، - ضمیمه کنید یک دستگاه USB از راه دور وصل کنید
-x ، — attachall تمام USB از راه دور را ضمیمه کنید
دستگاه های میزبان خاص
-d ، - جدا شود USB وارد شده را جدا کنید
دستگاه
-l ، - لیست دستگاه های USB صادر شده را لیست کنید
p ، —port وضعیت پورت USB مجازی را لیست کنید
-D ،-رفع اشکال اطلاعات اشکال زدایی را چاپ کنید
-v ، - وارونگی نمایش نسخه
-؟ ، -ه ، - کمک کند چاپ این راهنما

یادداشت ها: مشکلات پیش آمده و راه حل ها:

1. من از نسخه 11.04 سیستم در هسته 2.6 استفاده کردم. پس از به روزرسانی سیستم به نسخه 11.10 (هسته 3.0.4) ، usbip دیگر متوقف شد - خطایی ایجاد شد که جز component پیدا نشد. مجبور شدم ماشین را بازیابی کنم و از بروزرسانی امتناع کنم. از طرف دیگر ، از آنجا که این یک ماشین رسمی کاملاً تخصصی است و دسترسی به آن محدود است ، این امر حیاتی تلقی نمی شود.

2. در ابتدا ، کلیدهای هشدار از اتصال به مشتری خودداری کرده و خطایی را ایجاد می کنند. در طول آزمایشات ، مشخص شد که ابتدا باید demon usbip را شروع کنید و فقط پس از آن کلیدها را به دستگاه متصل کنید. بعداً خطاها ناپدید شدند ، کلیدها به هر ترتیب شروع به اتصال کردند ، تکرار خطاها امکان پذیر نبود. این فقط یکی از موارد عجیب و غریبی است که به آن اشاره کردم.

3. پس از راه اندازی مجدد ماشین مجازی سرویس گیرنده - سرور 1C ، گاهی اوقات اتصال برخی از کلیدها به آن غیرممکن است - خطاهایی ایجاد می کند. شاید این به دلیل جلسات مبادله با دستگاه های usb گیر رفته در سرور HASP باشد. این امر با راه اندازی مجدد سرور HASP و ارسال مجدد کلیدها به مشتری درمان می شود.

عصر بخیر ، amigos ، خوشحالم که به سایت من نگاه کردید ، امروز س suchالی را در مورد نحوه سازماندهی usb از طریق شبکه و نحوه استفاده از آن در مجازی سازی بررسی خواهیم کرد. موضوع کاملاً مرتبط است و چنین وظیفه ای بیشتر و بیشتر مشاهده می شود.

usb از طریق شبکه

همانطور که قبلاً می دانید ، مجازی سازی برای مدت طولانی و مدت طولانی وارد زندگی ما شد. ظرفیت های سرور در حال رشد است و طبیعتاً فناوری هایی برای استفاده منطقی از آنها پدیدار شده است که حاکی از انزوا و استفاده عادی از منابع است که باعث ایجاد ماشین های مجازی شده است که از قبل در مراکز میزبانی و داده استفاده می شوند. من قبلاً در مورد همه اینها صحبت کردم ، اگر علاقه مند هستید ، به پیوندهای سمت چپ و بالا نگاه کنید.

همانطور که می دانید ، بعضی اوقات برخی از برنامه های دارای مجوز برای کار کردن به یک کلید usb نیاز دارند. پیش از این ، در نسخه کلاسیک ، هنگامی که فقط سرورهای فیزیکی وجود داشت ، مشکلی در عملکرد چنین طرحی وجود نداشت ، اما با ظهور مجازی سازی ، آن ظاهر شد.

متأسفانه ، برخی از Hypervisors توانایی انتقال مستقیم از سرور را ندارند دستگاه های USBو به عنوان مثال Hyper-V از شرکت مایکروسافت است که از سال 208 بر خلاف vMvare که اجازه آن را می دهد ، هنوز چنین فرصتی را ندارد و من قبلاً نحوه ارسال مودم USB به vmware esxi را توضیح داده ام.

برای ناراحتی عجله نکنید ، طرفداران غول ردموندی ، فناوری به شما کمک می کند USB از طریق IP یا هرجای دیگر USB. USB از طریق IP به شما امکان اتصال می دهد usb از طریق شبکه.

AnywhereUSB یک هاب USB کوچک تحت شبکه است. در زیر نمونه هایی از مدل های موجود در بازار وجود دارد.

  • هرجایی USB / 2 - 2 پورت USB


  • هرجایی USB / 5 - 5 پورت USB


  • هرجایی USB / 14 - 14 پورت USB



پیکربندی هر کجا USB

بیایید نگاهی به نحوه پیکربندی قطعه سخت افزار برای دسترسی به اینترنت از طریق شبکه بیندازیم.

اینگونه به نظر می رسد.


چندین رابط برای پیکربندی و مدیریت دستگاه ارائه شده است:
• رابط وب برای پیکربندی ، نظارت و مدیریت.
• نرم افزار پیکربندی AnywhereUSB؛
• رابط خط فرمان Telnet ؛
• پروتکل مدیریت شبکه ساده (SNMP).

برای پیکربندی دستگاه ، رابط وب را در نظر بگیرید - به عنوان راحت ترین و ساده ترین گزینه.

مدیریت آدرس IP

گزینه های مختلفی برای اختصاص دادن آدرس IP به AnywhereUSB وجود دارد:
• IP استاتیک ؛
• اختصاص دینامیکی IP - استفاده از پروتکل پیکربندی میزبان پویا (DHCP).
• آدرس دهی IP به صورت خودکار (APIPA) ، معروف به Auto-IP ؛

همانطور که می توانید تصور کنید ، صحیح ترین راه یک آدرس IP ثابت است. در مورد پیکربندی شبکه تنظیم شده است.


در همان منو تنظیم خدمات شبکه موجود روی آن بسیار راحت است.



در تب Conection Management می توانید اتصالات فعلی را مشاهده کنید.



اکنون ، آنچه بعدی باید در ماشین مجازی انجام شود ، کاملاً منطقی است ، شما باید درایورها را از AnywhereUSB در آنجا نصب کرده و آدرس IP دستگاه را تنظیم کنید. همانطور که مشاهده می کنید ، من قبلاً آن را متصل کرده ام و دارای آدرس IP داخلی است.


از طریق ابزار ویژهدر هرجایی از نمای ، می توانید در دسترس بودن و نحوه استفاده از همه دستگاه ها را بررسی کنید. شاید این ساده ترین و مطمئن ترین روش برای ارسال توکن ، درایو های فلش و مودم های مختلف به شما باشد ماشین های مجازی، هزینه خود دستگاهها متفاوت است ، اما اگر قبلاً هزینه نرم افزار و نظارت بر اینترنت را کرده اید ، فکر می کنم در صورت لزوم ، این را نیز بخرید :)


ابزاری بسیار قدرتمند در دستان راست. به دلایل مختلف فنی ، ماشین مجازی به طور پیش فرض دسترسی مستقیم به درایو USB ندارد. در این مقاله نحوه هدایت درایو USB به یک ماشین مجازی Hyper-V توضیح داده شده است. پیاده سازی ایده ساده خواهد بود ، شاید بتوان گفت ، در دو کلیک. نه برنامه های اضافی، همانطور که گاهی اوقات توصیه می شود ، "معلمان مذهبی" مبل مورد نیاز نیست ، ما از دستان خود استفاده می کنیم و نه چیز دیگری.

مهم. ما نمی توانیم دستگاه های متحرک ، یعنی دستگاه های قابل جابجایی را به ماشین مجازی وارد کنیم ، اگرچه ترفندهایی در این زمینه وجود دارد ، اما اکنون ما در این مورد صحبت نمی کنیم. الگوریتم ما فقط برای USB هایی که ثابت نشان می دهند کار می کند. ما قادر به تهیه عکس فوری برای چنین دیسک هایی نخواهیم بود.

شروع با دستکاری ها




مهم. قبل از افزودن هارد دیسک به هیچ وجه لازم نیست که VM را خاموش کنید. برای این فناوری افزودنی داغ و گرمایش ویژه وجود دارد.

  1. ما از طریق rdp به VM متصل می شویم یا فقط کنسول را باز می کنیم. ما وارد مدیریت دیسک می شویم. اگر جدید در جای خود قرار دارد ، پس ما همه کارها را درست انجام می دهیم. آنلاین بودن او را بررسی کنید. در غیر اینصورت ، مانند قبل با تماس تلفنی آن را برطرف می کنیم منوی زمینه... پارتیشن های ما دارای نقاط و حروف نصب نیستند ، ما باید این موضوع را برطرف کنیم. روی هر بخش کلیک کنید کلیک راست و گزینه "تغییر نامه درایو یا مسیر به سمت آن ..." را انتخاب کنید. ما هر کدام را رایگان انتخاب می کنیم.

ارسال USB به ماشین مجازی Hyper-V تمام شده است ، اکنون می توانیم از آن برای اهداف خود استفاده کنیم.

این دستورالعمل ها با شروع از نسخه 2 صحیح هستند.

به نظر می رسد ، چرا باید دستور دیگری را بنویسم که دستورالعمل رسمی وجود دارد؟ با این حال ، اینجا چیزی وجود دارد که آنجا نیست.

برای انتقال دستگاه USB به یک مهمان دو گزینه وجود دارد:

  • انتقال یک دستگاه خاص به "مهمان" ؛
  • پورت USB را که این دستگاه به آن متصل است انتقال دهید.

بازارسال دستگاه های USB

اگر یک دانگل USB یا یک درایو خارجی دارید ، بدون در نظر گرفتن اینکه این دستگاه به کدام درگاه USB متصل است ، راحت تر می توانید دستگاه را به سیستم مهمان منتقل کنید. از این گذشته ، هنگام سرویس دهی ، می توانیم دفعه دیگر آن را به یک اتصال دیگر متصل کنیم.

# lsusb Bus 002 دستگاه 002: شناسه 8087: 8000 Intel Corp. Bus 002 دستگاه 001: ID 1d6b: 0002 Linux Foundation 2.0 root hub Bus 001 دستگاه 002: ID 8087: 8008 Intel Corp. Bus 001 Device 001: ID 1d6b: 0002 Linux Foundation 2.0 root hub Bus 004 Device 001: ID 1d6b: 0003 Linux Foundation 3.0 root hub Bus 003 Device 004: ID 051d: 0002 American Power Conversion Power Supply Bus 003 Device 003: ID 051d : 0002 اتوبوس تغذیه بدون وقفه منبع تغذیه 003 آمریکایی تبدیل 003 دستگاه 002: شناسه 046d: c00c Logitech، Inc. Optical Wheel Mouse Bus 003 Device 001: ID 1d6b: 0002 Linux Foundation 2.0 hub root

دستگاه مورد نیاز خود را پیدا کرده و شناسه آن را می گیریم که از آن استفاده خواهیم کرد.

من وظیفه داشتم تا UPS ها را پیش ببرم.
(وضعیت ، در واقع ، معمولی نیست ، بلکه از سری نباید باشد: 2 ساده ترین منبع تغذیه بدون وقفه برای ایستگاه های کاری به سرور و تجهیزات شبکه تحویل داده شدند. UPS مشخص شد ملایم است و با یا بدون دلیل شروع به صدا کردن می کند. برای قطع سریع صدای آنها و هنوز با مدیریت UPS از طریق دبیان سروکار نداشته و تصمیم گرفته شد که دو UPS را به میهمانان ویندوز متصل کنید.

در این مرحله ، متوجه شدم که هر دو دستگاه مورد نیاز من شناسه یکسانی دارند ... اما بیایید امتحان کنیم.

دستگاه های ارسال شده در پرونده پیکربندی ماشین مجازی مربوطه ثبت می شوند.

# nano /etc/pve/qemu-server/101.conf usb0: host \u003d 051d: 0002

راه اندازی مجدد دستگاه برداشت ، به نظر می رسد همه چیز خوب است. اما در اینجا ما به یاد می آوریم که دستگاه دوم با همان شناسه. چگونه می توانید آنها را از هم جدا کنید؟ در واقع ، تجربه نشان داده است که اگر یک شناسه به دو ماشین مجازی اختصاص داده شود ، پس از روشن شدن ، همان دستگاه را از یکدیگر می گیرند. با وجود این واقعیت که سیستم میزبان دارای چندین دستگاه USB با این شناسه است.

اینجاست که به یاد می آوریم روش دیگری برای ارسال وجود دارد.

انتقال پورت USB

لازم است مشخص شود دستگاه مورد نیاز ما به کدام درگاه متصل است.

راه اول:

# lsusb -t /: Bus 04. پورت 1: توسعه 1 ، کلاس \u003d root_hub ، درایور \u003d xhci_hcd / 6p ، 5000M /: اتوبوس 03. پورت 1: توسعه 1 ، کلاس \u003d root_hub ، راننده \u003d xhci_hcd / 15p ، 480M | __ پورت 4: توسعه 2 ، اگر 0 ، کلاس \u003d HID ، درایور \u003d usbhid ، 1.5 میلیون | __ پورت 7: توسعه 3 ، اگر 0 ، کلاس \u003d HID ، راننده \u003d usbfs ، 12M | __ پورت 8: توسعه 4 ، اگر 0 ، Class \u003d HID ، Driver \u003d usbfs ، 12M /: Bus 02. بندر 1: توسعه 1 ، کلاس \u003d root_hub ، درایور \u003d ehci_hcd / 3p ، 480M | __ بندر 1: توسعه 2 ، اگر 0 ، کلاس \u003d توپی ، راننده \u003d توپی / 8p ، 480M /: Bus 01. Port 1: Dev 1، Class \u003d root_hub، Driver \u003d ehci_hcd / 3p، 480M | __ Port 1: Dev 2، If 0، Class \u003d hub، Driver \u003d hub / 6p، 480M

همانطور که بعداً مشخص شد ، دستگاه های مورد نیاز من در اتوبوس 3 ، پورت های 7 و 8 می نشینند. اما تاکنون این مسئله برای ما واضح نیست و در اینجا گزینه دوم وجود دارد:

مانیتور Qm qm\u003e info usbhost Bus 3، Addr 4، Port 8، Speed \u200b\u200b12 Mb / s Class 00: USB device 051d: 0002، Back-UPS XS 650CI FW: 892.R2.I USB FW: R2 Bus 3، Addr 3، Port 7 ، سرعت 12 مگابیت در ثانیه کلاس 00: دستگاه USB 051d: 0002 ، Back-UPS XS 650CI FW: 892.R2.I USB FW: R2 Bus 3 ، Addr 2 ، Port 4 ، Speed \u200b\u200b1.5 Mb / s Class 00: USB دستگاه 046d: c00c ، ماوس نوری USB

در اینجا به وضوح می بینیم که چه کسی کیست. و حالا با جسارت:

# nano /etc/pve/qemu-server/101.conf usb0: host \u003d 3-7

برای کامل بودن ، من دستورالعمل ها را با مثالی از اسناد رسمی تکمیل می کنم.

این گزینه امکان پذیر است:

مانیتور Qm qm\u003e info usbhost Bus 3، Addr 2، Port 1.2، Speed \u200b\u200b1.5 Mb / s فروشنده خاص: دستگاه USB 0529: 0001، HASP 2.17