可以使用 WSL Ubuntu 刷新 SD 卡吗?

可以使用 WSL Ubuntu 刷新 SD 卡吗?

我是 Linux 新手,所以请耐心听我说,我很乐意澄清我不可避免地误用的任何术语。

我正在运行 Windows 11 和 WSL/Ubuntu。我正在尝试使用脚本(SDK 的一部分)将嵌入式 Linux 映像刷入 SD 卡。该脚本编译映像,然后将其放到 SD 卡上,它将作为<device>示例中的参数/dev/sdc

sudo ./mksdcard.sh /dev/sdc

我已经设置了 USBIPD 并成功将 SD 卡安装到我的“linux”系统。当我
$usbipd wsl attach --busid 3-1在 PowerShell 中运行时,我可以看到 SD 卡(驱动器 D)从我的 Windows 文件系统中消失,并且我可以通过/mnt/dUbuntu 查看它的内容。问题是当我查看其中的设备时,它/dev没有显示在那里,只有/sda/sdb/sdc。当我运行 时lsusb,我可以看到 SD 卡:

$lsusb
Bus 002 Device 003: ID 045e:090c Microsoft Corp. SD Card
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

当我跑步时lsusb -t

$lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=vhci_hcd/8p, 5000M
    |__ Port 1: Dev 3, If 0, Class=Mass Storage, Driver=, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=vhci_hcd/8p, 480M

我尝试使用/mnt/d建议的方法来运行脚本/dev/sdc,但收到错误消息,提示这是一个目录,而不是设备。

根据结果​​,$lsusb -t我认为 SD 卡缺少驱动程序。这可能是问题所在吗?有办法获取该驱动程序吗?

我正在尽力使用 WSL 进行开发而不是将我的计算机启动到 Linux,但这是迄今为止我最大的障碍。

如果有帮助的话,这里有一些额外的信息:

$lsblk
NAME MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda    8:0    0   256G  0 disk
sdb    8:16   0 339.7M  1 disk
sdc    8:32   0   256G  0 disk /

$uname -a
Linux SUN-022078282057 5.10.102.1-microsoft-standard-WSL2+ #1 SMP Tue Jun 7 15:51:43 PDT 2022 x86_64 x86_64 x86_64 GNU/Linux

谢谢!!

答案1

您似乎至少对基础知识有了合理的了解(甚至可能了解得更多),所以我将尝试为您提供“部分答案”,以便您找到正确的方向。通常我会在发布之前尝试更全面地测试一下,但这可能需要几天时间。

我觉得你也遇到了类似的问题相机支持在 WSL2 中。虽然 WSL2 内核具有 USB/IP 支持,但它本身不包含大多数 USB 设备的驱动程序。例如,查看WSL2 内核配置,您会发现不包括 MMC(SD 卡)支持。

我不能保证它能工作,但你至少必须编译你自己的带有 MMC 支持的内核,并且可能还要编译你的 SD 卡读卡器本身的实际驱动程序。

在典型的 Ubuntu(或其他发行版)内核上,所有常见的硬件设备都可以作为内核模块使用,但 WSL 的内核更加精简。

另一个更简单的选择是,由于您使用的是 Windows 11,因此可以使用 将实际驱动器从 Windows 安装到 WSL wsl --mount --bare。理论上,这将使设备本身可供 WSL 使用,而无需实际安装它。然后,您可能能够按照自己的希望访问它。

相关内容