wsl2备份/迁移(ubuntu…)虚拟磁盘镜像
Author: once day Date: 2022年11月13日
1.引言
默认的wsl2会把Linux子系统虚拟磁盘文件放在C盘下 ,如果在wsl2里面安装了太多的程序,可能空间占用会很大。
有一种简单的方法是使用LxRunOffline
工具迁移。
但是这里不介绍,直接用wsl命令来实现。
2.过程
2.1 查看全部子系统
需要以管理员权限运行powershell。
PS C:\Users\cg> wsl --list --all --v
* Ubuntu-20.04 Running 2
docker-desktop Stopped 2
docker-desktop-data Stopped 2
如果子系统正在运行,需要关闭它。
2.2 关闭子系统
如下两个命令皆可:
PS C:\Users\cg> wsl --terminate Ubuntu-20.04
PS C:\Users\cg> wsl --shutdown
然后再确认一遍是否关闭准备迁移的子系统。
PS C:\Users\cg> wsl --list --all --v
NAME STATE VERSION
* docker-desktop Stopped 2
Ubuntu-20.04 Stopped 2
docker-desktop-data Stopped 2
2.3 导出(备份)子系统
这里准备备份的子系统是ubuntu-20.04
,使用下面命令即可。
备份的目的路径是E:\Ubuntu-20.04.tar
,路径和名字取自己希望值即可。
PS C:\Users\cg> wsl --export Ubuntu-20.04 E:\Ubuntu-20.04.tar
这个过程需要等待一段时间,如果原有的子系统内容很多,那么可能要等待10+分钟。
2.4 注销原有的ubuntu-20.04
子系统
PS C:\Users\cg> wsl --unregister Ubuntu-20.04
PS C:\Users\cg> wsl --list --all --v
NAME STATE VERSION
docker-desktop Stopped 2
docker-desktop-data Stopped 2
注销完之后,再看列表中的子系统,已经没有ubuntu-20.04
了。
2.5 导入备份的ubuntu-20.04
子系统
上面的导出过程本质上也是给ubuntu-20.04
做了一个备份,里面存储了全部内容。
因此这里实际上在导入一个备份。
首先确定目的文件夹,如果目录不存在,需要手动创建。这里目的目录为E:\ubuntu\
。然后该子系统的虚拟磁盘文件就会放在此目录下。
PS C:\Users\cg> wsl --import Ubuntu-20.04 E:\ubuntu\ E:\Ubuntu-20.04.tar --version 2
PS C:\Users\cg> wsl --list --all --v
NAME STATE VERSION
* docker-desktop Stopped 2
Ubuntu-20.04 Stopped 2
docker-desktop-data Stopped 2
导入过程比较快,然后便可以看到刚刚导入的子系统了。
如果版本号不对,可以使用下面命令重设版本号。
PS C:\Users\cg> wsl --set-version Ubuntu-20.04 2
正在进行转换,这可能需要几分钟时间...
有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2
该分发已是请求的版本。
2.6 设置默认用户名
如果不设置默认用户名,那么登入wsl2的ubuntu-22.04
时,默认以root
用户登入。
一般之间都是默认都不是由root
用户登入,所以可以使用下面命令设置默认登入用户。
ubuntu.exe config --default-user <username>
对于ubuntu-22.04
,上面命令改写为:
ubuntu2004.exe config --default-user "onceday"
其中“onceday"
也要用你自己的username
代替。
2.7 docker connect failed问题
迁移子系统后,要重启docker desktop
应用,此时可能会出现下面问题。
onceday@ubuntu:~$ docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
docker确实启动了,但是此时无法连接上docker-server。
这个时候需要在docker-desktop->setting->Resources->WSL INTEGRATION-里面Enable integration with additional distros:
中使能Ubuntu-20.04
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)