☰
WSL2全攻略:Windows上跑Linux的安装配置与高频排错实战
2026/9/30 13:57:25 网站建设 项目流程

1. 项目概述:到底什么是Windows上的Linux子系统

以前想在Windows上跑Linux,路子也就那么几条:装双系统,重启切来切去,折腾半天还容易把引导搞坏;或者用虚拟机软件,开个VMware/VirtualBox,性能损耗先不说,光分配内存和磁盘就能让老电脑卡到怀疑人生;再或者搞个Git Bash、Cygwin这种模拟环境,但用过的都知道,很多Linux命令跑起来跟真正的Linux完全是两回事,依赖一多就崩。

Linux子系统(WSL,全称Windows Subsystem for Linux)彻底改变了这个局面。它是微软官方提供的兼容层,让你不用装虚拟机、不用改分区,直接在Windows上运行一个完整的、原生的Linux用户态环境。说白了,你可以在Windows里打开一个真正的Linux终端,用apt装软件、跑bash脚本、跑Docker、跑开发服务器,底层用的是真实的Linux内核(WSL2),而不是模拟出来的假货。

我在一线开发和运维这么多年,WSL从最早的1.0版本用到现在的2.x版本,体验变化真的非常大。早期WSL1还只是系统调用翻译层,兼容性有不少问题;到WSL2改成了轻量级虚拟机加真实Linux内核,基本做到了“能用”到“好用”的跨越。现在很多Windows开发者,尤其是做Web后端、云原生、数据工程方向的人,已经把WSL当作日常开发的主力环境。

这篇博文写给谁?第一类是刚接触开发、想在Windows上装Linux环境练手的新手,希望一步步照着做就能装好;第二类是用过WSL但中途遇到报错、装到一半卡住、或者想优化配置的老用户。我会把安装前的思路、完整安装流程、踩过的坑、以及装完之后的常用配置一次讲清楚,尽量做到看完就能上手。

2. 安装前的关键认知:WSL1和WSL2怎么选

2.1 WSL1和WSL2的本质区别

先说个最常见的困惑:WSL1和WSL2有什么区别?选哪个更好?

WSL1走的是翻译层方案,把Linux系统调用翻译成Windows系统调用,启动极快、内存开销小、和Windows文件系统互访特别方便,但它不是完整内核,遇到一些依赖底层机制的程序(比如Docker需要cgroups支持,某些内核模块加载),就会直接罢工。

WSL2走的是真实内核方案,用一个轻量级虚拟机承载完整的Linux内核,兼容性大大提高,Docker可以直接跑,绝大多数Linux软件都能装能运行。代价是启动稍慢一点、吃内存多一点,跨文件系统访问(Windows目录和Linux目录互读)性能会下降。

我的观点很直接:新用户无脑选WSL2。WSL1可以作为特殊场景下的备选方案,比如电脑太老不支持虚拟化,或者你只是偶尔跑几个Linux命令,但绝大多数开发场景,WSL2是唯一推荐选项。

2.2 硬件要求和系统版本确认

WSL2并不是所有Windows版本都能装,也不是所有电脑都能跑。先确认两件事:

第一,Windows版本。Win10 2004及以上版本、Win11全系列都原生支持WSL2。Win10早期版本(1903、1909)虽然也能装WSL,但麻烦很多,需要手动配置。如果你还在用Win10 1809这种老旧版本,建议先把系统升级了再折腾。

第二,虚拟化支持。WSL2依赖CPU虚拟化技术(Intel的VT-x或AMD的SVM)。打开任务管理器,切到“性能”标签页,看右下角“虚拟化”那栏是不是“已启用”。如果显示“已禁用”,需要进BIOS把Virturalization Technology打开,不同品牌主板路径不一样,常见的是Advanced菜单下找CPU Configuration或Virtualization字样。

顺带提一个血泪经验:如果你平时用VMware或VirtualBox,装WSL2之前最好有个心理准备。WSL2开启Hyper-V虚拟化平台之后,VMware早期版本可能会报“VMware Workstation和Device/Credential Guard不兼容”这种错。现在VMware 15.5+和VirtualBox 6.1+已经兼容了,但老版本确实会冲突,这个我在工作里遇到过不止一次。

2.3 版本选择和功能更新的前置说明

WSL本身有独立的版本号。2024年底微软把WSL做成了独立的商店应用(Windows Store版),版本号体制也变了。比如热词里提到的“适用于Linux的Windows子系统 2.7.14”,就是WSL应用仓库里的常规版本号。商店版WSL的好处是更新不再依赖系统大版本更新,微软可以独立推送新特性,bug修复也更及时。

所以如果安装时看到“正在下载: 适用于 Linux 的 Windows 子系统 2.7.14”这样的提示,不用慌,这是正常现象,说明系统正在通过网络拉取WSL组件包。下载速度取决于网络情况,有时候会卡在某一进度上,后面我会讲怎么处理。

3. 实操安装:Windows 11和Windows 10完整安装流程

3.1 Windows 11用户的标准安装步骤

Win11用户是待遇最好的,一条命令就搞定。打开“开始”菜单,输入powershell,右键搜索结果选择“以管理员身份运行”,然后执行:

wsl --install

这条命令会做四件事:启用“适用于Linux的Windows子系统”可选功能、启用“虚拟机平台”可选功能、下载并安装WSL内核、默认安装Ubuntu发行版。整个过程是自动化的,执行完后系统会提示重启,重启后继续完成Ubuntu的用户配置(设置用户名和密码)。

安装完成后验证一下是否成功,打开PowerShell或Windows Terminal,运行:

wsl -l -v

如果能列出已安装的发行版,并且VERSION列显示是2,就说明WSL2安装成功。我建议重启后马上跑一遍这个命令,确认环境正常再继续配置。

如果你登录Windows时使用的是微软账号,WSL安装Ubuntu时的默认用户名会和你的微软账号邮箱前缀一致,这一点已经有多个版本如此了。想要自定义用户名,可以在首次启动Ubuntu时手动设置。

3.2 Windows 10用户的两种安装方式

Win10用户稍微麻烦一点,但也不是太难。我用得最多的是下面这套组合命令,适合Win10 2004以上版本。

还是管理员身份打开PowerShell,执行:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

这是传统的部署映像服务和管理命令行工具,作用是启用WSL功能,第一代Linux子系统就是靠这个命令打开的。接着启用虚拟机平台功能:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

两条命令跑完之后,重启电脑。重启后再干两件事:下载并安装WSL2内核更新包,然后把WSL2设为默认版本。

WSL2内核更新包的下载地址在微软官方文档里能找到,文件名一般是wsl_update_x64.msi,安装过程就是普通的MSI安装向导,一路Next即可。装完之后运行:

wsl --set-default-version 2

这一步很关键,不执行的话,即使内核装了,默认创建出来的WSL可能还是1代版本。设置成功后,再去微软商店搜索Linux发行版,推荐装Ubuntu 22.04 LTS或者Ubuntu 24.04 LTS,点击安装,然后从开始菜单或者应用列表启动,初始化用户即可。

3.3 老版本Windows的备选方案:手动启用功能

如果你还在用Win10 1903或1909这种老版本,上面那套dism命令也能跑,但WSL2内核能不能正常装上需要打个问号。更稳妥的办法有三步:第一步,打开“控制面板 - 程序和功能 - 启用或关闭Windows功能”,勾选“适用于Linux的Windows子系统”和“虚拟机平台”;第二步,重启;第三步,安装WSL2内核更新包。

这本质上跟3.2的命令行操作是一回事,只是换了个图形界面入口。我之所以更推荐命令行方式,是因为后面排查问题时命令执行结果更明确,图形界面勾选经常一键很难发现哪里没配置好。

还有一种特殊场景:Windows Server系统。服务器版默认不带商店组件,WSL安装过程也略有差异,需要先确认是否装了Desktop Experience,没装的话商店应用没法跑,只能走命令行的完整流程。日常使用中,如果你不是必须要在服务器上跑WSL,我建议直接用Hyper-V虚拟机更符合服务器运维的习惯。

3.4 查看是否安装成功和异常定位

安装完之后,怎么确认Linux子系统真的可用了?我一般按顺序执行三个命令:

wsl --status wsl -l -v wsl --version

第一个命令显示WSL的全局状态,比如默认版本是几;第二个命令列出所有已安装的发行版以及它们各自的WSL版本;第三个命令显示WSL自身组件的版本号,微软在2022年之后把WSL做成了独立的商店应用形态,这个版本号就能告诉你用的是不是最新版。

还有一个从Windows侧验证的简单方法:打开“设置 - 应用 - 可选功能”,看一下“适用于Linux的Windows子系统”是否在已安装列表里。不过这个列表的显示更新有延迟,刚装完没看到不代表失败,最靠谱的还是上面三条命令。

4. 高频踩坑实录:常见报错与排查方法

4.1 “此应用程序需要适用于Linux的Windows子系统可选组件”

这是热词里出现频率很高的一个报错。实际场景一般是:你下载了一个Linux发行版安装包,或者别人给你发了个基于WSL封装的工具安装程序,双击运行时报错,提示“此应用程序需要适用于 Linux 的 Windows 子系统可选组件。通过运行 wsl.exe --install 进行安装”。

这个问题的根源在于系统检测到了你正在执行的操作依赖WSL功能,但当前系统没有启用WSL,或者只启用了一部分(比如只启用了舊版WSL功能,没启用虚拟机平台)。

正确做法:

wsl --install

然后重启。重启后再跑一次出问题的安装程序。如果还是报同样的错误,检查一下是否以管理员身份运行。如果二进制本身是商店独占的发行版安装包(也就是从微软商店手动下载的appx),那还需要确认商店的下载和更新服务正常,这个比较少见,但我也遇到过商店缓存坏了导致所有商店应用都装不了的情况,处理办法是重置商店缓存:

wsreset.exe

这个命令会弹出来一个黑色窗口,紧接着自动打开商店界面,属于无界面命令,执行完等下再试装发行版即可。

4.2 WSL2开机后提示“无法启动这个硬件设备”

有用户反馈,在安装了虚拟机平台功能后,设备管理器里可能看到一个带黄色感叹号的设备,错误信息是“由于其配置信息(注册表中的)不完整或已损坏或代码 19”。这个通常是Windows虚拟化相关的驱动状态出问题导致的。

WSL官方文档对这个并没有很系统的排障指引,我的实操经验是先查看“启用或关闭Windows功能”里“虚拟机平台”是否被正常勾选,如果勾选状态正常,再执行:

dism.exe /online /cleanup-image /restorehealth

这是把Windows组件存储做个修复体检,能修复一部分系统文件损坏导致的功能异常。跑完之后重启。如果还是不行,尝试重新禁用再启用“虚拟机平台”功能,相当于给虚拟化组件一次重置机会。

还有一种类似错误是“Windows 无法验证此设备所需的驱动程序的数字签名”,这个更多出现在Win10系统自动更新驱动后,WSL被波及。可以去设备管理器里找到异常设备,右键“卸载设备”,勾选“删除此设备的驱动程序软件”,然后让Windows重新扫描硬件改动,一般就能恢复。

4.3 “WSL 2需要更新内核”或报错0x8007019e

这条错误常出现在设置默认版本为2之后,或者直接跑wsl命令时。提示信息类似:“WSL 2 需要更新其内核组件。有关信息,请访问 https://aka.ms/wsl2kernel”。

原因很简单:WSL2没有安装对应的Linux内核。解决方案就是在Microsoft官网下载并安装WSL2内核更新包(x64 MSI),装完重启终端。这个步骤容易被新手跳过,因为wsl --install在Win11上是自动下载的,但Win10手动启用的用户很可能漏了这一步。

4.4 报错0x80370102或提示虚拟化未开启

这是另一个高频错误。当你运行wsl或者启动发行版时,系统直接提示“无法启动操作,因为虚拟化已被禁用”。

处理思路有两条线。一是去BIOS确认CPU虚拟化开启了没,这个前面说过;二是确认Windows侧“虚拟机平台”功能确实启用了。很多时候BIOS里开了虚拟化,但Windows功能没启用,一样会报这个错。执行:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

然后重启。

还有一个容易被忽略的点:某些杀毒软件或安全软件会拦截Hyper-V相关的系统调用,导致WSL2无法启动。我在帮同事排查的时候发现,他电脑上装了某国产安全卫士,里面有一项“虚拟化防护”功能,默认开启,把WSL直接干掉了。排查方法很简单,临时退出安全软件,再跑wsl命令,如果正常了,就去安全软件的设置里把虚拟化相关防护关掉,然后给WSL加白名单。

4.5 安装过程卡在“正在下载”或进度条不动

安装WSL时卡在“正在下载: 适用于 Linux 的 Windows 子系统 2.7.14”是很多人的噩梦,尤其网络环境一般的时候。这个时候要冷静分析卡在哪一步。如果是wsl --install阶段卡住,多半是组件下载连不上微软服务器,建议先断开再重连网络,然后重新执行:

wsl --update

如果wsl --update长时间无反应,也可以手动下载WSL的MSI安装包,安装商店版WSL。用管理员终端跑完安装后,再执行wsl --install -d Ubuntu 安装发行版。

如果是首次启动Ubuntu时卡在解压文件阶段,检查一下磁盘剩余空间,C盘至少要有8GB可用空间,推荐留20GB以上。WSL的虚拟磁盘文件默认放在C盘用户目录下,C盘满了会导致创建虚拟磁盘失败,卡在99%或者直接报错。

4.6 安装后Docker等工具无法识别WSL

这个问题的核心在于Docker Desktop和WSL2的衔接。装完WSL并安装Ubuntu后,直接装Docker Desktop,如果Docker Desktop的设置里没有勾选“Use the WSL 2 based engine”,或者没有在WSL里启用对应的发行版集成,Docker会报错找不到Linux引擎。

正确的做法是先确认WSL2默认版本已设为2,然后安装Docker Desktop,安装过程中如果提示启用WSL2相关功能,一律同意。安装完打开Docker Desktop,进入Settings - Resources - WSL Integration,把你要用的发行版(比如Ubuntu-24.04)开关打开,Apply & Restart即可。这样你在WSL里输入docker --version就能直接用了。

需要说明的是,在WSL里跑Docker,分两种情况。一种是靠Docker Desktop的Linux引擎托管,命令从WSL内调用;另一种是直接在WSL发行版里安装Docker引擎(docker-ce),用systemctl或service管理。两者各有优势,前者跟Windows桌面端集成好,后者更纯粹,属于真正的Linux Docker环境。我日常更倾向于后者,原因后面讲。

5. 装完必做:Linux子系统环境配置与实战场景

5.1 WSL内的软件源更新与基础工具安装

安装完成后,第一件事不是急着跑代码,而是把系统软件源更新到可用状态。打开Ubuntu终端,执行:

sudo apt update sudo apt upgrade -y

apt是Ubuntu的包管理工具,update拉取软件包索引,upgrade真正升级系统里已安装的软件包。这一步在网络状态好的情况下几分钟能搞定。如果update的时候速度很慢,可以考虑把软件源国内镜像化,这个属于常规操作,把/etc/apt/sources.list.d/下面源的地址换成国内高校或云厂商的镜像地址即可。注意:WSL访问网络用的是主机的网络环境,所以镜像源选择要考虑自己实际能访问到的网络。

基础工具方面,我推荐装这些:

sudo apt install -y build-essential git curl wget vim net-tools unzip zip

build-essential是一整套编译工具链,里面包含gcc、g++、make,以后自己编译软件会用到;git和curl是日常开发必备;net-tools提供ifconfig等网络命令。这些工具装完之后,开发环境的基础就有了。

5.2 配置默认登录用户和切换发行版

WSL支持同时装多个发行版,比如Ubuntu和Debian并存。新用户可能搞不清“发行版”和“WSL”是两个概念,一个WSL环境里可以管理多个Linux发行版,它们共享WSL引擎,但文件系统、用户配置、安装的软件完全是隔离的。

查看当前所有发行版:

wsl -l -v

设置默认启动的发行版:

wsl -s Ubuntu-24.04

这里的Ubuntu-24.04是在wsl -l -v列表里看到的名称,必须以列表里的为准。切换默认发行版之后,直接在PowerShell或Windows Terminal输入wsl回车,进入的就是这个发行版。

如果你安装了多个发行版,又想从Ubuntu切到Debian,可以这样:

wsl -d Debian

-d是指定发行版启动。多个发行版并存时,磁盘空间会占得多一些,好在WSL的虚拟磁盘是动态增长的,不会一开始就把空间吃光,但虚拟磁盘一旦增长上去,释放空间比较复杂,下面会讲。

5.3 更换WSL安装位置:把虚拟磁盘挪到D盘

C盘空间吃紧是WSL用户的永恒痛点。WSL默认把所有发行版的虚拟磁盘文件放在C:\Users\你的用户名\AppData\Local\Packages\某个包名\LocalState\ 下,一个Ubuntu装完,加上开发环境和Docker镜像,随随便便就能吃掉几十GB。

把发行版迁移到其他盘的方法不算复杂,核心思路是导出再导入。比如要把Ubuntu-24.04迁移到D:\WSL\Ubuntu:

wsl --export Ubuntu-24.04 D:\ubuntu-backup.tar wsl --unregister Ubuntu-24.04 wsl --import Ubuntu-24.04 D:\WSL\Ubuntu D:\ubuntu-backup.tar

注意wsl --unregister会删除发行版的所有数据,包括用户文件、安装的软件,所以在执行前必须确认导出成功。迁移完成后启动发行版,如果发现默认用户变成了root(因为导入过程中丢失了用户映射),做一步:

ubuntu2404 config --default-user 你的用户名

这个命令因发行版而异,有些镜像提供了config工具,比如Ubuntu的常见格式就是ubuntu2404.exe config --default-user。迁移完我会建议马上登录进去检查一下数据完整性,文件都在再删掉备份的tar包,养成这种习惯不容易踩坑。

5.4 内存和CPU分配的精细化控制

WSL2毕竟是个虚拟机,默认情况下会吃满你一半的内存。如果你电脑只有8GB内存,WSL一开就吃掉4GB,Windows这边就会很卡。好在WSL2支持通过.wslconfig文件配置资源上限。

在Windows用户目录下(C:\Users\你的用户名\)新建一个.wslconfig文件(注意没有文件名,只有扩展名),内容如下:

[wsl2] memory=4GB processors=2 swap=2GB localhostForwarding=true

配置里的memory是内存上限,processors是CPU核数,swap是交换分区大小。改完配置之后要重启WSL才生效:

wsl --shutdown

然后重新进入WSL,运行free -h或者nproc确认配置是否生效。这个配置对内存吃紧的机器简直是救命稻草。我有一次在客户现场用一台8GB内存的ThinkPad演示项目,光WSL就占了一半内存,加上运行IDEA直接卡成PPT,后来把memory限制到3GB才勉强流畅。

5.5 常用场景:Git和代码开发

WSL里用Git是日常操作,但有几个坑需要提前说明。

第一个坑是行尾格式不一致,在Windows编辑过的文件会把换行符从LF改成CRLF,在Linux里跑脚本时会出现奇怪的错误。解决办法有两种:一是在Windows侧用Git Bash或编辑器全局配置core.autocrlf true,二是在WSL里配置core.autocrlf false保持仓库里原始的行尾格式。我的习惯是代码尽可能放在WSL内部的文件系统里,在Linux环境里直接编辑,不跨系统。

第二个坑是文件权限。Windows和Linux的权限体系完全不同,如果代码放在/mnt/c/xxx(也就是Windows的C盘目录)下,Git会经常提示文件权限变化,导致一大片没必要的字符。解决思路还是尽量把项目放在WSL内部目录,比如~/projects/,然后用VS Code的Remote-WSL插件打开,编辑器会自动连接WSL环境,感觉就像在本地编辑一样。

5.6 常用场景:Docker、Elasticsearch、Redis等服务

WSL下一个非常典型的用法是代替以前在Windows上跑各种开发服务。举几个我用得最多的例子。

第一个是Redis。Windows上装Redis还要去GitHub下旧版zip包,装了源码还得手动编译,特别麻烦。在WSL里一条命令:

sudo apt install redis-server -y sudo service redis-server start

然后就有一个真·Linux版Redis在运行了,功能完整,没有兼容性问题。如果你是做Java或Go开发的,本地调试时连接localhost:6379,因为WSL2默认开启了端口转发,Windows侧直接就能连上。

第二个是Elasticsearch。这个在Windows原生跑起来麻烦事一堆,JDK版本、内存设置、文件句柄数限制,哪一步不对都能报错。但在WSL里,下载ES发行版、解压、启动,基本跟在一台Linux服务器上操作没区别:

curl -fsSL https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.15.0-linux-x86_64.tar.gz -o es.tar.gz tar -xzf es.tar.gz cd elasticsearch-8.15.0 ./bin/elasticsearch

第一次启动会让你设置密码和获取安全令牌,按照提示处理就行。WSL下ES默认就能用,不会遇到Windows下那种“文件被占用”的奇葩问题。

第三个是Docker。WSL2模式下Docker Desktop把Linux引擎托管在WSL发行版里,Windows上的Docker CLI和WSL里的Docker CLI都能控制同一个容器运行时。但我更推荐直接在WSL里安装Docker引擎:

sudo apt update && sudo apt install -y docker.io sudo service docker start

这样启动的Docker是完全独立的Linux环境,不依赖Docker Desktop。缺点是Docker服务得手动启动,或者自己配置开机自启。好处是干净、不占Windows侧的资源,跟生产服务器环境更接近。

如果你做AI相关开发,像热词里提到的codex这类工具,WSL也是个很不错的运行场所。很多AI开发命令行工具是为Linux设计的,Windows原生跑要么缺依赖、要么路径问题导致崩。装到WSL里,直接调用本地模型或者云API都非常顺畅。

5.7 文件互访与Windows目录注意事项

WSL和Windows的文件系统可以互相访问,WSL里的Ubuntu访问Windows盘符用/mnt/c/(C盘)、/mnt/d/(D盘)这种路径,Windows访问WSL里的文件用\wsl$\Ubuntu-24.04\ 这种UNC路径。

这个互访看着方便,但性能差别极大。实测过WSL2里跑npm install或composer install,如果用/mnt/c/下的项目目录,速度可能比在Linux内部目录慢10倍以上。WSL2的跨文件系统IO本来就有性能损耗,再加一层9P协议传输,慢是必然的。

所以我的终极建议就是:代码放WSL里,别放Windows盘里。这个建议我说给过无数人,照样有一堆人不信,非爱在Windows编辑器里改WSL的代码,结果免不了卡顿和权限问题,最后又来问我怎么优化。解法就一个:用VS Code的Remote-WSL插件,编辑器看起来还是在Windows上,但文件读写、终端执行全都在WSL内部,又快又稳。

6. 日常使用的注意事项与性能优化心得

6.1 WSL2的内存占用与清理技巧

WSL2的虚拟机不会自动把空闲内存还给Windows,用久了你会发现WSL吃内存越来越多。我目前比较稳妥的方案是:在.wslconfig里把memory设到合理值,然后配合wsl --shutdown去回收内存。

工作场景需要长时间挂着WSL跑服务的,比如跑数据库、队列和多个微服务,内存占用会很快上去,这时候可以专门写一个定时脚本,在每天下班前自动执行wsl --shutdown,第二天上班再启动,相当于做一次系统重启。

还有一种内存暴涨的情况是容器镜像太多。Docker镜像、容器、数据卷积累多了,虚拟磁盘文件快速膨胀。可以用命令清理:

docker system prune -af

这会把所有未使用镜像、停止的容器、无用数据卷一次性清掉。如果磁盘空间还是不见少,可以考虑定时备份再重建虚拟磁盘,或者在使用频率低的时候重装发行版。

6.2 网络与端口转发:如何保证Windows能访问WSL中的服务

WSL2的网络模式跟WSL1不一样,WSL1是和Windows共享IP,WSL2是独立NAT网络。好在WSL2自动做了localhost转发:WSL里监听某个端口,Windows侧可以通过localhost直接访问。比如你在WSL里启动了一个Spring Boot应用监听8080端口,在Windows浏览器直接访问http://localhost:8080就能看到,不需要额外配置。

但有几个场景会出问题。一是WSL里监听的地址不是0.0.0.0,而是只绑定了127.0.0.1;二是局域网内其他机器访问WSL里的服务,那需要在Windows防火墙里做端口转发,麻烦一些。

如果你只在本地开发调试,localhost转发基本够用。如果要在局域网里演示,我的做法是不用WSL里的服务直接对外,而是在Windows侧跑一个端口转发工具,或者干脆部署到云服务器上,省得折腾防火墙规则。

另外要注意,如果WSL里跑某些软件会自己改网络配置(比如跑代理类工具),可能会导致localhost转发失效。碰到WSL里服务正常但Windows访问不了的情况,第一步先wsl --shutdown再重新启动,这一步能解决大部分奇怪的网络问题。

6.3 备份与恢复:虚拟环境的最后一道保险

WSL的备份其实比虚拟机简单,用wsl --export就能生成一个tar包。我一般每个月给开发环境做一次完整备份,关键时刻能救命。有了export/import这套机制,迁移到新电脑也特别方便,不用在新机子上重新配一遍开发环境。

恢复的时候注意,import回来的发行版用户名可能变成root。解决方案有两个:一是在备份前用配置工具指定默认用户,二是恢复后手动修改/etc/wsl.conf和/etc/passwd。我的习惯是备份时做好标签,恢复时优先选择配置工具去指定默认用户,实在不行再手动改配置。

有一点要提醒:WSL发行版的密码、密钥、SSH配置都会包含在导出包里,导出后妥善保管tar文件。我吃过一次亏,把包含生产服务器密钥的WSL备份文件放到临时下载目录,结果被磁盘清理工具当成垃圾文件清掉了,差点误事。

6.4 善用Windows Terminal和配置文件

装好WSL只是第一步,真正舒服的体验还得配一套好用的终端。Windows Terminal现在已经是Windows开发者的标配,支持多标签页、主题配置和快捷键。安装WSL发行版后,Windows Terminal会自动识别并添加入口,配合自定义颜色主题,视觉效果和macOS的iTerm2有一拼。

Windows Terminal的配置基于JSON文件,我一般会做几个设置:默认终端选“Windows Terminal”,启动时默认打开WSL发行版,字体换成等宽字体(比如Cascadia Code或JetBrains Mono),开启毛玻璃效果。这些配置在设置界面里点几下就能完成,不需要自己写JSON。

如果你还有用WSL跑GUI程序的需求,WSLg(Windows Subsystem for Linux GUI)在Win11和Win10新版里已经原生支持,在WSL里安装Linux图形应用,界面会直接显示在Windows桌面。不过日常开发用命令行就够的话,不用刻意装GUI程序。

7. 写作后的小建议

我见过太多人把WSL当成“Windows里装个虚拟机”来用,装完就放在那,平时还是用Windows那套工具链,这样其实没有发挥WSL的真正价值。我自己日常的工作流是:Windows负责浏览器、聊天工具、截图等日常操作,WSL负责代码编辑、运行测试、搭建服务、执行脚本,双方通过VS Code Remote-WSL连接。这样既保留了Windows的便利性,又能享受Linux的高效和兼容性。

如果你刚装好还没头绪,建议先完成三个小练习:在WSL里用apt安装一个软件包、用Git克隆一个开源项目到WSL内部目录、在WSL里启动一个简单的Python HTTP服务并从Windows浏览器访问。这三件事做完,你对WSL的日常使用就算摸到门了。之后再做深入的项目开发,就顺手多了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询