【经验分享】WSL中使用USB设备

news2024/11/19 13:38:45

具体步骤:

首先在windows中安装 USBIP 工具,在GitHub上下载安装包并根据README文档的说明进行操作:

下载链接:https://github.com/dorssel/usbipd-win/releases

同时在 WSL Linux 端也需要安装编译内核所需的库和工具,为后续做准备:

$ sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses-dev autoconf libudev-dev libtool

打开wsl ubuntu终端使用命令:uname -r得到版本号,同时根据版本号使用管理员模式新建目录

在这里插入图片描述

$ sudo mkdir /usr/src/5.15.90.1-microsoft-standard-WSL2

同时我们去GitHub下载一份wsl内核源码:https://github.com/microsoft/WSL2-Linux-Kernel/releases

这里的版本就是你使用命令 uname -r 得到的版本号,建议可以先手动安装压缩包,然后使用vscode连接wsl,把文件拖拽到wsl下

然后解压到指定路径下(这部分注意区分版本号,不要一昧照搬命令):

$ sudo tar -xzvf WSL2-Linux-Kernel-linux-msft-wsl-5.15.90.1.tar.gz -C /usr/src/5.15.90.1-microsoft-standard-WSL2/

$ cd /usr/src/5.15.90.1-microsoft-standard-WSL2/
$ sudo mv WSL2-Linux-Kernel-linux-msft-wsl-5.15.90.1/* ./ && sudo rm -r WSL2-Linux-Kernel-linux-msft-wsl-5.15.90.1

然后将内核的一些配置信息复制到当前文件夹下:

$ sudo cp /proc/config.gz config.gz
$ sudo gunzip config.gz
$ sudo mv config .config

接着我们执行menuconfig命令打开图形化菜单

$ sudo make menuconfig

进入如下路径:> Device Drivers > USB support

下面是一些必须的添加项,一般默认都是选中的,不过最好还是检查下:

Device Drivers -> USB Support
Device Drivers -> USB Support -> USB announce new devices
Device Drivers -> USB Support -> USB Modem (CDC ACM) support
Device Drivers -> USB Support -> USB/IP
Device Drivers -> USB Support -> USB/IP -> VHCI HCD
Device Drivers -> USB Serial Converter Support
Device Drivers -> USB Serial Converter Support -> USB FTDI Single port Serial Driver

同时记得关闭 Device Drivers -> USB Support -> USB/IP -> Debug messages for USB/IP这一选项,否则调试信息会非常影响你的使用体验

另外也可以添加你具体所需的USB模块勾选上,保存退出后执行内核编译

$ sudo make -j8 

内核编译期间发生报错:

在这里插入图片描述

这主要是由于系统缺少dwarves软件包导致的,我们使用apt命令安装并继续执行编译:

$ sudo apt install dwarves

$ sudo make -j8 && sudo make modules_install -j8 && sudo make install -j8

发现又产生了报错:

在这里插入图片描述

查找资料似乎说明的是这仅仅是个警告,我通过禁用BTF的调试信息解决了这个问题

$ sudo vi .config

# 找到宏`CONFIG_DEBUG_INFO_BTF`并将value改为 `n`

安装内核时发生报错:

在这里插入图片描述

解决方式有两种:

  • 1.可以选择在.config中禁用宏CONFIG_X86_X32
  • 2.找到合适的binutils版本使其能够编译

我选择的是第一种,根据我在网上找到的说法是:

# 除非您想要它并且拥有它的用户空间,否则 X32 并不是特别有用。请注意,X32 是 64 位的 x32 ABI,它是编译为在 64 位长模式下运行的“32 位”短指针代码,与真正的本机 32 位二进制/ABI 支持不同。这是一种具有非常具体的利基的特殊模式。

# 您可以在内核配置中禁用[CONFIG_X86_X32](https://cateee.net/lkddb/web-lkddb/X86_X32.html)或获取具有 elf32_x86_64 目标支持的 binutils。如何获取 binutils 取决于您的发行版。

所以我选择禁用宏CONFIG_X86_X32,之后继续执行命令:

$ sudo make modules_install -j8
$ sudo make install -j8

在这里插入图片描述

之后就可以选择编译 USBIP 工具了:

$ cd tools/usb/usbip
$ sudo ./autogen.sh
$ sudo ./configure
$ sudo make install -j8

复制工具库位置,以便 usbip 工具可以获取到:

$ sudo cp libsrc/.libs/libusbip.so.0 /lib/libusbip.so.0

安装 usb.ids 以便显示 USB 设备的名称:

$ sudo apt-get install hwdata

重启WSL:

$ wsl --shutdown

下面进行测试是否成功:
打开powershell:

$ usbipd wsl list

假设我们需要在wsl使用的 usb 设备为 ST-Link Debug, USB 大容量存储设备, USB 串行设备 (COM3),设备id为 0483:374b

我们使用命令附加设备到 wsl2 中

$ usbipd wsl attach --hardware-id "0483:374b"

在这里插入图片描述

此时我们打开一个 wsl 终端,使用命令 lsusb 即可看到附加到 wsl 的设备

在这里插入图片描述

然后我们再次回到 powershell ,执行 usbipd wsl list命令,可以看到此时的 usb 设备已经成功添加到 wsl 了

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1120541.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在 Python 中执行 Shell 命令并获取输出

在本文中,我们将学习如何借助 os.system() 从 Python 脚本执行 cmd 命令。 我们还将学习如何借助 Python 中的 subprocess 模块以更简单的方式从脚本执行 cmd 命令。 从 Python 脚本执行 CMD 命令并使用 os.system() 获取输出 我们出于不同目的在命令提示符或任何其…

Rclone连接Onedrive

一、Rclone介绍 Rclone是一款的命令行工具,支持在不同对象存储、网盘间同步、上传、下载数据。 我们这里连接的onedrive,其他网盘请查看官方文档。 注意: 需要先在Windows下配置好了,然后再将rclone配置文件复制到Linux的rclone配…

文件读取结束的判定

大家好啊,我们今天来补充文件操作的读取结束的判定。 被错误使用的feof 牢记:在文件读取过程中,不能用feof函数的返回值直接用来判断文件的是否结束而是应用于当文件读取结束的时候,判断是读取失败结束,还是遇到文件尾…

【鸿蒙软件开发】进度条Progress

文章目录 前言一、进度条Progress1.1 创建进度条1.2 进度条样式进度条样式ProgressType.Linear(线性样式)ProgressType.Ring(环形无刻度样式)ProgressType.ScaleRing(环形有刻度样式)ProgressType.Eclipse&…

028-第三代软件开发-CheckBox

第三代软件开发-CheckBox 文章目录 第三代软件开发-CheckBox项目介绍CheckBox实际使用 关键字: Qt、 Qml、 CheckBox、 indicator、 contentItem 项目介绍 欢迎来到我们的 QML & C 项目!这个项目结合了 QML(Qt Meta-Object Language…

YOLO目标检测——人脸识别数据集【对应voc、coco和yolo三种格式标签】

实际项目应用:安全监控、智能驾驶、人机交互、人脸门禁、人脸支付、人脸搜索数据集说明:人脸识别数据集,真实场景的高质量图片数据,数据场景丰富,含有人脸图片标签说明:使用lableimg标注软件标注&#xff0…

视频号视频怎么下载:完全教程和实用技巧

随着视频号平台的兴起,抖音快手视频号等平台让越来越多的用户对此喜欢,但对于视频号视频的下载很多人表示关注。无论是想收藏自己喜欢的视频,还是需要将视频用于其他用途,掌握视频号视频的下载方法变得至关重要。在本文中&#xf…

# Spring 事务失效场景

Spring 事务失效场景 文章目录 Spring 事务失效场景前言事务不生效未开启事务事务方法未被Spring管理访问权限问题基于接口的代理源码解读 CGLIB代理 方法用final修饰同一类中的方法调用多线程调用不支持事务 事务不回滚设置错误的事务传播机制捕获了异常手动抛了别的异常自定义…

c++ pcl点云变换骨架枝干添加树叶源码实例

程序示例精选 c pcl点云变换骨架枝干添加树叶源码实例 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《c pcl点云变换骨架枝干添加树叶源码实例》编写代码,代码整洁,…

搞个微信小程序002:个人信息

新建一个用于&#xff0c;和001中一样&#xff0c;然后&#xff0c;就改掉两个文件&#xff1a; index.wxml: <view><!-- 头像区域 --><view class"top"><view class"user-img"><image src"/images/tx.png"><…

JIT耗时优化

优质博文&#xff1a;IT-BLOG-CN 一、背景 业务流量突增&#xff0c;机器直接接入大量流量QPS2000&#xff0c;JIT和GC会消耗太多CPU资源&#xff0c;导致1-2分钟时间内的请求超时导致异常&#xff0c;因此采用流量预热的方式&#xff0c;让机器逐步接入流量&#xff0c;需要预…

学习MAVEN

MAVEN的详细介绍和作用、意义 好的&#xff0c;小朋友们&#xff0c;我们今天来聊聊一个非常神奇的工具箱&#xff0c;它的名字叫做Maven! &#x1f31f; 1. **神奇的工具箱Maven**: Maven就像是一个神奇的工具箱&#x1f9f0;&#xff0c;它可以帮助大人们把他们的电脑工…

手撕 视觉slam14讲 ch13 代码(7)后端优化 Backend::Optimize()

在上一篇 手撕&#xff08;6&#xff09;中的InsertKeyframe()插入关键帧的函数里&#xff0c;有一个 Backend::UpdateMap() 函数 &#xff0c;从这里通过条件变量 map_update_ 来激活后端优化。 backend.h&#xff1a; // * 有单独优化线程&#xff0c;在Map更新时启动优化…

【JavaScript】深入浅出理解事件循环

1. 浏览器的进程模型 1.1 进程 程序运行需要有它自己专属的内存空间&#xff0c;可以把这块内存空间简单的理解为进程。 每个应用至少有一个进程&#xff0c;进程之间相互独立&#xff0c;即使要通信&#xff0c;也需要双方同意。 1.2 线程 有了进程后&#xff0c;就可以运…

《王道计算机考研——操作系统》学习笔记总目录+思维导图

本篇文章是对《王道计算机考研——操作系统》所有知识点的笔记总结归档和计算机网络的思维导图 学习视频&#xff1a;王道计算机考研 操作系统 408四件套【计网、计组、操作系统、数据结构】完整课堂PPT 思维导图 &#xff08;求Star~&#xff09;&#xff1a;【王道考研】计…

NodeJS VM沙箱逃逸

文章目录 基本概念Node将字符串执行为代码方法一 eval方法二&#xff1a;new Function Nodejs作用域vm沙箱逃逸vm沙箱逃逸的一些其他情况实例 基本概念 什么是沙箱&#xff08;sandbox&#xff09;当我们运行一些可能会产生危害的程序&#xff0c;我们不能直接在主机的真实环境…

Promise详解:手写Promise底层-实现Promise所有的功能和方法

前言 目标&#xff1a;封装一个promise&#xff0c;更好的理解promise底层逻辑需求&#xff1a;实现以下promise所有的功能和方法 如下图所示一、构造函数编写 步骤 1、定义一个TestPromise类&#xff0c; 2、添加构造函数&#xff0c; 3、定义resolve/reject&#xff0c; 4、…

FL Studio21中文版本好用吗?值不值得下载

今天&#xff0c;我从一个FL Studio忠实且还算资深的用户角度&#xff0c;来为大家深度介绍并评测一下FL Studio的性能以及我四年的使用感受。 FL Studio是一款集剪辑、编曲、录音、混音一体的全能DAW&#xff08;数字音频工作站&#xff09;。其所有界面都是支持100%矢量化的…

Pycharm设置快捷键

本文主要讲一下Pycharm如何设置字体的缩小和放大的快捷键。 参见&#xff1a; 编程的快乐&#xff0c;你想象到了吗&#xff1f;PyCharm插件大全&#xff08;适合所有JetBrains家族产品&#xff09;_哔哩哔哩_bilibili

虚函数实例

1.声明&#xff1a;virtual 同名成员名 可实现父类访问子类中与其同名的成员 #include<iostream> using namespace std; class A{protected:int x;public:A(int x10):x(x1){}virtual void print(){//在类A中定义print为虚函数cout<<"A类中的x"<<x…