模型部署实战(一):Windows 从 0 配置 WSL2 + Ubuntu 24.04 + Docker

本文定位:本文定位:Windows AI 开发环境「通用教程 + 排障手册」

  • 环境正常(网络通、系统更新完整)→ 看第 0-5 部分(装 → 用 → 进阶 → 卸载)
  • 环境特殊(微软服务器不通、内核缺失、系统缺补丁)→ 看第 6 部分排障路线
  • 记录时间:2026-08-08(排障路线为本机实测,所有命令均已验证)

目录


第 0 部分:本文怎么用(读者导航)

你的情况看哪里
网络正常、系统更新完整、不挑安装盘第 1-5 部分(约 3 分钟装完)
微软服务器连不上 / wsl --install 卡死6.1 诊断 → 6.2-6.4 离线安装
装完想装其他 Linux 发行版 / 迁移到 D/E 盘第 4 部分
想卸载干净第 5 部分
遇到报错(ActiveX 弹窗、HCS 报错等)第 8 部分 FAQ
记不住命令第 7 部分速查表

本文排障路线是本机(Win10 22H2,微软网络不通 + 系统缺补丁)实测记录,每一步都有替代方案。


第 1 部分:准备工作

1.1 系统要求

  • Windows 10 版本 2004 及以上(内部版本 19041 及以上)或 Windows 11
  • 推荐 Windows 11(WSL2 图形化窗口支持更好);Win10 基本类似,本文排障路线即 Win10 22H2 实测
  • 磁盘空间:Ubuntu 约需 2-3GB(vhdx 动态增长),另留 Docker 镜像空间

1.2 开启 Windows 功能

  1. 在底部搜索框搜索"启用或关闭 Windows 功能"并打开

img

  1. 勾选以下两项(WSL2 必需):
  • 适用于 Linux 的 Windows 子系统
  • 虚拟机平台

img

  1. 点击确定,重启电脑

如果勾选后依然报错,也可以用命令行强制开启(管理员 PowerShell):

[PowerShell · 管理员]
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

执行完重启生效。

1.3 终端说明:用哪个终端跑哪些命令

终端怎么打开本文标记用来干嘛
PowerShellWin 键 → 输入 powershell → 回车[PowerShell]Windows 侧命令(下载、装 MSI、import、查状态)
CMDWin+R → 输入 cmd → 回车[CMD]极少用,只在读取 wsl 中文输出时用
WSL (Ubuntu)装好后在 PowerShell/CMD 里敲 wsl 进入[WSL]所有 Linux 内部命令(apt、docker 等)

📌 核心口诀

  • 操作 Windows 系统/文件 → PowerShell
  • 操作 Ubuntu 系统/软件 → 先进 wsl 再执行
  • 碰到 wsl 开头的命令 → 在 PowerShell 里直接敲(wsl 是 Windows 的程序)

如果你不想区分:全程只用 PowerShell,看到 [WSL] 的命令就先进 wsl(回车进入 Ubuntu),命令敲完用 exit 退回 Windows。


第 2 部分:安装(晴天路线 · 3 分钟快速版)

适用条件(缺一不可,否则跳到第 6 部分排障路线):

  • ✅ 能访问微软服务器(aka.ms、Microsoft Store 不超时)
  • ✅ 系统更新完整(Win10 22H2 或 Win11 最新补丁)
  • ✅ 不用管 WSL 装在哪个盘(默认 C 盘)或愿意先装 C 再迁移(见 4.2)

满足以上条件,总共就 3 条命令。

2.1 一键安装 WSL + Ubuntu

[PowerShell · 管理员]
wsl --install -d Ubuntu

这条命令自动完成:启用 WSL 功能 → 装内核 → 下载安装 Ubuntu。装完重启电脑

重启后第一次启动 Ubuntu 会让你创建 Linux 用户名和密码(如 ameng / 自己设的密码)。

2.2 检查是否安装成功

[PowerShell / CMD]
wsl -l -v

看到类似这样的输出(有 UbuntuVERSION2、带 * 号)即安装成功:

img

  • 如果 wsl -l -vHCS_E_SERVICE_NOT_AVAILABLE → 第 1.2 节的功能没开好或没重启,回去确认并重启
  • 如果列表为空 / 没有 Ubuntu → 手动安装,见 4.1

2.3 安装 Docker

[WSL]
sudo apt update && sudo apt install -y docker.io
sudo systemctl enable --now docker
sudo usermod -aG docker $USER   # 当前用户免 sudo 用 docker(需重新登录生效)

2.4 验证

[WSL]
docker run --rm hello-world    # 看到 "Hello from Docker!" 即成功

第 3 部分:简单使用

3.1 打开/退出 Linux 终端

在 PowerShell 或 CMD 输入:

wsl

稍等片刻就"进入"了 Linux 系统,提示符变成类似 user@host:/mnt/c/...

img

退出 Linux 回到 Windows:输入 exit 即可。

⚠️ 可能报错:

由于未安装所需的特性,无法启动操作。
错误代码: Wsl/Service/CreateInstance/CreateVm/HCS/HCS_E_SERVICE_NOT_AVAILABLE

原因:没正确开启"适用于 Linux 的 Windows 子系统"/“虚拟机平台”,或开了没重启。回到 1.2 节确认并重启电脑。

3.2 访问 Linux 和 Windows 文件

Windows 里看 Linux 文件:在文件资源管理器地址栏输入 \\wsl$\ 回车,能看到所有发行版文件夹,点进去就是 Linux 根目录(或直接 \\wsl$\Ubuntu)。

Linux 里看 Windows 盘

/mnt/c/   对应 C 盘
/mnt/d/   对应 D 盘
/mnt/e/   对应 E 盘

例如:

cd /mnt/c/Users/你的用户名/Desktop/      # 切换到 Windows 桌面
cp /mnt/c/Users/.../file.txt  ~/         # 复制文件到 Linux 家目录

更简单的方法:在需要的 Windows 目录中按住 Shift 右键 → “在终端中打开”(PowerShell,cmd 不行),进入后直接敲 wsl 就在该目录下打开 Linux。

在 Linux 终端打开 Windows 资源管理器

[WSL]
explorer.exe .

3.3 在 Windows 命令行运行 Linux 命令

两种方式:

wsl <command>              # way 1
wsl bash -c "<command>"    # way 2

⚠️ 注意:每次 wsl 都是新开一个 Linux 会话,两条命令之间状态不连续。串联多命令必须用 way 2:

wsl bash -c "<command1> && <command2>"

3.4 安装一些必备软件

刚装好的系统几乎没软件,用 apt 安装:

sudo apt install 软件名
  • sudo:以超级用户权限执行(会要密码,就是装系统时设的那个)
  • apt:Ubuntu/Debian 的包管理工具

推荐先装:

sudo apt install gedit      # 图形化文本编辑器(类似记事本)
sudo apt install eog        # 图片查看器
sudo apt install vim        # 终端编辑器
sudo apt install x11-apps   # X11 测试工具(含 xclock,可验证 GUI 是否正常)

3.5 打开软件

安装完成后,直接在 Linux 终端输入软件名即可启动,例如:

gedit

图形界面程序会通过 WSLg 直接显示到 Windows 桌面。


第 4 部分:进阶安装

4.1 安装其他 Linux 系统

方式一:Microsoft Store
打开 Microsoft Store,搜索"WSL"或发行版名(如"Debian"),找到 “for WSL” 的版本 → 获取/安装 → 按提示设用户名密码。

img

img

方式二:命令行

[PowerShell]
wsl --list --online        # 查看可安装的发行版列表
wsl --install -d Ubuntu-24.04    # 安装指定发行版

img

查看已安装的发行版

[PowerShell / CMD]
wsl -l -v

带星号 * 的是默认发行版(直接 wsl 进入的就是它)。

img

进入/切换/设默认

[PowerShell / CMD]
wsl -d Ubuntu      # 直接进入 Ubuntu
wsl -d Debian      # 直接进入 Debian
wsl --set-default Debian    # 把 Debian 设为默认

4.2 修改虚拟磁盘位置(迁移到非 C 盘)

Linux 的软件、文档都放在一个虚拟磁盘(vhdx)里,默认在 C 盘。C 盘紧张时可以迁走。

先找到它的物理位置

[PowerShell]
Get-ChildItem "HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss" -Recurse

img

输出里的 BasePath 就是物理位置。

迁移(导出/导入法,推荐)

[PowerShell]
wsl --shutdown     # 1. 关闭所有 WSL 实例

wsl --export Ubuntu D:\path\backup\ubuntu-backup.tar   # 2. 导出为 tar 备份
# (把 D:\path\backup\ 换成实际路径,先建好目录)

wsl --unregister Ubuntu   # 3. 注销原发行版(会删除 C 盘原系统数据)

wsl --import Ubuntu D:\new\wsl\location D:\path\backup\ubuntu-backup.tar --version 2   # 4. 导入到新位置

完成后 wsl -l -v 确认 Ubuntu 存在且 VERSION=2,去新目录看 ext4.vhdx 是否就位。

也可以直接用 wsl --import-in-place <发行版> <文件.vhdx> 从 vhdx 直接导入(WSL2 专用),适合已有 vhdx 的情况。


第 5 部分:卸载 WSL

卸载文章很少讲,但卸载不干净会导致以后再装出问题。按以下顺序:

  1. 记录虚拟磁盘位置(卸载后它不会自动删,占空间最大):

    [PowerShell]
    Get-ChildItem "HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss" -Recurse
    
  2. 关闭所有 WSL

    [PowerShell]
    wsl --shutdown
    
  3. 注销发行版(逐个删除,不要在"设置→应用"里删,否则 WSL 注册表不干净,再装会出问题):

    [PowerShell]
    wsl --list          # 查看已安装的发行版名称
    wsl --unregister <发行版名称>
    
  4. 卸载 WSL 核心组件

    [PowerShell]
    wsl --uninstall
    
  5. 删除虚拟磁盘:打开第 1 步记录的位置,删除 vhdx 文件(可能已被删,不管它)。

  6. 最后重启电脑


第 6 部分:完整排障路线(本机实测)

本机实际踩的坑(也是本文档存在的意义):

  1. 内置 wsl.exe 为旧版(10.0.19041.x),缺 WSL2 内核
  2. 微软分发通道(aka.ms、Microsoft Store)网络超时(错误码 0x80072ee2),wsl --install 卡死
  3. GitHub 与 Ubuntu 官方镜像可达 → 全部改为离线/手动下载
  4. 新版 WSL 的 WSLg 组件依赖系统缺失的 API(GetTempPath2W)→ 弹窗(见 9.1)

6.1 什么时候走这条线(先诊断)

1. 查看 WSL 状态(注意编码问题)
[PowerShell]
wsl --status

⚠️ 编码坑:内置旧版 wsl.exe 输出 UTF-16,在 PowerShell 里直接读会乱码。重定向到文件再按 Unicode 读:

[PowerShell]
$f = Join-Path $env:TEMP 'wsl_status.txt'
cmd /c "wsl --status > `"$f`" 2>&1"
Get-Content $f -Encoding Unicode
Remove-Item $f -ErrorAction SilentlyContinue

诊断结果示例(缺内核):

默认版本:2
...
未找到 WSL 2 内核文件。若要更新或恢复内核,请运行"wsl --update"。
2. 查看已安装发行版与内核文件
[PowerShell]
cmd /c "wsl --list --verbose > %TEMP%\wsl_l.txt 2>&1"
Get-Content "$env:TEMP%\wsl_l.txt" -Encoding Unicode

# 检查内核是否存在于系统目录
Get-ChildItem 'C:\Windows\System32\lxss\tools\'

本机结果:lxss\tools 下只有 bsdtar / ext4.vhdx.gz / init / initrd.img没有 kernel 文件 → 内核缺失确认。

3. 检查网络连通性(决定走晴天路线还是排障路线)
[PowerShell]
# 微软通道(不通 = 必须走排障路线)
try { (Invoke-WebRequest -Uri 'https://aka.ms/wsl2kernel' -Method Head -TimeoutSec 8 -ErrorAction Stop).StatusCode } catch { "FAIL: $($_.Exception.Message)" }

# 可用通道(返回 200 说明可走手动下载)
(Invoke-WebRequest -Uri 'https://github.com' -Method Head -TimeoutSec 8 -UseBasicParsing -ErrorAction Stop).StatusCode
(Invoke-WebRequest -Uri 'https://cloud-images.ubuntu.com/wsl/' -Method Head -TimeoutSec 8 -UseBasicParsing -ErrorAction Stop).StatusCode
4. 其他环境信息
[PowerShell]
# 当前 shell 是否管理员(MSI 安装需要,False 也没关系,后面会弹 UAC)
$id = [Security.Principal.WindowsIdentity]::GetCurrent()
(New-Object Security.Principal.WindowsPrincipal($id)).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)

# 目标盘剩余空间
Get-PSDrive E | Select-Object @{n='FreeGB';e={[math]::Round($_.Free/1GB,1)}}

6.2 下载安装包并校验

全程 PowerShell。

1. 找到 WSL 的下载地址(GitHub API)
[PowerShell]
$release = Invoke-RestMethod 'https://api.github.com/repos/microsoft/WSL/releases/latest'
$release.tag_name          # 例如 2.7.11
$release.assets | Where-Object { $_.name -like '*x64.msi' } | Select-Object name, browser_download_url

⚠️ 重要:Win10 22H2 请装 2.7.10(不要装 2.7.11+,原因见 9.1 WSLg 弹窗)。地址:
https://github.com/microsoft/WSL/releases/download/2.7.10/wsl.2.7.10.0.x64.msi

2. 找到 Ubuntu rootfs 的下载地址
https://cloud-images.ubuntu.com/wsl/releases/24.04/current/
# 选 amd64 版本:
#   ubuntu-noble-wsl-amd64-wsl.rootfs.tar.gz   (约 340MB)
# 同目录有 SHA256SUMS 校验文件
3. 下载

⚠️ 限速坑:GitHub/微软 CDN 单线程可能被限到 ~60KB/s。用多线程分块下载(见 9.2),或直接:

[PowerShell]
New-Item -ItemType Directory -Force -Path 'E:\WSL\downloads' | Out-Null
curl.exe -L --retry 3 -o 'E:\WSL\downloads\wsl.2.7.10.0.x64.msi' 'https://github.com/microsoft/WSL/releases/download/2.7.10/wsl.2.7.10.0.x64.msi'
curl.exe -L --retry 3 -o 'E:\WSL\downloads\ubuntu-noble-wsl-amd64-wsl.rootfs.tar.gz' 'https://cloud-images.ubuntu.com/wsl/releases/24.04/current/ubuntu-noble-wsl-amd64-wsl.rootfs.tar.gz'
4. SHA256 校验(必做,防下载损坏)
[PowerShell]
$msiHash    = (Get-FileHash 'E:\WSL\downloads\wsl.2.7.10.0.x64.msi' -Algorithm SHA256).Hash.ToLower()
$rootfsHash = (Get-FileHash 'E:\WSL\downloads\ubuntu-noble-wsl-amd64-wsl.rootfs.tar.gz' -Algorithm SHA256).Hash.ToLower()

# 期望值:MSI 来自 GitHub API digest,rootfs 来自官方 SHA256SUMS
# 2.7.10 的 MSI 哈希需以当时 GitHub API 返回为准;rootfs 如下
$rootfsHash -eq '8251e27ffff381a4af5f41dcb94d867de3e0d9774a9241908ab34555d99315ea'   # 应为 True

输出 True 才继续。False = 下载损坏,删掉重新下载。

6.3 安装 WSL

PowerShell 执行。 MSI 安装需要管理员权限,会弹出 UAC 窗口,点"是"

[PowerShell]
$msi  = 'E:\WSL\downloads\wsl.2.7.10.0.x64.msi'
$log  = 'E:\WSL\downloads\wsl_install.log'
$p = Start-Process msiexec.exe -ArgumentList "/i `"$msi`" /qn /norestart /l*v `"$log`"" -Verb RunAs -PassThru -Wait
$p.ExitCode   # 0 = 安装成功

验证:

[PowerShell]
wsl --version

预期输出(注意 MSRDC 应为 1.2.6676,不是 7214):

WSL 版本: 2.7.10.0
内核版本: 6.18.33.2-2
MSRDC 版本: 1.2.6676

6.4 导入 Ubuntu 到指定目录

PowerShell 执行。

[PowerShell]
New-Item -ItemType Directory -Force -Path 'E:\WSL\Ubuntu' | Out-Null
$rootfs = 'E:\WSL\downloads\ubuntu-noble-wsl-amd64-wsl.rootfs.tar.gz'
wsl --import Ubuntu 'E:\WSL\Ubuntu' $rootfs --version 2

⚠️ 不要用 wsl --install Ubuntu --location ...:网络受限环境下会卡死。wsl --import 完全离线。

设为默认发行版并验证:

[PowerShell]
wsl --set-default Ubuntu
cmd /c "wsl --list --verbose > %TEMP%\wsl_l3.txt 2>&1"
Get-Content "$env:TEMP%\wsl_l3.txt" -Encoding Unicode

预期输出(* 表示默认):

  NAME      STATE           VERSION
* Ubuntu    Stopped         2

目录验证:E:\WSL\Ubuntu\ext4.vhdx(约 1.2GB,动态增长)。

6.5 安装 Docker

先进入 Ubuntu(wsl 回车),以下全部在 WSL 里执行。

前置检查 systemd(新版 WSL 默认启用):

[WSL]
ps -p 1 -o comm=    # 输出 systemd = 可用

安装 docker-ce(官方源):

[WSL]
apt-get update -qq
apt-get install -y -qq ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo 'deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu noble stable' > /etc/apt/sources.list.d/docker.list
apt-get update -qq
DEBIAN_FRONTEND=noninteractive apt-get install -y -qq docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable docker
systemctl start docker
docker --version

download.docker.com 也不可达,改用 Ubuntu 自带源:apt install docker.io(版本略旧但可用)。

验证:

[WSL]
systemctl is-active docker   # 输出 active
docker run --rm hello-world # 成功 = 端到端可用(若卡住,先做 6.6)

6.6 配置国内镜像加速

前提:本机 registry-1.docker.io 直连超时。加速器状态随时间变化,装前先测。

1. 测试可用加速器(PowerShell)
[PowerShell]
$mirrors = @('https://docker.m.daocloud.io','https://docker.1ms.run','https://docker.1panel.live','https://hub.rat.dev','https://dockerproxy.net','https://docker.xuanyuan.me')
foreach ($m in $mirrors) {
  try { $r = Invoke-WebRequest -Uri "$m/v2/" -Method Head -TimeoutSec 6 -UseBasicParsing -ErrorAction Stop; "$m -> OK $($r.StatusCode)" }
  catch { "$m -> FAIL" }
}

本机实测:docker.1panel.live ✅、dockerproxy.net ✅(其余超时)。

2. 写入 daemon.json 并重启(WSL)
[WSL]
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json > /dev/null <<'EOF'
{
  "registry-mirrors": [
    "https://docker.1panel.live",
    "https://dockerproxy.net"
  ]
}
EOF
sudo systemctl restart docker

📌 heredoc 粘贴不便时用单行写法:

[WSL]
sudo bash -c 'echo "{\"registry-mirrors\":[\"https://docker.1panel.live\",\"https://dockerproxy.net\"]}" > /etc/docker/daemon.json'
sudo systemctl restart docker
3. 重新验证
[WSL]
docker run --rm hello-world   # 成功输出 Hello from Docker!

第 7 部分:常见命令速查

1. 安装与基础设置

命令说明
wsl --install安装 WSL 和默认 Linux 发行版(通常是 Ubuntu)
wsl --list --online查看可安装的发行版列表
wsl --install -d <发行版名称>安装指定的发行版(如 -d Ubuntu-22.04
wsl --set-default-version 2设置新装发行版默认用 WSL 2
wsl --update手动更新 WSL 内核
wsl --version查看 WSL 版本信息

2. 发行版管理

命令说明
wsl -l -vwsl --list --verbose列出所有发行版及状态、WSL 版本
wsl -t <发行版>wsl --terminate <发行版>终止指定发行版
wsl --shutdown终止所有发行版和 WSL2 虚拟机
wsl --set-version <发行版> 2将发行版转换为 WSL 2
wsl --set-default <发行版>设置默认发行版
wsl --unregister <发行版>注销并删除发行版(清空其所有数据)

3. 运行与交互

命令说明
wslwsl ~启动默认发行版并进入 Linux 家目录
wsl -d <发行版>启动指定发行版
wsl -u <用户名>wsl --user <用户名>以指定用户身份运行
wsl --cd <目录>指定启动时的工作目录
wsl --exec <命令>wsl -e <命令>执行单个 Linux 命令并退出(如 wsl --exec ls -la

4. 导入/导出与备份

命令说明
wsl --export <发行版> <文件名.tar>导出发行版为 tar(备份)
wsl --import <新发行版> <安装目录> <文件名.tar>从 tar 导入新发行版
wsl --import-in-place <发行版> <文件名.vhdx>从 vhdx 直接导入(WSL2 专用)

5. 文件互访

位置/命令说明
\\wsl.localhost\<发行版>\\wsl$\<发行版>资源管理器中访问 Linux 文件
explorer.exe .Linux 终端中把当前目录打开到 Windows 资源管理器
/mnt/c/Linux 中访问 Windows C 盘(其他盘同理)

6. 其他命令

命令说明
wsl --status查看 WSL 全局状态(默认版本、内核等)
wsl --help查看所有可用命令
wsl --system(WSL2)启动专用"系统分发"用于调试

第 8 部分:常见问题排查(FAQ)

Q1: wsl --list --online0x80072ee2

微软服务器网络超时。不要用 wsl --install,走排障路线(手动下载 + wsl --import,见第 6 部分)。

Q2: 启动报 HCS_E_SERVICE_NOT_AVAILABLE

"适用于 Linux 的 Windows 子系统"或"虚拟机平台"没开启,或开了没重启。回到 1.2 节确认并重启电脑。仍不行再查 BIOS 虚拟化(Intel VT-x / AMD SVM)是否开启。

Q3: PowerShell 里 wsl 输出乱码

旧版 wsl.exe 输出 UTF-16。用 cmd /c "... > file" + Get-Content file -Encoding Unicode

Q4: [WSL] 的命令提示 “command not found”

你还在 PowerShell 里,没有进入 Ubuntu。先敲 wsl 回车进入再执行。

Q5: sudo 提示不在 sudoers

wsl --import 导入的系统默认用户是 root,root 无需 sudo。若创建了普通用户,用 sudo usermod -aG sudo 用户名

Q6: 多行 heredoc 粘贴进 WSL 报语法错误

PowerShell 传给 wsl bash -lc 的参数转义有问题。手动操作在 WSL 里直接粘贴不会遇到;若确实要一次跑完,写成 .sh 文件放 Windows 侧,wsl bash /mnt/c/.../xxx.sh 执行。

Q7: docker pull 卡住 / 超时

Docker Hub 不通。确认 /etc/docker/daemon.jsonregistry-mirrors 有效(重新测连通性,加速器会失效),systemctl restart docker 后重试。

Q8: 装了普通用户,docker 命令报 permission denied

[WSL]
sudo usermod -aG docker 用户名
newgrp docker   # 或重新登录

Q9: 磁盘空间紧张

ext4.vhdx 自动增长不自动收缩。wsl --shutdown 后可用 diskpart 或 WSL 工具收缩 vhdx;更简单的是心里有数:Linux 与 Windows 共享同一物理盘。

Q10: 运行 GUI 程序又弹"远程桌面 ActiveX"窗

见 9.1。

Q11: 别人的教程说 wsl --install 一行就够,为什么我卡死?

你的网络访问不了微软服务器(0x80072ee2)。晴天路线假设网络正常;你的机器必须走排障路线的离线下载方案。

Q12: 别人的教程说 .appx 改后缀 .tar 就能 import?

多数情况是错的.appx 是 ZIP 容器、.tar 是另一打包格式,直接改后缀无法被 wsl --import 正确解析。正确做法是解压出 rootfs.tar.gz,或直接用 Ubuntu 官方镜像站提供的 .tar.gz(本文用的就是它)。


第 9 部分:附录

9.1 WSLg 弹窗问题(“无法加载远程桌面服务 ActiveX 控件”)

现象:运行 Linux GUI 程序(或 WSLg 初始化)时弹窗:无法加载远程桌面服务 ActiveX 控件。请确保 rdclientax.dll 在路径中。

根因:WSL 2.7.11 的 MSRDC 组件(1.2.7214)依赖系统 API GetTempPath2W,该 API 由 Windows 更新 KB5053594 提供。系统更新不完整(本机 kernel32 为 10.0.19041.5072,缺此 API)→ 加载失败。

解决(已实测,选一)

  1. 降级 WSL 到 2.7.10(推荐,快且安全):MSRDC 1.2.6676 不依赖该 API。wsl --version 显示 MSRDC 1.2.6676 即正常。
  2. 安装 KB5053594(治本但慢):从 Microsoft Update Catalog 下载 x64 版(约 1.6GB,微软 CDN 限速,需多线程下载),装完重启。

验证 GUI 正常

[WSL]
apt-get install -y -qq x11-apps
xclock &    # 弹出小时钟 = WSLg 正常

9.2 多线程分块下载(GitHub/微软 CDN 限速时的提速)

单线程被限到 ~60KB/s 时,把文件切成 N 段并发下载再合并,实测 8 线程可达 423KB/s(约 7 倍)。

# 思路(PowerShell 伪代码):
# 1. HEAD 拿 content-length:$resp = Invoke-WebRequest -Uri $url -Method Head -MaximumRedirection 10
# 2. 按线程数均分 Range,Start-Job 并发 curl --range "start-end" -o part_i.bin
# 3. 全部完成后按序合并所有 part 文件

9.3 本机环境快照

Windows10.0.19045.5608(22H2)
原始 WSL内置 10.0.19041.3636(缺内核)
安装后 WSL2.7.10.0 / 内核 6.18.33.2-2 / WSLg 1.0.73.2 / MSRDC 1.2.6676
Ubuntu24.04 LTS(Noble Numbat)amd64
安装位置E:\WSL\Ubuntu\ext4.vhdx
Docker29.7.2(docker-ce 官方源)+ buildx + compose
镜像加速docker.1panel.live / dockerproxy.net
管理员操作WSL MSI 安装、TermService 启动(各一次 UAC 确认)

参考文档

保姆级教程:WSL2(Windows Subsystem for Linux)的安装和使用 - 知乎

更多推荐