
这两天我几乎把 Windows 上能踩的 WSL 坑全部踩了一遍。从wsl --install一直卡住到wsl --update下载慢到怀疑人生再到装好 Ubuntu 之后启动直接报error_file_not_found中间还穿插了磁盘空间释放、CUDA 装不上、Docker 起不来……如果你也正在搜索“wsl 安装教程”或者“wsl 安装步骤”那这篇自学生活日记应该能帮你少走不少弯路。先说结论WSL 不是玄学它就是 Windows 上跑 Linux 的官方方案适合那些不打算彻底抛弃 Windows、又需要 Linux 环境写代码、做嵌入式分析、跑机器学习或者编译项目的自学者。下面所有内容都是我这两天真实折腾出来的经验包括命令、报错、排错思路和最终能用的方案你可以直接照着抄。1. 为什么自学者绕不开WSL1.1 WSL到底是什么和虚拟机有什么不一样WSL 的全称是 Windows Subsystem for Linux中文一般叫“适用于 Linux 的 Windows 子系统”。它从 WSL 1 的翻译层方案一路升级到 WSL 2 的轻量虚拟机方案本质上是用 Windows 的虚拟化平台跑一个真正的 Linux 内核再在这个内核上跑 Ubuntu、Debian、Kali 这类发行版。很多新手搞不清楚它和 VMware、VirtualBox 里的虚拟机有什么区别。我打个比方虚拟机是在 Windows 里再虚拟出一台完整电脑开机、关机、占内存、占显存、装驱动样样都来而 WSL 2 更像是一个和 Windows 共享文件系统、共享端口、共享剪贴板的“嵌入式” Linux它不需要完整桌面也不需要在里面看视频刷网页就是用来跑命令行工具的。两者最核心的区别有这么几点启动速度虚拟机冷启动动辄几十秒WSL 在终端里敲一条命令基本秒开。资源占用虚拟机一开就吃掉固定的内存和 CPUWSL 按需占用不跑任务时占用很低。文件互通WSL 可以直接访问 Windows 的盘符Windows 也可以直接编辑 WSL 里的文件开发体验顺畅很多。GPU 支持WSL 2 配合新版 Windows 可以直通 NVIDIA 显卡跑 CUDA、PyTorch 都没问题这一点在自学者这里特别重要。系统集成WSL 里的 Linux 环境可以直接调用 Windows 下的 VSCode、浏览器、字体等资源体验非常顺手。WSL 1 现在基本不用太关注除非你的电脑实在开不了虚拟化。新装环境默认认准 WSL 2遇到老旧教程里的wsl --set-version 1之类的命令看清楚再操作别把环境降到 WSL 1不然很多功能都会受限制。1.2 哪些人适合把WSL当主力环境我在折腾这两天之前一直纠结要不要直接上双系统或者云服务器。最后选择 WSL是因为我的使用场景很典型学 Linux 命令和服务器运维用 WSL 可以随便折腾/etc配置、systemctl服务、Docker 容器弄崩了直接重装不影响 Windows 主系统。写代码VSCode 对 WSL 的支持非常顺打开 WSL 里的项目终端、调试器、代码补全全部无缝衔接体感接近在原生 Linux 上开发。跑嵌入式工具链比如binwalk分析固件、qemu模拟系统、gcc交叉编译这些Windows 原生命令行做起来非常痛苦WSL 里一条apt install就能解决。学机器学习NVIDIA 显卡用户在 WSL 2 里可以直接跑 CUDA不需要为了跑一小段代码专门装双系统这对新手特别友好。不想反复重启电脑双系统切换一次至少五分钟WSL 开一个终端就行省下来的时间都够多做两道编程题了。当然WSL 也不是万能的。如果你需要折腾 Linux 桌面环境、需要完整 USB 设备直通比如usbipd之外的串口调试、或者要跑对内核模块有特殊要求的系统那还是老老实实上虚拟机或真机。自学者要先判断自己到底要干到什么程度不然很容易像我一样花两天时间跟它死磕。2. 安装篇从wsl --install到离线安装全记录2.1 安装前的系统自查wsl --install这个命令在 Win10 2004 以上和 Win11 上都能用但如果系统版本太老或者虚拟化没开后面会出各种奇怪问题。所以第一步别急着敲命令先自查三件事。第一系统版本。按WinR输入winver查看。Win10 至少要 19041 版本以上Win11 基本都能用。版本太旧的话先把 Windows Update 更新到最新不然会遇到wsl needs updating这类提示。第二虚拟化是否开启。打开任务管理器切到“性能”选项卡看 CPU 那一栏下面有没有“虚拟化已启用”。如果显示“已禁用”需要进 BIOS/UEFI 打开 Intel VT-x 或 AMD SVM这个不改的话WSL 2 根本起不来卡老半天最后给你一个奇奇怪怪的虚拟化错误。第三Windows 功能是否完整。以管理员身份打开 PowerShell执行下面两行命令dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart执行完重启一次把“适用于 Linux 的 Windows 子系统”和“虚拟机平台”两个功能都打开。很多新手只装了子系统没开虚拟机平台结果 WSL 2 一直启动失败就是这个原因。2.2 标准安装一条命令起步在确认系统准备就绪后管理员 PowerShell 里执行wsl --install这个命令会自动安装 WSL 核心组件并把默认的 Ubuntu 发行版也拉下来。如果一切顺利终端会提示让你重启电脑重启后会自动进入 Ubuntu 的初始化界面设置用户名和密码就行。如果你想指定别的发行版比如 Ubuntu 24.04可以直接写发行版名wsl --install -d Ubuntu-24.04用wsl --list --online可以查看当前能装的发行版列表。注意这个列表默认会走微软的服务器网络不通的时候经常会超时所以我下面的坑基本都是在这个环节踩出来的。装好之后查看当前 WSL 状态wsl --list --verbose输出里会看到发行版的名字以及VERSION列是 1 还是 2。如果显示是 1说明默认版本没设置成 2需要手动指定wsl --set-default-version 2 wsl --set-version Ubuntu-24.04 2--set-default-version 2是让以后新装的发行版默认用 WSL 2--set-version是把现有发行版迁移到 WSL 2。迁移过程会花几分钟中途别关终端。2.3 wsl --install 太慢、403、超时的破解思路我遇到第一个大坑就是wsl --install太慢明明网速正常进度条就是不走。后来发现wsl --install会去微软服务器拉取发行版包国内网络环境经常不稳定于是各路网友给出了不同解法我亲自试下来这几种比较靠谱。加--web-download参数新版本 WSL 支持从 Web 下载安装包命令是wsl --install -d Ubuntu-24.04 --web-download有时候能避开某些奇怪的商店通道问题。从 Microsoft Store 手动安装打开应用商店直接搜 Linux 发行版比如 Ubuntu 24.04点“获取”安装。这种方式下载速度通常还可以而且能避开 PowerShell 的下载问题。检查组织策略和权限如果你在公司电脑或学校电脑上操作wsl --install可能会直接提示“已禁止(403)”。这种多半是网络出口或组策略把微软下载通道限制了换个普通家庭网络或者直接走离线安装。先把 WSL 组件更新到新版wsl --update下载很慢的时候试试wsl --update --web-download这会强制走 Web 通道而不是 Store 通道。如果还是慢就去微软或 GitHub 的官方 Release 页面手动下载 WSL 的 MSI 安装包。以上方法我试下来最稳定的还是“Store 搜索发行版 手动下载 WSL MSI”。尽量别用那种奇怪的第三方搞机工具容易把系统功能装坏。2.4 离线安装Ubuntu发行版如果说上面那些是绕路那离线安装就是保底方案。适合以下情况wsl --install一直 403 或连接超时。网络环境根本下载不了微软商店内容。想指定一个特定版本比如 Ubuntu 20.04 或 22.04又不想慢慢等。离线装 WSL 发行版有两种常用做法。第一种是下载.msixbundle或.appx包然后双击或用 PowerShell 安装。这类包可以在微软商店网页版或者其他可信渠道下载下载后在 PowerShell 里执行Add-AppxPackage .\Ubuntu24.04.appx装完就能在开始菜单里看到 Ubuntu 图标第一次启动会自己完成初始化。这个方法最像在线安装但需要能下载到对应安装包。第二种是用wsl --import导入 rootfs 镜像这个方法更通用也适合把 WSL 系统迁移到别的机器。基本流程是准备一个 Ubuntu 的 rootfs tar 包然后mkdir D:\WSL\Ubuntu24 wsl --import Ubuntu-24.04 D:\WSL\Ubuntu24 D:\download\ubuntu-24.04-rootfs.tar.gz --version 2 wsl -d Ubuntu-24.04需要注意用--import导入的发行版默认是root用户没有普通用户。进去之后要手动创建一个用户并设置默认用户否则后面用 VSCode 连接时权限各种别扭。useradd -m -s /bin/bash yourname passwd yourname再在/etc/wsl.conf里配置默认用户[user] defaultyourname然后重启 WSL 生效。2.5 让WSL2成为默认版本很多人装完发现系统是 WSL 1性能差一截Docker 也跑不了。我建议装好后立刻把默认版本固定成 WSL 2。先检查内核有没有更新到最新有时候 WSL 2 启动失败就是因为老内核没更新wsl --update然后把默认版本设为 2wsl --set-default-version 2如果以后还想管理多个发行版这几个命令建议记下来wsl --list --online # 查看可用发行版 wsl --list --verbose # 查看已安装发行版及其状态 wsl --set-default Ubuntu-24.04 # 设置默认发行版 wsl --shutdown # 彻底关闭WSLwsl --shutdown很有用后面清磁盘、改网络配置、重置 WSL 服务都会用到。有时候 WSL 莫名其妙连不上先把所有发行版关掉再重新开能解决一半问题。3. 开发体验VSCode里的WSL和接近macOS的字体方案3.1 在VSCode中使用WSL的正确姿势WSL 装好之后千万别在 Windows 里直接打开某个文件然后强迫 VSCode 去解析 Linux 路径那样会让你怀疑人生。正确做法是在 WSL 终端里用code .打开当前目录。首先确保 Windows 侧已经安装好 VSCode然后到扩展市场搜索“WSL”安装微软官方的 WSL 扩展。装好之后进入 WSL 终端随便进一个目录敲code .VSCode 会自动启动并识别出当前是在 WSL 环境里左下角会显示类似“WSL: Ubuntu-24.04”的状态。这时候你在 VSCode 里开终端、打开文件、跑调试器全都是基于 Linux 环境的。如果code .提示找不到命令说明 VSCode 没有把code命令注入到 PATH 里。可以回到 Windows 的 VSCode 里按CtrlShiftP执行“Shell Command: Install ‘code’ command in PATH”然后再回 WSL 试一次。这一步我踩过最深的坑是直接在 Windows 侧用 VSCode 打开 WSL 的文件比如\\wsl$\Ubuntu-24.04\home\...。这种方式偶尔写写配置还行但你要是拿来跑构建、跑 Python 虚拟环境路径转换会慢到让人崩溃。正确做法永远是先cd到项目目录再code .。3.2 接近macOS体验的字体推荐搜索热词里有一条“wsl ubuntu写代码最推荐的字体接近macos的体验”我折腾完深深理解这句话。因为 WSL 默认终端字体在 Windows 下显示中文、符号时很丑代码缩进和箭头符号都错位写起来完全没有 macOS 上那种清爽感。想让 WSL 接近 macOS 的观感主要是两步一是终端字体换成适合代码的等宽字体二是给 shell 配一套好看的主题和提示符。字体方面我比较推荐这三款字体特点适合场景Cascadia CodeWindows Terminal 自带微软的等宽字体连字效果自然不想折腾直接用系统自带JetBrains Mono久看不累字符辨识度高写代码、日常终端使用MesloLGS NF带 Nerd Font 图标配 Powerlevel10k 用折腾 Zsh 美化想接近 macOS 风格如果追求硅谷程序员那种“一眼很像 macOS”的效果通常不是用苹方或者 SF Mono因为版权和跨平台问题Windows 上装起来特别麻烦。更实际的做法是装一款 Nerd Font比如JetBrainsMono Nerd Font它能显示各种图标字符配 Zsh 的提示符非常好看。安装字体后打开 Windows TerminalWin11 自带Win10 可以从商店装一个按Ctrl,打开设置找到对应配置文件的“外观”把字体改成你刚装的字体。如果你习惯直接改 JSON可以在profiles.defaults里加{ profiles: { defaults: { font: { face: JetBrainsMono Nerd Font, size: 12 } } } }改完重新打开标签终端里的箭头、分支图标、文件夹图标都会正常显示整体质感立刻上一个台阶。3.3 终端美化与日常使用细节字体只是第一步想让 WSL 终端彻底好看起来还得折腾 shell。我实测下来最接近 macOS 体验的方案是 Zsh Oh My Zsh Powerlevel10k 主题但新手可以先从 Bash 开始别一上来就全上不然排错难度太大。装 Zshsudo apt update sudo apt install -y zsh git curl chsh -s $(which zsh)安装 Oh My Zshsh -c $(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)再装 Powerlevel10kgit clone --depth1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k然后编辑~/.zshrc把主题改成ZSH_THEMEpowerlevel10k/powerlevel10k重启终端它会自动进入配置向导选你喜欢的样式即可。整个过程视觉反馈很强很像网上那些 macOS 终端的截图。日常使用还要注意一个小问题WSL 和 Windows 共享环境变量。默认情况下 WSL 会把 Windows 的 PATH 也拼进来这会导致在 WSL 里执行python时搞不清到底用的是 Windows 的 Python 还是 Linux 的 Python。如果你只在 Linux 环境里开发可以在/etc/wsl.conf里加[interop] appendWindowsPath false加完重启 WSL。这样终端更干净也避免以后装 CUDA、Docker 时出现路径混乱。4. 进阶折腾CUDA、Docker、QEMU、binwalk都能在WSL里跑4.1 WSL2安装CUDA很多自学者想在 Windows 上跑深度学习又不想装双系统WSL 2 的 GPU 直通功能基本就能满足。前提条件很明确显卡是 NVIDIA。Windows 侧已经装了比较新的 NVIDIA 显卡驱动。Windows 侧驱动装好后WSL 里不需要再单独装显卡驱动因为 WSL 会复用 Windows 的驱动。你可以先在 WSL 里跑一下nvidia-smi如果能看到显卡信息说明 GPU 已经通了。看不到就先去 Windows 更新驱动。接下来装 CUDA Toolkit去 NVIDIA 官方下载 WSL-Ubuntu 的安装源大致流程是下载 keyring 包并安装wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb sudo dpkg -i cuda-keyring_1.1-1_all.deb sudo apt update sudo apt -y install cuda装完后把 CUDA 的 bin 目录加到 PATHecho export PATH/usr/local/cuda/bin:$PATH ~/.bashrc echo export LD_LIBRARY_PATH/usr/local/cuda/lib64:$LD_LIBRARY_PATH ~/.bashrc source ~/.bashrc然后验证nvcc --version如果显示的版本号正常说明 CUDA 已经可用了。整个过程最大的坑是“Windows 驱动太旧”WSL 里即使把 Toolkit 装得再漂亮旧驱动也带不动所以一定先保证 Windows 侧驱动最新。还有一个自学者容易忽略的点WSL 里默认没有 systemd有些 CUDA 相关服务或者 Docker 服务需要 systemd 才顺畅。新版 WSL 可以通过/etc/wsl.conf开启 systemd[boot] systemdtrue改完重启 WSL服务管理体验会正常很多。4.2 WSL安装DockerDocker Desktop与docker-ce怎么选在 WSL 里装 Docker有两种主流路线我分别试过说下真实感受。第一种是用 Docker Desktop。它自带 WSL 2 后端安装后在 Settings 里开启“Use the WSL 2 based engine”再在 Resources 里选择要集成的发行版。好处是界面直观容器日志、镜像管理、资源监控都有面板新手不容易懵。坏处是它本质上还是在 Windows 侧跑的 Docker内存占用偏高有时候 WSL 里的docker命令和 Windows 侧的命令会搞混。第二种是在 WSL 里直接装 docker-ce 或 docker.io完全不依赖 Docker Desktop。这种方式更贴近真实服务器环境以后上云迁移也更自然。安装命令sudo apt update sudo apt install -y docker.io sudo service docker start sudo usermod -aG docker $USER重开终端后docker ps应该能正常跑起来。如果没有 systemd每次开机后都需要手动sudo service docker start这也是很多人“明明装了 Docker 却启动不了”的原因。如果你用的是新版 WSL并且开了 systemd直接sudo systemctl enable docker sudo systemctl start docker就不会有这种问题了。选择困难症的结论如果你想长线用 Docker 学运维直接在 WSL 里装 docker-ce如果你只是偶尔想拉个镜像跑一下环境Docker Desktop 更方便。4.3 WSL安装QEMUQEMU 是个全能模拟器WSL 里装它用来做什么呢最常见的是跑其他架构的系统镜像比如在 x86 机器上模拟 ARM 环境或者直接启动某个 Raspberry Pi 的镜像。安装很方便sudo apt update sudo apt install -y qemu-system-x86 qemu-utils如果是 ARM 的模拟器再装对应的包sudo apt install -y qemu-system-arm qemu-user-static简单场景下可以用 qemu 创建一块虚拟磁盘并格式化qemu-img create -f qcow2 disk.img 10G qemu-system-x86_64 -m 2048 -hda disk.img我实际用下来WSL 里跑 QEMU 比在 Windows 原生跑更顺因为网络、权限、文件系统都是 Linux 的操作起来非常自然。不过要注意WSL 2 本身是虚拟机在里面再跑 QEMU 属于“嵌套虚拟化”性能会有损耗如果真要跑大型虚拟机还是建议直接用 Oracle VirtualBox 或 VMware。4.4 WSL使用binwalk分析固件如果你是搞嵌入式或者安全方向的自学者binwalk 这个名字一定不陌生。它是固件分析利器能扫描固件里的文件系统、压缩包、可执行文件。在 Windows 上想跑 binwalk 非常折腾但在 WSL 里就是一条命令的事sudo apt install -y binwalk用法也简单先看固件里有啥binwalk firmware.bin如果想直接提取出里面的内容binwalk -e firmware.bin它会自动识别固件里嵌着的文件系统并提取到_firmware.bin.extracted目录里。需要注意的是分析固件前最好先把固件复制到 WSL 的文件系统里别放在/mnt/c下直接操作否则交叉访问 Windows 文件系统时提取大量小文件会慢到让你怀疑是不是卡死了。4.5 其他编译项目ijkplayer、ROS这类实例WSL 最大的价值之一就是能跑那些“默认只支持 Linux”的编译流程。我看到热词里有人搜“wsl下编译ijkplayer”正好我也顺手试过类似的多媒体项目。编译 ijkplayer 这类项目第一步基本都是装依赖sudo apt install -y build-essential git nasm yasm然后按项目文档拉代码、跑脚本即可。整个过程比在 Windows 原生装 MinGW 要顺畅太多基本不会遇到“缺少这个头文件”“找不到那个 Makefile”的玄学问题。ROS 也是同理。很多自学者想学机器人系统Windows 下根本没法直接装 ROS。用 WSL 跑一个 Ubuntu 发行版再按 Ubuntu 的 ROS 安装教程操作能省下一大堆虚拟机配置的功夫。网上那些“Windows 安装 Ubuntu ROS 全流程”的教程很多就是基于 WSL 写的跟着照做就行。5. 空间管理删除文件后WSL空间没释放怎么办5.1 先确认是不是真的没释放WSL 用户迟早会遇到一个问题我在 Ubuntu 里删掉了一堆日志、Docker 镜像、编译缓存但 Windows 的磁盘空间一点都没多出来。更夸张的是.vhdx文件越来越大甚至把 C 盘挤爆。先说原因。WSL 2 发行版其实存在于一个虚拟磁盘文件里比如C:\Users\你的用户名\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu24.04LTS_...\LocalState\ext4.vhdx这个磁盘文件是动态增长的你往 Linux 里写多少东西这个文件就会膨胀到对应大小。就算你在 Linux 里删了文件Windows 只会看到“这个 vhdx 文件曾经很大”并不会自动收缩所以空间就白白占着。想确认是不是 vhdx 太大先用 PowerShell 看一下文件大小wsl --shutdown Get-ChildItem $env:LOCALAPPDATA\Packages -Filter ext4.vhdx -Recurse | Select-Object FullName, Length找到这个文件后先别手贱直接删除。它是整个 Ubuntu 的数据盘删了等于系统全没了。5.2 磁盘膨胀的水下真相空间不释放还有一种更隐蔽的情况你在 WSL 里确实删了文件但是有进程还在占用。最常见的就是 Docker 容器或者正在运行的 Python 进程它们让文件处于“已删除但未释放”的状态。在 WSL 里检查df -h /如果使用率已经被你清理到很低但 Windows 磁盘空间还是没变那基本就是 vhdx 没收缩。如果df -h显示使用率依然很高说明你还有东西没删可以再往下查sudo du -x -d 1 -h / | sort -h这个命令能看到根目录下一级目录的大小。Docker 用户一定要检查/var/lib/docker我自己就碰过删了一堆容器镜像缓存还占着几十 GB 的情况。5.3 两种可靠的空间回收方案清理完 Linux 内部文件后再用下面两种方法把 vhdx 瘦身。第一种是 WSL 2 自带的稀疏镜像功能。新版 WSL 支持让 vhdx 自动释放空闲空间wsl --shutdown wsl --manage Ubuntu-24.04 --set-sparse true执行成功后系统会尽量把未使用的块标记为稀疏Windows 会看到“文件实际占用空间变小”。这个命令只需要跑一次以后 WSL 会自动管理。但老版本 WSL 可能不支持运行报错就换下一种。第二种是“导出再导入”这也是我实测最稳妥的办法。原理是把整个发行版导出成一个 tar 备份然后注销原发行版再用新位置导入整个过程相当于给磁盘做了一次彻底整理。wsl --shutdown wsl --export Ubuntu-24.04 D:\WSL\ubuntu-backup.tar wsl --unregister Ubuntu-24.04 wsl --import Ubuntu-24.04 D:\WSL\Ubuntu24 D:\WSL\ubuntu-backup.tar --version 2注意wsl --unregister会删除原发行版所有数据所以导出文件一定要确认存在且大小合理后再执行。导入完成后启动 WSL再看看 Windows 的剩余空间通常会找回好几个 GB。如果系统中安装了 Hyper-V 管理工具还可以用 PowerShell 的Optimize-VHD命令直接压缩 vhdxOptimize-VHD -Path C:\Users\你的用户名\AppData\Local\Packages\...\ext4.vhdx -Mode Full这个方法更直接但需要虚拟化平台管理模块普通家庭版系统可能没有选择自己可用的即可。6. 高频报错与排查速查表6.1 wsl --install 已禁止(403) 以及 wsl --list --online 连接超时这两个问题本质上是下载通道被限制或者网络不通。如果 PowerShell 里敲wsl --install直接报“已禁止(403)”别反复重试基本没戏直接换思路从 Microsoft Store 里搜 Ubuntu 并安装。使用wsl --install -d Ubuntu-24.04 --web-download尝试切换下载通道。找一台网络环境正常的电脑下载发行版的 .appx 或 rootfs 包再走离线安装。wsl --list --online连接超时也是类似思路网络恢复前不用纠结因为即使列表出来了你也很难从当前网络把安装包拉下来。离线安装是最后的保底方案我把详细步骤放在第 2.4 节了。6.2 wsl --update 下载很慢新版 WSL 的更新包默认走 Microsoft Store而 Store 通道在某些网络下很慢。解决办法是先试wsl --update --web-download如果依然很慢就去官方 Release 页面下载 WSL 的 MSI 安装包手动安装。装完再wsl --version看一下版本号是否更新。这里有个区别wsl --update更新的是“WSL 运行时”不是某个发行版系统发行版系统更新要在 Ubuntu 内部用apt update和apt upgrade。6.3 WSL needs updating... Your version of WSL is too old开 WSL 时报“wsl needs updating Your version of Windows Subsystem For Linux (WSL) is too oldplease update to latest version”原因很明确WSL 运行时版本太旧内核和功能不支持当前发行版。最简单的方法是先手动更新wsl --update如果更新也走不动按上面的 Web 下载方式或者装 MSI。还有一部分情况是 Windows 系统的商店应用更新被禁用导致 WSL 长期不更新。可以检查“开始菜单里的 Microsoft Store”应用更新或者把 WSL 应用商店版本升级到从 GitHub 下载的最新包。6.4 错误代码 wsl/service/createinstance/createvm/hcs/error_file_not_found这个报错我第一次见时整个人都懵了后面查了才发现大概率跟“虚拟化平台功能异常”或“WSL 运行时文件损坏”有关。按下面的顺序排查先重启电脑有时候只是虚拟机平台的临时状态问题。检查 Windows 功能“虚拟机平台”是否勾选。没勾就补上并重启。管理员 PowerShell 执行wsl --shutdown再重新启动发行版。更新 WSL 到最新版本。如果还不行查看虚拟化是否被 BIOS 关闭。开不了虚拟化的机器想直接用 WSL 2 基本无解只能退回 WSL 1 或者用真机。还有极小概率是 Windows 更新后 Hypervisor 启动类型被改乱了。管理员 PowerShell 里执行bcdedit /set hypervisorlaunchtype auto然后重启。这命令会打开 Hypervisor 自动启动WSL 2 依赖它。注意执行前确认你的系统没有其他特殊引导配置。6.5 计算机无法连接到远程计算机这个提示在 WSL 相关场景里出现过几次。如果是在 Windows Terminal 或 IDE 里连 WSL 时报的多半是 WSL 后台服务卡死了。管理员 PowerShell 里执行wsl --shutdown net start LxssManagerLxssManager是 WSL 的核心服务有时候它状态异常会导致所有发行版都连不上。重启后再执行wsl --list --verbose看看状态。如果服务无法启动检查 Windows 时间和系统文件是否正常必要时运行sfc /scannow这个扫一遍系统文件能修掉一部分隐藏的组件损坏问题。6.6 卸载干净并重装折腾到最后有时候所有排查手段都试过了还是不行那就干脆卸载重装。关键在于“卸干净”不然残留配置还会影响新环境。先把所有发行版列表看清楚wsl --list --all然后逐个注销wsl --unregister Ubuntu-24.04--unregister会删除该发行版的整个虚拟磁盘数据不可恢复操作前一定备份。全部注销后再卸载 WSL 运行时wsl --shutdown wsl --uninstall如果用了 Microsoft Store 版本的 WSL还要去应用设置里卸载 WSL 应用。最后检查%LOCALAPPDATA%\Packages里是否还有 Ubuntu 相关的残留目录有需要的话手动删除。重装后建议先用wsl --update把运行时升到最新再安装发行版。我个人的习惯是重装前先把/etc/wsl.conf的配置备份出来比如 systemd 开关、网络配置免得第二次踩同样的坑。刚折腾完时我也烦躁过但冷静下来再看这些坑其实每一个都对应一个明确的“底层机制”。比如空间不释放对应的是动态虚拟磁盘403 和超时对应的是下载通道error_file_not_found对应的是虚拟化平台损坏。只要把机制搞明白下次再遇到 WSL 问题就不是一拳打在棉花上而是一眼就能定位到该修哪一层了。这大概就是自学者“死磕两天”最大的收获表面上攒了一堆命令实际上练的是排查思路。