首页 > 其他分享 >老奶奶看了都会的WSL2连接USB设备教程!

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

时间:2025-01-13 14:21:20浏览次数:1  
标签:USB -- 老奶奶 wsl 内核 Linux WSL2

老奶奶看了都会的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

标签:USB,--,老奶奶,wsl,内核,Linux,WSL2
From: https://www.cnblogs.com/SkyXZ/p/18668531

相关文章

  • 使用 Podman Desktop 在 Windows 11 WSL2 环境中启动宿主机的 GPU 进行深度学习
    使用PodmanDesktop在Windows11WSL2环境中启动宿主机的GPU进行深度学习概述本文将指导您如何利用PodmanDesktop安装时提供的WSL2环境,来启动宿主机的GPU进行深度学习任务。前提条件确保您的Windows11已经启用了WSL2和虚拟化功能,并且安装了最新版本的NVIDI......
  • Sigrity System SI SerialLink模式进行USB3.0协议仿真分析操作指导-SuperSpeed_Rx_Dev
    SigritySystemSISerialLink模式进行USB3.0协议仿真分析操作指导-SuperSpeed_Rx_DeviceSigritySystemSISerialLink模式提供了10个协议合规性检查工具模板,用户可以将根据实际应用替换模板中的SPICE文件,然后进行协议仿真分析,同时软件还提供了目标结果的模板MASK以及该协议......
  • Sigrity System SI SerialLink模式进行USB3.0协议仿真分析操作指导-SuperSpeed_Tx_Hos
    SigritySystemSISerialLink模式进行USB3.0协议仿真分析操作指导-SuperSpeed_Tx_HostSigritySystemSISerialLink模式提供了10个协议合规性检查工具模板,用户可以将根据实际应用替换模板中的SPICE文件,然后进行协议仿真分析,同时软件还提供了目标结果的模板MASK以及该协议需......
  • 手戳usb转串口芯片cp2102模块——理论知识
    一、简介 CP2102是一个USB转串行通信接口的芯片,常用于将USB接口转换为常见的串口接口(RS-232、TTL等)。它通常用于嵌入式系统、数据传输以及外设控制等领域。以下内容基于电脑通过cp2102与esp32进行串口通信(比如烧录程序、数据发送与接受)的情景讲述。二、讲述以上......
  • Sigrity System SI SerialLink模式进行USB3.0协议仿真分析操作指导-SuperSpeed_Tx_Dev
    SigritySystemSISerialLink模式进行USB3.0协议仿真分析操作指导-SuperSpeed_Tx_DeviceSigritySystemSISerialLink模式提供了10个协议合规性检查工具模板,用户可以将根据实际应用替换模板中的SPICE文件,然后进行协议仿真分析,同时软件还提供了目标结果的模板MASK以及该协议......
  • Windows 11 Hyper-V 运行WSL2(Windows Subsystem for Linux ) openEuler 从 22.09升级24
    版本  Windows11专业版版本号  22H2安装日期  ‎2023/‎3/‎19操作系统版本  22621.4387体验  WindowsFeatureExperiencePack1000.22700.1047.0-[archives.openeuler.openatom.cn/openEuler-22.09/everything/x86\_64/](https://archives.openeuler.o......
  • eusb和repeater的关系是什么?
    eUSB和repeater都与USB信号传输和USB拓展有关,尤其是在处理较长距离或多个设备连接时,但它们的功能和目的不同。下面是两者之间的关系和区别:1.eUSB(EnhancedUSB)eUSB是一种改进的USB技术,旨在提高信号质量和传输速度。它通常用于增强USB信号的传输,尤其是在较长距离或......
  • 【WCH蓝牙系列芯片】-基于CH592开发板—BLE_USB程序中低功耗模式下,USB设备的拔插唤醒
    -------------------------------------------------------------------------------------------------------------------------------------在CH592EVT例程中,有一个BLE_USB程序,是蓝牙与USB合用例程,通过USB模拟340设备转发蓝牙数据。在正常使用中,蓝牙和USB设备都可以一起运......
  • WSL2 Ubuntu has no software center
     frank@ZZHPC:~$sudoaptlistgnome-software[sudo]passwordforfrank:Listing...Donegnome-software/noble46.0-1ubuntu2amd64frank@ZZHPC:~$frank@ZZHPC:~$gnome-softwareCommand'gnome-software'notfound,butcanbeinstalledwith:sudo......
  • WSL2 Ubuntu Desktop favorites bar not showing
    Thesettingsshowedbyclickingthesettingsicon: frank@ZZHPC:~$sudoaptinstallgnome-shell-extension-dashtodockReadingpackagelists...DoneBuildingdependencytree...DoneReadingstateinformation...DonePackagegnome-shell-extension-dashtodo......