Win10重做系统后重新导入WSL环境
1 前言
最近电脑老是蓝屏,一怒之下重做了系统,由于之前WSL的磁盘数据已经转到D盘,所以只重新格式化C盘重做系统之后D盘的WSL环境是还在的,现在需要做的就是重新从VHDX格式的磁盘重新导入WSL
2 启用WSL
自行搜索解决,这里我启用的是WSL2
3 以Debian和Ubuuntu20.04为例导入
在我的环境中,Debian和Ubuntu20.04的磁盘已经被我导出到D:\.WSL\Debian
和D:\.WSL\Ubuntu20.04
中,一般默认的文件名都是ext4.vhdx
3.1 查看WSL信息
以管理员方式打开power shell,输入
wsl --list -v
新系统没有安装过镜像会提示你还没有安装镜像
3.2 安装WSL镜像
wsl --install Debian
默认安装的位置是C盘,这里安装好后不用管也不用打开新安装的WSL
3.3 导入之前的镜像文件
接着输入:
wsl --import-in-replace Debian "D:\\.WSL\\Debian\\ext4.vhdx"
上面命令中 Debian是新安装的WSL的名字,D:\\.WSL\\Debian\\ext4.vhdx
是之前系统中导出的WSL,这两个名词要一致,不一致的情况我没测试过,可能存在问题,如果是Ubuntu20.04
,把名字和vhdx文件的路径替换成对应的就行。如果你不知道你之前使用的WSL的名字只记得发行版本,可以输入下面命令查看对应的名称。
wsl --list --online
以下是可安装的有效分发的列表。
使用 'wsl.exe --install <Distro>' 安装。
NAME FRIENDLY NAME
Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
Ubuntu-22.04 Ubuntu 22.04 LTS
Ubuntu-24.04 Ubuntu 24.04 LTS
OracleLinux_7_9 Oracle Linux 7.9
OracleLinux_8_7 Oracle Linux 8.7
OracleLinux_9_1 Oracle Linux 9.1
openSUSE-Leap-15.6 openSUSE Leap 15.6
SUSE-Linux-Enterprise-15-SP5 SUSE Linux Enterprise 15 SP5
SUSE-Linux-Enterprise-15-SP6 SUSE Linux Enterprise 15 SP6
openSUSE-Tumbleweed openSUSE Tumbleweed
第一列就是对应发行版本的名称,这里Ubuntu20.04正确的名称是Ubuntu-20.04
到这里已经完成镜像替换的工作,但是启动WSL默认是root用户,所以要再输入一条命令配置成以前使用的用户名
3.4 修改成以前使用的默认用户名
debian config --default-user test
上面命令里test
是测试的用户名,改成你以前使用的用户名就可以了。
如果提示debian不是内部或外部命令,也不是可运行的程序或批处理文件,可以在文件管理器中输入C:\Users\%UserName%\AppData\Local\Microsoft\WindowsApps
回车后打开查看有没有debian.exe
或者ubuntu2004.exe
。事实上,3.2输入的wsl --install Debian
命令就是解决这个问题。
现在你再启动WSL就可以看到你熟悉的WSL环境又回来了 😃
理论上win11同样可以按以上操作导入以前的WSL环境。