模型部署实战(一):Windows 从 0 配置 WSL2 + Ubuntu 24.04 + Docker
模型部署实战(一):Windows 从 0 配置 WSL2 + Ubuntu 24.04 + Docker
本文定位:本文定位:Windows AI 开发环境「通用教程 + 排障手册」
- 环境正常(网络通、系统更新完整)→ 看第 0-5 部分(装 → 用 → 进阶 → 卸载)
- 环境特殊(微软服务器不通、内核缺失、系统缺补丁)→ 看第 6 部分排障路线
- 记录时间:2026-08-08(排障路线为本机实测,所有命令均已验证)
目录
- 第 0 部分:本文怎么用(读者导航)
- 第 1 部分:准备工作
- 第 2 部分:安装(晴天路线 · 3 分钟快速版)
- 第 3 部分:简单使用
- 第 4 部分:进阶安装
- 第 5 部分:卸载 WSL
- 第 6 部分:完整排障路线(本机实测)
- 第 7 部分:常见命令速查
- 第 8 部分:常见问题排查(FAQ)
- 第 9 部分:附录
第 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 功能
- 在底部搜索框搜索"启用或关闭 Windows 功能"并打开

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

- 点击确定,重启电脑
如果勾选后依然报错,也可以用命令行强制开启(管理员 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 终端说明:用哪个终端跑哪些命令
| 终端 | 怎么打开 | 本文标记 | 用来干嘛 |
|---|---|---|---|
| PowerShell | 按 Win 键 → 输入 powershell → 回车 | [PowerShell] | Windows 侧命令(下载、装 MSI、import、查状态) |
| CMD | 按 Win+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
看到类似这样的输出(有 Ubuntu、VERSION 为 2、带 * 号)即安装成功:

- 如果
wsl -l -v报HCS_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/...。

退出 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” 的版本 → 获取/安装 → 按提示设用户名密码。


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

查看已安装的发行版:
[PowerShell / CMD]
wsl -l -v
带星号 * 的是默认发行版(直接 wsl 进入的就是它)。

进入/切换/设默认:
[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

输出里的 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
卸载文章很少讲,但卸载不干净会导致以后再装出问题。按以下顺序:
-
记录虚拟磁盘位置(卸载后它不会自动删,占空间最大):
[PowerShell] Get-ChildItem "HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss" -Recurse -
关闭所有 WSL:
[PowerShell] wsl --shutdown -
注销发行版(逐个删除,不要在"设置→应用"里删,否则 WSL 注册表不干净,再装会出问题):
[PowerShell] wsl --list # 查看已安装的发行版名称 wsl --unregister <发行版名称> -
卸载 WSL 核心组件:
[PowerShell] wsl --uninstall -
删除虚拟磁盘:打开第 1 步记录的位置,删除 vhdx 文件(可能已被删,不管它)。
-
最后重启电脑。
第 6 部分:完整排障路线(本机实测)
本机实际踩的坑(也是本文档存在的意义):
- 内置 wsl.exe 为旧版(10.0.19041.x),缺 WSL2 内核
- 微软分发通道(aka.ms、Microsoft Store)网络超时(错误码
0x80072ee2),wsl --install卡死- 但 GitHub 与 Ubuntu 官方镜像可达 → 全部改为离线/手动下载
- 新版 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 -v 或 wsl --list --verbose | 列出所有发行版及状态、WSL 版本 |
wsl -t <发行版> 或 wsl --terminate <发行版> | 终止指定发行版 |
wsl --shutdown | 终止所有发行版和 WSL2 虚拟机 |
wsl --set-version <发行版> 2 | 将发行版转换为 WSL 2 |
wsl --set-default <发行版> | 设置默认发行版 |
wsl --unregister <发行版> | 注销并删除发行版(清空其所有数据) |
3. 运行与交互
| 命令 | 说明 |
|---|---|
wsl 或 wsl ~ | 启动默认发行版并进入 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 --online 报 0x80072ee2
微软服务器网络超时。不要用 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.json 里 registry-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)→ 加载失败。
解决(已实测,选一):
- 降级 WSL 到 2.7.10(推荐,快且安全):MSRDC 1.2.6676 不依赖该 API。
wsl --version显示 MSRDC 1.2.6676 即正常。 - 安装 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 本机环境快照
| 项 | 值 |
|---|---|
| Windows | 10.0.19045.5608(22H2) |
| 原始 WSL | 内置 10.0.19041.3636(缺内核) |
| 安装后 WSL | 2.7.10.0 / 内核 6.18.33.2-2 / WSLg 1.0.73.2 / MSRDC 1.2.6676 |
| Ubuntu | 24.04 LTS(Noble Numbat)amd64 |
| 安装位置 | E:\WSL\Ubuntu\ext4.vhdx |
| Docker | 29.7.2(docker-ce 官方源)+ buildx + compose |
| 镜像加速 | docker.1panel.live / dockerproxy.net |
| 管理员操作 | WSL MSI 安装、TermService 启动(各一次 UAC 确认) |
参考文档
更多推荐
所有评论(0)