老奶奶看了都会的WSL2连接USB设备教程!
老奶奶看了都会的WSL2-Ubuntu连接USB设备教程!
作者:SkyXZ
CSDN:SkyXZ~-CSDN博客
博客园:SkyXZ - 博客园
参考资料:微软官方文档连接 USB 设备 | Microsoft Learn
在Win11上用WSL2安装Ubuntu来开发简直不要太爽!!!但是很多小伙伴会发现,欸~为什么我在宿主机上插入的USB设备Ubuntu怎么识别不到啊!?这时很多小伙伴拿出浏览器kuku一通搜索就会知道,原来是因为WSL2运行的是一个虚拟化环境,并不能直接访问宿主机(Windows)的硬件资源,这时大部分的教程 or GPT都会给出一个方法,那就是下载安装usbip这个包,但是当你运行sudo apt install usbip这个指令的时候大概率会出现如下报错来提示我们不具备下载的条件:

那我们到底该如何正确安装usbip这个库呢?同学们请继续往下看,我们之所以不具备这个包的安装条件就是因为这个包的支持依赖于Linux的某些内核模块,而我们WSL2的内核并不直接支持这些模块,那么本着见着拆招的思想我们只要把缺少的内核重新装上加入 USB 存储设备支持不就好啦?顺着这个思路我们找到WSL2的内核仓库microsoft/WSL2-Linux-Kernel: The source for the Linux kernel used in Windows Subsystem for Linux 2 (WSL2)接着我们将我们需要的内核源码克隆到我们的WSL2-Ubuntu中(很大,直接下载拖进Linux会快很多)

uname -r #查看当前系统的内核版本
git clone https://github.com/microsoft/WSL2-Linux-Kernel.git -b xxxxx #对应内核
unzip WSL2-Linux-Kernel-linux-msft-wsl-5.15.y.zip #如果是下载的先解压

接着我们安装一些必要的依赖
sudo apt install build-essential flex bison libssl-dev libelf-dev dwarves #编译内核所需的常见工具和库
sudo apt install libncurses-dev #libncurses-dev是一个开发库,用于在Linux系统上开发基于终端的用户界面(TUI)应用程序,它是ncurses库的开发版本,提供了编译和链接TUI应用程序所需的头文件和静态库文件,通过使用libncurses-dev,开发人员可以利用ncurses库的功能创建具有交互性和可视化效果的终端应用程序
接着我们进入内核文件包使用如下命令来编辑内核配置文件:
cd WSL2-Linux-Kernel-linux-msft-wsl-5.15.y/
make menuconfig KCONFIG_CONFIG=Microsoft/config-wsl
PS:如果你的终端太小的话会报以下错误,解决方法很简单,把终端窗口拉大即可或者如果无法拉大的话可以采用下面给出的两个办法之一:
Your display is too small to run Menuconfig!
It must be at least 19 lines by 80 columns.
make[1]: *** [scripts/kconfig/Makefile:48: menuconfig] Error 1
make: *** [Makefile:627: menuconfig] Error 2
#method-1
#使用命令行设置配置,如果你无法调整窗口大小,可以使用以下命令直接启用默认配置,而不进入 menuconfig,该命令会基于 Microsoft/config-wsl 文件加载配置,然后通过命令行逐步询问新选项(如果有)
make KCONFIG_CONFIG=Microsoft/config-wsl oldconfig
#method-2
#尝试使用非交互式配置,即不需要手动调整配置,直接使用 defconfig 自动生成默认配置
make KCONFIG_CONFIG=Microsoft/config-wsl defconfig
理论上来说运行完上述正确指令会出现如下窗口,我们选择进入 Device Drivers -> USB support -> Support for Host-side USB ,选中 USB Mass Storage support( * 号是直接编译进内核,M 是编译为内核模块,内核模块需要手动加载),把下面弹出来的一堆驱动都选上,保存完之后就可以退出了:

即选择这几个便可以啦,其他的选项视自己的需求选择,如果不确定的话也可以全部勾选上,选择完成之后我们保存退出即可

最后我们进入源码目录开始编译内核即可,编译完成的文件是bzImage文件,文件在arch/x86/boot/文件夹下
cd WSL2-Linux-Kernel-linux-msft-wsl-5.15.y
make -j$(nproc) bzImage KCONFIG_CONFIG=Microsoft/config-wsl

接着我们将这个内核文件拷贝到我们的宿主机里的用户目录下(C:\Users{username}),同时找到一个叫".wslconfig"的文件,如果没有的话那就自行创建一个,并把我们拷贝出来的内核文件的地址添加进文件里
[wsl2]
kernel=path\\to\\kernel #

接着我们打开CMD将WSL2关闭重启
wsl --shutdown
接着重新打开我们的wsl2并输入以下指令即可完成对usbip的安装
sudo apt update
sudo apt install linux-tools-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/*-generic/usbip 20
至此我们便完成了Ubuntu上usbip的安装,接着我们在Windows上安装usbip,由于微软在Windows 10及更高版本已原生支持USB/IP,因此我们只需要用管理员身份打开Windows PowerShell并运行以下命令并在弹出窗口点击安装即可(有些同学安装完成之后可能需要重启一下电脑)
winget install --interactive --exact dorssel.usbipd-win

接着我们使用如下命令即可看到当前宿主机的USB设备,
usbipd list #查看当前宿主机的所有USB设备及其信息

然后我们使用如下命令即可将对应的设备挂载到WSL2设备上,但是要注意挂载到WSL2的设备宿主机将无法使用!!!
#启用
usbipd bind --busid <busid> #绑定设备
usbipd attach --busid <busid> --wsl #将设备挂载到WSL2
#禁用
usbipd unbind --busid <busid> #解绑设备
usbipd attach --busid <busid> #将设备附加到Win

最后我们在WSL2中检查一下设备是否已经挂载上,输入以下命令后可以发现设备已经成功挂载到我们的WSL2
lsusb #列出当前USB设备

老奶奶看了都会的WSL2连接USB设备教程!的更多相关文章
- 使用WSL2连接USB设备
目录 要求 安装 第一步 在Window安装usbipd 第二步 在WSL里安装USBIP 工具和硬件数据库 使用方法 22.3.19 微软官方文档:连接 USB 设备 | Microsoft Doc ...
- Ubuntu物理机中解决VirtualBox虚拟机无法连接USB设备的问题
本文由荒原之梦原创,原文链接:http://zhaokaifeng.com/?p=611 问题描述: 在安装完VirtualBox的USB控制器扩展(关于在VirtualBox中安装USB控制器扩展的 ...
- 虚拟机中不能连接usb设备解决办法
虚拟机中不能连接usb设备解决办法 1.点击开始->运行,在对话框中输入"services.msc",确定,打开windows服务管理器.2.在服务列表中选中"VM ...
- C# 实现自定义的USB设备与上位机进行通信(上位机部分)
因为以前没用过USB,对USB也不了解,于是上网查了很多资料,不过网上的资料都是零零散散,不清不楚的,于是我自己总结了一下,下面几个链接是网上这么多零散资料里,我觉得比较有参考意义的. USB设备连接 ...
- 在 Linux 中永久修改 USB 设备权限
问题 当我尝试在 Linux 中运行 USB GPS 接收器时我遇到了下面来自 gpsd 的错误.看上去 gpsd 没有权限访问 USB 设备(/dev/ttyUSB0).我该如何永久修改它在Linu ...
- 宿主机与虚拟机系统的USB设备切换
有时候我们需要在虚拟机的操作系统中进行一些USB设备的测试,但默认情况下USB设备是在宿主机系统里面的,那这个时候我们就要进行切换才能够达到目的,具体要怎么操作呢?下面讲解一下: 1. Ctrl+ ...
- VM虚拟机上连接usb无反映
主机的usb连接又是正常的,排除了usb3.0的接口原因后,突然想到了是不是虚拟机的什么服务没有开?进入到控制面板->管理工具->服务,找到 V开头的,发现原来确实是虚拟机有关usb的服务 ...
- 如何查看USB方式连接Android设备的外接设备信息
1,USB存储设备(如:U盘,移动硬盘): //USB存储设备 插拔监听与 SD卡插拔监听一致. private USBBroadCastReceiver mBroadcastReceiver; In ...
- usb-host一步一步学(二)安卓在usb-host模式下列出当前连接的usb设备
之前写了一个简单的例子usb-host一步一步学(一)安卓在usb-host模式下列出当前连接的usb设备,下面的这个例子是获取各种usb设备.usb接口以及usb连接点(endpoint) 正如上一 ...
- iphone手机连接USB时出现须要Mobile device setup disk上的usbaapl.sys文件
问题: iphone5 手机连接USB出现例如以下弹框 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYW5nZWwyMnh1/font/5a6L5L2T/ ...
随机推荐
- Angular 19 "要" 来了⚡
前言 Angular 19 预计会在 11 月中旬发布,目前 (2024-10-27) 最新版本是 v19.0.0-next.11. 这次 v19 的改动可不小哦,新增了很多功能,甚至连 effect ...
- 别再忽视!PostgreSQL Public 模式的风险以及安全迁移
别再忽视!PostgreSQL Public 模式的风险以及安全迁移 作者:桦仔 10余年DBA工作经验 微信:debolop QQ交流群:740052625 公众号:数据库实战派 问题起因 前几天 ...
- 100GbE 网卡到底有多快?Mellanox CX455-ECAT QSFP28 100Gbps 带宽测试
地址: https://www.youtube.com/watch?v=iqQGWsH6F0I
- K8S1.16.4+kubeflow1.0安装
K8S1.16.4+kubeflow1.0安装文档 一.简介 本文档编写原因:之前kubeflow1.0安装手册出现较多不可控问题,计划重新安排一个能够完全离线安装的K8S和kubeflow环境. 备 ...
- 【一步步开发AI运动小程序】三、运动识别处理流程
随着人工智能技术的不断发展,阿里体育等IT大厂,推出的"乐动力"."天天跳绳"AI运动APP,让云上运动会.线上运动会.健身打卡.AI体育指导等概念空前火热.那 ...
- Solon(Spring 的替代方案)最近半年下载量突破 1200万!
不断突破 2023年04月,单月破100万(Maven 中央仓库单月下载量) 2023年06月,单月破200万 2023年11月,单月破250万 2024年11月,最近半年下载量突破 1200万 So ...
- DSPf28335 --工程模版相关文件
创建工程需要的两个文件 DSP2833x_common 1.cmd 下图中的两个文件(由TI公司提供的) 1.28335_RAM_lnk.cmd :程序下载到RAM中进行调试和仿真所使用的启动文件. ...
- 算法(第四版)C# 习题题解——3.2
写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 查找更方便的版本见:https ...
- C/C++源码扫描系列- codeql 篇
首发于 https://xz.aliyun.com/t/9275 概述 codeql 是一个静态源码扫描工具,支持 c, python, java 等语言,用户可以使用 ql 语言编写自定义规则识别软 ...
- Flutter 设置安卓启动页报错 java.lang.RuntimeException: Canvas: trying to draw too large(106,975,232 bytes) bitmap.
设置安卓启动页报错 首先设置安卓启动页 在android/app/src/main/AndroidManifest.xml中添加这一行 <meta-data android:name=" ...