ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

WSL与VSCode协同开发:从安装到排错完整指南

WSL与VSCode协同开发:从安装到排错完整指南 配置WSL并在VSCode里打开这件事我前前后后折腾了不下二十次——帮同事配、自己重装系统后配、在不同机器上配踩过的坑基本都齐了。今天这篇就把完整流程和常见问题一起说透从零开始按步骤照做就能跑通。先说清楚这套组合能解决什么问题你在Windows上写代码但有些工具、脚本、依赖只能在Linux环境里跑比如PyTorch的CUDA加速、CTF里的binwalk、各种只发Linux版的开发工具。以前要么装双系统来回重启要么开虚拟机吃内存。现在装一个WSLWindows和Linux的切换成本几乎为零再把VSCode插进去编辑器的体验还在Windows侧跑代码的环境在Linux侧文件互通、端口互通这才是真正舒服的开发状态。这套方案适合谁想学Linux但不敢直接换系统的学生、需要在Windows上写C/C/Python的开发者、跑深度学习模型的研究生、偶尔用Linux工具的运维基本都可以直接照这个流程走。下面从原理讲到实操把每一步为什么这么做也讲清楚。1. WSL到底是什么为什么非装不可1.1 WSL 1和WSL 2一字之差天壤之别WSL全称是Windows Subsystem for Linux微软官方出的Linux兼容层。现在默认安装的都是WSL 2跟WSL 1有本质区别。WSL 1用的是系统调用翻译层把Linux程序发出来的系统调用“翻译”成Windows能理解的操作好处是文件访问速度特别快坏处是兼容性不完整有些程序会莫名其妙崩。WSL 2则是在Hyper-V虚拟化平台上跑了一个完整的轻量级Linux虚拟机内核是真正的Linux内核兼容性几乎百分之百但那句“虚拟机”让很多人误会——它跟传统虚拟机完全不是一个体验。传统虚拟机比如VMware要分配固定内存、要装桌面、要等待启动开机以分钟计。WSL 2的启动速度跟开个应用差不多内存按需分配用多少占多少而且因为深度集成在Windows里你根本感觉不到“虚拟机”的存在。我更直白的理解是这样的WSL 2就像在Windows里内置了一个专业的Linux环境它不给你桌面界面也没必要就是一个纯粹的终端世界专门给开发者用。1.2 VS Code Remote-WSL的“远程”是伪远程VSCode里有个Remote Development系列插件Remote-SSH是真远程连接服务器Remote-WSL则是连接本机的WSL环境。很多人第一次用Remote-WSL会觉得神奇明明WSL就在自己电脑里为什么要叫“远程”因为VS Code的架构是这样Windows侧跑的是编辑器界面客户端实际的编译、调试、终端、语言服务都在WSL里运行。VS Code会在WSL里自动安装一个vscode-server后台服务负责执行语言服务器、运行调试器、启动终端进程。你在Windows里看到的编辑器本质上是Linux侧服务推过来的画面。这个设计的聪明之处在于工具链的环境一致性。比如你配C/C环境时Windows侧装MinGWWSL侧装GCCRemote-WSL会让两边完全隔离项目在WSL里打开时用的是Linux的GCC在Windows里打开时用的是Windows的编译器互不干扰也不会出现“我明明配好了怎么还报错”的混乱。1.3 这套组合真正解决的使用场景我列几个最典型的场景你看看自己有没有中枪Python/PyTorch环境Windows下配PyTorch的CUDA环境经常把人折腾疯各种路径、版本、驱动冲突。WSL里直接走Linux的安装逻辑反而干净清爽。很多科研环境默认就是Linux你在WSL里跑深度学习代码跟在服务器上跑几乎没区别。C/C开发Linux的GCC工具链比Windows下的配置要顺畅配合VS Code的C/C插件代码提示、调试、断点都齐全。CTF和安全工具很多工具比如binwalk、burp一些脚本、各种只发Linux版的算法工具在WSL里一条命令装好直接用。本地化部署AI工具像Claude Code、Codex这类AI编程工具有不少人在WSL里跑得更稳因为Windows的命令行环境和权限管理对于这些工具来说兼容性不如Linux。还有个隐藏优点公司跳板机、服务器运维场景。你在WSL里配好SSH密钥然后VSCode用Remote-SSH连服务器密钥路径、终端环境都跟Linux保持一致比Windows下用putty之类方便太多。2. 从零开始安装WSL的完整流程2.1 安装前提检查Windows版本与CPU虚拟化动手之前先花两分钟检查环境避免装到一半才发现基础条件不满足。Windows版本要求Windows 10 2004build 19041或更高Windows 11直接支持。如果你的系统低于这个版本先升级Windows再谈WSL。还有个细节Windows Server 2022也能装但要手动启用VirtualMachinePlatform功能网上常搜到的“Windows Server 2022 WSL needs updating”就是环境判定问题后面单讲。打开命令行检查的方法按WinR输入winver查看版本号。第二件事是确认CPU虚拟化已经在BIOS里开启任务管理器 → 性能 → CPU看“虚拟化”那一栏是不是“已启用”。如果显示“已禁用”重启进BIOS在Intel Virtualization TechnologyVT-x或AMD SVM选项里打开。这一步不做后面装WSL 2会报错。然后打开“控制面板 → 程序 → 启用或关闭Windows功能”确保“适用于Linux的Windows子系统”和“虚拟机平台”两个选项都是勾选状态。实际上新版Windows执行wsl --install会自动启用但老系统或者关闭过功能的需要手动确认。2.2 wsl --install一键安装与指定发行版如果你的系统满足条件安装WSL这件事在最新的Windows上已经被简化到一条命令wsl --install这条命令会做四件事启用WSL功能、启用虚拟机平台、下载安装最新的WSL内核、默认安装Ubuntu发行版。整个过程会自动重启一次Windows重启后弹出一个Ubuntu窗口让你设置用户名和密码。不过我们通常不会直接用默认命令而是指定发行版。我习惯用Ubuntu 22.04 LTS稳定而且教程多wsl --install -d Ubuntu-22.04如果不知道有哪些可选的发行版先运行wsl --list --online看到列表后选择。还有一个选项需要注意安装时可以用-n跳过发行版安装只装WSL本体发行版后面自己挑。装完以后设置默认的WSL版本为2wsl --set-default-version 2这一步很关键。如果默认还是1很多新特性用不了。查看当前所有发行版的WSL版本wsl --list --verbose输出里VERSION那一列显示2就对了。如果你的发行版当前是1可以单独切换wsl --set-version Ubuntu-22.04 22.3 把WSL装到D盘导出导入法C盘空间紧张的人经常问“怎么把WSL装到D盘”。这里有个关键认知wsl --install装完的发行版默认就在C盘并且安装阶段没法选盘。解决方案是装完再迁移。思路是把现有发行版导出成一个tar文件注销掉原发行版再导入到D盘。操作如下# 确保WSL里的发行版是停止状态 wsl --shutdown # 导出到D盘文件比较大20G以上的系统大概会导出十几个G wsl --export Ubuntu-22.04 D:\wsl-ubuntu-backup.tar # 注销原发行版注意导出成功后再执行 wsl --unregister Ubuntu-22.04 # 导入到D盘目标目录 wsl --import Ubuntu-22.04 D:\WSL\Ubuntu-22.04 D:\wsl-ubuntu-backup.tar --version 2导入完成后默认会以root用户登录这时候还需要设置默认用户。在Windows侧执行wsl -d Ubuntu-22.04 -u root进入后创建用户配置文件假设你的用户名是dev# 创建用户 useradd -m -s /bin/bash dev # 设置密码 passwd dev # 把用户名写入默认用户配置 echo [user] /etc/wsl.conf echo defaultdev /etc/wsl.conf改完以后wsl --shutdown再重新进就会切回dev用户了。整个过程其实不复杂唯一要注意的就是导出前把发行版停干净否则导出的系统文件可能不一致。另外导入之后的发行版在wsl --list里显示名字还是Ubuntu-22.04但网络的初始配置比如DNS可能变了遇到网络问题先看wsl.conf。2.4 第一次登录Ubuntu之后要做的三件事装完WSL里的Ubuntu后先别急着在VSCode里打开把这三件事做完再进后面会少很多坑。第一件事换软件源。Ubuntu默认源在国外apt下载慢到你怀疑人生。换成国内镜像源具体操作是编辑/etc/apt/sources.listUbuntu 24.04以后是/etc/apt/sources.list.d/ubuntu.sources把archive.ubuntu.com和security.ubuntu.com替换成国内镜像的域名。换完以后先sudo apt update验证。第二件事更新系统软件包。执行sudo apt update sudo apt upgrade -y把基础包全部升到最新。很多人在VSCode里报错“缺少依赖”多半是新装的系统太旧导致的。第三件事安装基础开发工具。按自己的需求装sudo apt install -y build-essential git curl wget python3 python3-pipbuild-essential里包含GCC、G、make这些C/C开发必需的工具链先装上肯定不亏。3. 安装慢、报错、起不来排错实录3.1 wsl --install卡住不动网速慢被重置网上搜“wsl install太慢了怎么解决”“wsl --install网速慢被重置”的人特别多。这个问题的根源是发行版文件要从微软的服务器下载部分地区下载速度不稳定进度条在0%或者某个百分比卡很久。我的建议是先给它一点耐心观察5分钟。如果确实不动按CtrlC取消然后检查网络。确认网络没问题后换一种安装方式直接从微软的发行版下载页面手动下载Ubuntu的appx包然后用命令安装。下载页面的地址我记得是https://learn.microsoft.com/zh-cn/windows/wsl/install-manual进去以后找到Ubuntu 22.04的链接会得到一个几百MB的.appx文件后缀也可能是.appxbundle。下载完成后在文件所在目录执行Add-AppxPackage .\Ubuntu.appx装完以后从开始菜单打开Ubuntu设置用户名密码再用命令把它注册到WSL管理里# 查看本地有哪些安装包 wsl --list --online # 把本地安装的Ubuntu注册进来 wsl --install -d Ubuntu这个方法的本质是绕过wsl --install的下载环节直接喂给系统本地文件。文件下载速度取决于你当前的网络到微软服务器的带宽比wsl --install那个不稳定流程要可控得多。3.2 错误代码WSL/installdistro/service/registerdistro/createvm/hcs/error_file_v这个报错是搜索热词里出现频率极高的一类问题通常长这样WSL/installdistro/service/registerdistro/createvm/hcs/error_file_v拆开看错误链路的含义是WSL在注册发行版服务时尝试创建虚拟机但HCSHost Compute Service宿主计算服务返回了file_v类型的错误。说人话就是虚拟化相关服务没正常工作。排查思路按以下顺序来打开服务列表按WinR输入services.msc找到Hyper-V Host Compute Service确认状态是“正在运行”。如果没运行右键启动并设置为“自动”。很多时候这个服务被安全软件或手动优化工具禁用了。确认Windows功能齐全Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux和VirtualMachinePlatform这两个功能的State都要是Enabled。执行bcdedit检查Hypervisor是否启动bcdedit /set hypervisorlaunchtype auto这一步需要管理员权限的命令行执行完重启。如果之前是“关闭”或“off”改完重启就好了。这个命令本质上是在告诉Windows启动引导器要加载微软的Hypervisor。最后的大招是卸了重装。管理员命令行执行wsl --unregister Ubuntu-22.04 wsl --shutdown然后重新wsl --install -d Ubuntu-22.04。实测下来80%的error_file_v问题是HCS服务没启动或者hypervisorlaunchtype被改过先查这两个基本能解决。3.3 “wsl needs updating”和Windows Server 2022的坑启动WSL时终端提示“wsl needs updating your version of Windows Subsystem for Linux (wsl) is too...”很多人不知道什么意思。它的含义是你的系统里WSL组件版本太旧而发行版要求更新版本。注意这里的WSL组件指的不再是“Windows功能”里的旧版WSL而是新版WSL即WSL 2内核及管理组件。很多人以为打开Windows功能里的“适用于Linux的Windows子系统”就完事了但是新版WSL默认走的是Microsoft Store更新如果你的系统没有自动更新那部分就会提示needs updating。解决办法是手动更新打开Microsoft Store搜索“Windows Subsystem for Linux”点击“获取/更新”完成后再打开终端试。或者直接用管理员命令wsl --updatewsl --update会强制拉取最新版WSL组件。如果命令报错或者网速慢去Microsoft Store的“库 → 获取更新”里更新。Windows Server 2022用户的报错“wsl needs updating”多了一层原因Server系统默认没有安装“虚拟机平台”功能新版WSL依赖它。所以Windows Server 2022用户在装WSL前需要先把VirtualMachinePlatform功能打开否则无论怎么update都会给你弹“needs updating”。命令行管理员身份执行dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart重启后再wsl --update。3.4 检测到localhost代理配置但未镜像到WSL现在很多人的Windows上都会配本地代理于是经常在WSL里看到这样的警告wsl: 检测到 localhost 代理配置但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。这个提示的意思是Windows的HTTP代理设置比如127.0.0.1:7890没有同步到WSL里而WSL 2默认的NAT网络模式下Windows和WSL的localhost并不互通你如果在WSL里跑curl之类要出网的工具可能会连不上。为什么不建议一上来就改配置绕过这个问题因为WSL 2提供了一种更彻底的方式镜像网络模式。在C:\Users\你的用户名\.wslconfig文件里加一段[wsl2] networkingModemirrored保存后执行wsl --shutdown再重进WSL的网络就和Windows共享localhost互通代理设置也会自动镜像。这个模式在Windows 11 22H2及以上版本里支持得比较好老版本系统可能需要升级。如果坚持用NAT模式可以手动在WSL里设置代理环境变量export http_proxyhttp://Windows的IP:代理端口 export https_proxyhttp://Windows的IP:代理端口Windows的IP怎么查在WSL里执行cat /etc/resolv.conf看nameserver那一行的IP或者用ip route show | grep default。不过每次启动都要重新设置不如镜像模式一劳永逸。3.5 组件存储已损坏、错误HCS和绝望时的重置方法运行wsl --install时报“安装组件存储已损坏”“无法解析此名称”之类的错误一般跟Windows系统本身的组件服务CBS有关。常见触发场景是系统被精简过、跑过各种“优化”工具、或者升级途中中断过。处理方案有几个层次第一层用系统文件检查器扫一遍。管理员命令行sfc /scannow第二层如果sfc提示修复不了的错误再跑DISMdism.exe /online /cleanup-image /restorehealth这个命令会从Windows更新源拉取健康文件替换损坏组件。第三层执行完以上两步重启再尝试wsl --install。如果还是不行检查一下C盘空间。WSL 2默认的vhdx虚拟磁盘文件在C盘组件存储损坏也可能是磁盘写入失败。清理出足够的空间至少10GB再试。最后实在不行就去“设置 → 应用 → 已安装的应用”里卸载所有WSL相关条目包括Windows Subsystem for Linux、Windows Subsystem for Linux Update两个应用重启后再重新wsl --install。这个操作相当于把你电脑里的WSL完全清除重来成功率非常高。4. 在VS Code里打开WSLRemote-WSL实战4.1 安装VS Code和Remote-WSL插件VS Code的安装本身没什么难度唯一的坑是下载入口。网上搜“vscode下载”“vscode官网下载入口”会看到很多第三方站我建议直接去code.visualstudio.com认准域名就行。选择Windows x64的User Installer版本即可装的时候注意把“添加到PATH”这个选项勾上后面从WSL终端敲code .能不能打开就靠这个。装好VS Code以后打开扩展面板搜索“Remote - WSL”安装微软官方出的那个Remote Development插件组合。microsoft.vscode-remote-remotecontainers那个包现在叫“Remote Development”包含Remote-WSL、Remote-SSH、Dev Containers三个扩展一次装齐最省事。装好以后VS Code左下角会出现一个绿色的“”图标这个图标就是远程连接状态的入口。点击它能管理远程环境。4.2 六种打开WSL的方法总有一种适合你实际操作中我试过下面这几种方式按效率排序方式一最推荐在VS Code里按F1或者CtrlShiftP打开命令面板输入“WSL: Connect to WSL”回车选择你的发行版VS Code会自动重开一个窗口连接进来。方式二VS Code左下角点绿色“”图标选择“Connect to WSL”再选发行版。方式三打开终端Windows Terminal或CMD进入WSLwsl然后在Ubuntu里输入code .如果你在VS Code里装过Remote-WSL这个命令会在WSL环境下启动VS Code并连接进去。方式四在Windows的文件资源管理器里进入\\wsl$\Ubuntu-22.04路径右键你的项目文件夹选择“在Visual Studio Code中打开”需要已经配置过默认应用。方式五直接用wsl -d Ubuntu-22.04进入终端然后输入code /home/dev/项目路径。方式六启动VS Code后用Remote Explorer侧边栏找到WSL目标点“”新建窗口。经常有人问“为什么我在WSL里敲code .提示找不到命令”。这个问题的根源在于VS Code安装时没勾“添加到PATH”或者没装Remote-WSL插件时WSL里就不会有code这个命令。重新打开VS Code的安装包修复安装勾选“添加到PATH”或者确认Remote-WSL已安装即可。4.3 首次连接的vscode-server下载问题第一次用Remote-WSL连接时VS Code会在WSL里自动下载并解压一个vscode-server这一步如果网络不好可能卡在“正在下载”很长时间。现象是在底部状态栏看到“Downloading VS Code Server ...”然后进度条可能不动。几种解决办法等。第一次下载通常几十MB慢的时候确实要几分钟。如果时间超过10分钟还在“下载”考虑网络问题。手动辅助下载。在Windows侧去GitHub上的microsoft/vscode仓库找一个叫“vscode-server-linux-x64.tar.gz”的压缩包注意版本号要和本地VS Code版本一致。然后在WSL里手动解压到~/.vscode-server/bin/commit-id/目录。获取commit-id的方法在VS Code的“帮助 → 关于”里看到一串类似e5a624b788d92b8d0dcf2f9e0353f845083e8f39的哈希这个就是commit-id。实际操作步骤cd ~ mkdir -p ~/.vscode-server/bin/commit-id tar -xzf /mnt/d/vscode-server-linux-x64.tar.gz -C ~/.vscode-server/bin/commit-id --strip-components1解压完成后重启VS Code重新连接WSL就会跳过下载步骤直接启动。先连一次让VS Code自己挂起然后切到命令行手动执行下载脚本wget -O vscode-server.tar.gz https://update.code.visualstudio.com/commit:你的commit-id/server-linux-x64/stable我个人用过方案二成功率最高就是麻烦一点。如果你常在这类网络环境工作建议把解压好的vscode-server目录备份到D盘下次换机器直接拷过去。4.4 配置中文、Python、C/C和环境变量连接进WSL以后的第一件事如果你习惯中文界面装中文语言包扩展面板搜索“Chinese (Simplified)”安装后右下角会提示切换语言重启VS Code生效。然后是具体语言环境。以Python为例WSL里安装的Python和Windows侧是两个完全独立的体系要在左下角确认Python解释器。CtrlShiftP输入“Python: Select Interpreter”选择/usr/bin/python3或conda环境路径。这里有个高频坑Window侧装了PythonVSCode自动选择了Windows解释器运行的时候其实是Windows环境而不是WSL环境结果编译出来的路径、依赖全乱。确保左下角显示的是“WSL: Ubuntu-22.04”开头就对了。C/C的配置安装C/C扩展ms-vscode.cpptools在项目里按F5选择“C (GDB/LLDB)”VS Code会自动生成launch.json和tasks.json。tasks.json里的编译参数我一般直接写成{ version: 2.0.0, tasks: [ { label: C/C: g build active file, type: cppbuild, command: /usr/bin/g, args: [ -fdiagnostics-coloralways, -g, ${file}, -o, ${fileDirname}/${fileBasenameNoExtension} ], options: { cwd: ${fileDirname} }, group: { kind: build, isDefault: true } } ] }这样按CtrlShiftB编译按F5调试断点、变量监视、调用栈都正常。很多人反馈“vscode写C没有代码提示”。大概率原因是没装C/C扩展或者没在WSL侧安装GCC套件。代码提示依赖IntelliSense配置在项目根目录放一个.vscode/c_cpp_properties.json明确指定编译器路径和标准{ configurations: [ { name: WSL, includePath: [ ${workspaceFolder}/**, /usr/include/** ], defines: [], compilerPath: /usr/bin/gcc, cStandard: c17, cppStandard: c17, intelliSenseMode: linux-gcc-x64 } ], version: 4 }如果还没有提示检查有没有在WSL里装完整工具链sudo apt install build-essential。4.5 端口转发WSL里跑服务Windows如何访问WSL 2默认用了NAT网络WSL里启动的服务比如python manage.py runserver 8000或者Vite开发服务器默认可以通过localhost从Windows侧直接访问这是微软做好的一个透明转发机制。前提是服务监听的是WSL的某个端口VS Code的Remote-WSL会自动做端口转发你在Windows浏览器里输入http://localhost:8000就能打开。这里有个反直觉的地方WSL里其实有两个IP一个是WSL自己的NAT内网IP一个是Windows侧的。你帮别人部署时别人访问你的Windows IP是连不进来的因为WSL是NAT隔离的外部访问要通过Windows侧转发。好在VS Code已经帮你处理了localhost的转发日常开发够用。如果你在WSL里跑的服务需要绑定到其它端口、或者连接不上去排查顺序服务是否真的在监听netstat -tlnp查看。WSL镜像网络模式有没有开启前面说的networkingModemirrored开了就不存在转发问题。防火墙有没有拦截Windows Defender防火墙默认对WSL的流量是放行的但如果你装过第三方防火墙需要手动加规则。5. 深度实践WSL里搭建Python/PyTorch与GPU加速5.1 Python环境选择直接用系统Python还是要装MinicondaWSL自带的Ubuntu系统Python 3是有的但做深度学习或者多项目开发我建议装Miniconda。原因很简单conda让你把不同项目的依赖隔离还能直接管理CUDA相关的包科研领域普遍默认用它。安装步骤# 切换到你的用户目录 cd ~ # 下载Miniconda安装脚本 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh # 执行安装 bash Miniconda3-latest-Linux-x86_64.sh安装过程中一路yes注意最后一步提示是否把conda初始化到shell选yes。装完重新打开终端应该能看到(base)前缀。创建项目环境并激活conda create -n ai python3.10 -y conda activate ai5.2 CUDA和PyTorch的GPU支持验证很多人以为WSL里不能用GPU这是误解。WSL 2原生支持GPU加速前提是Windows侧装好了最新的NVIDIA显卡驱动在Windows里装的驱动可以透传给WSLWSL里不需要再装一遍驱动。验证方法在WSL里执行nvidia-smi如果输出GPU列表说明CUDA可用。然后安装PyTorchconda install pytorch torchvision pytorch-cuda11.8 -c pytorch -c nvidia安装完验证python -c import torch; print(torch.cuda.is_available(), torch.cuda.get_device_name(0))输出True和你的显卡名称就成功了。用AMD显卡比如7900XTX的人要注意PyTorch在WSL下对AMD GPU的支持走ROCm路线安装方式和NVIDIA不完全一样网上搜“7900xtx pytorch wsl”有专门的教程核心要点是Windows驱动要装最新版ROCm版本要和PyTorch匹配。稳定性相比NVIDIA差一些做研究可能没问题跑长时间训练还是建议N卡或云GPU。5.3 踩过的一个坑命令行能跑VS Code里import失败有段时间我在WSL里跑PyTorch一切正常但在VSCode里运行却提示ModuleNotFoundError: No module named torch。排查后发现原因很蠢VSCode选择了解释器的时候选到了系统的/usr/bin/python3而不是conda环境里的Python。VS Code的Python扩展默认会扫描WSL里的所有解释器但有时候它缓存了旧的列表。解决办法在VS Code里CtrlShiftP输入“Python: Clear Cache and Reload Window”再重新“Python: Select Interpreter”。选完后在终端里看VS Code启动的终端应该带着(ai)前缀。一句话总结VSCode里跑Python百分之八十的依赖问题都出在解释器选错。顺便说一句用Claude Code这类本地化AI编程工具时同样会遇到解释器环境问题。我在WSL里跑Claude Code时工具会自己管理Node.js和Python环境反而比Windows下干净。如果你专门为了这类工具去折腾WSL先确认Node.js版本node -v不到18的版本先升级。6. 高频问题速查表与冷门技巧6.1 速查表我帮你把常见报错都整理好了这里把我遇到过、以及网上高频出现的报错整理成一张速查表建议收藏备用症状原因处理方式wsl: 检测到 localhost 代理配置但未镜像到 WSLNAT网络模式不会同步代理设置在.wslconfig里设置networkingModemirrored重启WSLWSL/installdistro/service/registerdistro/createvm/hcs/error_file_vHCS服务未启动或虚拟化被关闭启动Hyper-V Host Compute Servicebcdedit开hypervisorlaunchtypewsl needs updatingWSL组件版本太旧执行wsl --update或在Microsoft Store更新WSL安装/下载卡住网络到微软服务器不稳定手动下载appx包本地安装或用wsl --export/--import迁移code: command not foundVS Code没添加PATH或没装Remote扩展修复安装勾选“添加到PATH”装Remote-WSLVSCode里import失败解释器选错重新选择WSL里的conda解释器清理缓存WSL里curl/apt超时DNS或代理问题检查/etc/resolv.conf或开启镜像网络磁盘空间被WSL占满vhdx文件只增不减用wsl --shutdown后执行Optimize-VHD或diskpart压缩找不到操作系统项或蓝屏回退Hyper-V内核未加载执行bcdedit /set hypervisorlaunchtype auto6.2 几个实战频率很高的冷门技巧忘记WSL密码wsl -d Ubuntu-22.04 -u root以root进系统然后passwd 用户名重置。在Windows的命令行磁盘里直接访问WSL文件notepad \\wsl$\Ubuntu-22.04\home\dev\test.txt。反过来在WSL里访问Windows文件/mnt/c/Users/你的用户名/Desktop。这个互通机制非常好用我经常在WSL里直接用cp /mnt/d/xxx.iso ./把Windows下载的文件拿进来。WSL关机和重启wsl --shutdown关掉整个WSL不包括发行版单独重启某个发行版wsl -t Ubuntu-22.04之后再wsl -d Ubuntu-22.04。设置默认用户修改/etc/wsl.conf的[user] defaultxxx或者Windows侧执行wsl -d Ubuntu -u 用户名进入后用它初始化。备份整个WSL系统wsl --export加wsl --import我已经不记得用这招迁移过多少次系统了换电脑、重装系统都不怕。WSL里装GUI程序sudo apt install geditWSLg在Win11上会自动给你开个窗口Win10老版本需要额外配置X Server。日常开发一般用不到知道有这回事就行。查看WSL里的线程和内存占用Windows任务管理器里勾选“WSL”相关列你会发现每个WSL进程都带着后缀显示。控制WSL内存上限.wslconfig里配置[wsl2] memory8GB可以限定WSL最大占用内存防止大任务把Windows整个拖垮。这是做深度学习时保Windows流畅的重要设置。后记这套组合我是怎么持续用的配置WSL并在VSCode里打开这件事第一次做永远是最费劲的。装完以后日常使用基本就是两条路在Windows终端里敲wsl进Linux或者在VS Code里点一下绿色图标连进去。两个入口殊途同归不会打架。我个人的习惯是写代码用VS Code的Remote-WSL打开项目跑命令用Windows Terminal切到Ubuntu的tab调试用VS Code里的终端。这样一来Windows上做Office、聊天、浏览网页Linux环境跑代码、跑训练、搞CTF老死不相往来的两个世界变成一家人。最后分享一个这些年反复用到的经验如果你帮别人配置WSL别盯着他敲命令先把.wslconfig文件建好——镜像网络开启、内存限制合理设置、swap适度然后再谈安装发行版。基础网络和资源隔离先解决后面遇到的坑直接少一半。至于有人纠结“WSL算不算真正的Linux”我的看法是打死结的从来不是环境而是需求和工具的匹配度。WSL就是恰好卡在Windows用户需要Linux环境这个夹缝里的最佳答案它不完美但足够好。如果你在照着这篇文章折腾的过程中遇到了我没提到的报错多看一眼报错信息的链路——WSL的报错设计虽然看起来吓人但核心往往藏在/后面的最后一个字段里那个才是真正要解决的问题。
返回列表