WSL 完整教学文档(Windows Linux 子系统)

最近需要用到windows的环境下的go的搭建,由于之前都是mac或者linux环境,突然间跳转windows的环境,很多cmd的命令都混乱,导致一直出错,于是整了一下wsl, 嵌入windows上干活,下面是一份整理后的 WSL 完整教学文档(含 Go / Python / Node 编译环境),已经从原理到实战做了结构化梳理,可直接作为学习或内部文档使用。

一、WSL 概述

WSL(Windows Subsystem for Linux)是 Windows 提供的一个运行 Linux 用户空间的解决方案,使开发者可以在 Windows 上直接使用 Linux 工具链,而无需传统虚拟机。


核心价值

  • 在 Windows 上获得原生 Linux 开发体验
  • 无需双系统或重量级虚拟机
  • 与 Windows 文件系统和工具深度集成

二、WSL 架构原理

1. WSL1(了解即可)

机制:系统调用转换

复制代码
Linux syscall → Windows 内核 API

特点:

  • 启动快
  • 兼容性有限
  • 不支持 Docker

2. WSL2(主流方案)

机制:轻量级虚拟化(Hyper-V)

复制代码
Windows
 └── Hyper-V
      └── Linux Kernel(真实内核)
           └── 用户空间(Ubuntu等)

WSL2 优势

  • 完整 Linux 内核(100% syscall 兼容)
  • 支持 Docker
  • 更好的 IO 性能(Linux 文件系统内)

三、文件系统机制(关键理解)

1. Linux 原生目录(推荐开发使用)

复制代码
/home/username

特点:

  • 存储在 ext4 虚拟磁盘中
  • 高性能
  • 适合代码、编译

2. Windows 挂载目录

复制代码
/mnt/c/
/mnt/d/

特点:

  • 映射 Windows 磁盘
  • 访问方便
  • 大量小文件性能较差

重要结论

复制代码
开发代码必须放在 /home 下

四、WSL 安装

1. 一键安装

bash 复制代码
wsl --install

2. 安装 Ubuntu

bash 复制代码
wsl --install -d Ubuntu

3. 设置 WSL2

bash 复制代码
wsl --set-default-version 2

4. 查看状态

bash 复制代码
wsl -l -v

五、基础使用

启动 WSL

bash 复制代码
wsl

或:

bash 复制代码
wsl -d Ubuntu

常用 Linux 命令

bash 复制代码
ls
cd
pwd
rm -rf

Windows 与 WSL 互通

从 Linux 访问 Windows

bash 复制代码
cd /mnt/c/Users

从 Windows 访问 Linux

复制代码
\\wsl$\Ubuntu\home\username

六、开发环境搭建

1. 基础工具

bash 复制代码
sudo apt update
sudo apt upgrade -y
sudo apt install -y git curl wget vim build-essential

七、Go / Python / Node 编译环境


1. Go 环境(推荐安装官方版本)

安装

bash 复制代码
sudo apt install golang -y

验证

bash 复制代码
go version

配置 GOPATH(建议)

编辑:

bash 复制代码
vim ~/.bashrc

添加:

bash 复制代码
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin

生效:

bash 复制代码
source ~/.bashrc

测试 Go

bash 复制代码
mkdir -p ~/go/src/hello
cd ~/go/src/hello

创建:

go 复制代码
package main

import "fmt"

func main() {
    fmt.Println("Hello WSL Go")
}

运行:

bash 复制代码
go run main.go

2. Python 环境

安装

bash 复制代码
sudo apt install python3 python3-pip -y

虚拟环境(推荐)

bash 复制代码
pip3 install virtualenv

创建环境:

bash 复制代码
python3 -m venv venv
source venv/bin/activate

3. Node.js 环境

安装(推荐 NodeSource)

bash 复制代码
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs

验证

bash 复制代码
node -v
npm -v

八、Docker 集成(重要)

WSL2 是 Docker Desktop 的运行基础。


推荐架构

复制代码
Windows Terminal
    ↓
WSL (Ubuntu)
    ↓
Docker

验证 Docker

bash 复制代码
docker --version
docker run hello-world

九、网络机制

WSL2 网络特点

  • 独立虚拟网卡
  • NAT 网络
  • 自动端口映射

常见用法

Windows 访问 WSL

复制代码
localhost:端口

查看 IP

bash 复制代码
ip addr

十、性能优化


1. 限制资源

编辑:

复制代码
C:\Users\你的用户名\.wslconfig
ini 复制代码
[wsl2]
memory=4GB
processors=2

2. 避免性能问题

不要在:

复制代码
/mnt/c

做:

  • npm install
  • go build
  • git clone(大项目)

十一、实用技巧


打开资源管理器

bash 复制代码
explorer.exe .

调用 Windows 程序

bash 复制代码
notepad.exe file.txt

设置默认用户

bash 复制代码
ubuntu config --default-user youruser

十二、常见问题


1. Docker 无法运行

bash 复制代码
wsl -l -v

必须为:

复制代码
VERSION 2

2. 文件访问慢

原因:

复制代码
/mnt/c

解决:

→ 使用 /home


3. 内存占用高

→ 使用 .wslconfig 限制


十三、推荐开发环境组合

复制代码
Windows Terminal
+ WSL2 (Ubuntu)
+ Docker
+ VSCode Remote
+ zsh + oh-my-zsh

十四、总结

WSL2 的本质是:

复制代码
Windows 上的轻量 Linux 虚拟机

它解决了:

  • 开发环境不一致
  • 工具链分裂
  • Docker 兼容问题

--

相关推荐
A小辣椒16 小时前
TShark:Wireshark CLI 功能
linux
A小辣椒20 小时前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式