安了子系统还没用几天,C盘提示我没空间了。。。剩余0kb的那种。。。Ubuntu安装的时候默认按C盘了,所以还是移走腾点地方出来。

一、子系统迁移

1. 关闭linux子系统

命令行关闭正在运行的虚拟机引擎,查看子系统状态,确保要迁移的子系统STATE处于stopped状态。

// 关闭虚拟机子系统
wsl --shutdown
// 查看已安装系统状态
wsl -l -v

Linux笔记——Ubuntu子系统从系统盘迁移到非系统盘-LMLPHP

2. 使用move-wsl进行迁移

move-wsl是个方便子系统迁移的小工具
下载地址:CSDNGithub

  1. 修改系统策略
    直接使用move-wsl有可能会遇到系统报错:
    无法加载文件 G:\move-wsl-master\move-wsl.ps1,因为在此系统上禁止运行脚本。
    这是为了安全起见不让运行.ps1文件,需要修改系统策略
    (1)打开终端管理员
    Linux笔记——Ubuntu子系统从系统盘迁移到非系统盘-LMLPHP
    (2)输入下面代码修改策略
// 显示当前策略
get-ExecutionPolicy
// 修改策略为
set-ExecutionPolicy RemoteSigned

两种策略解释

等迁移完了记得改回来

  1. 开始迁移
    用管理员权限打开PowerShell,进入move-wsl所在的文件夹,输入命令
// 运行move-wsl脚本文件
.\move-wsl.psl
// 选择要移动的虚拟机编号,我的是2
2
// 输入虚拟机磁盘的新地址
G:\wsl_Ubuntu
// 按y确认操作
Y

稍等片刻就可以迁移成功了,而且C盘的空间会自动释放

Linux笔记——Ubuntu子系统从系统盘迁移到非系统盘-LMLPHP

  1. 修改默认用户
    迁移完成后,会默认变成root用户登录。打开命令行/PowerShell修改默认用户
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

Linux笔记——Ubuntu子系统从系统盘迁移到非系统盘-LMLPHP

11-08 12:43