Host USB-eszközök csatlakoztatása WSL-hez vagy Hyper-V virtuális géphez
A nyílt forráskódú usbipd-win projekt segítségével hozzáférhet a számítógép fizikai USB-eszközeihez a Windows alrendszer Linuxhoz (WSL2) vagy a Hyper-V virtuális gépről. Ez az eszköz lehetővé teszi a Windows gazdagéphez csatlakoztatott külső USB-eszköz átadását bármely (WSL-ként futó) Linux disztribúcióhoz vagy virtuális géphez. Ez lehetővé teszi bármilyen művelet végrehajtását USB-eszközökkel virtuális gépekről vagy Linux környezetről (Android-eszközök villogása, ADB és Fastboot használata, intelligens kártyák elérése, Arduino hardverrel való munka stb.).
Az Usbipd-win a TCP/IP protokollt használja az USB-eszköz forgalmának továbbítására a VM/WSL és a gazdagép Windows operációs rendszer közötti virtuális hálózati interfészen keresztül. Először megmutatjuk, hogyan kell telepíteni az usbipd-win szervert egy Windows gazdagépre, majd telepítünk egy USB/IP klienst Linuxon (WSL), és csatlakoztatunk egy megosztott USB-eszközt a Linux virtuális géphez (WSL).
Az Usbipd-win támogatja a Windows 8.1 x64 és a Windows Server 2012 R2 (és újabb) rendszert, és lehetővé teszi a helyi USB-eszközök megosztását a Windows rendszeren más virtuális gépekkel (beleértve a WSL2 és Linux vendég operációs rendszereket a Hyper-V rendszeren). Korábban a Hyper-V-n csak a meglehetősen korlátozott Enhanced Session Mode segítségével lehetett átirányítani az USB-meghajtókat virtuális gépekre vagy más USB-eszközökre.
Az Usbipd-win projekt elérhető a GitHubon (https://github.com/dorssel/usbipd-win). Letöltheti és telepítheti manuálisan is (elérhető egy MSI telepítőfájl), de sokkal gyorsabban telepíthető a beépített Winget csomagkezelővel.
winget install --interactive --exact dorssel.usbipd-win
A program létrehoz egy külön usbipd (USBIP Device Host) szolgáltatást a Windows rendszeren:
"C:\Program Files\usbipd-win\usbipd.exe"amely a 3240-es TCP-porton figyel
A Windows Defender tűzfalban egy további szabályt hoztak létre az usbipd.exe fájlhoz, amely lehetővé teszi a 3240-es TCP-porthoz való hozzáférést a helyi hálózaton lévő számítógépekről.
Most konfiguráljuk az USBIP támogatást a Windows alrendszerben a Linux környezethez. Győződjön meg arról, hogy a rendszermag verziója a képben legalább 5.10.60.1 (demópéldánk a WSL 2-t használja Ubuntu 22.04 LTS-képpel):
$ uname -aMost telepítenie kell az USB/IP eszközöket és az USB hardverazonosító bázist.
$ sudo apt install linux-tools-virtual hwdata
$ sudo update-alternatives --install /usr/local/bin/usbip usbip `ls /usr/lib/linux-tools/*/usbip | tail -n1` 20Használja a következő parancsot a Debian WSL lemezképben:
$ sudo apt-get install usbip hwdata usbutilsTelepítse az USB/IP-eszközöket egy rpm-alapú WSL-lemezképbe (CentOS/Oracle Linux):
$ 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 hwdataMost nyisson meg egy emelt szintű parancssort a gazdagép Windows-számítógépen, és sorolja fel az USB-eszközöket:
usbipd wsl list
Amint láthatja, egyik USB-eszköz sincs megosztva (nincs megosztva). Megoszthatja az USB-eszközt a BUSID-je alapján. Példámban a BUISID 4-2 azonosítójú USB-háttértárat szeretném átadni a WSL-be.
usbipd wsl attach --busid 4-2Ha WSL 1-et használ (az usbip nem támogatja), hibaüzenetet fog kapni.
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.Ha hiba jelenik meg:
usbipd: error: WSL kernel is not USBIP capable, frissítse a WSL rendszert a következő paranccsal:
wsl --update
Ellenőrizze, hogy az USB flash meghajtó csatlakozik-e a WSL-hez:
$ dmesg | tail
$ lsusbHa meg szeretné osztani USB-eszközét egy másik Linuxot futtató számítógéppel a hálózaton keresztül (ez lehet egy virtuális gép Linux-vendéggel a Hyper-V-n vagy bármely más hipervizoron), először sorolja fel az elérhető USB-eszközöket egy távoli Windows-gazdagépen:
$ usbip list --remote=192.168.13.21Most már csatlakoztathatja a szükséges USB-eszközt az azonosítója alapján:
$ sudo usbip attach -remote=192.168.13.21 --busid=4-2Ebben a példában annak a Windows-gazdagépnek az IP-címe van megadva, amelyen az usbipd-win szerver fut.
A megosztott USB-eszköznek most láthatónak kell lennie a Linux-eszközök számára.
Az USB-eszköz megosztásának letiltása Windows rendszerben:
usbipd wsl detach --busid 4-2Kérjük, vegye figyelembe, hogy az így csatlakoztatott USB-meghajtókat a rendszer nem ismeri fel blokkolóeszközként a WSL-ben. Ellenőrizze ezt az lsblk paranccsal. A helyzet az, hogy a WSL kernelnek nincs meghajtója az USB-meghajtókhoz (a hozzáadáshoz újra kell építeni a kernelt).
A megosztott USB-meghajtók fájlrendszerét szabványos módon csatlakoztathatja a Linux disztribúciókhoz.
Ezért a következő parancsokat kell használnia külső USB flash meghajtó, hajlékonylemez vagy SD-kártya csatlakoztatásához WSL-ben:
$ sudo mkdir /mnt/f
$ sudo mount -t drvfs f: /mnt/fWSL-be szerelhető FAT-, ExFAT-, ReF- vagy NTFS-meghajtók, valamint VHD-képek.
Így az usbipd-win használható fizikai USB-eszközök átvitelére egy fizikai Windows-állomásról WSL-re, virtuális gépekre vagy Linux-számítógépekre hálózaton keresztül az USBOverIP protokoll használatával.
Hasznos lehet elolvasni a WSL másik meghajtóra való áthelyezéséről szóló cikket is.





