编译WSL内核,用于操作usb读卡器

wsl2默认不能操作usb读卡器,但是对于嵌入式linux开发来说,需要经常对tf卡进行操作,随时都会使用到usb读卡器的访问。下面讲述如何开启wsl2的usb读卡器的访问,主要涉及到以下2个步骤:

  • wsl2本质是一个虚拟机,无法直接访问宿主主机的USB设备。
  • wsl2的内核没有加入USB存储设备的驱动。

一、开启wsl2的usb识别

  • 1.1、windows安装 USBIPD-WIN 项目(官方指导教程)

    • ① 转到 usbipd-win 项目的最新发布页。

    • ② 选择 .msi 文件,点击后会进行下载。
      在这里插入图片描述

    • ③ 运行下载的 usbipd-win_x.msi 安装程序文件。

    下载完后点击安装就好,安装完后还会要求你重启电脑。

  • 1.2、wsl2下安装 USBIP 工具和硬件数据库

    sudo apt install linux-tools-generic hwdata
    sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/*-generic/usbip 20
    

    如果安装失败,先执行sudo apt update,再进行安装。

  • 1.3、attach usb设备到wsl2
    在attach USB 设备之前,请确保 WSL 命令行已打开。

    • ① 通过以管理员模式打开 PowerShell 并输入以下命令,列出所有连接到 Windows 的 USB 设备:
    usbipd wsl list
    

    如下:
    在这里插入图片描述

    • ② 选择要attach 到 WSL 的设备总线 ID,然后运行此命令:
    usbipd wsl attach --busid <busid>
    

    如下:
    在这里插入图片描述

    • ③ 打开 wsl2,使用以下命令列出附加的 USB 设备:
    lsusb
    

    如下:
    在这里插入图片描述

  • 1.4、从wsl2 detach usb设备
    在wsl2中完成设备使用后,可物理断开 USB 设备,或者在管理员模式下从 PowerShell 运行此命令:

    usbipd wsl detach --busid <busid>
    

此步执行完成后,虽然能识别到usb设备了,但是并没有创建块设备节点(/dev/sd*)。下面的操作就是用来解决这个问题。

二、开启wsl2的usb存储设备驱动

这部分需要重新编译wsl2的内核,开启内核的usb存储设备驱动,编译后进行内核替换。

  • 2.1、首先到wsl2的内核仓库中获取一份内核源码:

    git clone https://github.com/microsoft/WSL2-Linux-Kernel.git
    

    或直接下载zip文件,比较快:
    在这里插入图片描述

  • 2.2、解压源码:

    unzip WSL2-Linux-Kernel-linux-msft-wsl-5.15.y.zipcd WSL2-Linux-Kernel-linux-msft-wsl-5.15.y
    
  • 2.3、使用以下命令来配置内核配置:

    make menuconfig KCONFIG_CONFIG=Microsoft/config-wsl
    
  • 2.4、进入 Device Drivers -> USB support -> Support for Host-side USB ,选中 USB Mass Storage support( * 号是直接编译进内核,M 是编译为内核模块,内核模块需要手动加载),把下面弹出来的一堆驱动都选上,保存完之后就可以退出了。
    在这里插入图片描述

  • 2.5、执行以下命令开始编译内核:

    make -j$(nproc) bzImage KCONFIG_CONFIG=Microsoft/config-wsl
    

    编译完成的内核是bzImage文件,和我们编译时指定的名称一致,文件在arch/x86/boot/文件夹下。

  • 2.6、把编译好的内核复制出来,放在 Windows 的用户目录(默认是 C:\Users\{username})下创建一个名为 .wslconfig 的文件,内容根据 微软官方文档 来:

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

    以下是我的配置:
    在这里插入图片描述

  • 2.7、检查新内核是否生效
    重启wsl2,使用以下命令来查看内核版本号:

    uname -a
    

    对比下显示的日期是否和编译日期一样。

三、wsl2访问usb读卡器

  • 3.1、usbipd-win的使用,方法也是参考的微软官方文档。
    管理员方式打开powershell:
    # 将usb从windows接入到wsl,此时windows端会断开
    usbipd wsl list
    usbipd wsl attach --busid <busid>
    
  • 3.2、wsl2访问usb
    # 查看usb接入情况
    lsusb
    # 查看内核日志
    dmesg# 查看对于的块设备节点
    ls /dev/sd*
    
  • 3.3、使用完成之后,断开usb
    # 此命令执行完成后,usb将从wsl断开,windows端会接入
    usbipd wsl detach --busid <busid>
    

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

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

相关文章

C++作业5

完成沙发床的多继承&#xff08;有指针成员&#xff09; 代码&#xff1a; #include <iostream>using namespace std;class Bed { private:double *money; public:Bed(){cout << "Bed::无参构造函数" << endl;}Bed(double money):money(new doub…

【Latex笔记】标题页

整体结构 模板结构如下&#xff1a; \documentclass{book} % 导言区&#xff0c;加载宏包和各项设置&#xff0c;包括参考文献、索引等 \usepackage{makeidx} % 调用makeidx 宏包&#xff0c;用来处理索引 \makeindex % 开启索引的收集 \bibliographystyle{plain} % 指定参考…

010 数据结构_红黑树

前言 本文将会向你介绍红黑树的概念、性质&#xff0c;以及如何手撕红黑树 1 文章重点 文本首先引入红黑树的概念和性质&#xff0c;性质非常重要对于后面的插入操作来说&#xff0c;文章的核心放在了插入部分&#xff0c;另外看插入部分之前记得看声名和节点的定义哦~ 2 引…

嵌入式门槛高吗?

今日话题&#xff0c;嵌入式门槛高吗&#xff1f;在嵌入式领域&#xff0c;门槛因公司和职位的不同而异。普通的嵌入式岗位门槛相对较低&#xff0c;通常要求掌握一些C语言编程和单片机相关知识&#xff0c;可以制作简单的电子产品&#xff0c;但相应的工资较低。然而&#xff…

解决Flutter运行报错Could not run build/ios/iphoneos/Runner.app

错误场景 更新了IOS的系统版本为最新的17.0, 运行报以下错误 Launching lib/main.dart on iPhone in debug mode... Automatically signing iOS for device deployment using specified development team in Xcode project: GN3DCAF71C Running Xcode build... Xcode build d…

典型的ETL使用场景

典型的ETL使用场景 ETL( Extract&#xff0c;Transform&#xff0c;Load)是一种用于数据集成和数据转换的常用技术。它主要用于从多个数据源中提取数据&#xff0c;对数据进行清洗、转换和整合&#xff0c;最后加载到目标系统中。ETL 的使用场景非常广泛&#xff0c;下面将介绍…

Theamleaf导出pdf模版编写(原始th/td编写表格)

需求&#xff1a;简单的theamleaf编写表格就是简单的th/td&#xff0c;新需求是导出的模版是学员table表&#xff0c;每个项目的学员数量是不定的&#xff0c;所以用到 <tr th:each"item,start:${studentList}"> 所有代码&#xff1a; <!DOCTYPE html>…

python 实现 AIGC 大模型中的概率论:生日问题的基本推导

在上一节中&#xff0c;我们对生日问题进行了严谨的阐述&#xff1a;假设屋子里面每个人的生日相互独立&#xff0c;而且等可能的出现在一年 365 天中的任何一天&#xff0c;试问我们需要多少人才能让某两个人的生日在同一天的概率超过 50%。 处理抽象逻辑问题的一个入手点就是…

【bash指令全集合】最全教程-持续更新!

作者&#xff1a;20岁爱吃必胜客&#xff08;坤制作人&#xff09;&#xff0c;近十年开发经验, 跨域学习者&#xff0c;目前于新西兰奥克兰大学攻读IT硕士学位。荣誉&#xff1a;阿里云博客专家认证、腾讯开发者社区优质创作者&#xff0c;在CTF省赛校赛多次取得好成绩。跨领域…

Centos7.4安装nginx1.24.0_安装详细步骤---Linux工作笔记066

以前安装的太模糊了,干脆重新写一个: 1.首先下载对应的nginx-1.24.0.tar.gz安装文件 2.然后: 去执行命令 安装依赖 yum install -y gcc yum install -y pcre pcre-devel yum install -y zlib zlib-devel yum install -y openssl openssl-devel 3.然后:去解压 tar -zxvf ngi…

一文讲透Python机器学习决策树算法的基本概念与原理

1.决策树算法的基本特点与优势 决策树算法是一种有监督、非参数、简单、高效的机器学习算法。相对于非监督式学习方法&#xff0c;决策树算法由于充分利用了响应变量的信息&#xff0c;因此能够很好地克服噪声问题&#xff0c;在分类及预测方面效果更佳。决策树的决策边界为矩…

【MySQL】MySQL数据库基础

MySQL数据库基础 一、为什么要有数据库&#xff1f;二、 数据库软件的构成数据库服务器&#xff0c;数据库&#xff0c;表关系主流数据库 三、基本使用1、连接服务器2、服务器管理3、MySQL配置文件4、数据库的简单操作5、数据逻辑存储 四、MySQL架构SQL分类MySQL客户端存储引擎…

smartkit巡检E9000设备

https://support.huawei.com/enterprise/zh/doc/EDOC1100325140/f6eeacd6 打开链接&#xff0c;里面的内容很详细。

013 OpenCV copyMakeBorder(padding)

目录 一、环境 二、原理 三、完整代码 一、环境 本文使用环境为&#xff1a; Windows10Python 3.9.17opencv-python 4.8.0.74 二、原理 cv.copyMakeBorder是OpenCV库中的一个函数&#xff0c;用于在图像周围添加边框&#xff08;padding&#xff09;。这个函数可以用于图…

C#中GDI+绘图应用(柱形图、折线图和饼形图)

目录 一、柱形图 1.示例源码 2.生成效果 二、折线图 1.示例源码 2.生成效果 三、饼形图 1.示例源码 2.生成效果 GDI绘制的一些常用的图形&#xff0c;其中包括柱形图、折线图和饼形图。 一、柱形图 柱形图也称为条形图&#xff0c;是程序开发中比较常用的一种图表技术…

掌握Python异步IO利器:深入解读Asyncio

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 异步 IO 与 Asyncio 在 Python 中的应用 在当今互联网时代&#xff0c;处理大量并发请求或I/O密集型任务对于软件应用程序至关重要。Python的异步IO框架——Asyncio成为了处理此类问题的有力工具。本文将深入介…

基于SpringBoot实现的电影院售票系统

一、 系统架构 前端&#xff1a;html | jquery | bootstrap 后端&#xff1a;springboot | thymeleaf | spring-data-jpa 环境&#xff1a;jdk1.8 | mysql | maven 二、代码及数据库 三、功能介绍 01. 首页 02. 登录页 03. 管理端-电影列表 04. 管理端-添加电影 05. 管…

京东数据分析:2023年10月京东打印机行业品牌销售排行榜

鲸参谋监测的京东平台10月份打印机市场销售数据已出炉&#xff01; 10月份&#xff0c;打印机市场整体销售下滑。鲸参谋数据显示&#xff0c;今年10月份&#xff0c;京东平台打印机的销量将近60万&#xff0c;环比降低约2%&#xff0c;同比降低约5%&#xff1b;销售额为4.4亿&a…

模拟电路学习笔记(一)之芯片篇(持续更新)

模拟电路学习笔记&#xff08;一&#xff09;之芯片篇&#xff08;持续更新&#xff09; 1.CD4047BE芯片 CD4047是一种包含高电压的多谐振荡器&#xff0c;该器件的操作可以在两种模式下完成&#xff0c;分别是单稳态和非稳态。CD4047需要一个外部电阻器和电容器来决定单稳态…

开源项目CuteSqlite开发笔记(二):SQLite的架构

在开发CuteSqlite图形客户端的时候&#xff0c;需要用到SQL的语法解释&#xff0c;来对SQL语句进行优化。找了很多的SQL语法解释器&#xff0c;都不是十分满意&#xff0c;只有翻开Sqlite的源码&#xff0c;看看SQLite对SQL语句的解释过程&#xff0c;本文是翻译的官方文档。 官…