将 WSL 发行版移动到其他驱动器

发布: (2026年2月19日 GMT+8 07:13)
9 分钟阅读
原文: Dev.to

Source: Dev.to – Moving WSL 2 Distributions to Another Drive

Source:

我的发行版存放在哪里?

在移动任何内容之前,先确定你的发行版当前所在的位置。WSL 将每个发行版的虚拟硬盘(VHDX)存储在 Windows 注册表中注册的基路径下:

HKCU\Software\Microsoft\Windows\CurrentVersion\Lxss\{GUID}\BasePath

常见默认位置

WSL 版本默认路径
较新的 WSL%LOCALAPPDATA%\wsl\{GUID}\
通过 Microsoft Store 安装的发行版%LOCALAPPDATA%\Packages\<PackageName>\LocalState\

你可以在 PowerShell 中检查每个 VHDX 的大小:

Get-ChildItem -Path "$env:LOCALAPPDATA\wsl" -Recurse -Filter "ext4.vhdx" |
  Select-Object FullName,
                @{N='SizeGB';E={[math]::Round($_.Length/1GB, 2)}}

或者列出所有发行版及其 WSL 版本:

wsl --list --verbose

方法 1 – wsl --manage --move(推荐)

最简的移动发行版方式是使用内置的 move 命令。它一次性迁移 VHDX 文件并更新注册表。

步骤 1 – 停止发行版

wsl --terminate Ubuntu

验证它已停止:

wsl --list --verbose

你应该在发行版名称旁看到 Stopped

步骤 2 – 移动它

wsl --manage Ubuntu --move "D:\WSL\Ubuntu"

如果需要,WSL 会创建目标文件夹并移动 VHDX 文件。大型 VHDX 文件(例如 50 GB)可能会根据磁盘速度耗费数分钟。

步骤 3 – 验证

wsl -d Ubuntu
whoami
ls ~

如果这些命令正常运行,你的发行版现在位于 D:,且 WSL 已知其位置。所有文件、软件包和配置均已保留。

方法 2 – 导出与导入

--manage --move 不可用,或需要重命名发行版时使用。此方法适用于所有 WSL 2 安装。

步骤 1 – 导出发行版

您有三种格式可选:

格式描述命令
TAR(默认,通用)简单归档,随处可用powershell<br>wsl --export Ubuntu D:\Backups\ubuntu-backup.tar<br>
VHD(更快,保留磁盘结构)直接复制 VHDX;对大型发行版速度更快powershell<br>wsl --export Ubuntu D:\Backups\ubuntu-backup.vhdx --format vhd<br>
Compressed TAR(文件更小)与 TAR 相同,但使用 gzip 压缩powershell<br>wsl --export Ubuntu D:\Backups\ubuntu-backup.tar.gz --format tar.gz<br>

步骤 2 – 注销旧发行版

wsl --unregister Ubuntu

警告: 此操作会将发行版从 WSL 注册表中移除并删除原始 VHDX。请确保导出已成功完成(检查文件大小),再执行此命令。

步骤 3 – 导入到新位置

从 TAR 导出文件导入

wsl --import Ubuntu "D:\WSL\Ubuntu" D:\Backups\ubuntu-backup.tar

从 VHD 导出文件导入

wsl --import Ubuntu "D:\WSL\Ubuntu" D:\Backups\ubuntu-backup.vhdx --vhd

通用语法为:

wsl --import <DistroName> <InstallLocation> <FileName> [--vhd] [--version <1|2>]

步骤 4 – 设置默认用户(仅在 TAR 导入时需要)

从 TAR 归档导入时,WSL 默认使用 root。在新发行版内部创建或编辑 /etc/wsl.conf,指定您的常用用户。

# 以 root 身份打开导入的发行版的 shell
wsl -d Ubuntu -u root

# 追加配置(将 `your-username` 替换为实际用户名)
cat <<EOF >> /etc/wsl.conf
[user]
default=your-username
EOF

更改完成后,退出 shell 并重新启动发行版;此时将以指定用户登录。

注意: 此方法绕过了 --export/--import 所执行的安全检查。请确保 VHDX 未损坏,且目标文件夹仅包含 VHDX(没有其他文件)。按照 方法 1,步骤 3 中的说明验证导入的发行版是否正常工作。

快速参考速查表

任务命令
列出已安装的发行版(含版本)wsl --list --verbose
停止运行中的发行版wsl --terminate <distro>
移动发行版(WSL ≥ 0.58)wsl --manage --move <distro> <new‑path>
导出发行版为 .tar 存档wsl --export <distro> <path>\<distro>.tar
导出发行版为 .vhdx 文件wsl --export <distro> <path>\<distro>.vhdx --format vhd
注销(删除)发行版wsl --unregister <distro>
.tar 存档导入为新发行版wsl --import <new‑distro> <install‑path> <path>\<distro>.tar
.vhdx 文件导入为新发行版wsl --import <new‑distro> <install‑path> <path>\<distro>.vhdx --vhd
为发行版设置默认用户编辑发行版的 /etc/wsl.conf 并添加:
ini<br>[user]<br>default=<username><br>
删除备份文件(PowerShell)Remove-Item <path>\<file>

将 VHDX 文件移动到新位置

您可以直接注册已移动的 VHDX,而无需再次复制:

wsl --import-in-place Ubuntu "D:\WSL\Ubuntu\ext4.vhdx"
  • 这会告诉 WSL 使用当前所在位置的 VHDX。
  • 文件 必须是 ext4 格式(所有 WSL 2 VHDX 文件都是如此)。
  • 如果您已经自行移动了文件,这是最快的方案。

选择合适的方法

因素--manage --moveExport/Import (TAR)Export/Import (VHD)
速度快(直接移动)慢(tar + 解压)中等(文件复制)
所需磁盘空间仅目标磁盘2 倍(导出 + 导入)2 倍(导出 + 导入)
保留用户设置否(需手动修复)
重命名发行版
所需 WSL 版本最新 WSL任意 WSL 2任意 WSL 2
复杂度中等中等

建议: 对大多数用户而言,--manage --move 是正确的选择。当需要重命名发行版或使用较旧的 WSL 版本时,请使用导出/导入。

在不同驱动器上安装新发行版

您可以通过提前指定安装位置来避免以后移动发行版:

wsl --install Ubuntu --location "D:\WSL\Ubuntu"

VHDX 文件将从一开始就创建在 D:

简单方法:WSL UI

WSL UI 提供了一种点选方式来移动发行版。

移动发行版对话框

  • 显示当前位置和磁盘大小。
  • 允许浏览到新位置。
  • 自动处理停止发行版、移动文件以及更新注册表。
  • 对于大规模移动会显示进度。

无需命令行,也不需要手动编辑注册表。它在内部使用 WSL 的原生 move 命令,保留文件、设置、默认用户和配置。

故障排除

症状原因 / 解决办法
“不支持此操作” 在使用 --manage --move您可能使用的是较旧的 WSL 版本。运行 wsl --update,或改用导出/导入。
导入默认使用 root 用户在使用 TAR 导入时这是预期行为。编辑 /etc/wsl.conf(参见上文“设置默认用户”)。
“访问被拒绝” 在移动过程中确保没有 WSL 进程正在使用该发行版。运行 wsl --shutdown 后重试。
导入后未显示发行版确认导入路径存在且您拥有写入权限。以 管理员 身份运行 PowerShell。
导出时空间不足直接导出到目标磁盘(例如,从 C: 移动到 D: 时导出到 D:\Backups\)。

Summary

任务命令
列出发行版wsl --list --verbose
停止发行版wsl --terminate <distro>
移动(简单)wsl --manage --move <distro> <new‑path>
导出(TAR)wsl --export <distro> backup.tar
导出(VHD)wsl --export <distro> backup.vhdx --format vhd
注销wsl --unregister <distro>
导入(TAR)wsl --import <distro> "D:\path" backup.tar
导入(VHD)wsl --import <distro> "D:\path" backup.vhdx --vhd
原位导入wsl --import-in-place "D:\path\ext4.vhdx"
安装到 D:wsl --install Ubuntu --location "D:\WSL\Ubuntu"
修复默认用户Edit /etc/wsl.conf → add a [user] section with default=username

移动发行版是一次性(或偶尔)任务,但它可以释放拥挤的 C: 盘上的大量空间。

0 浏览
Back to Blog

相关文章

阅读更多 »

重命名 WSL 发行版

重命名 WSL 发行版 – 完整指南 您从 Microsoft Store 安装了 Ubuntu,WSL 将其命名为 Ubuntu‑24.04。您又安装了另一个,得到 Ub…

克隆 WSL 发行版

为什么克隆 WSL 发行版?你已经花了数小时设置一个 WSL 发行版——安装 packages、配置你的 shell、调优开发环境……

趁热打铁

让遗留系统转型变得简单、快速且安全 主机现代化项目常因开发成本不断攀升、收益不断递减而失败……