图:在 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在企业或由组策略(Group Policy)管理的计算机上,默认的网络地址转换(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,并运行以下命令绑定该设备一次:
PowerShell
-
将
1-4替换为您实际的BUSID。设备的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 中运行的烧录工具现在可以检测到该设备。有关烧录说明,请参阅 Qualcomm Linux 构建指南。
-
要在烧录后分离设备,请在 Windows PowerShell 中运行以下命令:
PowerShell
排查 WSL 问题
解决在使用 WSL 进行 Qualcomm Linux 构建时可能出现的与性能、磁盘空间、域名系统(DNS)、构建错误和 USB 直通相关的常见问题。WSL 中的性能问题
如果您在 WSL 中遇到性能问题,请使用.wslconfig 文件调整全局资源限制,例如内存、CPU 和交换空间(swap)。这些资源限制适用于所有 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 会按顺序查询名称服务器。将内部 DNS 服务器列在首位可确保域名、私有软件包注册表以及仅限虚拟专用网络(VPN)访问的资源能够正确解析。/etc/resolv.conf -
要重启 WSL 并应用更改,请在 Windows PowerShell 中运行以下命令:
PowerShell
Yocto 构建中的 Git Filename too long 错误
在 WSL 中运行 Qualcomm Linux Yocto 构建时,Git 可能会因 Filename too long 错误而失败。出现该错误是因为 Windows 强制执行默认的 260 个字符的 MAX_PATH 限制,而 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 直通。
