Ana Bilgisayar USB Aygıtlarını WSL veya Hyper-V VM'ye Bağlama
Linux için Windows Alt Sisteminden (WSL2) veya Hyper-V sanal makinesinden bir bilgisayarın fiziksel USB aygıtlarına erişmek için açık kaynaklı usbipd-win projesini kullanabilirsiniz. Bu araç, Windows ana bilgisayarına bağlı harici bir USB cihazını herhangi bir Linux dağıtımına (WSL olarak çalışan) veya bir sanal makineye geçirmenize olanak tanır. Bu, sanal makinelerden veya Linux ortamından USB cihazlarıyla herhangi bir işlemin (Android cihazların yanıp sönmesi, ADB ve Fastboot kullanılması, akıllı kartlara erişim, Arduino donanımı ile çalışma vb.)
Usbipd-win, USB cihaz trafiğini VM/WSL ile ana bilgisayar Windows işletim sistemi arasında bir sanal ağ arabirimi üzerinden iletmek için TCP/IP protokolünü kullanır. İlk olarak, usbipd-win sunucusunun bir Windows ana bilgisayarına nasıl kurulacağını göstereceğiz, ardından Linux (WSL) üzerine bir USB/IP istemcisi kuracağız ve Linux VM'ye (WSL) paylaşılan bir USB cihazı bağlayacağız.
Usbipd-win, Windows 8.1 x64 ve Windows Server 2012 R2'yi (ve sonraki sürümleri) destekler ve Windows'taki yerel USB aygıtlarının diğer sanal makinelerle (WSL2 ve Hyper-V'deki Linux konuk işletim sistemleri dahil) paylaşılmasına izin verir. Daha önce Hyper-V'de, USB sürücülerini yalnızca oldukça sınırlı Gelişmiş Oturum Modu aracılığıyla VM'lere veya diğer USB cihaz türlerine yönlendirmek mümkündü.
Usbipd-win projesi GitHub'da mevcuttur (https://github.com/dorssel/usbipd-win). Manuel olarak indirip kurabilirsiniz (bir MSI kurulum dosyası mevcuttur), ancak yerleşik Winget paket yöneticisini kullanarak kurmak çok daha hızlıdır.
winget install --interactive --exact dorssel.usbipd-win
Program, Windows'ta ayrı bir usbipd (USBIP Aygıt Ana Bilgisayarı) hizmeti oluşturacaktır:
"C:\Program Files\usbipd-win\usbipd.exe"3240 numaralı TCP bağlantı noktasını dinleyen
Yerel ağdaki bilgisayarlardan TCP bağlantı noktası 3240'a erişime izin vermek için usbipd.exe için Windows Defender Güvenlik Duvarı'nda ek bir kural oluşturulmuştur.
Şimdi Linux ortamı için Windows Alt Sisteminde USBIP desteğini yapılandıralım. Görüntünüzdeki çekirdek sürümünün en az 5.10.60.1 olduğundan emin olun (demo örneğimizde Ubuntu 22.04 LTS görüntüsüyle WSL 2 kullanılmıştır):
$ uname -aŞimdi USB/IP araçlarını ve USB donanım kimlik tabanını kurmanız gerekiyor.
$ sudo apt install linux-tools-virtual hwdata
$ sudo update-alternatives --install /usr/local/bin/usbip usbip `ls /usr/lib/linux-tools/*/usbip | tail -n1` 20Debian WSL görüntüsünde aşağıdaki komutu kullanın:
$ sudo apt-get install usbip hwdata usbutilsUSB/IP araçlarını rpm tabanlı bir WSL görüntüsüne (CentOS/Oracle Linux) kurun:
$ sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
$ sudo rpm -ivh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
$ sudo yum install kmod-usbip
$ sudo yum install usbip-utils
$ sudo yum install hwdataŞimdi ana Windows bilgisayarda yükseltilmiş bir komut istemi açın ve USB aygıtlarını listeleyin:
usbipd wsl list
Gördüğünüz gibi USB cihazlarının hiçbiri paylaşılmıyor (Paylaşılmıyor). USB cihazını BUSID'si ile paylaşabilirsiniz. Örneğimde, BUISID 4-2 ile USB Yığın Depolama Aygıtını WSL'ye geçirmek istiyorum.
usbipd wsl attach --busid 4-2WSL 1 kullanıyorsanız (usbip tarafından desteklenmiyor) bir hata alırsınız.
sbipd: error: The specified WSL distribution is using WSL 1, but WSL 2 is required. Learn how to upgrade at https://docs.microsoft.com/windows/wsl/basic-commands#set-wsl-version-to-1-or-2.Bir hata görünürse:
usbipd: error: WSL kernel is not USBIP capable, WSL sistemini aşağıdaki komutla güncelleyin:
wsl --update
USB flash sürücünüzün WSL'ye bağlı olup olmadığını kontrol edin:
$ dmesg | tail
$ lsusbUSB aygıtınızı ağ üzerinden Linux çalıştıran başka bir bilgisayarla paylaşmak isterseniz (bu, Hyper-V'de Linux konuklu bir sanal makine veya başka bir hipervizör olabilir), önce uzak bir Windows ana bilgisayarındaki kullanılabilir USB aygıtlarını listeleyin:
$ usbip list --remote=192.168.13.21Artık gerekli USB cihazını kimliğine göre bağlayabilirsiniz:
$ sudo usbip attach -remote=192.168.13.21 --busid=4-2Bu örnekte, usbipd-win sunucusunun çalıştığı Windows ana bilgisayarının IP adresi belirtilmiştir.
Paylaşılan USB cihazı artık Linux araçlarınız tarafından görülebilir olmalıdır.
Windows'ta USB cihaz paylaşımını devre dışı bırakmak için:
usbipd wsl detach --busid 4-2Lütfen bu şekilde bağlanan USB sürücülerinin WSL'de blok aygıtlar olarak tanınmadığını unutmayın. lsblk komutunu kullanarak bunu kontrol edin. Gerçek şu ki, WSL çekirdeğinin USB sürücüler için bir sürücüsü yok (bunları eklemek için çekirdeği yeniden oluşturmanız gerekecek).
Paylaşılan USB sürücülerin dosya sistemini Linux dağıtımlarında standart şekilde bağlayabileceksiniz.
Bu nedenle, harici bir USB flash sürücü, disket veya SD kartı WSL'ye takmak için aşağıdaki komutları kullanmalısınız:
$ sudo mkdir /mnt/f
$ sudo mount -t drvfs f: /mnt/fWSL, FAT, ExFAT, ReFs veya NTFS sürücülerin yanı sıra VHD görüntüleri monte eder.
Bu nedenle, usbipd-win, USBOverIP protokolünü kullanan bir ağ üzerinden fiziksel USB aygıtlarını fiziksel bir Windows ana bilgisayarından WSL'ye, sanal makineye veya Linux bilgisayarlara geçirmek için kullanılabilir.
WSL'yi farklı bir sürücüye nasıl taşıyacağınızla ilgili makaleyi de okumanız faydalı olabilir.





