图:在 Windows 上设置 WSL 并安装 Ubuntu 的工作流
验证 Windows 主机系统要求
下表列出了 WSL 环境进行 Qualcomm Linux 构建所需的最低硬件资源:启用 WSL 并安装 Ubuntu
Qualcomm Linux 使用 Ubuntu 22.04 Linux 发行版。启用 WSL 和安装 Ubuntu 的步骤因 Windows 版本而异。请按照适用于您版本的说明操作:- WSL 2(Windows 10 2004+ 和 Windows 11)
- WSL 1(较旧的 Windows 版本)
有关如何启用 WSL 2 并安装 Ubuntu 22.04 的说明,请参阅在 WSL 2 上安装 Ubuntu。
在 WSL 中配置 Ubuntu 设置
要设置 WSL 环境,请在 WSL 中配置 WSL 特定设置。使用wsl.conf 文件为您安装的 Linux 发行版配置以下 WSL 特定设置:
[automount] options = "metadata":启用 Linux 风格的文件权限[boot] systemd = true:在 WSL 中启用 systemd[boot] command = systemctl start docker:在 WSL 启动时自动启动 Docker 服务
wsl.conf 文件中的设置。
要配置 WSL 特定设置,请执行以下操作:
-
在 Ubuntu 终端中,使用
sudo命令将以下内容添加到/etc/wsl.conf文件中:/etc/wsl.conf -
在 Windows PowerShell 中,运行以下命令以重启 WSL:
PowerShell
为 WSL 启用 USB 设备访问
WSL 2 运行在一个轻量级 VM 中,默认无法访问 USB 设备。因此,lsusb 等命令和烧录工具无法检测到目标设备。
要为 WSL 启用 USB 访问,请使用 usbipd-win 通过 USB/IP 将 USB 设备的流量从 Windows 传递到 WSL:
-
以管理员身份打开 Windows PowerShell,并运行以下命令来安装
usbipd-win:PowerShell -
可选:要启用镜像网络(mirrored networking),请在 Windows PowerShell 中运行以下命令,在您的用户配置文件中创建
.wslconfig文件:PowerShell在公司管理或受组策略管理的计算机上,默认的网络地址转换(NAT)网络模式可能会阻止 usbipd 所需的防火墙规则,导致设备附加失败。切换到镜像网络会通过环回(loopback)路由连接,从而绕过该限制。 -
要重启 WSL,请运行以下命令:
PowerShell
-
在 Ubuntu 终端中,运行以下命令来安装 USB/IP 客户端工具:
Ubuntu terminal
-
以管理员身份打开 Windows PowerShell,并运行以下命令列出已连接的 USB 设备:
PowerShell
-
记下要烧录设备的
BUSID。对于烧录 Qualcomm 设备,BUSID通常是 QDLoader 9008 设备(05c6:9008,EDL 模式)或 Fastboot 设备。Sample output -
以管理员身份打开 Windows PowerShell,并运行以下命令绑定设备一次。将
<busid>替换为第 6 步中的BUSID(例如1-4):PowerShell
-
验证设备的
STATE是否变为Shared。 -
在 Windows PowerShell 中,运行以下命令将设备附加到 WSL:
PowerShell
- 每次重新插拔或模式切换后需重新附加:当设备在烧录期间更改模式时(例如正常 → EDL 9008,或 → fastboot),Windows 会重新枚举该设备,通常会分配新的
BUSID,并且 WSL 附加会断开。请重新运行usbipd list,然后运行usbipd attach --wsl --busid <new-busid>。这是在 WSL 中烧录 Qualcomm 设备时的常见错误来源。 - 每次 WSL 重启后需重新附加:附加不会在
wsl --shutdown或系统重启后保留;只有绑定会保留。
- 每次重新插拔或模式切换后需重新附加:当设备在烧录期间更改模式时(例如正常 → EDL 9008,或 → fastboot),Windows 会重新枚举该设备,通常会分配新的
-
在 Ubuntu 终端中,运行以下命令确认 Ubuntu 检测到该设备:
该设备必须出现在列表中,例如如下所示:Ubuntu terminal在 WSL 内运行的烧录工具现在可以检测到该设备。有关烧录说明,请参阅烧录软件镜像。
-
要在烧录后分离设备,请在 Windows PowerShell 中运行以下命令:
PowerShell
排查 WSL 问题
解决在使用 WSL 进行 Qualcomm Linux 构建时可能出现的与性能、磁盘空间、域名系统(DNS)、构建错误和 USB 直通相关的常见问题。WSL 中的性能问题
如果您在 WSL 中遇到性能问题,请使用.wslconfig 文件调整全局资源限制,例如内存、CPU 和交换空间。这些资源限制适用于所有 WSL 2 发行版。
请逐步调整设置,并在每次更改后验证结果。有关更多信息,请参阅 WSL 中的高级设置配置。
C 盘磁盘空间不足以进行 Qualcomm Linux 构建
默认情况下,Ubuntu 安装在 C 盘上。如果 C 盘没有足够的可用空间进行 Qualcomm Linux 构建,请将 Ubuntu 安装移动到其他驱动器。 要移动 Ubuntu 安装,请以管理员身份在 Windows PowerShell 中运行以下命令:PowerShell
PowerShell
WSL 中的 DNS 解析失败
WSL 可能无法解析域名,导致依赖网络的操作(例如获取软件包或克隆仓库)因 DNS 错误而失败。 要修复 DNS 解析失败,请使用resolv.conf 文件手动配置 DNS 设置:
-
要禁用自动生成
resolv.conf,请在 Ubuntu 终端中运行sudo命令,将以下内容添加到/etc/wsl.conf文件中:/etc/wsl.conf -
要在
resolv.conf中设置 DNS 服务器,请在 Ubuntu 终端中运行sudo命令,将/etc/resolv.conf的内容替换为您的内部 DNS 服务器,并以公共 DNS 服务器作为后备:WSL 会按顺序查询 nameserver。将内部 DNS 服务器放在前面可确保域名、私有软件包注册表和仅限虚拟专用网络(VPN)的资源能够正确解析。/etc/resolv.conf -
要重启 WSL 并应用更改,请在 Windows PowerShell 中运行以下命令:
PowerShell
Yocto 构建中的 Git Filename too long 错误
在 WSL 中运行 Qualcomm Linux Yocto 构建时,Git 可能会失败并报 Filename too long 错误。发生此错误的原因是 Windows 强制执行默认的 MAX_PATH 限制(260 个字符),而 Yocto 构建路径可能会超过该限制。
要修复此错误,请在 Ubuntu 终端中运行以下命令为 Git 启用长路径支持:
Ubuntu terminal
USB 设备无法附加到 WSL
如果usbipd attach 失败、无响应,或设备未出现在 lsusb 中,请执行以下操作:
-
要确认 usbipd 已绑定设备,请以管理员身份在 Windows PowerShell 中运行
usbipd list,并验证STATE列显示Shared。如果显示Not shared,则附加会失败。请以管理员身份在 Windows PowerShell 中使用usbipd bind --busid <busid>命令进行绑定。 -
要检查网络模式,请确认
usbipd attach输出报告Detected networking mode mirrored。如果报告nat,则在受管计算机上是公司防火墙或组策略正在阻止连接。要解决此问题,请执行以下操作: a. 按照为 WSL 启用 USB 设备访问第 2 步中的说明启用镜像网络。 b. 验证.wslconfig文件名和路径是否正确。 c. 运行wsl --shutdown使更改生效。 -
拔下设备或切换模式时,
BUSID可能会改变。如果 BUSID 已更改,请执行以下操作: a. 重新运行usbipd list以确认当前的BUSID。 b. 重新运行usbipd attach --wsl --busid <new-busid>。 c. 确认 WSL 已安装 USB/IP 客户端工具。
如果启用镜像网络后附加仍然失败,则可能是组策略完全阻止了
usbipd 防火墙规则。在这种情况下,请改为在原生 Ubuntu 主机上进行烧录,因为那里不需要 USB 直通。
