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.WSL2 挂载 U 盘
U盘插入电脑后,WSL并不会识别出 U盘 ,如果想要在 WSL2 中使用或查看 U 盘文件,需要挂载 USB 设备。
首先建一个用来挂载 USB 设备里文件的文件夹:
| 1 | sudo mkdir /mnt/e | 
挂载(Windows 里显示 USB 设备为哪个盘,就将 E 换成对应的字母):
| 1 | sudo mount -t drvfs E: /mnt/e | 
现在就可以在 WSL 里访问 USB 设备里的内容了。
当想要卸载驱动器以便可以安全地将其删除时:
| 1 | sudo umount /mnt/e | 
这样就恢复到原来 WSL 不识别 USB 设备的状态了。
6.参考链接
- Title: WSL2 的使用教程
- Author: loskyertt
- Created at : 2024-11-12 21:16:31
- Updated at : 2025-02-17 04:36:55
- Link: https://redefine.ohevan.com/2024/11/12/WSL2教程/
- License: This work is licensed under CC BY-NC-SA 4.0.
