给你的WSL2瘦瘦身

WSL2 home目录迁移

参考:https://learn.microsoft.com/zh-cn/windows/wsl/basic-commands
参考:https://learn.microsoft.com/zh-cn/windows/wsl/wsl2-mount-disk

有了WSL2加持的windows,说其是最好的Linux桌面发行版一点也不过分。但是,WSL2虽好,奈何C盘不够大。怎么办呢?作为一名优秀的工程师(ban zhuan gong),当然是有问题解决问题了。

动手第一步第一步,永远都是备份啦!!!

1. 备份当前WSL

WSL2使用虚拟硬盘文件 (VHD)文件来存储所有数据,所以备份很简单,只需要找到这个文件,备份它就可以了。

每个 WSL 2 发行版都通过名为 ext4.vhdx 的虚拟硬盘文件进行存储。 默认情况下,WSL 2 发行版的 VHD 存储在以下路径中:C:\Users\[user]\AppData\Local\Packages\[distro]\LocalState\[distroPackageName],请谨慎访问这些系统文件,这是一个高级用户工作流。 确保在与该磁盘交互之前运行 wsl --shutdown 以确保该磁盘未被使用。

Tips:如果找不到怎么办,别忘了好用的搜索工具:Everything

wsl -l -v
# wsl --shutdown -d <Distribution Name>
wsl --shutdown -d Ubuntu-18.04
# cp 原ext4.vhdx文件 新ext4.vhdx文件
cp C:\Users\landa\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx H:\bak\ext4.vhdx

2. 不太推荐的懒方法

其实玩过虚拟机的都知道,直接导入刚才拷贝出来的ext4.vhdx应该也是可以的,因为这个文件现在不在C盘,就不会占用C盘的空间了,但是呢,这样导入的用起来还是又诸多不方便,比如退出后整个WSL2就退出了,下次又得重新来过。不过,这里还是简单的写下方法:

  • 切记,不要再刚才的备份文件上直接干!!!

2.1 从vhdx文件导入WSL

mkdir H:\wsl\Ubuntu18.04
cp H:\bak\ext4.vhdx H:\wsl\Ubuntu18.04
wsl --update
# wsl --import-in-place <Distribution Name> <FileName>
wsl --import-in-place Ubuntu .\ext4.vhdx

参考:https://learn.microsoft.com/zh-cn/windows/wsl/basic-commands#import-a-distribution-in-place

2.2 启动测试

# wsl -d <Distribution Name>
wsl -d Ubuntu

你会发现默认是用root用户启动的,所以我们可能还想改回原来的默认用户

2.3 改默认用户

参考:https://learn.microsoft.com/zh-cn/windows/wsl/use-custom-distro#add-wsl-specific-components-like-a-default-user

# myUsername=caloewen
# adduser -G wheel $myUsername
# echo -e "[user]\ndefault=$myUsername" >> /etc/wsl.conf
# passwd $myUsername

echo -e "[user]\ndefault=limu" >> /etc/wsl.conf
wsl --terminate Ubuntu
wsl -d Ubuntu

3. 优雅的迁移方法

我们采用给原WSL瘦身,然后mount非C盘的vhdx文件来作为WSL2的home目录,这样既能保留原有方便的操作,还能解决磁盘不够用的问题。

3.1 原WSL瘦身

3.1.1 删除原WSL2的home目录下的大文件
# rm -rf /home/limu/*
3.1.2 WSL 关机
wsl -l -v
wsl --shutdown -d Ubuntu-18.04
3.1.3. 压缩

参考:https://learn.microsoft.com/zh-cn/windows/wsl/disk-space#how-to-expand-the-size-of-your-wsl-2-virtual-hard-disk

在 PowerShell 中执行

diskpart

在diskpart程序中,选择要压缩的ext4.vhdx文件

# 选择虚拟磁盘文件
select vdisk file="C:\Users\landa\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx"
# 压缩文件
compact vdisk
# 压缩完毕后卸载磁盘
detach v

3.2 挂载新的vhdx文件来作为WSL2的home目录

wsl --mount --vhd H:\wsl\Ubuntu18.04\ext4.vhdx

powershell中执行上面的命令后,就可以将文件挂载到WSL的/mnt/wsl/路径下,但是每次开机都手动执行太麻烦,所以建议加入开机自动挂载。

3.2.1加入开机自动挂载

win+E 打开资源管理器,在地址栏输入 shell:startup
创建一个bat文件,将上面的命令写入。

3.2.2创建软连接,替换原home目录
wsl -d Ubuntu
cd /home
sudo mv limu limu_bak
sudo ln -s /mnt/wsl/HwslUbuntu1804ext4vhdx/home/limu/ limu

至此,替换完成,可以愉快的继续coding了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值