我是 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/d
Ubuntu 查看它的内容。问题是当我查看其中的设备时,它/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 使用,而无需实际安装它。然后,您可能能够按照自己的希望访问它。