1.电脑设置
1.1 虚拟化设置
Windows11环境下安装WSL2非常简单,首先确保虚拟化选项开启。这个如果没有开启的话,需要进电脑的BIOS设置里开启,因为intel和AMD平台的不一样,具体可以搜索下。一般都是默认开启的

1.2 系统设置
控制面板->程序->启用或关闭 windows 功能,开启 Windows 虚拟化和 Linux 子系统(WSL2)以及Hyper-V
勾选完成后,Windows11 会自己下载些东西,并提示你重启。等电脑彻底重启完以后,进行后续操作

打开Power Shell 以管理员命令输入下方代码:
bcdedit /set hypervisorlaunchtype auto
可能因我的系统版本是22H2,安装后wsl版本是早期wsl2版本,需要在Powershell中执行wsl更新命令(win10(11) 2022.3 之后,直接跳过这一步。)
wsl --updat

2. 系统安装
安装方式选择一个就行了!
2.1 手动本地安装(支持其他盘安装,推荐!)
在微软这个wiki中下载发行版 ,下载你所需要的发行版文件,下载下来是一个zip压缩包,解压后是这样

我们选择对应平台的包(Ubuntu_2004.2021.825.0_x64.appx),将后缀名.appx
改为.zip
再进行解压,之后点击exe文件开始安装(这里是ubuntu.exe)

随后该目录下会出现一个ext4.vhdx
,这个是WSL2的特性之一,不再以WSL1直接访问windows文件系统的方式存储数据,而是改成单独新建一个磁盘镜像文件存储数据
2.2 命令行安装法(默认C盘安装)
命令行和微软商店哪个安装方式都可以,选一即可。
使用PowerShell,以管理员权限启动,输入下方命令执行:
这个就是下载的是Ubuntu的系统镜像
wsl --install -d Ubuntu
2.3 微软商店安装法(默认C盘安装)
打开 Microsoft Store,并选择你偏好的 Linux 分发版安装
3.导出虚拟机文件(用于所有安装方法迁移)
安装后,想改为其他盘符存放,可根据接下来导出导入方式迁移!
3.1 查看虚拟机
安装好并初始化设置了用户后,在PowerShell中查询有哪些虚拟机
wsl -l --all -v

3.2 关闭WSL虚拟机
关闭WSL虚拟机(一定要关闭虚拟机之后再导出! 否则数据可能丢失!)
wsl -t <你选择的虚拟机名称>

3.3 导出(备份)虚拟机文件
导出(备份)虚拟机文件(一定要关闭虚拟机之后再导出! 否则数据可能丢失!)
wsl --export <你选择的虚拟机名称> <导出文件的路径>
#例如:
wsl --export Ubuntu-20.04 E:\wsl_data\Ubuntu-20.04.tar


然后新建一个文件夹用于一会导入虚拟机存放数据使用
3.4 卸载原虚拟机
现在我们可以把原来C盘的虚拟机卸载了(WSL2卸载同时会删除原虚拟机数据!)
注意:高危操作! 请确保已完整导出虚拟机文件!
wsl --unregister <你选择的虚拟机名称>
#例如:
wsl --unregister Ubuntu-20.04


4.导入虚拟机
4.1导入虚拟机
wsl --import <虚拟机名称> <新数据镜像文件的存放文件夹路径> <导出的备份文件路径>
#例如:
wsl --import Ubuntu-20.04 E:\wsl_data\Ubuntu_20.04 E:\wsl_data\Ubuntu_20.04\Ubuntu-20.04.tar

4.2查看虚拟机
wsl -l --all -v

如果是多虚拟机子系统,可能会发现默认虚拟机变成了其他虚拟机
4.3 修改默认子系统虚拟机
wslconfig /setdefault <选定的虚拟机名称>
#例如
wslconfig /setdefault Ubuntu-20.04

4.4 修改默认登录用户
迁移后登录可能会发现使用的是root登录,而非安装时设置的用户
这里我们需要设置wsl.conf文件,一般存储在/etc/wsl.conf
,具体可看官方wiki WSL 中的高级设置配置
sudo nano /etc/wsl.conf
添加以下内容
[user]
default = 你安装设置的普通用户名
保存配置并退出,重启wsl
wsl --list --running
wsl --shutdown
wsl
便会发现默认用户已经修改了
需要注意的是 wsl.conf
配置优先级要高于Ubuntu2004.exe config --default-user
,因此如果两个都配置了的话,会以 wsl.conf
中的配置优先。
(但是使用导入方式的虚拟机子系统无法使用Ubuntu2004.exe config --default-user
方式设置用户,故无需考虑)
可能会遇到的问题:
Q:使用wsl --update
更新,报错:
"正在安装: 适用于 Linux 的 Windows 子系统
部署操作被阻止,因为某个根据程序包系列的策略不允许部署到非系统卷。根据策略,该应用必须安装到系统驱动器,但是系统驱动器未设置为默认值。请在存储设置中,将系统驱动器设置为新内容的默认保存位置,然后重试安装。"
A:参考这个issues帖子在管理员权限的powershell中运行以下命令
Get-AppxPackage MicrosoftCorporationII.WindowsSubsystemforLinux -AllUsers | Remove-AppxPackage
wsl --update --web-download
参考资料:
简单到极致!Windows 10 Ubuntu子系统的备份/还原教程来了
After updating to 2.0.14, there is no wsl --update --pre-release command?
Comments NOTHING