欢迎光临
我们一直在努力

Windows 安装 WSL2 并运行 Ubuntu 22.04 指南

Windows 安装 WSL2 并运行 Ubuntu 22.04 指南

本文为 Windows 10 和 Windows 11 用户提供从零开始搭建 WSL2 环境的详细指南,涵盖安装 Ubuntu 22.04、自定义存储位置、性能优化以及常见问题排查。无论你是开发者、运维工程师还是 Linux 爱好者,本文将助你快速上手 WSL2。


为什么要选择 WSL2 而非 VirtualBox 等虚拟机?

在选择运行 Linux 环境时,WSL2(Windows Subsystem for Linux 2)与 VirtualBox、VMware 等传统虚拟机相比具有显著优势。以下是选择 WSL2 的主要理由:

1. 更高的性能和资源效率

  • 轻量级虚拟化:WSL2 使用 Hyper-V 架构的轻量级虚拟机,相比 VirtualBox 的完整虚拟化,占用更少的 CPU 和内存资源。
  • 动态内存管理:WSL2 支持动态分配内存,并在空闲时通过 autoMemoryReclaim 释放内存,而 VirtualBox 通常需要预分配固定内存。
  • 快速启动:WSL2 可在数秒内启动 Linux 环境,而 VirtualBox 启动完整虚拟机通常需要更长时间。

2. 无缝的 Windows 与 Linux 集成

  • 文件系统互操作:WSL2 支持直接访问 Windows 文件系统(通过 /mnt/),并提供高性能的文件共享,而 VirtualBox 需要配置共享文件夹,性能较低。
  • 命令行集成:WSL2 可在 Windows Terminal 或 PowerShell 中直接运行 Linux 命令,无需切换到虚拟机界面。
  • 端口转发:WSL2 支持 localhost 端口无缝转发,方便开发和测试,而 VirtualBox 需要复杂网络配置。

3. 开发体验优化

  • 工具链支持:WSL2 与 Visual Studio Code、Docker Desktop 等开发工具深度集成,适合现代化开发工作流。VirtualBox 需额外配置以实现类似功能。
  • WSLg(GUI 支持):Windows 11 的 WSL2 支持运行 Linux GUI 应用(如 Firefox),无需额外安装 X 服务器,VirtualBox 则需要手动配置图形界面。
  • 嵌套虚拟化:WSL2 支持在 Linux 环境中运行 Docker 或其他虚拟化工具,适合云原生开发,而 VirtualBox 的嵌套虚拟化配置复杂。

4. 简化的管理与更新

  • 一键安装:WSL2 可通过 wsl –install 快速部署,相比 VirtualBox 的繁琐安装和配置过程更简单。
  • 自动更新:WSL2 内核通过 Windows Update 自动更新,Ubuntu 发行版通过 apt 维护,管理成本低。VirtualBox 需要手动更新虚拟机镜像和扩展包。
  • 存储优化:WSL2 使用虚拟硬盘(.vhdx)动态扩展存储,占用空间小,而 VirtualBox 虚拟机镜像通常占用较大固定空间。

5. 微软官方支持

  • WSL2 是微软官方产品,与 Windows 生态高度兼容,社区活跃,更新频繁。VirtualBox 虽功能强大,但依赖第三方维护,可能存在兼容性问题。
  • WSL2 提供详细的官方文档和 GitHub 社区支持,问题排查更便捷。

适用场景对比

特性WSL2VirtualBox
性能 高(轻量级虚拟化) 中等(完整虚拟化)
Windows 集成 无缝(文件、端口、命令行) 有限(需共享文件夹、网络配置)
GUI 支持 原生支持(Windows 11 WSLg) 需要额外配置 X 服务器或图形界面
开发工具集成 优秀(VS Code、Docker 等) 一般(需手动配置)
管理复杂度 低(一键安装、自动更新) 高(手动配置、更新)
存储占用 动态扩展(小) 固定分配(较大)

什么时候选择 VirtualBox?

  • 需要运行完整的 Linux 桌面环境(如 GNOME、KDE)或非 Ubuntu 发行版。
  • 需要模拟复杂网络拓扑或多虚拟机环境。

结论:对于开发者、学生或需要在 Windows 上快速运行 Linux 环境的个人,WSL2 提供更高效、便捷的体验。对于需要完整虚拟化或特殊硬件模拟的场景,VirtualBox 可能更适合。


一、前置条件:确认操作系统支持性

在安装 WSL2 之前,需确保你的 Windows 系统满足最低要求。

Windows 11

  • 默认支持 WSL2,无需额外检查。
  • 推荐版本:22H2 或更高,以支持 systemd 和 WSLg(GUI 应用支持)。

Windows 10

  • 最低要求:1903 版本(Build 18362) 或更高。
  • 推荐版本:20H2 或更高,以获得更好的性能和功能支持。
查看系统版本
  • 按 Win + R,输入 winver,回车。
  • 弹窗将显示 Windows 版本和 Build 号。
  • 升级系统

    若版本不符合要求:

    • 打开 设置 > Windows 更新 检查更新。
    • 或使用 Windows 10 更新助手进行升级。

    提示:建议备份重要数据后再升级系统,以防意外情况。


    二、安装 WSL2

    WSL2 提供两种安装方式:一键安装(推荐新手)和手动安装(适合需要自定义的用户)。

    方法一:一键安装(推荐)

  • 以管理员身份打开 PowerShell 或 Windows Terminal。

  • 执行以下命令:

    wsl –install

  • 系统将自动:

    • 启用 WSL 和虚拟机平台功能。
    • 下载并安装最新 WSL2 内核。
    • 安装默认的 Ubuntu 发行版(若无其他指定)。
  • 重启电脑以完成安装。

  • 注意:若命令未自动安装 Ubuntu,可在后续步骤手动安装 Ubuntu 22.04.

    方法二:手动安装

    适合需要精确控制安装过程的高级用户。

  • 启用必要功能: 以管理员身份运行 PowerShell,执行:

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

  • 重启电脑:

    shutdown /r /t 0

  • 安装 WSL2 内核更新:

    • 下载并安装 WSL2 Linux 内核更新包.
    • 按提示完成安装。
  • 设置 WSL2 为默认版本:

    wsl –set-default-version 2

  • 提示:若需确认 WSL 是否安装成功,可运行 wsl –version 检查版本信息。


    三、安装 Ubuntu 22.04

    Ubuntu 22.04 LTS 是长期支持版本,稳定且适合大多数开发场景。以下提供两种安装方式。

    方法一:通过 Microsoft Store 安装

  • 打开 Microsoft Store。
  • 搜索 Ubuntu 22.04 LTS。
  • 点击 获取 并安装。
  • 安装完成后,启动 Ubuntu,设置用户名和密码.
  • 方法二:通过命令行安装

  • 在 PowerShell 中运行:

    wsl –install -d Ubuntu-22.04

  • 安装完成后,WSL 将自动启动 Ubuntu 并提示设置用户名和密码。

  • 注意:

    • 用户名和密码仅用于 Ubuntu 内部,与 Windows 账户无关。
    • 若 Microsoft Store 访问受限,推荐使用命令行方式。

    四、管理存储:默认位置与自定义迁移

    WSL2 的虚拟硬盘文件(.vhdx)默认占用系统盘空间,可能导致 C 盘空间不足。以下介绍如何查看默认存储位置并迁移到其他磁盘。

    默认存储位置

    Ubuntu 22.04 的文件默认位于:

    C:\\Users\\<用户名>\\AppData\\Local\\Packages\\CanonicalGroupLimited…UbuntuonWindows_…

    • 包含一个扩展名为 .vhdx 的虚拟硬盘文件,存储 Ubuntu 的完整文件系统。
    • 默认占用空间约为 1-2GB,随使用逐渐增长。

    自定义存储位置

    通过导出和导入操作,可将 Ubuntu 迁移到其他磁盘(如 D 盘)。

  • 导出 Ubuntu 发行版:

    wsl –export Ubuntu-22.04 D:\\WSL\\Ubuntu2204_backup.tar

    • 将 Ubuntu 22.04 导出为 .tar 文件,存储在 D:\\WSL 目录。
  • 注销旧发行版:

    wsl –unregister Ubuntu-22.04

    • 删除旧的 Ubuntu 发行版,释放 C 盘空间。
  • 导入到新位置:

    wsl –import Ubuntu-22.04 D:\\WSL\\Ubuntu2204 D:\\WSL\\Ubuntu2204_backup.tar –version 2

    • 将 Ubuntu 导入到 D:\\WSL\\Ubuntu2204 目录,确保使用 WSL2。
  • 验证迁移:

    wsl -l -v

    • 确认 Ubuntu-22.04 已正确导入并运行在 WSL2。
  • 提示:

    • 迁移后,建议定期备份 .tar 文件以便恢复。
    • 若需调整虚拟硬盘大小,可使用 wsl –manage 命令(Windows 11 24H2 及以上支持)。

    五、WSL2 常用命令速查

    以下是管理 WSL2 的核心命令,建议收藏以便随时参考。

    命令说明
    wsl –list / -l 列出所有已安装的发行版
    wsl –list –verbose / -l -v 显示详细信息(包括版本和默认发行版)
    wsl –set-version <发行版名> 2 将指定发行版切换到 WSL2
    wsl –set-default <发行版名> 设置默认运行的发行版
    wsl –set-default-version 2 设置新安装的发行版默认使用 WSL2
    wsl –shutdown 关闭所有运行中的 WSL 实例
    wsl –terminate <发行版名> 强制终止指定发行版
    wsl –unregister <发行版名> 注销并删除指定发行版
    wsl –export <发行版名> <文件路径> 导出发行版到指定路径
    wsl –import <发行版名> <路径> <文件> 导入发行版到指定位置

    提示:使用 wsl –help 可查看完整命令列表。


    六、性能优化:配置 .wslconfig

    WSL2 的性能可以通过全局配置文件 .wslconfig 进行优化,文件位于:

    C:\\Users\\<用户名>\\.wslconfig

    若文件不存在,需手动创建。

    推荐配置模板

    [wsl2]
    memory=6GB # 限制最大内存使用量
    processors=4 # 指定 CPU 核心数
    swap=8GB # 交换空间大小
    swapFile=D:\\WSL\\swap.vhdx # 自定义 swap 文件路径
    autoMemoryReclaim=true # 自动回收未使用内存
    localhostForwarding=true # 启用 localhost 端口转发
    guiApplications=true # 启用 WSLg(GUI 应用支持)
    gpu=true # 启用 GPU 加速(需支持的 GPU 驱动)
    dns=8.8.8.8 # 使用 Google DNS
    networkingMode=mirrored # 启用镜像网络模式(支持 IPv6)
    firewall=true # 启用 WSL 防火墙集成
    autoProxy=true # 自动使用 Windows 代理
    nestedVirtualization=true # 启用嵌套虚拟化(适合运行 Docker 等)

    参数详解

    参数说明
    memory 限制 WSL2 最大内存,避免占用过多宿主机资源。
    processors 指定分配的 CPU 核心数,建议设为物理核心数的一半。
    swap 设置交换空间大小,推荐为内存的 1-2 倍。
    swapFile 自定义交换文件路径,避免占用 C 盘。
    autoMemoryReclaim 启用后定期回收未使用内存,提升宿主机性能。
    localhostForwarding 允许 WSL2 与 Windows 共享 localhost 端口。
    guiApplications 启用 WSLg,支持运行 Linux GUI 应用(Windows 11 独有)。
    gpu 启用 GPU 加速,适合机器学习或图形密集型任务。
    dns 自定义 DNS 服务器,解决网络解析问题。
    networkingMode 设置为 mirrored 支持双栈网络(IPv4/IPv6)。
    firewall 启用防火墙集成,提升安全性。
    autoProxy 自动同步 Windows 代理设置,适合科学上网场景。
    nestedVirtualization 启用嵌套虚拟化,支持在 WSL2 内运行虚拟机或容器。

    应用配置

  • 保存 .wslconfig 文件。

  • 执行:

    wsl –shutdown

  • 重新启动 WSL 或重启电脑。

  • 参考资料

    • Microsoft Learn – WSL 配置文档

    七、Ubuntu 内部配置:/etc/wsl.conf

    /etc/wsl.conf 是 WSL2 发行版内部的配置文件,用于控制挂载、网络和启动行为。

    推荐配置模板

    [boot]
    systemd=true

    [automount]
    enabled=true
    root=/mnt/
    options="metadata,umask=22,fmask=11"

    [network]
    generateHosts=true
    generateResolvConf=false

    [interop]
    enabled=true
    appendWindowsPath=true

    [user]
    default=<你的用户名>

    参数详解

    节键说明
    [boot] systemd 启用 systemd(需 Windows 11 22H2 或更高)。
    [automount] enabled 启用 Windows 磁盘自动挂载。
    [automount] root 设置挂载点路径,默认 /mnt/。
    [automount] options 挂载选项,如 metadata 启用文件权限映射。
    [network] generateHosts 是否生成 /etc/hosts 文件。
    [network] generateResolvConf 是否自动生成 /etc/resolv.conf(设为 false 可自定义 DNS)。
    [interop] enabled 启用 Windows 和 WSL 之间的互操作性。
    [interop] appendWindowsPath 将 Windows PATH 添加到 WSL 环境变量。
    [user] default 设置默认登录用户。

    应用配置

  • 在 Ubuntu 中编辑

    /etc/wsl.conf

    sudo nano /etc/wsl.conf

  • 保存后,重启 WSL:

    wsl –shutdown

  • 提示:若需自定义 DNS,可手动编辑 /etc/resolv.conf,并确保 generateResolvConf=false。


    八、常见问题排查与解决方案

    以下是 WSL2 使用中的常见问题及解决方法。

    1. Ubuntu 启动提示 systemd 无效

    原因:Windows 版本不支持 systemd 或配置错误。 解决:

    • 确保系统为 Windows 11 22H2 或更高(运行 winver 检查)。
    • 确认 /etc/wsl.conf 中 [boot] systemd=true。
    • 执行 wsl –shutdown 后重试。

    2. 网络访问异常(如无法访问公网)

    原因:DNS 解析失败或网络模式配置错误。 解决:

    • .wslconfig

      中设置:

      dns=8.8.8.8
      networkingMode=mirrored

    • 清理 Windows DNS 缓存:

      ipconfig /flushdns
      wsl –shutdown

    • 检查 Windows 防火墙,确保未阻止 WSL 网络流量。

    3. WSL2 占用内存过高

    原因:WSL2 默认动态分配内存,可能占用过多资源。 解决:

    • .wslconfig

      中限制内存:

      memory=4GB
      autoMemoryReclaim=true

    • 定期运行 wsl –shutdown 释放内存。

    4. 如何彻底重置 WSL?

    步骤:

  • 注销发行版:

    wsl –unregister Ubuntu-22.04

  • 关闭 WSL:

    wsl –shutdown

  • (可选)禁用 WSL 功能:

    • 打开 控制面板 > 程序和功能 > 启用或关闭 Windows 功能。
    • 取消勾选 适用于 Linux 的 Windows 子系统 和 虚拟机平台。
    • 重启后重新启用。
  • 5. WSLg(GUI 应用)无法运行

    原因:Windows 11 配置或驱动问题。 解决:

    • 确保系统为 Windows 11 且启用 WSLg(.wslconfig 中 guiApplications=true)。
    • 更新 GPU 驱动。
    • 安装 X11 服务器(如 VcXsrv)作为备用。

    九、扩展功能与进阶用法

    1. 使用 Windows Terminal

    • 安装 Windows Terminal(Microsoft Store 提供),统一管理 WSL、PowerShell 和 CMD。
    • 支持多标签页、自定义主题和快捷键,提升终端体验。

    2. 运行 GUI 应用(WSLg)

    • Windows 11 支持 WSLg,可直接运行 Linux GUI 应用(如 gedit、firefox)。

    • 安装示例:

      sudo apt update
      sudo apt install firefox
      firefox

    3. 在 WSL2 中运行 Docker

    • 启用嵌套虚拟化(.wslconfig 中 nestedVirtualization=true)。
    • 安装 Docker Desktop 并启用 WSL2 后端,或直接在 Ubuntu 中安装 Docker CE.

    4. 集成开发环境

    • 在 WSL2 中安装 VS Code Server,结合 Windows 的 VS Code 实现无缝开发。

    • 示例:

      curl -fsSL https://code-server.dev/install.sh | sh
      code-server


    十、📄 WSL2 快速参考卡片(A4 一页版)

    一页速查,涵盖安装、管理和优化,适合打印或保存为 PDF。

    安装与管理

    # 一键安装 WSL2
    wsl –install

    # 安装 Ubuntu 22.04
    wsl –install -d Ubuntu-22.04

    # 查看发行版
    wsl -l -v

    # 设置默认 WSL2
    wsl –set-default-version 2

    # 关闭 WSL
    wsl –shutdown

    性能优化:.wslconfig

    路径:C:\\Users\\<用户名>\\.wslconfig

    [wsl2]
    memory=6GB
    processors=4
    swap=8GB
    autoMemoryReclaim=true
    networkingMode=mirrored
    guiApplications=true

    内部配置:/etc/wsl.conf

    [boot]
    systemd=true

    [automount]
    enabled=true
    options="metadata"

    [network]
    generateResolvConf=false

    快速排查

    • Systemd 无效:检查 Windows 11 22H2+ 和 /etc/wsl.conf。
    • 内存过高:设置 memory=4GB 和 autoMemoryReclaim=true。
    • 网络问题:启用 networkingMode=mirrored 和 dns=8.8.8.8。

    十一、总结与资源推荐

    WSL2 是一个强大的工具,将 Linux 的灵活性与 Windows 的易用性结合,为开发者提供了高效的跨平台开发环境。通过本文的指南,你可以:

    • 快速安装并配置 WSL2 和 Ubuntu 22.04。
    • 优化存储、内存和网络性能。
    • 排查常见问题并探索进阶功能。

    推荐资源

    • Microsoft WSL 官方文档
    • Ubuntu 官方 WSL 教程
    • WSL GitHub 社区
    • Windows Terminal 自定义指南
    赞(0)
    未经允许不得转载:171主机测评 » Windows 安装 WSL2 并运行 Ubuntu 22.04 指南
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址