先说结论:Windows10下启用WSL并安装Ubuntu22.04,并没有很多人想象的那么复杂。即使你对 Linux 几乎没接触过,只要照着下面的流程走,半小时内就能在你现有的 Windows 系统里跑起来一个真正的 Ubuntu 环境,而且不用装虚拟机、不用做双系统、不用重启切换到另一个系统。
这个方案解决的是很实在的痛点:很多时候你只是需要 Linux 的命令行环境,需要跑点 Python 脚本、编译点东西、装点服务端软件,或者练一练 Linux 操作。为此专门装一台虚拟机很笨重,做双系统又太麻烦,而 WSL 就是在 Windows 里直接开一条“Linux 通道”,打开终端就能用,文件还能互访。这篇文章适合想在 Windows10 上用 WSL2 装 Ubuntu22.04 的开发者、运维新人,以及所有不想折腾双系统但偶尔要接触 Linux 环境的人。
我自己前前后后帮同事和朋友处理过几十次 WSL 安装问题,踩过的坑并不少。这篇文章不打算讲那些官网上能查到的废话,而是把我实际安装、配置、排错的过程完整拆给你看,重点标注出哪些步骤容易翻车,以及出了问题怎么自己救回来。
1. WSL是什么?为什么Windows10用户需要它
1.1 WSL1和WSL2的核心差异
WSL 的全称是 Windows Subsystem for Linux,翻译过来就是“适用于 Linux 的 Windows 子系统”。它和虚拟机的最大区别在于:虚拟机是完整模拟一台电脑,在里面装一个完整 Linux 系统;而 WSL 是 Windows 原生提供的一层兼容层,让你直接运行 Linux 二进制程序。
目前市面上看到的 WSL 其实分两个大版本:
| 对比项 | WSL1 | WSL2 |
|---|---|---|
| 架构 | 系统调用翻译层 | 轻量级虚拟机(真正 Linux 内核) |
| 内核 | 没有独立 Linux 内核 | 有完整 Linux 内核 |
| 文件读写性能 | 跨文件系统访问很快 | 跨文件系统访问较慢,Linux 内部文件操作很快 |
| 兼容性 | 部分软件无法运行 | 几乎兼容所有主流 Linux 软件 |
| Docker 支持 | 很弱 | 原生支持,Docker Desktop 可以直接用 WSL2 |
| 内存占用 | 低 | 稍高,但可限制 |
我用一句话给你概括:WSL1 像一个“翻译官”,把 Linux 命令翻译给 Windows 听,快但有些话翻译不了;WSL2 像在 Windows 里开了一家“迷你客栈”,虽然客栈本身有开销,但 Linux 软件进去之后就是完全原生的体验,想干嘛都行。
所以现在新安装的环境中,我强烈建议直接用 WSL2,而不是 WSL1。尤其你要在 Ubuntu 里装 Docker、跑 CUDA 这类依赖内核特性的软件,WSL1 基本是没法用的,WSL2 则能完美跑起来。
1.2 WSL能做什么,有哪些明显边界
WSL2 配合 Ubuntu22.04,对日常开发来说已经足够覆盖大部分需求:
- 跑 Python、Node.js、Go、Rust 等跨平台开发环境;
- 直接使用 apt 安装 Linux 下的各类软件包;
- 在 Windows 上用 VSCode 连接 WSL,文件编辑在 Windows 侧,执行环境在 Linux 侧;
- 使用 Docker Desktop 时把引擎放在 WSL2 后端,比 Hyper-V 虚拟机轻量很多;
- 做 NVIDIA GPU 或 AMD GPU 的本地深度学习环境,WSL2 可以直接调用显卡。
但也有几件事是 WSL 不太适合的,我建议你先有个预期:
- 不适合跑带图形界面的完整 Linux 桌面环境。虽然能装 X Server 或者用 WSLg,但体验绝对不如正经虚拟机,日常办公还是回 Windows;
- 不适合做需要稳定开机运行的服务器。WSL 的生命周期和 Windows 会话绑定,关掉终端或重启系统之后,里面的服务不会像真正的 Linux 服务器那样自启(除非你手动配置 systemd 和自启动任务);
- USB 设备直通比较麻烦。虽然新版 WSL 支持 USBIP 等方式,但配置复杂度偏高,如果你经常要插 USB 设备,建议优先考虑虚拟机。
搞清楚这些边界,你就不会抱着错误的期待去安装,后面用起来也不容易骂娘。
2. 正式安装前的三件事:版本、虚拟化和系统功能
很多人在安装 WSL 时报错,并不是 WSL 本身的问题,而是前置条件没准备好。我建议你在动手之前花五分钟把下面三件事确认一遍,这比装到一半再排查强得多。
2.1 确认Windows10的版本与Build号
WSL2 对 Windows10 的版本有硬性要求。理论上需要 Windows 10 版本 2004(内部版本号 19041)及以上。低于这个版本,你用不了 WSL2,只能用 WSL1,或者先升级系统再说。
查看方法很快:按Win + R,输入winver,回车。弹窗里会显示系统版本和内部版本号。
如果你的版本低于 2004,建议先去 Windows Update 把系统更新到最新。这一步别偷懒,很多人卡在后面的错误上,回头一看全是系统版本太老。顺带提醒一句:确保你的 Windows10 是正常激活状态,某些精简版、Ghost 版系统在启用 WSL 功能时非常容易出莫名其妙的问题,我踩过不止一次。
2.2 到BIOS里确认虚拟化是否开启
WSL2 依赖虚拟化技术,所以 BIOS 里的 Intel VT-x 或者 AMD SVM 必须处于开启状态。
判断系统当前是否已经启用虚拟化,最简单的方式是打开任务管理器,切到“性能”选项卡,看左下角“虚拟化”一栏,显示“已启用”就没问题。如果显示“已禁用”,需要重启电脑进 BIOS,在 CPU 配置或高级选项里找到 Intel Virtualization Technology 或 SVM Mode,把它设为 Enabled,然后保存退出。
这里有个很多人忽略的细节:就算你以前开过 Hyper-V,也不代表虚拟化就一定开着。WSL2 和 Hyper-V、虚拟机平台之间有复杂的依赖关系,最稳妥的办法就是先确认 BIOS 虚拟化处于开启状态。
2.3 把两个Windows功能打开:WSL与虚拟机平台
WSL 安装的核心其实是两个 Windows 功能:
- 适用于 Linux 的 Windows 子系统:这个不用多说,是 WSL 的基础;
- 虚拟机平台:WSL2 的轻量虚拟机依赖这个功能。
打开方式有两种。
方式一:图形界面操作
按Win + R,输入optionalfeatures,回车,在弹出的“Windows 功能”窗口里勾选这两项,点击确定。系统会提示重启,先不要急着重启,建议把下面的命令行方式也跑一遍再重启,刚好合并成一次。
方式二:管理员 PowerShell 命令
右键开始菜单,选择“Windows PowerShell(管理员)”或“终端(管理员)”,执行两条命令:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux -All -NoRestart Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -All -NoRestart如果执行后提示需要重启,那就重启一次。这两条命令执行成功的话,在“Windows 功能”界面里对应选项也会变成勾选状态。
2.4 提前更新WSL内核组件
启用完上面两个功能并重启之后,还有一步经常被遗漏:更新 WSL 内核。Windows10 自带的 WSL 内核版本往往比较老,可能导致 Ubuntu22.04 装上之后启动不了。
最简单的方式是在管理员 PowerShell 里执行:
wsl --update这个命令会把 WSL 的内核组件升级到最新版。如果你执行的时候提示命令不存在,说明你的 WSL 版本太旧,这时候可以先去 Microsoft Store 搜“Windows Subsystem for Linux”手动安装最新的 WSL 应用,然后再继续后面的步骤。
3. 从零到一:一条命令启用WSL并安装Ubuntu22.04
前置条件都搞定之后,安装环节其实非常快。根据你的 Windows10 版本新旧程度,我给你两条路径,任选一条都能走到终点。
3.1 新版Windows10的快捷安装方式:wsl --install
如果你的 Windows10 版本比较新(建议内部版本号 19045 及以上,也就是 22H2),并且已经安装过较新的 WSL 组件,那么直接在管理员 PowerShell 里执行:
wsl --install这条命令会做四件事:启用 WSL 功能、启用虚拟机平台、安装 WSL2 内核、默认安装 Ubuntu 发行版。整个过程可能持续几分钟,中间可能会要求重启。重启之后系统会自动弹出 Ubuntu 的初始化窗口。
但注意,wsl --install默认安装的是 Ubuntu 最新稳定版,不一定就是 Ubuntu22.04。如果你一定要装的是 22.04,则需要在命令里指定发行版名称。
3.2 老版本Windows10的手动安装路径
如果你的系统是 Windows10 2004 到 21H2 之间,且不想折腾自动安装,就用手动路径。其实也很简单:
- 按前面的方法启用“适用于 Linux 的 Windows 子系统”和“虚拟机平台”;
- 重启电脑;
- 管理员 PowerShell 执行
wsl --set-default-version 2,把默认 WSL 版本设为 2; - 到 Microsoft Store 搜索“Ubuntu 22.04.3 LTS”,点击安装;
- 安装完成后从开始菜单启动 Ubuntu,进行初始化。
这套流程在网络条件差的时候反而更稳定,因为 Store 有断点续传能力,WSL 命令行自动安装偶尔会卡在半路。
3.3 指定安装Ubuntu22.04的具体方法
如果你明确要 Ubuntu22.04,最简单的方法是先看有哪些发行版可选。管理员 PowerShell 执行:
wsl --list --online输出列表里会有一行 “Ubuntu-22.04”。看到之后,直接执行:
wsl --install -d Ubuntu-22.04如果是通过 Store 手动安装,则在商店里搜“Ubuntu 22.04.3 LTS”即可。这里有个小提醒:商店里同时有“Ubuntu”、“Ubuntu 22.04.3 LTS”、“Ubuntu 24.04.1 LTS”等好几个版本,名字很像,注意看准“22.04”字样,别装成别的版本。
3.4 重启之后的第一件事:验证WSL版本
安装完成并重启之后,先在 PowerShell 里执行:
wsl --status wsl --list --verbose第二条命令能看到所有已安装发行版的列表以及 WSL 版本。如果 Ubuntu-22.04 那一行的 VERSION 列显示是 2,恭喜你,WSL2 已经就位。如果显示是 1,说明还不小心停留在 WSL1,执行:
wsl --set-version Ubuntu-22.04 2手动把它转换到 WSL2。转换过程可能需要一两分钟,完成后再次查看版本确认。
注意:如果你的电脑 BIOS 虚拟化没有开启,或者系统版本低于要求,这里转换时会报错。别慌,回炉检查第 2 章的准备工作就行。
4. Ubuntu22.04首次初始化:账号、源、基础工具一次配齐
WSL 安装成功只是万里长征第一步,真正影响体验的是首次初始化。下面这些步骤我建议你老老实实做一遍,能省掉后面很多麻烦。
4.1 第一次打开Ubuntu终端时该填什么
第一次启动 Ubuntu 终端时,系统会提示创建一个 UNIX 用户名和密码。这个用户名不是 Windows 用户名,也不是 root,而是你在 Ubuntu 里的普通用户。
填用户名时注意:只能用小写字母和数字,并且不能以数字开头。比如zhangsan、dev、ubuntu都可以,但ZhangSan、123abc这种会被拒绝。密码输入的时候终端不会显示任何字符,这是正常现象,别以为键盘坏了。
创建完用户后,这个用户默认拥有 sudo 权限,也就是可以用sudo命令执行管理员操作。首次使用 sudo 时会提示输入密码,输入刚才设置的那个密码就行。
有些教程会建议你直接设置 root 密码,我建议如果没有特殊需求,不要切换到 root 使用,用普通用户 + sudo 更安全,也符合 Linux 使用习惯。真要设置 root 密码的话,执行:
sudo passwd root连续输两次新密码即可,日常还是用普通用户登录。
4.2 更换国内镜像源,让apt不再龟速
Ubuntu 官方软件源在国内访问速度不稳定,不换源的话,apt update经常卡到怀疑人生。更换源的核心操作就是编辑/etc/apt/sources.list文件。
先备份,再修改。备份很重要,万一改坏了还能还原:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak然后用 nano 编辑器打开:
sudo nano /etc/apt/sources.list将文件内容里的archive.ubuntu.com和security.ubuntu.com替换成清华镜像源的地址。以 Ubuntu22.04 为例,文件里应该出现的是http://archive.ubuntu.com/ubuntu/,你需要把它改成https://mirrors.tuna.tsinghua.edu.cn/ubuntu/。
实际操作时最简单的方式是直接把里面所有http://archive.ubuntu.com/ubuntu/批量替换成https://mirrors.tuna.tsinghua.edu.cn/ubuntu/,把http://security.ubuntu.com/ubuntu/也替换成https://mirrors.tuna.tsinghua.edu.cn/ubuntu/。保存退出后执行:
sudo apt update sudo apt upgrade -y如果你是第一次在 WSL 里跑 update,可能时间会长一点,耐心等它跑完。升级包的时候如果提示有“kernel”相关的包,不用太在意,WSL 的内核由 Windows 侧管理,Ubuntu 里的内核升级不影响实际运行。
4.3 安装常用开发工具链
换完源之后,建议顺手装上最常用的一批基础工具,避免后面用到一个装一个:
sudo apt install -y build-essential python3 python3-pip git curl wget net-tools unzip zipbuild-essential包含 gcc、g++、make 等编译工具,很多软件从源码安装时都要用;python3和python3-pip是 Python3 环境和包管理器;git不用说,代码管理必备;curl和wget是下载工具,后面装软件经常用到;net-tools提供 ifconfig 等网络命令,虽然新系统推荐 ip 命令,但很多老教程还是用 ifconfig。
装完后可以简单验证一下:
python3 --version gcc --version看到版本号正常输出,说明基础环境已经通透了。
5. 进阶配置:把WSL搬到D盘,并接上日常开发流
很多人刚装上 WSL 时觉得挺好用,用几天就发现 C 盘空间急剧缩水。Ubuntu 发行版默认装在 C 盘用户目录下,系统盘本来就紧张的用户会非常难受。这一章主要解决这个痛点,顺手把日常开发流也接通。
5.1 不想占C盘空间?导出导入几步搞定
把 WSL 发行版迁移到 D 盘的思路很简单:先把现有的 Ubuntu 22.04 导出成一个 tar 文件,然后注销原来的发行版,再用导入的方式把它装到 D 盘指定目录。这个过程不会丢你已经装好的软件和数据。
第一步,关闭正在运行的 WSL,然后在 PowerShell 里导出:
wsl --shutdown wsl --export Ubuntu-22.04 D:\wsl-backup\ubuntu-22.04.tar第二步,注销原来的发行版:
wsl --unregister Ubuntu-22.04这里要提醒一下,--unregister会删除该发行版的所有数据和配置,但因为你已经导出了备份包,所以没问题。
第三步,在 D 盘建好目录,再导入:
mkdir D:\WSL\Ubuntu2204 wsl --import Ubuntu-22.04 D:\WSL\Ubuntu2204 D:\wsl-backup\ubuntu-22.04.tar --version 2导入完成后,你会发现 WSL 里的用户变成了 root,而且默认登录用户不是之前创建的那个普通用户。这是因为导入时 WSL 默认以 root 身份进入。你可以在 Ubuntu 里编辑/etc/wsl.conf,加上如下内容:
[user] default=你的用户名把“你的用户名”替换成之前创建的用户名,然后在 PowerShell 执行wsl --shutdown,再次进入就是普通用户了。
5.2 用VSCode和Windows Terminal接管WSL
WSL 的最大乐趣在于,你不需要在 Linux 里折腾图形界面,直接用 Windows 侧的工具操作它。
VSCode 连接 WSL 非常简单:在 Windows 侧安装 VSCode,再到扩展市场安装一个 “WSL” 扩展(扩展名也叫 Remote - WSL)。安装完成后,在 Ubuntu 终端里敲:
code .VSCode 就会自动以 WSL 模式打开当前目录。你在左侧资源管理器里看到的文件就是 Linux 文件,终端也是 Ubuntu 终端,完全无缝。
Windows Terminal 更不用说,它已经成为 Windows 下最好用的终端工具。你可以在 Microsoft Store 里装一个,然后在设置里添加 Ubuntu-22.04 配置项,以后就能从 Windows Terminal 的下拉菜单直接进 Ubuntu。
5.3 让systemd正常工作,顺便限制WSL2资源占用
Ubuntu22.04 使用的是 systemd 管理服务,但默认情况下 WSL 不会启动 systemd,这导致systemctl命令会报错。解决办法也很直接:编辑/etc/wsl.conf,写入:
[boot] systemd=true保存后在 Windows PowerShell 里执行:
wsl --shutdown重新进入 WSL 后,执行systemctl status验证,如果能看到正常输出,说明 systemd 已经接管服务了。以后你就能用systemctl enable设置容器或服务开机自启了。
资源限制方面,WSL2 默认会使用部分宿主机内存和 CPU,如果你觉得电脑变卡,可以在 Windows 用户目录下新建一个.wslconfig文件:
[wsl2] memory=4GB processors=4 swap=2GB保存后在 PowerShell 里执行wsl --shutdown,重新启动 WSL,配置就生效了。限制内存和 CPU 之后,开发环境完全够用,而且 Windows 本体不会觉得卡。
5.4 文件互操作:Windows与Linux无缝交换
WSL 的文件互操作做得很顺手,双向访问是原生支持的:
- 在 Ubuntu 里访问 Windows 文件,路径是
/mnt/c/、/mnt/d/这样。比如 Windows 的 C 盘用户目录就是/mnt/c/Users/你的用户名/。 - 在 Windows 里访问 Ubuntu 文件,在资源管理器地址栏输入
\\wsl$\Ubuntu-22.04\home\你的用户名,就能像访问网络邻居一样直接浏览 Linux 文件。
这里有一个 WSL2 特有的性能现象,我要重点提一下:如果你的项目文件放在/mnt/c/下面,WSL2 读写这些文件的速度会明显偏慢,因为文件要跨系统边界传输。但如果项目文件放在 WSL 自己的文件系统里,比如~/project,读写性能就非常快。
所以我的建议是:用 WSL 开发时,项目代码放 Linux 侧,Windows 和 Linux 之间只交换成品文件。这样既保证性能,又不会搞得两边目录混乱。
5.5 在WSL里跑Docker和GPU环境的可行性说明
装好 WSL2 之后,Docker 基本是白送的体验。你可以安装 Docker Desktop,然后在设置里把后端切换成 “Use WSL 2 based engine”,它会自动关联你的 Ubuntu-22.04。这样你在 Ubuntu 终端里直接执行docker命令就能用,不需要在 Linux 里单独装 Docker daemon。
GPU 方面,WSL2 对 NVIDIA 和 AMD 的显卡支持都比较成熟。你在 Windows 侧装好最新的显卡驱动后,在 Ubuntu 里安装对应的 CUDA 工具包或者 PyTorch 的 WSL 版本,就能直接跑 GPU 训练。这个方向展开讲又是一长篇文章,这里先告诉你结论:WSL2 确实能跑 GPU 任务,而且配置比原生 Linux 双系统省心不少。
6. 常见安装失败与排查实录
整理了这么多次安装经历,我把出镜率最高的问题集中列出来,按症状、原因、解决办法的顺序给你,碰到类似的直接对照处理。
6.1 安装时报错 createvm/hcs 类错误
这个错误很典型,具体表现是安装发行版时报一连串包含createvm、hcs、error_file_n关键词的错误。它其实是一类错误,不是单一原因。我遇到过的原因大致有三种:
第一种是虚拟机平台功能没有真正启用。回到第 2.3 节,用管理员 PowerShell 执行那条Enable-WindowsOptionalFeature命令,确认VirtualMachinePlatform功能状态。也可以用下面命令看一下:
Get-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatformState 显示Enabled才算开启,显示Disabled就重新启用一遍。
第二种是 hypervisor 没有自动启动。以管理员身份执行:
bcdedit /set hypervisorlaunchtype auto然后重启电脑。这个命令会把 hypervisor 开机启动开关重新打开,WSL2 依赖它来运行虚拟机。
第三种是系统组件损坏导致虚拟化服务不稳定。可以尝试用 DISM 命令修复系统组件:
DISM.exe /Online /Cleanup-image /Restorehealth修复完成后再重启,重新执行wsl --update。
6.2 组件存储已损坏的修复思路
安装 WSL 时偶尔会看到提示“WSL 安装组件存储已损坏”,或者类似 Windows 功能无法安装的提示。这通常和 Windows 的系统组件存储有关,和 WSL 本身关系不大。
按顺序执行下面三条命令,修复完再重启:
DISM.exe /Online /Cleanup-image /Restorehealth sfc /scannow wsl --update第一条命令会从 Windows 更新服务器拉取缺失的系统文件来修复组件,可能要十几分钟,别中途关掉。第二条命令检查系统文件完整性。第三条在修复后重新补装 WSL 组件。
如果修复完仍然无效,我最后的经验是干脆把之前启用过的 WSL 功能关掉,重启,再重新启用一次。相当于让 Windows 彻底清理一遍后再重建,在很多诡异问题上有奇效。
6.3 WSL启动后网络不通 / apt解析不了域名
进入 Ubuntu 后执行sudo apt update,如果提示无法解析域名,或者连接超时,多半不是源的问题,而是 WSL 的 DNS 配置出问题了。
可以先检查一下当前的 DNS 配置:
cat /etc/resolv.conf如果里面的 nameserver 有问题,最简单的办法是手动把它指向公共 DNS 或者你本地路由器的网关。编辑/etc/resolv.conf:
sudo nano /etc/resolv.conf把nameserver改成8.8.8.8或114.114.114.114,保存后立刻测试:
ping -c 4 mirrors.tuna.tsinghua.edu.cn能 ping 通就说明网络恢复了。不过/etc/resolv.conf属于系统自动生成的文件,有时 WSL 重启后会被重置。如果想要永久生效,需要关闭 WSL 的自动生成功能。编辑/etc/wsl.conf:
[network] generateResolvConf = false然后wsl --shutdown,再进入 WSL 后手动创建/etc/resolv.conf并写入稳定配置,这样就不会被覆盖了。
6.4 安装卡住、黑屏、无法进入终端的处理
有些用户反映 Ubuntu22.04 装完启动后,终端窗口一直黑着,光标闪来闪去就是不出登录界面。这种情况大多数不是系统坏了,而是首次初始化卡在某一步,或者终端窗口和 WSL 进程之间的连接出了问题。
优先尝试强制关闭:
wsl --shutdown然后再重新打开 Ubuntu 终端。如果还不行,在 PowerShell 里执行:
wsl --terminate Ubuntu-22.04然后重新启动。
如果始终黑屏,可以尝试在 PowerShell 里运行:
wsl -d Ubuntu-22.04 -u root强制以 root 身份进入。能进去就说明 WSL 内核没问题,只是初始化过程出过状况。进去后检查一下是否有残留的初始化进程,或者直接重新设置默认用户:
ubuntu2204 config --default-user 你的用户名注意这里的ubuntu2204是系统安装的可执行文件名,具体可以通过在 PowerShell 里输入ubuntu2204.exe按 Tab 补全来确认。
6.5 小技巧汇总:备份、重置、注销发行版
WSL 用久了之后,备份和重置能救你不少次。
备份发行版:
wsl --shutdown wsl --export Ubuntu-22.04 D:\backup\ubuntu.tar恢复发行版:
wsl --import Ubuntu-22.04 D:\WSL\Ubuntu2204 D:\backup\ubuntu.tar --version 2完全重置发行版:
wsl --unregister Ubuntu-22.04注意,--unregister会删除该发行版所有数据,执行前必须确认备份已经做好。这个命令我在处理“怎么折腾都搞不定”的疑难杂症时用过很多次,效果立竿见影,前提是你要能接受从头再配置一遍环境。
还有一个非常实用的小技巧:当你同时装了多个发行版时,用wsl --set-default Ubuntu-22.04设置默认发行版,这样在 PowerShell 里直接输wsl就会进入 Ubuntu22.04,而不用每次指定-d参数。
7. 装好WSL之后,我还想再啰嗦几句
如果你已经顺利跑起来 Ubuntu22.04,那这篇文章的主要任务就完成了。最后分享一点我自己在使用中总结的真实体会。
第一,东西尽量放 Linux 文件系统里,别放在/mnt/c下面。这是 WSL2 和虚拟机最大的不同,很多人在两边路径之间反复横跳,然后抱怨 WSL 卡,其实是因为文件在跨文件系统读写。我实际测下来,同样的项目放在~/code和放在/mnt/c/Users/xxx/code性能差距非常明显。记住一句话:在哪儿开发的代码就在哪儿放。
第二,Windows 侧的杀毒软件和 WSL 偶尔会打架。个别安全软件会对 VHD 文件或者 WSL 进程进行拦截,导致启动缓慢甚至失败。如果你装了比较激进的安全工具,遇到 WSL 动不动打不开的问题,可以尝试把 WSL 相关目录加入白名单,或者卸载安全软件后再测试。
第三,建议把sudo apt upgrade当成每周固定动作。WSL 里的 Ubuntu 系统不会自动升级,安全更新和软件源更新都需要你手动执行。固定周期做一次升级,既能保证软件版本正常,也能减少某天突然因为依赖过旧而装不了新软件的概率。
第四,遇到问题不要急着卸载重装。WSL 的排查路径是固定的:先wsl --shutdown重启 WSL,再检查 Windows 功能是否完整,再查 DISM 和 sfc,最后才考虑导出发行版并重新导入。乱重装只会让你在重复踩坑中浪费时间。
Windows10 下启用 WSL 并安装 Ubuntu22.04,这件事的门槛其实比我刚开始接触时低了很多。只要前置条件确认清楚,安装命令走一遍,再花十分钟把源和基础工具配好,一个顺手好用的 Linux 环境就有了。后面无论是做开发测试、跑自动化脚本,还是学 Linux 运维,你都能在这个环境里放开手脚折腾。祝大家好运,有问题欢迎带着错误代码来找我聊。