كيفية توصيل أجهزة USB في نظام Windows الفرعي لنظام Linux ضمن Windows 11

من الممكن توصيل أجهزة USB في نظام Windows الفرعي لنظام Linux ضمن Windows 11 والعمل معها مباشرة.

روابط سريعة

  • ما هو usbipd-win؟
  • قم بتوصيل أجهزة USB ضمن نظام Windows الفرعي لنظام Linux
  • هل هناك أي بديل واجهة المستخدم الرسومية؟

قدمت مايكروسوفت نظام Windows الفرعي لنظام التشغيل Linux (WSL) منذ فترة ، والذي جلب الدعم لتشغيل تطبيقات Linux مباشرة من تثبيت Windows الخاص بك دون الحاجة إلى إعداد جهاز افتراضي. نظرًا لكونها طبقة توافق معقدة ، كان لدى WSL بعض القيود. لم يستخدم التطبيق الأولي حتى نواة Linux كاملة ، لذلك واجهت العديد من التطبيقات مشكلات التوافق. قدم الإصدار 2 الكثير من التحسينات ، ولكن لا يزال هناك شيء مفقود: دعم توصيل أجهزة USB الفعلية.

إذا كنت مستخدمًا نشطًا لنظام Windows الفرعي لنظام التشغيل Linux وترغب في الوصول إلى أجهزة USB مباشرةً من مثيل Linux الذي يعمل ضمن WSL ، فسيسعدك معرفة أنه كان هناك تقدم ملحوظ على هذه الجبهة. بفضل مساهمات Microsoft للمصدر المفتوح usbipd الفوز مشروع ، يمكنك الآن الاستمتاع بالوصول المار عبر USB في WSL. هذا يعني أنه يمكن للمستخدمين النهائيين أداء مهام مثل وميض أجهزة Android ضمن نظام Windows الفرعي لنظام Linux ، والتي لا يدعمها نظام Linux الفرعي.

ما هو usbipd-win؟

يدور مشروع usbipd-win حول إنشاء حل لمشاركة أجهزة USB المتصلة محليًا مع الأجهزة الأخرى ، بما في ذلك ضيوف Hyper-V و WSL2. ومع ذلك ، فإن نواة WSL2 Linux الرسمية كانت تفتقر إلى الدعم لـ بروتوكول USB / IP، مطالبة المستخدمين ببناء النواة بأنفسهم.

منذ إصدار WSL kernel 5.10.60.1 ، تم تكوين المعلمات المطلوبة خارج الصندوق ، لذلك لا حاجة إلى إعادة ترجمة يدوية. ساهمت Microsoft أيضًا بواجهة سطر أوامر للمشروع لتمكين جهاز USB للمشاركة على Windows وإرفاقه بسلاسة من داخل WSL.

قم بتوصيل أجهزة USB ضمن نظام Windows الفرعي لنظام Linux

قبل البدء ، تأكد من أنك تجري نظام التشغيل Windows 11 وقمت بتثبيت كافة تحديثات WSL. كما ذكرنا سابقًا ، تحتاج إلى توزيعة WSL 2 Linux حتى يعمل هذا.

  1. قم بتشغيل الأمر التالي من داخل WSL:
    uname -a
    إذا كان يظهر إصدار kernel من 5.10.60.1 أو أحدث (كما هو موضح أدناه) ، فأنت على ما يرام.
    • إذا كان إصدار kernel المثبت أقدم من 5.10.60.1 ، فيمكن تحديثه باستخدام الأوامر التالية:
      wsl --shutdown
      wsl --update
  2. توجه إلى GitHub repo لمشروع usbipd-win. ثم قم بتنزيل أحدث إصدار وتثبيته.
    • يدعم أحدث إصدار من usbipd-win التثبيت الصامت لبرنامج التشغيل ، وذلك بفضل برامج التشغيل المعتمدة من برنامج توافق أجهزة Windows. كما أنه يدعم ملفات قناة ديف يبني من Windows 11.
    • بالإضافة إلى صفحة الإصدار على GitHub ، يمكنك تثبيت التطبيق وتحديثه باستخدام Windows Package Manager CLI (ويعرف أيضا باسم وينجيت).
      winget install--interactive --exact dorssel.usbipd-win
  3. قم بتثبيت أدوات مساحة المستخدم لـ USB / IP وقاعدة بيانات لمعرفات أجهزة USB. إذا كنت تقوم بتشغيل Ubuntu على WSL ، فنفّذ الأوامر التالية:
    sudo apt install linux-tools-virtual hwdata
    sudo update-alternatives --install /usr/local/bin/usbip usbip `ls /usr/lib/linux-tools/*/usbip | tail -n1` 20
    • يمكنك اختيار حزم التعريف المختلفة (على سبيل المثال linux-tools-generic) أيضًا ، اعتمادًا على التوزيعات المثبتة. ومع ذلك ، قد تحتاج إلى ضبط متغير المسار في الخطوة التالية ، وفقًا لرقم إصدار الحزمة الوصفية.
    • بالنسبة للتوزيعات الأخرى ، راجع وثائق أداة إدارة الحزم ذات الصلة.
  4. في حالة إنشاء الرابط الرمزي باستخدام update-alternatives الأمر في الخطوة السابقة لم يعمل من أجلك ، يمكنك تعديل خيارات sudo يدويًا للسماح للمستخدم الجذر بالعثور على ملف usbip يأمر. للقيام بذلك ، قم بتحرير ملف /etc/sudoers ملف باستخدام sudo visudo و أضف /usr/lib/linux-tools/-generic إلى بداية secure_path. يجب أن يبدو كما يلي:
    Defaults secure_path="/usr/lib/linux-tools/5.4.0-77-generic:/usr/local/sbin:..."
  5. افتح مثيلًا طرفيًا جديدًا كمسؤول واكتب الأمر التالي لسرد جميع أجهزة USB المتصلة بنظام Windows.
    usbipd wsl list
  6. قم بتدوين قيمة BUSID لجهاز USB الذي تريد توصيله بـ WSL. بعد ذلك ، قم بتشغيل الأمر التالي لبدء عملية المرفقات. ستتم مطالبتك بواسطة WSL بكلمة مرور لتشغيل أمر sudo.
    usbipd wsl attach --busid <busid>
    على سبيل المثال ، نقوم هنا بإرفاق واجهة Fastboot لجهاز Android بـ WSL من مثيل Windows 11 المضيف:
  7. افتح الآن مثيل WSL 2 جديد وقم بتشغيل ملف lsusb الأمر لرؤية أجهزة USB المتاحة. يجب أن يسرد الجهاز (الأجهزة) المتصل.
  8. هذا كل شيء! يمكنك الآن العمل مع جهاز USB الخاص بك مباشرة من WSL.

عند الانتهاء ، يمكنك فصل الجهاز باستخدام الأمر الموضح أدناه. مرة أخرى ، قم بتشغيله من مثيل طرفي يعمل كمسؤول.

usbipd wsl detach --busid <busid>

هل هناك أي بديل واجهة المستخدم الرسومية؟

إذا لم تكن واجهة سطر الأوامر هي موطن قوتك ، فيمكنك تقديم WSL-USB-GUI محاولة. إنه غلاف غير رسمي لواجهة المستخدم الرسومية حول ثنائي usbipd-win ، مما يبسط إلى حد كبير قائمة أجهزة USB وإمكانية التشغيل البيني بين نظام التشغيل المضيف ومثيل WSL.

  1. تأكد من تثبيت أحدث إصدار من usbipd-win ومن تحديث نواة WSL.
  2. قم بتنزيل أحدث برنامج تثبيت لـ wsl-usb-gui من صفحة إصدارات المشروع GitLab.
  3. قم بتشغيل ملف MSI الذي قمت بتنزيله.
    • قبل تثبيت البرنامج ، يقوم المثبت أيضًا بالتحقق من المتطلبات الأساسية ومحاولة إعدادها إذا لزم الأمر. ومع ذلك ، سيكون من الأفضل أن تحتفظ بكل شيء محدثًا بنفسك لتجنب أي مشكلات توافق غير متوقعة.
  4. عند التثبيت الناجح ، يجب أن تكون قادرًا على العثور على اختصار تم إنشاؤه حديثًا باسم WSL USB في قائمة ابدأ. قم بتشغيل التطبيق من هناك.
  5. اضغط على ينعش زر لتعبئة قائمة أجهزة USB المتصلة بنظام التشغيل المضيف.
  6. استخدم ال يربط و فصل أزرار لإطلاق العنان للإمكانات الكاملة لمرور USB.

من الآن فصاعدًا ، أنت على استعداد للمضي قدمًا والتلاعب بجميع أجهزة USB التي تريدها في WSL. سيساعدك دليلنا الكامل على طول الطريق ، ولكن بمجرد إعداد ممر USB بالطريقة التي تريدها ، فإنه يتلاشى في الخلفية. لمعرفة المزيد ، الق نظرة على وثائق Microsoft الرسمية حول توصيل أجهزة USB ضمن WSL و قسم GitHub Wiki الخاص بـ usbipd-win.

بفضل عضو كبير في XDA Some_Random_Username للحصول على معلومات!