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 兼容问题

--

相关推荐
久绊A2 小时前
服务器磁盘只读/故障排
java·linux·服务器
always_TT2 小时前
Makefile入门:自动化编译你的C项目
运维·c语言·自动化
yy_xzz2 小时前
【Linux开发】03 TCP 网络编程中的数据边界问题与解决方案
linux·网络·tcp/ip
hutengyi2 小时前
Redis基础——1、Linux下安装Redis(超详细)
linux·数据库·redis
白鸽梦游指南2 小时前
docker构建镜像文件
运维·docker·容器
yingzicat2 小时前
局域网内建立NTP服务器
运维·服务器
小句2 小时前
Nginx 配置完整指南
运维·nginx
m0_726965982 小时前
Docker使用
运维·docker·容器
LeocenaY2 小时前
Linux 内核 I/O栈 总结
linux·运维·服务器