WSL2(Windows Subsystem for Linux ) 从入门到实践指南

WSL(Windows Subsystem for Linux)是微软为 Windows 系统开发的 Linux 兼容层技术,它让开发者无需安装双系统或配置虚拟机,就能在 Windows 环境中原生运行 Linux 命令行、工具与应用,是跨平台开发的高效方案。本文将从基础概念、安装配置、核心操作到实战场景,为你提供一套可直接落地的 WSL2 学习与实践指南。


一、WSL 核心概念与版本选择

1. 什么是 WSL1 和 WSL2?

  • WSL1:早期版本,通过内核翻译层实现 Linux 二进制兼容,优势是轻量、文件访问速度快,但兼容性较差,不支持 Docker、GPU 加速等复杂场景,目前已不推荐作为主力开发环境。
  • WSL2:基于轻量 Hyper-V 虚拟机构建,搭载完整的 Linux 内核,实现了接近物理机的性能,同时解决了兼容性问题,支持 Docker、GPU 直通、完整系统调用,是当前 WSL 的默认推荐版本。

2. 系统与环境要求

  • Windows 10 2004 版本(内部版本 19041+)或 Windows 11
  • CPU 开启虚拟化(BIOS 中开启 VT-x/AMD-V,可通过任务管理器→性能→CPU 查看是否已启用)

二、WSL2 一键安装与配置

1. 管理员 PowerShell 安装

以管理员身份打开终端(PowerShell/Windows 终端),执行以下一键安装命令:

bash 复制代码
wsl --install

该命令会自动完成以下操作:

  1. 启用 WSL 与虚拟机平台系统组件
  2. 默认下载并安装 Ubuntu 发行版
  3. 安装完成后需重启电脑使配置生效

2. 解决安装卡顿 / 网络问题

若默认下载速度慢或卡住,可使用网络下载模式:

bash 复制代码
wsl --install --web-download

3. 安装其他发行版

查看所有可安装的官方发行版:

bash 复制代码
wsl --list --online

安装指定发行版(以 Debian、Kali 为例):

bash 复制代码
wsl --install -d Debian
wsl --install -d Kali-Linux

4. 首次启动配置

重启电脑后,WSL 会自动启动 Ubuntu 环境,首次启动需设置:

bash 复制代码
Enter new UNIX username: 你的小写英文名(如 devuser)
Password: 输入密码(输入时无显示,盲打即可)

看到 Installation successful! 即表示配置完成。


三、WSL 核心管理命令(PowerShell 执行)

掌握以下命令,可高效管理 WSL 环境:

bash 复制代码
# 查看已安装发行版及版本/状态
wsl -l -v

# 关闭所有 WSL2 虚拟机(解决卡顿/状态异常)
wsl --shutdown

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

# 设置默认发行版
wsl --set-default Ubuntu

# 导出发行版备份(快照)
wsl --export Ubuntu D:\wsl-backup\ubuntu-backup.tar

# 导入备份恢复环境
wsl --import NewUbuntu D:\wsl\new-ubuntu D:\wsl-backup\ubuntu-backup.tar

# 卸载指定发行版
wsl --unregister Ubuntu

四、WSL 内基础操作与优化

1. 国内镜像源配置(必做优化)

默认软件源下载速度慢,需更换为清华 / 阿里等国内镜像源:

bash

运行

bash 复制代码
# 安装文本编辑器 nano(若未安装)
sudo apt update && sudo apt install nano -y

# 编辑软件源配置文件
sudo nano /etc/apt/sources.list

将文件内容替换为 Ubuntu 国内源(以清华源为例):

保存退出(Ctrl+O 回车保存,Ctrl+X 退出),执行更新:

bash 复制代码
sudo apt update && sudo apt upgrade -y

2. 常用 Linux 命令速查

bash 复制代码
# 更新软件包列表
sudo apt update

# 安装常用工具
sudo apt install git curl vim -y

# 查看当前目录文件
ls -l

# 切换到用户主目录
cd ~

# 访问 Windows 磁盘(C/D/E 盘)
cd /mnt/c/Users/你的Windows用户名/Desktop

# 查看 WSL 网络信息
hostname -I

# 退出 WSL 环境
exit

五、Windows 与 WSL 文件互访

1. WSL 访问 Windows 文件

WSL 会将 Windows 磁盘挂载到 /mnt 目录下,直接通过路径访问即可:

复制代码
# 访问 Windows 桌面目录
cd /mnt/c/Users/你的Windows用户名/Desktop

2. Windows 访问 WSL 文件

在资源管理器地址栏输入以下路径,即可直接访问 WSL 内的文件:

复制代码
\\wsl$\Ubuntu\home\你的WSL用户名

注意:建议优先在 WSL 内操作 Linux 文件,避免直接在 Windows 中修改 WSL 文件导致权限问题。


六、网络与代理配置(WSL2 场景)

1. WSL2 访问 Windows 服务

WSL2 与 Windows 是不同的网络命名空间,需通过 Windows 的虚拟网关 IP 访问 Windows 上的服务:

复制代码
# 获取 Windows 网关 IP(WSL 内执行)
ip route show | grep default | awk '{print $3}'

例如 Windows 上运行了 8080 端口的服务,WSL 内可通过以下命令访问:

复制代码
curl http://$(ip route show | grep default | awk '{print $3}'):8080

2. WSL 配置 Windows 代理(以 Clash 为例)

若需要让 WSL 走 Windows 上的代理,可临时配置环境变量:

复制代码
# 临时配置(仅当前终端有效)
export http_proxy=http://$(ip route show | grep default | awk '{print $3}'):7890
export https_proxy=http://$(ip route show | grep default | awk '{print $3}'):7890

# 测试代理是否生效
curl www.google.com

七、VSCode + WSL 开发环境搭建

VSCode 的 Remote-WSL 插件可实现无缝的 Linux 开发体验,步骤如下:

  1. 在 VSCode 中安装官方插件 Remote - WSL

  2. 启动 WSL 后,在终端输入以下命令直接打开 VSCode:

    复制代码
    code .
  3. 或点击 VSCode 左下角的绿色远程连接按钮,选择 "新建 WSL 窗口"

此时 VSCode 的终端、插件、调试环境均运行在 WSL 内,完全适配 Linux 开发场景。


八、常见问题与避坑指南

1. 安装报错 0x800f0831

  • 原因:BIOS 虚拟化未开启,或 Windows 系统组件损坏
  • 解决:进入 BIOS 开启 VT-x/AMD-V;以管理员身份执行 sfc /scannow 修复系统文件。

2. WSL2 启动卡顿 / 状态异常

  • 解决:执行 wsl --shutdown 关闭所有 WSL 虚拟机,再重新启动;关闭 Windows 中占用虚拟化资源的程序(如 Hyper-V 虚拟机)。

3. 文件权限混乱

  • 原因:在 Windows 中直接修改 WSL 内的文件导致权限丢失
  • 解决:优先在 WSL 内操作 Linux 文件,如需修改 Windows 文件,通过 /mnt 路径访问即可。

4. Docker 集成问题

  • 说明:截图中显示的 docker-desktop 是 Docker Desktop 为 WSL2 创建的专用环境,状态 Stopped 表示未启动
  • 解决:启动 Docker Desktop 并在设置中开启 "WSL 集成",docker-desktop 状态会变为 Running



相关推荐
xiaoye37082 小时前
java接口文档工具 swagger2和swagger3对比
java·服务器·前端
wangyangyangcumt2 小时前
银河麒麟V10 SP3离线安装Nginx1.21.5全记录
linux·运维·数据库
阿荻在肝了2 小时前
Agent学习七:LangGraph学习-持久化与记忆二
python·学习·agent
菜萝卜子2 小时前
【Git】GitLab 18.9 全局服务器钩子(Server Hooks)官方规范与落地实践
服务器·git·gitlab
羊小蜜.2 小时前
Linux 03:僵死进程(Zombie Process)原理、危害与解决方案
linux·运维·服务器
yang9yun2 小时前
linux宝塔面板使用API自动部署更新文件
linux·运维·状态模式
cen__y2 小时前
Linux06(进程)
linux·运维·服务器·c语言·ubuntu
bruk_spp2 小时前
linux子系统之drm dsi
linux
深蓝海拓2 小时前
Qt:创建一套基于HSL颜色体系的颜色库
笔记·python·qt·学习·ui