windows WSL2避坑指南

发布时间 2023-08-12 11:33:10作者: 菩提树下的杨过

对于不想安装windows/linux双系统的朋友来说,wsl2是不错的选择,但在使用过程中可能会遇到一些问题,以下是本人踩过的坑,记录于此:

一、安装前提

1.1 检测windows版本

windows10 版本必须高于 内部版本 19041 ,检测方法 :ctrl+R,输入winver查看版本(参考下图),如果版本太低,建议先windows update升级到最新

1.2 启用windows相关功能

 

二、安装ubuntu

进入windows应用商店 ,搜索ubuntu,参考下图,一般选LTS的最新版本即可

,

安装过程中如果下载速度慢,可以打开“传递优化”,允许从其它电脑下载 ,类似于开启了P2P下载

安装完后,一定要检查下wsl安装的虚拟机(注:严格讲称为子系统更适合,但“虚拟机”叫习惯了,以下都用虚拟机这个叫法)版本是否为wsl 2

如果仍然是1,最简单的办法是删除掉,重新安装(删除方法参考下图)

当然对于先前已经安装了wsl 1的虚拟机,如果虚拟机里有重要文件,也可以用命令行手动将1升级为2,参考命令为

wsl --set-version Ubuntu-22.04 2

其中Ubuntu-22.04即为wsl -l -v中看到的虚拟机的名称,大家根据实际情况替换

 

三、填坑之旅

3.1 磁盘空间问题

默认是安装在C盘的,随着虚拟机里软件越装越多,很快C盘的空间就吃紧了,而且比较坑的是,就算在虚拟机里把文件给删除了,空间也不会被释放。

解决方案:

  • 先找到Ubuntu虚拟机磁盘文件的路径,建议安装search everything,搜索ext4.vhdx

默认位置类似:C:\Users\Administrator\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx

  • powershell下输入
# 先关闭所有虚拟机
wsl --shutdown

# 进入磁盘管理 
diskpart

# 选择虚拟磁盘文件
select vdisk file="刚才search everything里找到的ext4.vhdx文件路径"

# 压缩文件
compact vdisk

# 压缩完成后卸载磁盘
detach vdisk

 

3.2 迁移到其它盘

压缩完后,用着用着,文件还是会继续变大,最好是迁移到其它盘

# 先关闭
wsl --shutdown

# 导出Ubuntu-22.04文件(注:这里的Ubuntu-22.04即wsl -l -v中看到的虚拟机名称)
wsl --export Ubuntu-22.04 e:\WSL2Ubuntu22.04.bak

# 注销原来的虚拟机
wsl --unregister Ubuntu-22.04

# 重新导入(注:e:\wsl目录要存在)
wsl --import Ubuntu-22.04 e:\wsl e:\WSL2Ubuntu22.04.bak --version 2

#设置启动的默认用户(注:这里的XXX即为默认用户名,如果这一步不做,每次都是以root身份启动)
ubuntu2204 config --default-user XXX

重新启动就好了

3.3 windows与ubuntu之间复制文件的坑

WSL2安装完以后,windows主系统中,资源管理器里能看到ubuntu中的文件夹,这可太方便了

powershell命令行中也能直接访问

然后直接把windows主系统中的1个大文件,直接复制到ubuntu中试了下,却发现慢到怀疑人生,比直接从网上下载都慢。

正确姿势:

如果ubuntu中要访问windows主系统中的文件,不用复制1份,直接用 "/mnt/盘符",就能访问

如果嫌windows中的路径太长,可以在ubuntu中创建1个链接

ln -s /mnt/e/document/  /home/jimmy/document

这样就把windows主系统e盘的document目录,映射到/home/jimmy/document下了

 

3.4 内存大小设置

WSL2里跑一些大模型时,会使用较多内存,默认情况下WSL2虚拟机,只分配windows 50%或8G内存(二者中取最小值)

可以 在windows主系统的%userProfile% 目录下,创建1个名为.wslconfig的文件 

文件内容如下:

[wsl2]
processsors=4
memory=20GB
swap=4GB

保存后,wsl --shutdown 关闭,等8秒,然后再重新启动ubuntu,验证是否生效

 

参考文章:

解决删除文件后 WSL2 磁盘空间不释放的问题 

拯救被WSL占满的C盘 

WSL 中的高级设置配置 | Microsoft Learn

WSL_03 WSL2 从C盘迁移到D盘_wsl迁移到d盘