WSL2 迁移教程:把Ubuntu+WSL2从C盘挪到别的盘

牢蒯在装wsl2时,发现它是默认装在c盘上的,看着c盘空间一点点缩小,我便发出了尖锐爆鸣声。想想后续开发项目的时候,还要装各种容器,那岂不是我C盘的末日(悲)?在拷打了一下豆奶,并且跟着教程做了一遍之后,我总结出了以下的方法,可将wsl整个打包到其他盘,大家跟着学起来吧(喜)。


注:这里的用户名以loner为例,新的空间以D盘为例,大佬们在实操时记得改成自己设置的。

迁移前准备

  1. 先在你要放的盘(D盘或者E盘都行)新建两个文件夹
    • D:\WSL\backup:用来临时放导出的备份包
    • D:\WSL\Ubuntu:最后WSL系统本体就放这里
  2. 打开PowerShell,一定要右键选择以管理员身份运行

第一步:确认你的WSL名字

复制代码
wsl -l -v

绝大多数人这里名字就是Ubuntu,后面所有命令都要和这个名字对上。如果你这里显示别的名字,后面命令里的Ubuntu全部替换成你自己的。

第二步:导出整个系统备份

复制代码
wsl --export Ubuntu D:\WSL\backup\ubuntu.tar

这里会打包你现在整个Ubuntu环境,里面装的g++、代码、配置全部打包进去。 ⚠️ 提醒:这个tar包体积不小,和你WSL里面占用空间差不多,耐心等跑完,中途别关窗口。

第三步:注销C盘原来的WSL实例

【重要前提】必须等上一步导出完全成功,再执行这条! 执行完这条,C盘里面原来的WSL数据就删掉了,没有备份直接寄。

复制代码
wsl --unregister Ubuntu

第四步:把备份导入到目标盘,指定WSL2

复制代码
wsl --import Ubuntu D:\WSL\Ubuntu D:\WSL\backup\ubuntu.tar --version 2

D:\WSL\Ubuntu这个路径下,之后就会生成ext4.vhdx,这就是WSL的虚拟磁盘文件。导入完成之后,WSL就不再占用C盘空间了。

第五步:设置默认登录用户(很多人在这里踩坑)

直接导入进来的WSL,默认进去是root账号,不是你之前的loner用户。网上很多旧教程写ubuntu config --default-user,这个方法在导入版本里是用不了的,会报错。正确做法:

  1. 先进WSL

    wsl -d Ubuntu

  2. 在Linux终端(现在是root)执行下面两行,把默认用户改成loner

    echo "[user]" > /etc/wsl.conf
    echo "default=loner" >> /etc/wsl.conf

把loner换成你自己的用户名

  1. 退出,关闭WSL生效
复制代码
exit

wsl --shutdown

第六步:核对存放位置,确认迁移到位

PowerShell运行这条,看一下vhdx文件路径:

复制代码
(Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq 'Ubuntu' }).GetValue("BasePath") + "\ext4.vhdx"

输出的路径开头是我们刚才设置的D:\WSL\Ubuntu,就说明迁移成功了。

第七步:测试启动

复制代码
wsl -d Ubuntu

正常进入系统,你之前写的代码、安装的软件都还在,就搞定了。

收尾

全部测试没问题之后,D:\WSL\backup\ubuntu.tar这个备份包就没用了,可以删掉,腾出磁盘空间。


相关推荐
垆边人似月.1 小时前
RDMA 文件传输踩坑(二):为什么 `sleep()` 不能保证接收端准备好了?
linux·服务器·网络·rdma
zxanz11 小时前
证书运维自动化,守住业务 HTTPS 底线
运维·https·自动化
vipxieliang1 小时前
Service Mesh 可观测性:分布式追踪、指标与日志的统一方案
运维
DYWorker0012 小时前
第 1-10 课: 横切设施:锁、RCU、安全与观测怎么选?
linux
臻一2 小时前
rk3568---ftp无法连接
linux·ftp·3568
深信达沙箱2 小时前
轻量化沙箱防护|政企私有化IM防泄密升级,安全不增重
网络·源代码防泄密·源代码加密·磁盘加密·全盘加密·全磁盘加密
ESDWAN2 小时前
SD-WAN 是什么?工作原理、适用场景与选型要点
开发语言·网络·数据库·架构·php
1-1=02 小时前
.NET Core 配置与选项
.net·.netcore·1024程序员节
云飞云共享云桌面2 小时前
智能装备工厂研发部门多设计师共享一台SolidWorks服务器做设备装配建模
运维·服务器·网络·人工智能·3d·自动化·制造