windows WSL2避坑指南
对于不想安装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下输入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # 先关闭所有虚拟机 wsl -- shutdown # 进入磁盘管理 diskpart # 选择虚拟磁盘文件 select vdisk file = "刚才search everything里找到的ext4.vhdx文件路径" # 压缩文件 compact vdisk # 压缩完成后卸载磁盘 detach vdisk |
3.2 迁移到其它盘
压缩完后,用着用着,文件还是会继续变大,最好是迁移到其它盘
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # 先关闭 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个大文件(超过1G),复制到ubuntu中试了下,却发现慢到怀疑人生,比直接从网上下载都慢。
正确姿势:
如果ubuntu中要访问windows主系统中的文件,不用复制1份,直接用 "/mnt/盘符",就能访问
如果嫌windows中的路径太长,可以在ubuntu中创建1个链接
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的文件
文件内容如下:
1 2 3 4 | [wsl2] processsors=4 memory=20GB swap=4GB |
保存后,wsl --shutdown 关闭,等8秒,然后再重新启动ubuntu,验证是否生效
3.5 nvidia驱动与cuda问题
- 如果windows主系统中已安装了nvidia驱动,ubuntu中不要再额外安装了
- 也无需按微软官方文档中的建议安装nvidia-docker
可以直接在ubuntu中输入nvidia-smi 验证是否能检测到nvidia驱动
可能有同学会疑惑,我都没在ubuntu里安装nvidia驱动,怎么能找到nvidia-smi这个命令?其实我当初也有这个疑问,后来 echo $PATH看了下
好家伙,原来WSL2 里的ubuntu,最终PATH搜索路径,是把windows主系统的PATH + 虚拟机自身的PATH 合并处理了,怪不得象vscode这些命令,ubuntu里没安装,也能直接使用。
虽然nvidia 驱动,WSL2能自动识别了,但是CUDA却不行,现在主流的AI框架(包括大模型),都依赖它,先到 CUDA官网下载WSL专用的安装文件:
sudo一路安装即可,安装完成后,最好调整下环境变量 (修改~/.bashrc)
1 2 3 | export PATH= /usr/local/cuda-12 .2 /bin :$PATH export LD_LIBRARY_PATH= /usr/local/cuda-12 .2 /lib64 : /usr/lib/wsl/lib export CUDA_HOME= /usr/local/cuda-12 .2 |
验证一把:
最后,跑下ChatGLM2-6B看看:
左侧是windows里的nvitop实时监控,右侧是ubuntu里的ChatGLM2-6B-int4推理,从监控上看GPU确实起作用了(RTX 4060 8G的显存,占用了5G多)
如果在WSL2 Ubuntu里运行nvitop,可更精确的定位到使用GPU的进程
参考文章:
出处:http://yjmyzz.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
2018-08-12 Reactor 3 学习笔记(1)
2014-08-12 ehcache2.8.3入门示例:hello world