# WSL2 核心操作指南 | 仲夏夜之梦
这篇文章主要讲WSL2虚拟机核心操作哦～它基于轻量级Hyper-V运行，像贴心小精灵默默工作～还能用命令行精细控制！接下来讲启动/关闭、实例管理、资源配置、网络操作、备份迁移这五大操作，是不是很期待呢～♪ 启动/关闭 WSL2 虚拟机 WSL2的虚拟机平时是由Windows自动管理的呢，不过我们也可以通过命令手动控制它的生命周期哦～ 如果想要完全关闭W...

Skip to content

# WSL2 核心操作指南

约 1123 字大约 4 分钟

2025-09-30

这篇文章主要讲WSL2虚拟机核心操作哦～它基于轻量级Hyper-V运行，像贴心小精灵默默工作～还能用命令行精细控制！接下来讲启动/关闭、实例管理、资源配置、网络操作、备份迁移这五大操作，是不是很期待呢～♪

## 启动/关闭 WSL2 虚拟机

WSL2的虚拟机平时是由Windows自动管理的呢，不过我们也可以通过命令手动控制它的生命周期哦～

    # 启动指定的发行版
    wsl -d Ubuntu-20.04

    # 关闭指定的发行版
    wsl --terminate Ubuntu-20.04

如果想要完全关闭WSL2的所有虚拟机，也是可以的哦～

使用这个命令后，所有的发行版都会被强制终止，内存、网络、文件句柄都会被全部释放呢～

    wsl --shutdown

## 管理正在运行的 WSL 实例

想知道当前有哪些WSL实例在运行吗？很简单哦～使用下面这个命令就可以查看啦：

    wsl -l -v

输出结果大概是这个样子的哦～

      NAME              STATE           VERSION
    * Ubuntu            Running         2
      docker-desktop    Running         2
      Ubuntu-20.04      Stopped         2

看到那个带星号(*)的了吗？那就是当前的默认系统哦～如果想要设置新的默认发行版，可以使用这个命令：

    wsl --set-default Ubuntu-20.04

嘿嘿～接下来讲讲怎么删除一个 WSL 实例哦～如果想和某个WSL实例说拜拜，就可以用下面这个命令哒～

    wsl --unregister Ubuntu-20.04

注意，删除后无法恢复哦～请谨慎操作～

## 配置 WSL2 资源

WSL2的资源也是可以自定义配置的哦～我们可以通过编辑`%USERPROFILE%\.wslconfig`文件来设置内存、CPU核心数等参数呢～

    [wsl2]
    # 内存限制（默认：80% 物理内存）
    memory=4GB

    # CPU 核心数限制（默认：全部核心）
    processors=2

    # 交换空间大小（默认：25% 内存）
    swap=2GB

    # 是否启用 localhost 端口转发（默认 true）
    localhostForwarding=true

要注意哦～修改完配置后，必须重启WSL2虚拟机才能让这些设置生效呢～

## 网络相关配置

WSL2使用的是虚拟NAT网络哦，它和Windows主机是相互隔离的，但又可以互相通信呢～是不是很神奇～

方向 | 访问方式 | 说明
--- | --- | ---
Windows -> WSL2 | localhost:port | 自动端口转发（需要`localhostForwarding=true`）
WSL2 -> Windows | `host.docker.internal` 或 `$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}')` | 获取主机的IP地址
外部机器 -> WSL2 | 默认不可达 | 需要手动端口转发或使用 Windows 防火墙规则

想知道WSL2的IP地址吗？可以用这个命令查看哦～（不过要注意，每次启动WSL2后，IP地址可能会变呢～）

注意哦～这个命令需要进入到WSL2虚拟机内部执行才行呢～

    hostname -I

如果需要访问WSL2中的服务，多亏了`localhostForwarding`的配置，我们直接访问localhost:port就可以啦～超方便的～

如果需要手动设置端口转发，可以在Powershell中添加防火墙规则和端口转发哦～不过要记得以管理员方式打开Powershell呢～

    # 获取 WSL2 当前IP地址
    $wslIp = (wsl hostname -I).Trim()

    $wslIp

    # 添加端口转发（以 8000 端口为样例）
    netsh interface portproxy add v4tov4 listenport=8000 listenaddress=0.0.0.0 connectport=8000 connectaddress=$wslIp

    # 开放 Windows 防火墙
    New-NetFirewallRule -DisplayName "WSL2 Port 8000" -Direction Inbound -LocalPort 8000 -Protocol TCP -Action Allow

    # 撤销端口转发
    netsh interface portproxy delete v4tov4 listenport=8000 listenaddress=0.0.0.0

    # 撤销开放的防火墙规则
    Remove-NetFirewallRule -DisplayName "WSL2 Port 8000"

## 备份和迁移

WSL2发行版也是可以备份和迁移的哦～我们可以把整个发行版导出成tar文件，这样就可以用于备份、迁移或者分享给其他小伙伴啦～

    # 导出指定发行版到 tar 文件
    wsl --export <发行版名称> <输出文件路径.tar>
    wsl --export Ubuntu-20.04 D:\backups\ubuntu-2004.tar

    # 导入 tar 文件为新的发行版
    wsl --import <新发行版名称> <安装目录> <tar 文件路径> [选项]
    wsl --import Ubuntu-Backup C:\wsl\Ubuntu-Backup D:\backups\ubuntu-2004.tar --version 2

要注意哦～导入完成后，默认用户会变成root呢～如果想要设置回原来的用户，可以使用这个命令：

    ubuntu2004.exe config --default-user username

悄悄告诉大家一个小秘密～WSL2是可以同时存在多个同源发行版的哦～这样我们就可以在不同的环境中进行不同的实验啦～是不是很方便呢～