WSL子系统安装与使用

系统要求

  • Windows 10 版本 1903(Build 18362)或更高(建议更新到最新版)。
  • 如果版本低于 1903,需通过 Windows Update 升级系统。
  • 虚拟化功能已启用(在 BIOS/UEFI 中开启 VT-x/AMD-V)

开启虚拟化

  • 重启电脑,进入 BIOS/UEFI

  • 开机时按特定键(通常是 F2、Del、F12 或 Esc,具体取决于主板型号)。

  • 找到虚拟化设置(通常在 Advanced 或 CPU Configuration 中):

  • Intel CPU:启用 Intel Virtualization Technology (VT-x)。

  • AMD CPU:启用 SVM Mode(等同于 AMD-V)。

  • 保存设置并退出(通常按 F10)。

确认已开启 CPU 虚拟化

  • 快捷键Ctrl+Shift+Esc,或右键任务栏选择 任务管理器
  • 切换到 “性能” 选项卡。

在这里插入图片描述

开启windows中的以下功能

方法一:使用 PowerShell(推荐)
# 启用 WSL 功能(不指定版本,默认安装 WSL2)
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

# 启用虚拟机平台(WSL2 必需)
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

# 重启计算机(必须)
Restart-Computer

方法二:通过图形界面

控制面板 => 程序和功能 => 启用或关闭Windows功能 => 勾选下图的选项 确认后,重启电脑
在这里插入图片描述

WSL 常用命令速查表

基础操作

命令/组合 说明 示例
wsl --list --verbosewsl -l -v 查看已安装的发行版及状态 wsl -l -v
wsl --install -d <发行版名> 安装指定发行版 wsl --install -d Ubuntu-22.04
wsl --set-default-version 2 设置默认 WSL 版本为 2
wsl --shutdown 立即终止所有 WSL 实例
wsl --terminate <发行版名> 终止指定发行版 wsl --terminate Ubuntu
wsl --export <发行版> <文件名.tar> 导出发行版到文件 wsl --export Ubuntu ubuntu_backup.tar
wsl --import <新发行版名> <安装路径> <备份文件.tar> 导入发行版 wsl --import Ubuntu_New C:\wsl\ubuntu_new ubuntu_backup.tar

系统管理

命令/组合 说明 示例
wsl --set-version <发行版> 2 转换发行版到 WSL2 wsl --set-version Ubuntu-22.04 2
wsl --update 更新 WSL 内核
wsl --status 查看 WSL 状态信息
wsl --user <用户名> 以指定用户运行 wsl --user root

wsl1 升级到wsl2 下载安装

参考官网地址

  • 下载地址
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
  • WSL 有 WSL1 和 WSL2,推荐使用 WSL2(性能更好):
wsl --set-default-version 2

安装Linux发行版本

方法一:从 Microsoft Store 安装

  • 打开 Microsoft Store,搜索想要的 Linux 发行版(如 Ubuntu、Debian、Kali Linux)。

  • 选择版本(如 Ubuntu 22.04 LTS),点击 安装。

  • 安装完成后,从 开始菜单 启动该发行版,等待初始化并设置用户名和密码。

方法二:使用 wsl --install 快速安装

(仅限 Windows 11 或最新 Win10)

  • 默认安装 Ubuntu(WSL2)
wsl --install
  • 如需指定发行版:
# 查看可以安装的版本
wsl --list -o 
# 指定安装版本
wsl --install -d Ubuntu-22.04

在这里插入图片描述

方法三:导入的镜像.tar文件

  • 步骤 1:准备 .tar 镜像

  • 步骤 2:导入镜像为新发行版

    wsl --import <自定义名称> <安装路径> <镜像路径.tar> --version 2
    
  • 参数说明:

    • <自定义名称>:子系统的名称(如 MyUbuntu)。

    • <安装路径>:存储子系统的目录(如 C:\WSL\MyUbuntu)。

    • <镜像路径.tar>:.tar 文件的路径。

    –version 2:指定使用 WSL2(推荐)如果只有wsl2可省略

示例:

wsl --import debian12 D:\wsl D:\wsl\iso\debain.tar

在这里插入图片描述

  • 步骤 3:设置默认用户
    导入的子系统默认以 root 用户启动,需手动配置普通用户:

    • 临时启动为 root:
    wsl -d MyCustomUbuntu
    
    • 在 WSL 内创建用户并设置密码:
    # 创建用户(如果尚未创建)
    adduser myuser
    usermod -aG sudo myuser
    # 设置默认用户
    echo -e "[user]\ndefault=myuser" | sudo tee /etc/wsl.conf
    
    # 退出
    exit
    
    • 最后在PowerShell中重启Wsl:
    wsl --shutdown
    wsl -d debian12  # 现在应该以 myuser 用户启动
    
  • 示例
    在这里插入图片描述

方法四:直接使用 .vhdx 虚拟磁盘(适用于 WSL2)

  • 步骤 1:准备 .vhdx 文件

    • 从现有 WSL2 子系统导出:
    # 先关闭 WSL
    wsl --shutdown 
    wsl --export <发行版名称> <路径/文件名.vhdx> --vhd
    
    • 或直接复制现有子系统的虚拟磁盘文件(路径通常为 %USERPROFILE%\AppData\Local\Packages<发行版Package>\LocalState\ext4.vhdx 或自定义导入时指定的目录中)。
    • --vhd这是一个可选的参数,表示导出文件时,文件系统将被转换为 VHD(虚拟硬盘)格式。
      如果没有使用 --vhd 参数,默认情况下会将 WSL 发行版导出为 .tar 文件格式,这是一种较为通用的存档格式。
      在这里插入图片描述
  • 步骤 2:导入 .vhdx 文件

    
    wsl --import-in-place <自定义名称> <路径/文件名.vhdx>
    
  • 示例:

    wsl --import-in-place debian12-2 D:\wsl\iso\ext4.vhdx
    

注意:–import-in-place 会直接使用原 .vhdx 文件,不会复制。
在这里插入图片描述

方法五:从 Docker 镜像导入

如果已有 Docker 镜像,可将其导出为 .tar 后导入 WSL:

  • 导出 Docker 镜像:
docker export <容器ID> > image.tar

在这里插入图片描述

  • 在 WSL 中导入:
wsl --import centos8 D:\wsl2 D:\wsl2\iso\centos8.tar

在这里插入图片描述

关键注意事项

  • 镜像来源安全:确保 .tar 或 .vhdx 文件来自可信源,避免安全风险。

  • WSL2 要求:使用 .vhdx 需启用 WSL2 和虚拟化支持。

  • 用户权限:导入的子系统默认无普通用户,需手动配置。

  • 存储位置:通过 --import 安装的子系统会占用指定目录空间,建议选择非系统盘。

优点 vs 缺点

方式 优点 缺点
导入 .tar 灵活支持任意发行版;可自定义安装位置 需手动配置用户和初始化设置
导入 .vhdx 直接复用现有磁盘;性能更好 文件较大;需 WSL2 支持
Store 安装 自动配置用户;官方维护更新 仅限微软商店提供的发行版

注销(卸载)WSL 子系统

查看已安装的子系统wsl --list --verbose

wsl --list --all
#或
wsl --list --verbose

在这里插入图片描述

停止运行子系统wsl --terminate

# 停止指定子系统
wsl --terminate <发行版>
# 强制关闭所有子系统
wsl --shutdown

在这里插入图片描述

注销(卸载)WSL 子系统wsl --unregister

这会完全删除该发行版及其数据(不可恢复,请先备份重要文件)

wsl --unregister <发行版名称>

在这里插入图片描述

遇到的問題

无法进入子系统目录

在这里插入图片描述

  • 快捷键ctrl+r调出运行框输入\\wsl.localhost即可进入进入子系统目录管理
    在这里插入图片描述
    在这里插入图片描述

隐射网络驱动器方便直接进入子系统文件管理

在这里插入图片描述

开源工具CzBiX/WSLHostPatcher结合使用解決localhost访问

CzBiX/WSLHostPatcher 是一个开源工具,主要用于解决 Windows Subsystem for Linux (WSL) 在特定场景下的网络访问问题。以下是它的核心用途和功能:

  • 主要用途

    • 修复 WSL2 的 localhost 访问问题

      • 默认情况下,WSL2 使用虚拟化网络,导致从 Windows 主机通过 localhost 或 127.0.0.1 直接访问 WSL2 中的服务(如 Web 服务器、数据库等)时失败。

      • 该工具通过自动修改 Windows 主机的 hosts 文件(C:\Windows\System32\drivers\etc\hosts),将 localhost 指向 WSL2 的虚拟 IP,从而实现无缝访问。

    • 动态更新 WSL2 的 IP 地址

      • WSL2 的虚拟 IP 可能在每次启动时变化,导致手动修改 hosts 文件失效。

      • 此工具会监听 WSL2 的 IP 变化,并自动更新 hosts 文件,确保始终能通过 localhost 访问。

  • 适用场景

    • 在 WSL2 中运行服务(如 Apache、Nginx、MySQL)时,需从 Windows 主机通过浏览器或工具连接。

    • 开发调试时避免频繁手动修改网络配置。

  • 工作原理

    • 检测 WSL2 实例的当前虚拟 IP。

    • 修改 Windows 的 hosts 文件,添加如下映射:

    # WSL2 IP 动态映射
    172.xx.xx.xx  localhost
    

    通过后台服务监控 IP 变化,实时更新映射。

  • 替代方案

    • 手动修改 hosts 文件(但需每次 WSL2 重启后更新)。

    • 使用 netsh interface portproxy 设置端口转发。

    • 在 Windows 11 中,可通过wsl --localhost forward 启用官方支持的 localhost 访问功能(部分版本需配置)。

  • 注意事项

    • 需要管理员权限(因需修改系统 hosts 文件)。

    • 某些安全软件可能会阻止 hosts 文件的修改。

    • 如果使用 Windows 11 22H2 及以上版本,建议优先尝试官方支持的 localhost 功能。

  • 项目状态
    该工具在早期 WSL2 版本中非常实用,但随着 Windows 官方功能的完善,可能逐渐被替代。建议查看项目主页(GitHub - CzBiX/WSLHostPatcher)了解最新兼容性说明。

  • 如果需要更简单的解决方案,也可直接升级 Windows 并启用wsl --localhost forward未实操测试)。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐