第二章: 奠基:20 分钟构建一个“开箱即战”的 WSL 2 工作区

第二章: 奠基:20 分钟构建一个“开箱即战”的 WSL 2 工作区

摘要: 在理论的曙光之后,本章将引领您进入激动人心的实战环节。我们将以最贴近真实场景的方式,手把手地完成 WSL 2 核心环境的搭建。这不仅仅是一份安装指南,更是一套 最佳实践的落地流程。我们将一起处理从系统检查、一键安装,到国内软件源配置、首次系统更新的每一个细节,并最终见证 VS Code 与 WSL 2 完美融合的“奇迹时刻”。完成本章后,您将拥有一个坚如磐石且运行如飞的 Linux 开发基座。


说明: 在上一章,我们确立了 WSL 2 作为我们终极方案的理论基石。现在,是时候将蓝图变为现实了。请跟随我的节奏,我们将共同完成这次至关重要的环境奠基。

在本章中,我们将并肩完成以下关键步骤:

  1. 准备工作: 确认我们的 Windows 系统和硬件已为 WSL 2 做好准备。
  2. 一键安装: 使用一条命令,完成 WSL 2 核心组件与 Ubuntu 发行版的自动化安装。
  3. 初始化配置: 进行首次启动,并创建属于您自己的 Linux 用户账户。
  4. 网络加速: (关键实践) 将 Ubuntu 的软件源更换为国内镜像,为后续操作提供“火箭般”的速度。
  5. 系统升级: 完成首次全面的系统更新,确保环境的安全与稳定。
  6. 连接 IDE: 将我们最熟悉的 VS Code 与刚刚诞生的 Linux 子系统无缝连接。
  7. 见证奇迹: 敲下 code .,亲身体验跨越系统边界的开发流程。

2.1. 硬件与系统前置检查

在开始之前,我们需要确保我们的“主战场”——Windows 系统,已经准备就绪。这就像赛车手在发车前检查赛车一样,简单但至关重要。

2.1.1. 确认 Windows 版本

WSL 2 是在 Windows 10 的一个较新版本中才被引入的。我们需要确保您的系统版本不低于 20H1 (内部版本号 19041)。

操作非常简单:

  1. 按下键盘上的 Win + R 组合键,打开“运行”对话框。
  2. 输入 winver 并按回车。

您会看到一个关于 Windows 的弹窗。请检查其中的版本号,只要它大于或等于 2004 (即 20H1) 或 19041,就说明您的系统满足要求。如果您正在使用 Windows 11,那么系统已全面原生支持,更无需担心。

2.1.2. 检查 CPU 虚拟化

WSL 2 的核心是轻量级虚拟化,这需要 CPU 提供硬件层面的支持,它允许操作系统高效、安全地将物理硬件资源(如 CPU 核心、内存)划分给多个隔离的运行环境。好消息是,近十年内生产的绝大多数 CPU 都默认支持并开启了此功能。我们只需快速确认一下。

  1. 按下 Ctrl + Shift + Esc 组合键,打开任务管理器。
  2. 切换到“性能”选项卡。
  3. 点击左侧的“CPU”。
  4. 在右侧信息的右下角,找到“虚拟化”一项。

如果显示“已启用”,那么恭喜您,一切准备就绪。

万一虚拟化未启用怎么办?
这种情况比较少见。如果确实未启用,您需要重启电脑并进入 BIOS/UEFI 设置。在其中寻找类似 “Intel® Virtualization Technology (VT-x)” 或 “AMD-V” 这样的选项,并将其设置为 Enabled。由于各主板厂商的界面不同,具体操作建议您根据自己的主板型号快速搜索一下相关教程。


2.2. 一行命令的魔力

过去,安装 WSL 需要在控制面板中手动开关多个 Windows 功能,过程相对繁琐。但现在,微软已经将这个过程封装成了一条强大而简洁的命令。

请以 管理员身份 打开您的终端。您可以右键点击“开始”菜单,选择“终端(管理员)”或“Windows PowerShell (管理员)”。

然后,在弹出的蓝底或黑底窗口中,输入并执行以下命令:

1
wsl --install -d Ubuntu-24.04

这条命令看似简单,实则是一个强大的宏。它在后台为您执行了一系列复杂的管理任务:

  • wsl: 调用 WSL 命令行工具,是您未来管理所有子系统的入口。
  • --install: 启动自动化安装流程。它会智能地检查并开启所有必需的 Windows 功能,如“虚拟机平台”和“适用于 Linux 的 Windows 子系统”,让您免于手动配置的烦恼。
  • -d Ubuntu-24.04: 指定您想要安装的 Linux 发行版 (d--distribution 的简写)。我们选择 Ubuntu-24.04,因为它是 Canonical 公司在 2025 年 最新的长期支持版本(LTS)。这意味着它将获得长达五年的官方安全更新和社区支持,是兼顾新特性与稳定性的最佳选择。

按下回车后,您会看到终端开始自动执行一系列任务:下载最新的 WSL 内核、安装 Ubuntu 发行版… 这个过程可能会持续几分钟,具体取决于您的网络速度。

安装完成后,终端会提示您 重启计算机 以使所有更改生效。请保存好您手头的工作,然后从容地重启电脑。


2.3. 首次启动与用户初始化

当您的电脑重启完成后,一个 Ubuntu 的终端窗口通常会自动弹出,并显示 “Installing, this may take a few minutes…”。这是 WSL 在为您进行最后的个性化配置。

稍等片刻,您将被要求创建一个 UNIX 用户账户

1
2
Please create a default UNIX user account. The username does not need to match your Windows username.
Enter new UNIX username:

这里是您在 Linux 世界的“创世纪”时刻,请务必注意:

  1. 输入您的用户名: 建议使用全小写、简洁的英文名,例如 prorise。这个用户名将是您在 Linux 世界里的身份标识。
  2. 输入您的密码: 接着,系统会提示您输入并确认密码。

密码输入时屏幕上不会有任何显示!
这是 Linux 及所有类 Unix 系统出于安全考虑的悠久传统。当您输入密码时,光标不会移动,也不会出现 * 号。请不要怀疑是键盘坏了,只需凭感觉盲打,输入完毕后按回车即可。这个密码至关重要,未来您执行所有需要管理员权限的 sudo 命令时,都必须输入它。

当您看到类似下面的欢迎信息时,就代表您的 Ubuntu 子系统已经安装并初始化成功了!

1
2
3
4
Installation successful!
Welcome to Ubuntu 24.04 LTS!
...
prorise@YourPCName:~$

这个 prorise@YourPCName:~$ 就是您在 Linux 世界的家,我们称之为命令提示符 (Prompt)。


2.4. 【关键实践】换源:为你的 apt 安装火箭引擎

在正式开始使用前,还有一步至关重要的优化。Ubuntu 使用名为 apt 的工具来安装和管理软件,它会从一些默认的官方服务器(通常在欧洲或美国)下载软件包。由于地理位置和网络的原因,直接连接这些服务器的速度可能会非常缓慢。

为了解决这个问题,我们需要将 apt 的软件源更换为国内的镜像服务器,例如阿里云、清华大学等提供的镜像。这将使我们的软件安装速度提升数十倍。

2.4.1. 备份默认源

永远要对修改系统核心配置文件保持敬畏。在修改前,我们先备份一下原始的 sources.list 文件,以防万一:

1
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

系统会要求您输入刚刚设置的 Linux 密码。输入后,这个命令会将原始的源文件复制一份,命名为 sources.list.bak

2.4.2. 使用 Vim 编辑源文件

接下来,我们将使用 Vim 来编辑配置文件。Vim 是 Linux 环境下最强大、最普遍的文本编辑器,熟练掌握它将使您受益终身。

1
sudo vim /etc/apt/sources.list

执行后,您会进入 Vim 的界面。请不要慌张,Vim 有不同的“模式”,现在您正处于 普通模式 (Normal Mode),按键会被解释为命令。

第一步:清空文件
为了确保万无一失,我们先清空整个文件。在键盘上依次按下 g g d G

  • gg: 将光标移动到文件的第一行。
  • dG: 删除从当前行到文件末尾的所有内容。

第二步:进入插入模式
现在文件已经清空,按下键盘上的 i 键。您会发现窗口左下角出现了 -- INSERT -- 字样。这表示您已进入 插入模式 (Insert Mode),现在 Vim 的行为就和记事本一样了。

第三步:粘贴新的源地址
复制下面由 阿里云 提供的 Ubuntu 24.04 镜像源配置,然后在 Vim 窗口中 单击鼠标右键,即可粘贴。

1
2
3
4
5
6
7
8
9
10
11
12
# 阿里云镜像源 for Ubuntu 24.04 LTS
deb http://mirrors.aliyun.com/ubuntu/ noble main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ noble main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ noble-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ noble-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ noble-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ noble-backports main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ noble-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ noble-security main restricted universe multiverse

第四步:保存并退出
内容粘贴好后,按下键盘左上角的 Esc 键,左下角的 -- INSERT -- 会消失,表示您已退回到 普通模式。然后,输入冒号、w、q,即 :wq,再按回车。

  • :: 唤起命令栏。
  • w: write,写入、保存。
  • q: quit,退出。

恭喜,您已经完成了第一次 Vim 操作,并成功更换了软件源!


2.5. 【关键实践】执行首次全面系统升级

更换了高速源之后,我们立刻来执行一次全面的系统更新,以确保所有的软件包都更新到最新版本,修复潜在的安全漏洞。

在您的 Ubuntu 终端里,执行以下命令:

1
sudo apt update && sudo apt full-upgrade -y

apt update 会首先从阿里云服务器获取最新的软件包信息列表。apt full-upgrade 则会根据这个列表,将您系统中所有可升级的软件都更新到最新版。得益于国内镜像,这个过程通常会非常迅速。


2.6. 搭建魔法之桥:安装 VS Code 的 “WSL” 扩展

这座连接 Windows 与 Linux 的“魔法之桥”,就是 VS Code 的官方 “WSL” 扩展。

前提: 请确保您已经在 Windows 侧安装了 Visual Studio Code。

  1. 打开 VS Code。
  2. 点击左侧边栏的“扩展”图标 (看起来像四个方块,快捷键 Ctrl+Shift+X)。
  3. 在搜索框中输入 WSL
  4. 找到由 Microsoft 发布的那个扩展,它通常是第一个结果,然后点击 “安装”

image-20250915225014895

安装过程很快。这个扩展会自动在你的 Linux 子系统中配置一个轻量级的 vscode-server。正是这个精巧的客户端-服务器架构,实现了跨越系统边界的无缝体验。


2.7. 第一次跨越:在正确的位置启动 VS Code

现在,我们将进行第一次,也是最关键的一次“穿越”。我们将学习如何从 WSL 终端,在正确的 Linux 文件系统内启动 VS Code 进行开发。

  1. 打开 Ubuntu 终端
    启动后,您会发现默认路径通常位于 /mnt/c/Users/YourWindowsUsername。这是一个为了方便文件交换而设置的起点,但直接在此处进行开发会 极其缓慢。因此,我们的第一步永远是前往正确的工作区。

  2. 导航至 Linux 的专属工作区
    在 Linux 中,所有工作的起点都应该是您的专属“家目录”。这是一个位于 Linux 原生文件系统中的、高性能的安全区域。

    1
    2
    # 无论当前在哪,立刻使用此命令回到家目录
    cd ~

    cd 是切换目录(Change Directory)的命令,而 ~ (波浪号) 是家目录的永久快捷方式,其完整路径为 /home/your_username。执行后,您会看到命令提示符变为一个简洁的 ~,代表您已抵达。

  3. 建立规范的项目结构
    一个良好的习惯是将所有项目代码存放在一个统一的目录中。让我们在家目录 ~ 下创建一个名为 projects 的文件夹,并为我们的第一个项目创建目录。

    1
    2
    3
    4
    5
    6
    7
    8
    # 在家目录下,创建一个名为 projects 的文件夹
    mkdir projects
    # 进入 projects 文件夹
    cd projects
    # 为我们的第一个项目创建目录
    mkdir my-first-project
    # 进入该项目目录
    cd my-first-project

    现在,您的终端路径应为 ~/projects/my-first-project。这是一个完美的、高性能的开发起点。

  4. 从 Linux 启动 VS Code
    在当前的项目目录内,执行以下核心命令:

    1
    code .

    这个命令的含义是:请求在当前目录(由 . 这个符号代表)的上下文中,启动 VS Code。首次运行时,VS Code 会在 Ubuntu 中自动安装一个轻量级服务 vscode-server,此过程只需几十秒。安装完成后,一个崭新的 VS Code 窗口将在您的 Windows 桌面上打开,但它的核心已经与您的 Linux 环境深度链接。

2.8. 深度解析:理解“真·跨系统开发”的含义

这个新打开的 VS Code 窗口看似普通,但实际上蕴含着跨系统开发的魔力。请留意以下几个关键特征:

  1. 左下角的绿色连接指示器
    窗口左下角会有一个显著的绿色标志,上面写着 WSL: Ubuntu。这是一个重要的状态指示,它明确地告诉您:当前 VS Code 窗口正作为一个远程客户端,其所有的文件操作、命令执行和程序运行,都发生于后端的 WSL Ubuntu 环境中。

  2. 无缝集成的原生 Linux 终端
    使用快捷键 Ctrl + ` (反引号键) 打开 VS Code 的集成终端。您会发现,这已经是一个功能完整的、原生的 Ubuntu 终端,并且其默认路径就是我们刚刚创建的 /home/your_username/projects/my-first-project。您可以在这里直接执行任何Linux命令,如 ls -l, touch test.txt 等,其效果与直接在独立的 Ubuntu 终端窗口中操作完全一致。

  3. 文件系统位于高性能的 Linux 区
    在 VS Code 左侧的文件浏览器中,右键点击空白处,选择“新建文件”,命名为 hello.js。随即在下方的集成终端中输入 ls 命令并回车,您会看到 hello.js 被列出。接着输入 pwd 命令(Print Working Directory,打印当前工作目录),终端会返回 /home/your_username/projects/my-first-project。这证明了您通过图形界面创建的文件,被真实地、高性能地存储在了 Linux 的原生文件系统内。

核心理念总结:

您使用的是 Windows 的 VS Code (享受着流畅的 UI、丰富的插件生态和熟悉的快捷键),但您的代码文件、依赖、编译器、调试器、终端,全部都 100% 运行在真实的 Linux 环境中。您获得了两个世界最好的部分,而几乎没有妥协。

2.9. 实战演练:体验高性能的 Node.js 工作流

让我们通过一个简单的 Node.js 示例,将所有概念串联起来,并直观地感受在正确位置开发的性能优势。

  1. 在 VS Code 集成终端中初始化项目

    1
    npm init -y

    命令执行后,package.json 文件会瞬间出现在左侧文件浏览器中。

  2. 安装项目依赖

    1
    npm install express

    请特别留意此命令的执行速度。node_modules 目录的创建涉及数千个小文件的写入操作,这是一个对文件系统 I/O 性能的绝佳考验。因为我们身处 Linux 原生文件系统,这个过程会比在 /mnt/c (Windows 盘) 下快数倍甚至数十倍。这正是 WSL 开发工作流的核心价值所在。

  3. 创建并编辑服务器代码
    在 VS Code 文件浏览器中,创建一个名为 server.js 的文件,并粘贴以下代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    const express = require('express');
    const app = express();
    const port = 3000;

    app.get('/', (req, res) => {
    // 这条响应信息由在 Linux 中运行的 Node.js 服务发出
    res.send('Hello from WSL 2! This is a REAL Linux server.');
    });

    app.listen(port, () => {
    console.log(`Server running at http://localhost:${port}`);
    });
  4. 在集成终端中启动服务

    1
    node server.js

    终端会显示服务已在 3000 端口上运行。

  5. 在 Windows 浏览器中验证结果
    打开您在 Windows 系统中的任意网页浏览器(如 Chrome, Edge),访问地址 http://localhost:3000。您将立刻看到页面显示 “Hello from WSL 2! This is a REAL Linux server.”。

原理解析: WSL 2 的网络系统具备端口自动转发的魔法。任何在 Linux 子系统内部监听 localhost (或 0.0.0.0) 的网络端口,都会被 WSL 自动、无缝地映射到 Windows 主机的 localhost 上。您无需进行任何手动的端口映射或网络配置,开发体验如同在原生 Windows 上一样自然流畅。

Cursor 作为一款集成了强大 AI 功能、基于 VS Code 的编辑器,同样可以与 WSL 2 实现无缝集成,其工作原理与 VS Code 完全一致。以下是在 Cursor 中启用 WSL 2 开发工作流的两种主要方法。

方法一:从 Cursor 界面连接到 WSL

这种方法适合喜欢图形化操作的用户。

  1. 安装 WSL 扩展
    打开 Cursor,进入左侧的扩展市场视图,搜索 “WSL” 并安装由 Microsoft 提供的官方扩展。

  2. 连接到 WSL
    安装完成后,在 Cursor 窗口的左下角会看到一个蓝色的远程连接按钮(图标通常是 ><)。 点击该按钮,在弹出的命令面板中选择 “Connect to WSL” 或 “Connect to WSL using Distro…”。

  3. 打开项目文件夹
    连接成功后,Cursor 会重新加载,并允许你通过 “文件” > “打开文件夹…” 来浏览并打开位于 WSL Linux 文件系统(例如 /home/your_username/projects)中的项目。

方法二:从 WSL 终端启动 Cursor (推荐)

这是最流畅、最可靠的方式,与 VS Code 的 code . 命令体验一致。

  1. 导航到项目目录
    首先,在你的 Ubuntu (或其他发行版) 终端中,使用 cd 命令进入你的项目文件夹。

    1
    cd ~/projects/my-first-project
  2. 启动 Cursor
    在项目目录内,执行以下命令:

    1
    cursor .

    当你第一次运行此命令时,Cursor 会自动在你的 WSL 实例中安装一个名为 .cursor-server 的轻量级服务,用于管理与 Windows 端 Cursor 的通信。 安装完成后,项目将在一个新的 Cursor 窗口中打开。

  3. 验证连接
    查看 Cursor 窗口左下角,如果显示 WSL: Ubuntu (或你的发行版名称),则表示连接成功,你已经处在高性能的跨系统开发环境中。

疑难解答:cursor: command not found

如果在 WSL 终端中执行 cursor . 时遇到“命令未找到”的错误,这意味着 WSL 无法找到位于 Windows 系统中的 Cursor 可执行文件。

解决方案: 将 Cursor 的路径手动添加到 WSL 的 PATH 环境变量中。

  1. 编辑你的 Shell 配置文件
    根据你使用的 Shell,打开对应的配置文件(~/.bashrc 对应 Bash,~/.zshrc 对应 Zsh)。

    1
    2
    3
    4
    5
    # 如果你使用 Bash
    nano ~/.bashrc

    # 如果你使用 Zsh
    nano ~/.zshrc
  2. 添加 PATH
    在文件末尾添加以下行,注意<YourWindowsUsername> 替换为你自己的 Windows 用户名。

    1
    export PATH="$PATH:/mnt/c/Users/<YourWindowsUsername>/AppData/Local/Programs/cursor/resources/app/bin"
  3. 使其生效
    保存文件后,执行以下命令使配置立即生效(或直接重启终端)。

    1
    2
    3
    4
    5
    # 如果你使用 Bash
    source ~/.bashrc

    # 如果你使用 Zsh
    source ~/.zshrc

    现在,cursor . 命令应该可以在 WSL 终端的任何路径下正常工作了。

小技巧: 为了让习惯于 VS Code 的开发者更加方便,你还可以在 .bashrc.zshrc 文件中设置一个别名,让输入 code . 时实际执行的是 cursor .

1
alias code='cursor'