WSL2 的使用教程
1.安装和升级 WSL2
1.1 安装前的准备
首先需要在控制面板 -> 程序 -> 启用或关闭Windows功能
处开启Hyper-V
和适用于Windows的Linux子系统
,然后重启电脑即可。默认有2个版本,1和2,1是使用和主机相同的 IP 地址;2是更加独立的 Linux 子系统,有单独的 IP 地址,通过 Windows 主机访问互联网,建议安装2,可以用systemd
。如果安装2还需要安装一个软件:wsl_update_x64,该软件来自于Windows 官网。
1.2 升级 WSL2
设置默认版本:
1 | wsl --set-default-version 2 |
更新版本:
1 | wsl --update |
这种方式大概率会卡住,建议离线下载安装:microsoft/WSL,下载好后直接双击安装即可。
验证是否安装成功:
1 | wsl --version |
输入这行指令有这样的输出,表示安装成功:
1 | WSL 版本: 2.3.24.0 |
2.WSL 的指令
2.1 常用指令
搜索可安装版本
1
wsl --list --online
安装指定的版本
1
wsl --install -d Ubuntu
查看安装的版本信息
1
wsl -l -v
关闭 wsl
1
wsl --shutdown
2.2 备份与还原
下面的一系列操作以发行版Ubuntu-22.04
为例。
停止指定的 WSL
1
wsl --shutdown
导出(备份)WSL 子系统(需要先停止 WSL 子系统)
1
wsl --export Ubuntu-22.04 D:\Ubuntu-22.04.tar
D:\Ubuntu-22.04.tar
是导出的路径。卸载 WSL 子系统
1
wsl --unregister Ubuntu-22.04
导入(还原)WSL 子系统
1
wsl --import Ubuntu-22.04 D:\WSL D:\Ubuntu-22.04.tar
D:\WSL
是导入路径,D:\Ubuntu-22.04.tar
是前面备份子系统的路径。
还原后的子系统一般默认是root
用户,需要修改为其它用户。只要修改还原后的 Linux 子系统中的/etc/wsl.conf
配置文件即可,如下:
1 | nano /etc/wsl.conf |
加入下面的内容:
1 | [user] |
然后按前面的方法进行重启 WSL 子系统即可。
3.WSL 的配置
3.1 启用 systemd
编辑/etc/wsl.conf
配置文件。
1 | nano /etc/wsl.conf |
在文件中添加下面的内容:
1 | [boot] |
3.2 更换内核
在 Windows 下的资源管理器中的地址栏输入%UserProfile%
,然后按回车。在里面新建一个.wslconfig
文件(如果没有的话)。在文件中天下下面的内容:
1 | [wsl2] |
这里的e:\\wsl2linuxkernel\\bzImage
是内核路径,可以自己编译内核,手动编译内核参考官方仓库:microsoft/WSL2-Linux-Kernel。也可以用仓库里线现成的:Nevuly/WSL2-Linux-Kernel-Rolling。
4.释放 WSL 占用的磁盘空间
有时后会发现,你在 WSL 中删掉了一些文件,但是磁盘剩余空间并没有增加。这是因为 WSL 的磁盘是动态扩容的,但不会自动释放。
4.1 操作步骤
关闭 WSL 中的 Linux 发行版:
1
wsl --shutdown
在
powershell
或者cmd
中运行管理计算机的驱动器的 DiskPart 命令:1
diskpart
选择虚拟磁盘文件(根据自己实际情况填写路径):
1
select vdisk file="D:\WSL\Ubuntu24.04\ext4.vhdx"
只读,附加
vhdx
磁盘镜像文件:1
attach vdisk readonly
压缩 vhdx 磁盘镜像文件:
1
compact vdisk
分离
vhdx
磁盘镜像文件:1
detach vdisk
退出
1
exit
或者按住
ctrl+c
。
4.2 可能出现的问题
1 | DISKPART> select vdisk file="D:\WSL\Arch\ext4.vhdx" |
这说明ext4.vhdx
文件可能是 压缩的(compressed
)、加密的(encrypted
)或稀疏的(sparse
),而diskpart
要求它是一个普通的未压缩、未加密的 VHDX 文件。因此,compact vdisk
失败了。
所以需要 移除压缩、加密和稀疏文件属性 ,然后再尝试compact vdisk
。
4.3 解决方法
- 检查 VHDX 文件属性
执行以下命令来检查ext4.vhdx
是否是 稀疏文件、压缩文件或加密文件 :
检查文件是否被稀疏文件:
1 | fsutil sparse queryflag "D:\WSL\Arch\ext4.vhdx" |
如果输出:
1 | 文件 D:\WSL\Arch\ext4.vhdx 是稀疏文件 |
那么该文件是稀疏文件,需要去掉稀疏标志。
检查文件是否被 NTFS 压缩:
1 | compact /q "D:\WSL\Arch\ext4.vhdx" |
如果输出类似:
1 | 1 个文件总计 10 GB |
说明该文件已被压缩,需要取消压缩。
检查文件是否被加密:
1 | cipher /c "D:\WSL\Arch\ext4.vhdx" |
如果输出类似:
1 | E D:\WSL\Arch\ext4.vhdx |
说明该文件被加密,需要解密。
- 解除压缩、加密和稀疏属性
执行以下命令,确保 VHDX 文件是普通文件:
取消稀疏文件标志:
1 | fsutil sparse setflag "D:\WSL\Arch\ext4.vhdx" 0 |
取消 NTFS 压缩:
1 | compact /u /q "D:\WSL\Arch\ext4.vhdx" |
取消加密:
1 | cipher /d "D:\WSL\Arch\ext4.vhdx" |
- 再次尝试挂载并压缩 VHDX
执行:1
2
3
4
5
6diskpart
select vdisk file="D:\WSL\Arch\ext4.vhdx"
attach vdisk
compact vdisk
detach vdisk
exit
5.参考链接
- Title: WSL2 的使用教程
- Author: loskyertt
- Created at : 2024-11-12 21:16:31
- Updated at : 2025-01-12 05:32:48
- Link: https://redefine.ohevan.com/2024/11/12/WSL2教程/
- License: This work is licensed under CC BY-NC-SA 4.0.