WSL2Linux 子系统(六)

WSL 连接USB

WSL (Windows Subsystem for Linux) 是一种在 Windows 操作系统上运行 Linux 应用程序的兼容层。它的主要作用是提供了一个类似于虚拟机的环境,使得在 Windows 上开发和运行基于 Linux 的应用变得更加方便。然而,WSL 目前还不支持直接通过 USB 接口连接设备。这意味着你不能在 WSL 中直接访问 USB 设备,例如 USB 存储设备、USB 打印机等。但是,你仍然可以通过其他方式在 WSL 中管理和使用 USB 设备。

一种常见的方法是在 WSL 中使用网络共享来访问在 Windows 主机上连接的 USB 设备。你可以通过将 USB 设备连接到 Windows 主机上,并在 WSL 中安装和配置 Samba 或 NFS 服务器来实现网络共享。然后,在 WSL 中,你可以使用网络共享来访问主机上连接的 USB 设备。另外,还有一些第三方工具可以帮助在 WSL 中连接 USB 设备,如 usbip、usb-redirector 等。这些工具可以实现 USB 设备的远程共享和传输,让你可以在 WSL 中使用 USB 设备。需要注意的是,具体的操作方法可能会因为不同的环境和设备而有所差异。因此,在尝试连接 USB 设备到 WSL 之前,请务必参考相关文档或搜索相关指南,以便找到适用于你的具体情况的最佳解决方案。

上一篇文章中讲解 《WLS2Linux 子系统编译 Android》,本篇则讲解WSL安装USB适配和挂载外部硬盘。

作者:炭烤毛蛋 ,点击博主了解更多。


文章目录

  • [WSL 连接USB](#WSL 连接USB)
  • [1. WSL 连接USB](#1. WSL 连接USB)
  • [1.1 安装 usbipd-win](#1.1 安装 usbipd-win)
  • [1.2 安装 USBIPD工具](#1.2 安装 USBIPD工具)
  • [1.3 连接 USB 设备](#1.3 连接 USB 设备)
  • [1.4 wsl 映射 usb 连接](#1.4 wsl 映射 usb 连接)
  • [2. WSL 挂载外部硬盘](#2. WSL 挂载外部硬盘)
  • [2.1 Powershell 挂载硬盘](#2.1 Powershell 挂载硬盘)
  • [2.2 WSL 挂载硬盘](#2.2 WSL 挂载硬盘)
  • 结语

1. WSL 连接USB

受Windows系统版本限制,尤其是大版本迭代。USB共享时所用软件会略有不同,以下是基础注意事项。

  • Win11 (版本不低于22000),Win10请参考 usbipd官方教程。
  • USBIPD 仅支持x64/x86架构,暂不支持Arm64架构
  • Win系统正确安装WSL2环境

1.1 安装 usbipd-win

根据Microsfot官方教程可以提前官网下载需要安装usbipd-win releases软件,优选*.msi文件;下载完成然后执行安装,记得选择信任该驱动,等待安装完成即可。也可以借助系统powershell环境自动匹配软件,自动安装。

bash 复制代码
PS C:\WINDOWS\system32> winget install --interactive --exact dorssel.usbipd-win
"msstore"源要求在使用前查看以下协议。
Terms of Transaction: https://aka.ms/microsoft-store-terms-of-transaction
源要求将当前计算机的 2 个字母的地理区域发送到后端服务才能正常工作,(例如"US")。

是否同意所有源协议条款?
[Y] 是  [N] 否: y

可以看到usbipd-win 安装指引,按照指引安装即可。

注意: 安装完成需要重启powershell才生效。

1.2 安装 USBIPD工具

Windows环境安装usbip工具后,Linux环境还需要安装usbip工具。

启动WSL下面的Ubuntu系统,其它系统请参考官方教程

bash 复制代码
sudo apt install linux-tools-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/*-generic/usbip 20

1.3 连接 USB 设备

  • 扫描usb 外设
    管理员身份运行一个PowerShell命令,然后执行扫描。
bash 复制代码
PS C:\WINDOWS\system32> usbipd wsl list
BUSID  VID:PID    DEVICE                                                        STATE
2-2    1c4f:0048  USB 输入设备                                                  Not attached
4-3    0403:6001  USB Serial Converter                                          Not attached
4-4    0403:6001  USB Serial Converter                                          Not attache
  • 连接 usb外设
bash 复制代码
usbipd wsl attach --busid <busid>

4-4 0403:6001 USB Serial Converter Not attache 为例,需要连接该设备则用如下命令

bash 复制代码
PS C:\WINDOWS\system32> usbipd wsl attach --busid 4-4
PS C:\WINDOWS\system32> usbipd wsl list
BUSID  VID:PID    DEVICE                                                        STATE
2-2    1c4f:0048  USB 输入设备                                                  Not attached
4-3    0403:6001  USB Serial Converter                                          Not attached
4-4    0403:6001  USB Serial Converter                                          Attached - WSL

注意:在连接USB设备前,需要确认打开的有一个WSL命令行界面,我们需要WSL2的VM环境是激活状态。

  • 断开 usb 外设
    在WSL 中usb设备使用结束可以直接拔掉或者通过Windows弹出USB 设备。即从物理层面断开USB设备连接,也可以通过 PowerShell 管理员模式执行弹出外设命令:
bash 复制代码
usbipd wsl detach --busid <busid>
  • WSL
    WSL 查看 usb 设备
bash 复制代码
lsusb
Bus 001 Device 004: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC

1.4 wsl 映射 usb 连接

除了使用powershell 命令连接共享网络USB,从WSL主动发起共享网络USB。

  • 查看可共享USB设备
bash 复制代码
usbip list -r $HOSTNAME.local
Exportable USB devices
======================
 - King.local
        4-4: Future Technology Devices International, Ltd : FT232 Serial (UART) IC (0403:6001)
           : USB\VID_0403&PID_6001\A50285BI
           : (Defined at Interface level) (00/00/00)
           :  0 - Vendor Specific Class / Vendor Specific Subclass / Vendor Specific Protocol (ff/ff/ff)
  • 共享USB 设备
bash 复制代码
sudo usbip attach -r $HOSTNAME.local -b <busid>  #连接USB设备,注意替换<busid>
  • 移除共享网络USB 设备
bash 复制代码
sudo usbip detach -r $HOSTNAME.local -b <busid>  #连接USB设备,注意替换<busid>

2. WSL 挂载外部硬盘

通过挂载外部硬盘到 WSL,你可以在 Windows 和 Linux 之间共享和传输数据。可以扩展你在 WSL 中的存储空间,避免存储空间不足的问题。WSL 提供了强大的命令行工具和 Linux 环境,可以用于各种数据处理任务。

2.1 Powershell 挂载硬盘

Powershell 比较简单挂载步骤如下:

  • 罗列可用磁盘
bash 复制代码
GET-CimInstance -query "SELECT * from Win32_DiskDrive"
DeviceID Caption Partitions Size Model
-------- ------- ---------- ---- -----
\\.\PHYSICALDRIVE0 SAMSUNG MZVL2512HCJQ-00BL2 4 512103934800 SAMSUNG MZVL2512HZJQ-00BL2
\\.\PHYSICALDRIVE1 Mass Storage Device USB Device 1 15624142080 Mass Storage Device USB Device
  • 挂载磁盘
    wsl --mount ,DiskPath 选择以上路径
bash 复制代码
wsl --mount \\.\PHYSICALDRIVE1

2.2 WSL 挂载硬盘

当然使用wsl 直接挂载外部硬盘,挂载前需要先从Window侧卸载。
win + r, 输入 diskmgmt.msc,卸载需要挂载硬盘。

  • 查看挂载的硬盘
bash 复制代码
wmic diskdrive list brief
  • 挂载物理硬盘
bash 复制代码
 wsl --mount \\.\PHYSICALDRIVE1  --bare
  • 卸载物理硬盘
bash 复制代码
wsl --unmount  \\.\PHYSICALDRIVE1

结语

不枉博主详细讲解,欢迎订阅博主--炭烤毛蛋

相关推荐
AndyFrank1 分钟前
mac crontab 不能使用问题简记
linux·运维·macos
筱源源17 分钟前
Kafka-linux环境部署
linux·kafka
plmm烟酒僧19 分钟前
Windows下QT调用MinGW编译的OpenCV
开发语言·windows·qt·opencv
算法与编程之美1 小时前
文件的写入与读取
linux·运维·服务器
xianwu5431 小时前
反向代理模块
linux·开发语言·网络·git
Amelio_Ming1 小时前
Permissions 0755 for ‘/etc/ssh/ssh_host_rsa_key‘ are too open.问题解决
linux·运维·ssh
Ven%2 小时前
centos查看硬盘资源使用情况命令大全
linux·运维·centos
Jtti3 小时前
Windows系统服务器怎么设置远程连接?详细步骤
运维·服务器·windows
TeYiToKu3 小时前
笔记整理—linux驱动开发部分(9)framebuffer驱动框架
linux·c语言·arm开发·驱动开发·笔记·嵌入式硬件·arm
dsywws3 小时前
Linux学习笔记之时间日期和查找和解压缩指令
linux·笔记·学习