命令行关闭正在运行的虚拟机引擎,查看子系统状态,确保要迁移的子系统STATE处于stopped状态。
// 关闭虚拟机子系统
wsl --shutdown
// 查看已安装系统状态
wsl -l -v
move-wsl是个方便子系统迁移的小工具
下载地址:CSDN、Github
// 显示当前策略
get-ExecutionPolicy
// 修改策略为
set-ExecutionPolicy RemoteSigned
两种策略解释
RemoteSigned | Restricted |
---|---|
Windows Server 计算机的默认执行策略,脚本可以运行。需要受信任的发布者对从 Internet 下载的脚本和配置文件(包括电子邮件和即时消息程序)的数字签名。不需要在本地计算机上编写且未从 Internet 下载的脚本上使用数字签名。如果未阻止脚本(例如使用 cmdlet),则运行从 Internet 下载且未签名的 Unblock-File 脚本。运行来自 Internet 以外的源的未签名脚本以及可能是恶意的已签名脚本的风险。 | Windows 客户端计算机的默认执行策略。允许单个命令,但不允许脚本。阻止运行所有脚本文件,包括格式化和配置文件 () .ps1xml 、模块脚本文件 (.psm1) ,以及 PowerShell 配置文件 () .ps1 |
等迁移完了记得改回来
// 运行move-wsl脚本文件
.\move-wsl.psl
// 选择要移动的虚拟机编号,我的是2
2
// 输入虚拟机磁盘的新地址
G:\wsl_Ubuntu
// 按y确认操作
Y
稍等片刻就可以迁移成功了,而且C盘的空间会自动释放
ubuntu2004.exe config --default-user username
ubuntu2004.exe是虚拟机子系统对应的可执行文件名,wsl显示的是虚拟机的名字Ubuntu-20.04。如果是Ubuntu,那么这里就是ubuntu.exe;虚拟机的名字是ubuntu-18.04,那这里就是ubuntu1804.exe。
迁移以后的文件以.vhdx文件存储,这个文件大小会随着使用增长,但是无法自动回收。需要手动回收
// 打开window Diskpart
diskpart
//选择虚拟磁盘文件,路径和文件名最好复制
select vdisk file="G:\wsl_Ubuntu\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit