gpt4 book ai didi

老奶奶看了都会的WSL2连接USB设备教程!

转载 作者:撒哈拉 更新时间:2025-01-13 14:40:57 55 4
gpt4 key购买 nike

老奶奶看了都会的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这个指令的时候大概率会出现如下报错来提示我们不具备下载的条件:

image-20250112000837745

        那我们到底该如何正确安装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会快很多) 。

image-20250112001704410

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 #如果是下载的先解压

image-20250112002404913

        接着我们安装一些必要的依赖 。

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 是编译为内核模块,内核模块需要手动加载),把下面弹出来的一堆驱动都选上,保存完之后就可以退出了:

image-20250112003435516

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

image-20250112004030858

        最后我们进入源码目录开始编译内核即可,编译完成的文件是bzImage文件,文件在arch/x86/boot/文件夹下 。

cd WSL2-Linux-Kernel-linux-msft-wsl-5.15.y
make -j$(nproc) bzImage KCONFIG_CONFIG=Microsoft/config-wsl

image-20250112005052488

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

[wsl2]
kernel=path\\to\\kernel #

image-20250112010420101

        接着我们打开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

image-20250112011903695

        接着我们使用如下命令即可看到当前宿主机的USB设备, 。

usbipd list   #查看当前宿主机的所有USB设备及其信息

image-20250112023050474

        然后我们使用如下命令即可将对应的设备挂载到WSL2设备上,但是要注意挂载到WSL2的设备宿主机将无法使用!!! 。

#启用
usbipd bind --busid <busid>   #绑定设备
usbipd attach --busid <busid> --wsl  #将设备挂载到WSL2
#禁用
usbipd unbind --busid <busid>	#解绑设备
usbipd attach --busid <busid>	#将设备附加到Win

image-20250112023707438

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

lsusb #列出当前USB设备

image-20250112023814950

最后此篇关于老奶奶看了都会的WSL2连接USB设备教程!的文章就讲到这里了,如果你想了解更多关于老奶奶看了都会的WSL2连接USB设备教程!的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

55 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com