Cubieboard2(三) 系统构建 —— WSL Ubuntu 中挂载 U 盘(SDCard)

WSL2 连接XBOX手柄 安装usbipd可见手柄的BUSID为2-2。运行如下指令再次列出usb设备,可见状态已转变为Shared打开一个新的终端(不必再以管理员身份运行),将手柄连接至WSL2在同一终端启动WSL使用lsusb命令查看当前设备,手柄Controller已经连接到WSL2。 阅读详情

1 WSL Ubuntu 中挂载 U 盘(SDCard)

Linux 驱动开发需要给 SDCard 烧写 u-boot,kernal,rootfs 等内容。如果我们要使用 wsl(这里的 wsl 指的是 WSL 2.x 版本,下同) 进行 Linux 驱动开发,那么我们首先要将 SDCard 挂载到 wsl 中。

  • 参考:

    • https://zhuanlan.zhihu.com/p/661175117
    • https://zhuanlan.zhihu.com/p/607493975
  • sdcard 无法挂载到 wsl 有 2 个原因:

    • wsl 是虚拟机,无法直接访问宿主机的 USB 设备。这个问题通过一个叫 usbipd 的桥接工具解决
    • wsl 内核没有加入 USB 存储设备的驱动。这个问题通过重新编译 wsl 内核镜像解决

2 usbipd 搭建虚拟机与宿主机 USB 通信桥梁

usbipd 在 OSI 的网络层(IP)、传输层(TCP)之间建立 USB 设备与虚拟机的通信,即 IP 网络共享 USB 设备。

  • 1)安装 usbipd 工具
# 可以通过以下命令下载安装(我这里可能因为网络原因失败了)
winget install --interactive --exact dorssel.usbipd-win

# 也可以直接去其 github 分发地址下载,下载完成后双击安装即可。
https://github.com/dorssel/usbipd-win/releases
  • 2)回到 wsl ubuntu 中安装 usbipd 工具:
sudo apt install linux-tools-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/*-generic/usbip 20
  • 3)根据要求重启宿主机。

3 WSL 内核添加 USB 设备驱动

与 Linux 驱动开发的流程一样:配置驱动,编译内核。

3.1 编译 WSL Linux 内核

  • 1)编译工具库准备
sudo apt install libncurses-dev libgmp-dev  \
    build-essential flex bison libssl-dev libelf-dev dwarves
  • 2)源码准备:
# 克隆源码
git clone https://github.com/microsoft/WSL2-Linux-Kernel.git

# 选择合适的分支检出(原来这里我选择 6.6.y 版本,却没有六六大顺 ^_^)
git branch -a 
git tag

git checkout linux-msft-wsl-5.15.y
  • 3)内核配置文件编辑:

    make menuconfig KCONFIG_CONFIG=Microsoft/config-wsl
    
    • (1)进入 Device Drivers -> USB Support

    • (2)找到 Support for Host-side USB,键入 “y”

    • (3)找到 USB/IP Support -> VCHI hcd.

    • (4)找到 USB Mass Storage support,将其子条目全部选中

  • 4)编译 wsl linux 内核:(如果中途有询问选项,直接回车即可)

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

# 结果查询:
find -name bzImage -exec ls -lh {} \;

lrwxrwxrwx 1 root root 22 Sep 11 16:24  ./arch/x86_64/boot/bzImage -> ../../x86/boot/bzImage
-rw-r--r-- 1 root root 16M Sep 11 16:24 ./arch/x86/boot/bzImage

3.2 挂载 USB(SDCard) 设备

  • 1)打开用户目录(如 C:\Users\[username],可在资源管理器中输入 %UserProfile% 打开该目录),将 bzImage 拷贝进去

  • 2)新建名为 .wslconfig 的配置文件,并输入以下内容:

    [wsl2]
    kernel=C:\\Users\\[Username]\\bzImage
    # 替换上述 [Username]
    
  • 3)重启 wsl ubuntu。

# 在 PowerShell 中输入以下命令
# 终止运行
wsl -t Ubuntu-22.04-cb2 
# 以 root 用户启动
wsl -d Ubuntu-22.04-cb2 -u root

# 在 ubuntu 中输入
$ uname -r
5.15.153.1-microsoft-standard-WSL2+
  • 4)连接:
PS C:\Users\Chris> usbipd list
Connected:
BUSID  VID:PID    DEVICE                                                        STATE
1-19   067b:2731  USB 大容量存储设备                                            Not shared

Persisted:
GUID                                  DEVICE

PS C:\Users\Chris> usbipd bind -b 1-19
PS C:\Users\Chris> usbipd attach -a --wsl --busid 1-19
usbipd: info: Using WSL distribution 'Ubuntu-22.04-cb2' to attach; the device will be available in all WSL 2 distributions.
usbipd: info: Using IP address 172.22.48.1 to reach the host.
usbipd: info: Starting endless attach loop; press Ctrl+C to quit.
WSL Attached
  • 5)连接结果:
$ lsusb
Bus 002 Device 002: ID 067b:2731 Prolific Technology, Inc. USB SD Card Reader
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

$ lsblk
NAME MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda    8:0    0 388.6M  1 disk
sdb    8:16   0     2G  0 disk [SWAP]
sdc    8:32   0     1T  0 disk /snap
                               /mnt/wslg/distro
                               /
sdd    8:48   1  29.1G  0 disk
  • 6)问题日志:
# 情况 1:
usbipd attach -a --wsl --busid 1-19
usbipd: error: Device is not shared; run 'usbipd bind --busid 1-19' as administrator first.
这种情况需要先使用 usbipd bind -b 1-19 命令将 STATE 的状态变成 Shared

# 情况 2:
usbipd attach -a --wsl --busid 1-19
usbipd: info: Using WSL distribution 'Ubuntu-22.04-cb2' to attach; the device will be available in all WSL 2 distributions.
usbipd: info: Loading vhci_hcd module.
usbipd: error: Loading vhci_hcd failed.
这种情况可以先去 wsl ubuntu 中输入 modprobe vhci_hcd 指令查看 vhci_hcd 模块是否安装,
如果没有安装,需要在 make menuconfig 时设置 Device Drivers -> USB Support -> USB/IP Support -> VHCI hcd

# 情况3:
usbipd list
WARNING: usbipd not found for kernel 6.6.36.6-microsoft

  You may need to install the following packages for this specific kernel:
    linux-tools-6.6.36.6-microsoft-standard-WSL2+
    linux-cloud-tools-6.6.36.6-microsoft-standard-WSL2+

  You may also want to install one of the following packages to keep up to date:
    linux-tools-standard-WSL2+
    linux-cloud-tools-standard-WSL2+
这个命令应该在 wsl 中执行,而不是 wsl ubuntu 的命令行
    

附录:WSL 操作命令

  • 参考:https://blog.csdn.net/weixin_38103659/article/details/125135074
wsl -l [--running]  # 列出当前 WSL [运行中] Linux 子系统 
wsl -t [wsl_name]   # 终止名为 wsl_name 的 Linux 子系统

# 打开新 WSL 实例
wsl -d UbuntuRuby               # 仅打开指定版本
wsl -d UbuntuRuby -u username   # 以指定用户启动

# 备份与恢复
wsl --export Ubuntu-22.04                 D:\Workspace\WSL_Bak\Ubuntu-22.04-20240908.tar
wsl --import Ubuntu-22.04 D:\Software\WSL D:\Workspace\WSL_Bak\Ubuntu-22.04-20240908.tar

附录:git 仓库检出

# 1)我们想要操作的是远程【分支】,以 wsl linux 仓库为例:
$ git branch -a
remotes/origin/HEAD -> origin/linux-msft-wsl-6.6.y
remotes/origin/linux-msft-wsl-4.19.y
remotes/origin/linux-msft-wsl-5.10.y
remotes/origin/linux-msft-wsl-5.15.y
remotes/origin/linux-msft-wsl-5.4.y
remotes/origin/linux-msft-wsl-6.1.y
remotes/origin/linux-msft-wsl-6.6.y
remotes/origin/master
## (1)先创建本地分支,再检出
git branch linux-msft-wsl-5.15.y remotes/origin/linux-msft-wsl-5.15.y
git checkout linux-msft-wsl-5.15.y
## (2)直接检出远程分支,并创建一个与之关联的本地分支
git checkout -b linux-msft-wsl-6.6.y remotes/origin/linux-msft-wsl-6.6.y
# (3)在本地新建一个同名分支,系统会自动关联其同名远程分支
git checkout linux-msft-wsl-6.6.y

# 2)我们想要操作的是【标签】,以 linux 仓库为例
$ git tag | grep v6.0
v6.0
v6.0-rc1
v6.0-rc2
v6.0-rc3
v6.0-rc4
v6.0-rc5
v6.0-rc6
v6.0-rc7
# (1)先创建分支,再切换
git branch v6.0-rc7 v6.0-rc7 
git checkout v6.0-rc7 
# (2)直接创建
git checkout -b v6.0-rc7 v6.0-rc7 
usbipd-win软件 这是我从GitHub上面下载的开源usbipd-win软件,为了方便下载就上传到这,方便大家下载,免受github龟速 立即下载

相关推荐

usbipd 在 Win10/11 上和 WSL/ Hyper-V 进行 USB 共享的工具 2024 最新

USBIPD-Win能够在Windows系统中轻松共享本地USB设备,就像它们连接在远程计算机上一样。这对于需要在远程或虚拟环境(比如Hyper-V来宾和WSL 2)中使用本地USB设备的情况非常实用。 主要特性: USB 设备共享: 将本地连接的USB设备分享给其他计算机,让它们通过网络来使用。 适用于 Hyper-V 和 WSL 2: 使得在虚拟机和Linux子系统中使用本地USB设备变得容易。 简单易用: 通过网络让USB设备变得无处不在,无需复杂的设置。 如果您希望在网络中自由共享和访问USB设备,USBIPD-Win是一个方便而实用的工具。

【Windows 常用工具系列 19.1 -- windows usbipd 命令 详细介绍】

usbipd是一个用于管理 USB/IP(USB over IP)服务的命令行工具,可以在 Windows 下使用。USB/IP 是一种协议,允许通过网络共享 USB 设备。usbipd工具允许用户在 Windows 上共享 USB 设备,使其他计算机能够通过网络访问这些设备。以下是usbipd命令的详细介绍,包括其常用参数和使用场景示例。

CodingCos的博客 3515

元数据管理:DataHub和OpenMetadata对比分析

DataHub和OpenMetadata都试图解决数据编目,搜索,发现,治理和质量方面的相同问题。这两种工具都是出于为需要支持大量数据源、团队和用例的大型组织解决这些问题而诞生的。尽管这些工具在发布历史和成熟度方面略有不同,但它们的功能存在显着重叠。

weixin_38030820的博客 6625

通过usbip实现将Docker容器连接主机的USB设备

使用Docker来配置嵌入式编译环境无疑为开发者们带来了极大的便利。Docker以其轻量级、可移植和隔离性强的特点,使得嵌入式编译环境的搭建和管理变得简单而高效。通过Docker,我们可以轻松地创建、配置和部署编译环境,而无需担心这些操作会对主机系统造成过多的负担,从而保持主机系统的清爽和高效。Docker容器无法直接访问主机的USB设备。这对于需要连接USB设备进行开发或测试的嵌入式项目来说,无疑是一个很大的限制。

无垠宇宙 4816

Carsim2019与Simulink (Matlab2018b)联合仿真成功(超详细)

Carsim与Simulink联合仿真成功

强强的博客 3万+

【STC32G12K128开发板】——从零到一:Keil C251开发环境全攻略

本文详细介绍了为STC32G12K128开发板搭建Keil C251开发环境的完整流程。从环境准备、软件安装、驱动配置到创建第一个工程并下载程序,提供了避坑指南和实用技巧,帮助开发者高效入门这款基于251内核的国产32位单片机开发。

weixin_29192141的博客 357

USBIP配置方法及其部分理论的理解

1、USBIP工具简介 USBIP是用于将Linux系统上所识别到的USB设备通过以太网共享出来的一个工具,它可以使得USB外接设备可以跨电脑或跨服务器进行访问。在USBIP基本架构中,分服务端(Server)和客户端(Client)两种,其中服务端是指插入USB设备并将其共享出来的一端,而客户端则是连接共享USB的一端,目前USBIP已经是Linux内核的一个分支,Windows平台下也有相应的工具。 服务端的USB设备被USBIP共享出来后,如果有客户端连接这个共享USB设备成功,在网络层面上建立一个T

muxia_jhy的博客 6854

ACT代码梳理:新手学具身智能,不需要学会一堆理论,先跑起来再说

我是一个刚接触具身智能的小白。第一次看 ACT 项目,什么 Transformer、VAE、Mujoco、rollout,全是天书。但我没打算先把理论补完。太难,也太慢。我的策略是:直接上手,边做边学,卡在哪就学到哪。这篇文章是我的第一站——带你一起看懂 ACT 项目的整体架构,了解它的核心模块和流程。开始前,我列了 本文出现的18 个关键词,是我一开始完全搞不懂的。你可以先扫一眼,如果不认识的超过 10 个,那我们就是同路人,可以放心往下看了。

qq_17405041的博客 1203

局域网中USB远程共享:USB/IP

USB/IP是一种基于网络的设备共享机制,可将电脑A(server端)连接的USB设备通过网络共享给远程电脑B(client端)

Ceekin的博客 9867

【原创】关于西门子S120 的电气图纸设计

我们首先要了解一下模块的基本信息:SINAMICS 功率模块 PM240-2 三相交流380-480V+10/-10% 47-63Hz;至此,我们选择的驱动系统配置的资料都已经查找完毕,接下来就是根据每个部件的功能接口和我们需要实现的功能画出接线连接图,这样关于伺服电机控制,硬件部分设计就完成了。2)FSA - FSC 型功率模块 PM240-2 的屏蔽连接板外形尺寸图,所有数据以毫米(英寸)为单位。1)FSA 型功率模块 PM240-2 的外形尺寸图,所有数据以毫米(英寸)为单位。

Qinmingyue13的博客 2632

RK3568项目(四)--uboot启动流程之启动模式选择

本章接着上面,接着来分析uboot启动流程,设计vendor、按键、驱动模式的选择等

文艺小少年的博客 580

WSL2识别USB设备——安装开源 usbipd-win 项目

WSL 本身并不支持连接 USB 设备,因此你需要安装开源 usbipd-win 项目

qq_59475883的博客 1万+

多模态论文笔记——VQ-VAE和VQ-VAE-2

本文详细介绍VQ-VAE和VQ-VAE-2的原理和训练过程,为后面的dVAE在DALLE中的使用打下坚实的基础。

haopinglianlian的博客 3293

Windows下linux 子系统 WSL2怎样使用usb串口(USBIPD-win4.0.0)

这时候就出现/dev/ttyUSB0啦。直接下载最新版本的msi文件安装。windows查看usb设备。

略知12的博客 3616

STM32实战开发(66):STM32图像处理开发教程

随着物联网、人工智能和嵌入式技术的不断发展,图像处理技术在嵌入式系统中的应用越来越广泛。图像处理不仅在视觉识别、安防监控、智能家居等领域中发挥着重要作用,也在工业自动化、医疗成像、无人驾驶等高科技领域中占据重要地位。而STM32凭借其强大的硬件性能和丰富的外设支持,成为了许多图像处理应用的理想平台。

2201_76125393的博客 1441

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【WSL 2】在 Windows10 上配置 WSL 2 连接 USB 设备 D435i

WSL2 中配置连接主机的 USB 设备并使用主机的 USB 摄像头

G.Chenhui的博客 1万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

WSL开发环境搭建采坑记录

心血来潮搞了下子系统,搭建子系统环境,测试ESP32开发,实现了usb连接子系统,可通过win下VScode远程编译下载固件。中间坑踩得较多,找了较多资料,搞定了,后续再探索其它功能。

ll2549的博客 5864

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

WARNING: perf not found for kernel 5.15.167.4-microsoft

之后使用perf报错如上,因为不支持wsl2,按照提示安装无效。

漫步量化 626

ubuntu出现WARNING: perf not found for kernel 5.15.0-41的解决方法

首先按照报错提示的解决方法去安装package,还是不行的话,应该是源的问题。重新update和upgrade,安装perf。

weixin_43456810的博客 1173

WSL2中使用usb设备 usbipd: error: WSL ‘usbip‘ client not correctly installed.

wsl2中使用usb设备

冷色调的夏天的博客 7567

windows usbip(瑞芯微windows开发)

除usbipd之外,还有一个usbip仓库可以参考。检查 vhci_hcd 模块: 确保。wsl2中运行,可发现设备。windows上运行。

芝士不禁脑汁 1533

Linux USB 中persist的作用

对应一个USB device设备可以设置persist的属性,一般默认为1表示STR开机后可以做reset恢复 /sys/bus/usb/devices/2-1/power/persist 但是通常情况,嵌入式USB在STR之后处于断电状态,需要重新连接,则将/sys/bus/usb/devices/2-1/power/persist设置为0即可。 主要区别在:hub_activate()中,如果为0则会走到: /* The power session is gone;...

mabin2005的专栏 937

WSL下使用USB/IP 连接 USB 设备

WSL调用USB

伊丽莎白的学习之路 1707

USBIPD-WIN 项目推荐

**USBIPD-WIN** 是一个开源项目,旨在为 Windows 系统提供 USB 设备共享功能,支持将本地连接的 USB 设备共享给其他机器,包括 Hyper-V 虚拟机和 WSL 2(Windows Subsystem for Linux 2)。该项目的主要编程语言是 **C#**,同时也包含一些 Shell 脚本。 ## 2. 项目核心功能 USBIPD-WIN 的核心功能包括: ...

gitblog_09306的博客 543
上一篇: Cubieboard2(二) 系统构建 —— 基于 linux-sunxi
下一篇: Cubieboard2(四) 系统构建 —— 基于 mainline
送南阳马生序
博客等级 码龄10年 520粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值