
老奶奶看了都会的WSL2-Ubuntu连接USB设备教程!
作者:SkyXZ
CSDN:
博客园:
参考资料:微软官方文档
在Win11上用WSL2安装Ubuntu来开发简直不要太爽!!!但是很多小伙伴会发现,欸~为什么我在宿主机上插入的USB设备Ubuntu怎么识别不到啊!?这时很多小伙伴拿出浏览器kuku一通搜索就会知道,原来是因为WSL2运行的是一个虚拟化环境,并不能直接访问宿主机(Windows)的硬件资源,这时大部分的教程 or GPT都会给出一个方法,那就是下载安装usbip
这个包,但是当你运行sudo apt install usbip
这个指令的时候大概率会出现如下报错来提示我们不具备下载的条件:
那我们到底该如何正确安装usbip
这个库呢?同学们请继续往下看,我们之所以不具备这个包的安装条件就是因为这个包的支持依赖于Linux的某些内核模块,而我们WSL2的内核并不直接支持这些模块,那么本着见着拆招的思想我们只要把缺少的内核重新装上加入 USB 存储设备支持不就好啦?顺着这个思路我们找到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
是编译为内核模块,内核模块需要手动加载),把下面弹出来的一堆驱动都选上,保存完之后就可以退出了:
即选择这几个便可以啦,其他的选项视自己的需求选择,如果不确定的话也可以全部勾选上,选择完成之后我们保存退出即可
最后我们进入源码