在 Windows 10 Ubuntu 上 Bash 上是否支持 USB?

Is usb supported on Bash on Ubuntu on Windows 10?

我应该怎么做才能在 bash 上启用 USB 访问?

Edit:
According to a blog post from Microsoft this feature is now fixed from build 16176 and forward.

https://blogs.msdn.microsoft.com/wsl/2017/04/18/file-system-improvements-to-the-windows-subsystem-for-linux/

目前不支持 USB。 /mnt 中只会挂载固定磁盘(自动)。

也不支持其他存储(自动安装的固定磁盘除外),包括 CD-ROM 驱动器、环回设备和网络共享。

这里是 link 开发者反馈页面: Unable to access USB devices from bash

好消息,现在可以在 Windows 10:

上使用 drvfs 挂载 USB 媒体(包括 FAT 格式)和网络共享

挂载可移动媒体:(例如 D:)

$ sudo mkdir /mnt/d
$ sudo mount -t drvfs D: /mnt/d

安全卸载

$ sudo umount /mnt/d

您也可以在没有 smbfs 的情况下挂载网络共享:

$ sudo mount -t drvfs '\server\share' /mnt/share

您至少需要 Build 16176,因此您可能必须选择加入 Windows Insider 程序,然后更新 Windows。资料来源:https://blogs.msdn.microsoft.com/wsl/2017/04/18/file-system-improvements-to-the-windows-subsystem-for-linux/

虽然可以 mount a drive using WSL 2,但 WSL 本身并不支持将 USB 设备(如闪存驱动器或 SD 卡)连接到 WSL reader。

Connecting USB devices to WSL IS now supported using the USBIPD-WIN opensource project 不过。要通过 WSL 2 将 USB 设备连接到 Linux 发行版 运行ning:

  1. 安装 USBIPD-WIN project(下载并 运行 usbipd-win_x.msi 安装程序文件)。
  2. 通过打开您的发行版(即 Ubuntu)和 运行ning sudo apt install linux-tools-5.4.0-77-generic hwdata.
  3. 安装 USBIP 工具和硬件数据库
  4. 编辑与您的 Linux 发行版关联的 /etc/sudoers 文件以允许权限:sudo visudo 然后在路径部分的开头找到 secure_path 部分,添加工具位置:/usr/lib/linux-tools/5.4.0-77-generic.
  5. 确保 WSL 命令行已打开(因此 VM 处于活动状态)并连接您的 USB 设备。
  6. 打开 PowerShell 并使用以下命令列出连接到 Windows 机器的 USB 设备:usbipd wsl list.
  7. Select 您要附加到 WSL 的设备的总线 ID 和 运行 此命令:usbipd wsl attach --busid <busid>.
  8. 打开 Ubuntu(或您首选的 WSL 命令行)并列出连接的 USB 设备:lsusb.

您应该会看到刚刚连接的设备,并能够使用普通 Linux 工具与其进行交互。根据您的应用程序,您可能需要配置 udev 规则以允许非根用户访问设备。