win11结合wsl2搭建开发环境之一:win11使用wsl将Ubuntu24.04到D盘
1. 电脑设置
1.1 虚拟化设置
如果没有开启的话,需要到BIOS里面设置的。具体根据自己电脑网上打一下怎么开启虚拟化(为什么主板出厂的时候,不默认根据CPU开启呢?)

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

重启完之后,打开Power Shell 以管理员命令输入下方代码
bcdedit /set hypervisorlaunchtype auto
然后将wsl升级到最新版
wsl --update
2. 系统安装
2.1 手动安装
2.1.1 在微软这个wiki中下载发行版,下载你所需要的发行版文件。
我选择的是Ubuntu 24.04

2.1.2 下载好是一个AppxBundle文件来的

2.1.3 将文件后缀由AppxBundle改成zip

2.1.4选择对应的平台,改后缀解压

2.1.5 解压后,双击运行

随后该目录下会出现一个ext4.vhdx。这里一个磁盘镜像文件存储数据
3.导出虚拟机
主要是为了安装后,改为其他盘符存放,所以接下来导出导入方式迁移!
3.1 查看虚拟机
安装好并初始化设置了用户后,在PowerShell中查询有哪些虚拟机
wsl -l --all -v

3.2 关闭WSL虚拟机
关闭WSL虚拟机(一定要关闭虚拟机之后再导出! 否则数据可能丢失!)
wsl -t Ubuntu-24.04
3.3 导出虚拟机文件
一定要关闭虚拟机之后再导出! 否则数据可能丢失!
wsl --export Ubuntu-24.04 D:\wsl\Ubuntu-24.04.tar
然后新建一个文件夹用于一会导入虚拟机存放数据使用。这里新建的目录是D:\wsl\Ubuntu-24.04
3.4 卸载原虚拟机
现在我们可以把原来C盘的虚拟机卸载了(WSL2卸载同时会删除原虚拟机数据!)
注意:高危操作! 请确保已完整导出虚拟机文件!
wsl --unregister Ubuntu-24.04
4.导入虚拟机
4.1 导入
# wsl --import <虚拟机名称> <新数据镜像文件的存放文件夹路径> <导出的备份文件路径>
wsl --import Ubuntu-24.04 D:\wsl\Ubuntu-24.04 D:\wsl\Ubuntu-24.04.tar
4.2 查看虚拟机
wsl -l --all -v
4.3 修改默认子系统虚拟机
# wslconfig /setdefault <选定的虚拟机名称>
wslconfig /setdefault Ubuntu-24.04
4.4 修改默认登录用户
迁移后登录可能会发现使用的是root登录,而非安装时设置的用户
这里我们需要设置wsl.conf文件,一般存储在/etc/wsl.conf,具体可看官方wiki WSL中的高级设置配置
sudo vim /etc/wsl.conf
添加以下内容
[user]
default = 你安装设置的普通用户名
保存配置并退出。
重启wsl
wsl --list --running
wsl --shutdown
wsl
便会发现默认用户已经修改了
需要注意的是 wsl.conf 配置优先级要高于Ubuntu2404.exe config --default-user,因此如果两个都配置了的话,会以 wsl.conf 中的配置优先。
(但是使用导入方式的虚拟机子系统无法使用Ubuntu2404.exe config --default-user方式设置用户,故无需考虑)
5. 内部网络ip
这个不用自己操作的,系统自动生成的
宿主机(win11)内部ip: 172.22.240.1

wsl(Ubuntu)内部ip: 172.22.254.13

6. 其它一些杂基
启动报错: wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理
解决方案
在Windows中的C:\Users<your_username>目录下创建一个.wslconfig文件,然后在文件中写入如下内容
[experimental]
autoMemoryReclaim=gradual
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
然后用wsl --shutdown关闭WSL,之后再启动,提示就消失了。

浙公网安备 33010602011771号