WSL发行版迁移到其他盘符本文用于将 WSL 2 的 Linux 发行版例如 Ubuntu、Debian从 C 盘迁移到其他本地 NTFS 盘例如D:\wsls。WSL 程序本体仍可能安装在 C 盘可迁移的是发行版数据盘ext4.vhdx通常也是占用空间最大的部分。前提目标盘应为NTFS本地磁盘。目标盘应有足够空间容纳发行版数据。关闭正在运行的终端、Docker Desktop 等可能使用 WSL 的程序。以下命令均在Windows PowerShell中执行不是在 Ubuntu 终端中执行。检查目标盘文件系统Get-Volume-DriveLetter D|Select-ObjectDriveLetter,FileSystem,SizeRemaining输出中的FileSystem应为NTFS。1. 查看发行版名称wsl-l-v示例NAME STATE VERSION * Ubuntu Stopped 2以下示例以Ubuntu为发行版名称、D:\wsls\Ubuntu为目标位置。其他发行版请替换相应名称和路径。2. 推荐方式使用 WSL 内置移动命令较新的 WSL 版本可尝试wsl--shutdownNew-Item-ItemType Directory-Force D:\wsls\Ubuntu wsl--manage Ubuntu--moveD:\wsls\Ubuntu wsl-l-v若此命令可用且成功直接跳到“验证”章节。3. 兼容方式导出 VHD 后原位导入当内置移动命令不可用或需要精确控制 VHD 存放位置时使用以下步骤。wsl--shutdownNew-Item-ItemType Directory-Force D:\wsls\Ubuntu wsl--export Ubuntu D:\wsls\Ubuntu\ext4.vhdx--vhdif(!(Test-PathD:\wsls\Ubuntu\ext4.vhdx)-or(Get-ItemD:\wsls\Ubuntu\ext4.vhdx).Length-eq0){throw导出失败原发行版尚未删除。}wsl--unregister Ubuntu wsl--import-in-place Ubuntu D:\wsls\Ubuntu\ext4.vhdx wsl--set-defaultUbuntu重要安全提示wsl --unregister Ubuntu会删除旧位置的发行版注册和数据。因此只有在导出的D:\wsls\Ubuntu\ext4.vhdx已存在且大小大于 0 后才能执行该命令。4. 处理“无法附加磁盘 / 拒绝访问”如果启动时出现无法将磁盘 ...\\ext4.vhdx 附加到 WSL2: 拒绝访问。 错误代码: Wsl/Service/CreateInstance/MountDisk/HCS/E_ACCESSDENIED通常是目标目录缺少 Hyper-V/WSL 虚拟机账户访问 VHD 的 NTFS 权限。以管理员身份打开 PowerShell运行wsl--shutdown icaclsD:\wsls\Ubuntu/grant*S-1-5-83-0:(OI)(CI)(F)/T icaclsD:\wsls\Ubuntu\ext4.vhdx/grant*S-1-5-83-0:(F)其中S-1-5-83-0对应NT VIRTUAL MACHINE\Virtual Machines是 WSL 2 挂载虚拟磁盘时所需的主体。然后启动wsl-d Ubuntu5. 验证迁移结果wsl-l-v wsl-d Ubuntu并确认 VHD 位于目标位置Get-ItemD:\wsls\Ubuntu\ext4.vhdx|Select-ObjectFullName,Length,LastWriteTime多个发行版每个发行版使用独立目录依次迁移例如D:\wsls\Ubuntu\ext4.vhdx D:\wsls\Debian\ext4.vhdx D:\wsls\kali-linux\ext4.vhdx不要将多个发行版导入到同一个目录或共用同一个ext4.vhdx文件。参考Microsoft LearnWSL 常用命令Microsoft LearnWSL FAQ迁移发行版