WSL 基本使用教程
WSL 是我在 Windows 上最常用的 Linux 入口之一。它很适合做这些事:
- 练 Linux 命令
- 跑 Bash、APT、SSH、Git、Python、Node.js
- 调试本地开发环境
- 让 Windows 和 Linux 文件互通
- 在同一台机器上同时保留 Windows 工作流和 Linux 工具链
如果你只是想“把 Linux 用起来”,WSL 通常比虚拟机轻很多;如果你要完整桌面环境、复杂内核模块或者更独立的网络拓扑,虚拟机还是更稳。
先把概念放正
WSL 2 不是一台传统意义上的完整服务器,它更像一个轻量的 Linux 运行环境。你在 Windows 上看到的是 Windows,在 WSL 里看到的是 Linux,但两边又能互相调工具、互相看文件。
所以学习 WSL,不是背一堆命令,而是先把这几件事想清楚:
- 哪些命令在 PowerShell 里跑
- 哪些命令在 Linux 里跑
- 哪些文件放在 Windows 盘
- 哪些文件放在
/home - 网络模式到底是 NAT 还是 mirrored
安装和查看
安装 WSL
管理员 PowerShell:
wsl --install
如果你想装指定发行版:
wsl --list --online
wsl --install -d Ubuntu
安装完成后一般要重启一次。第一次进入发行版时,会让你创建 Linux 用户和密码。
常用查看命令
wsl --status
wsl --version
wsl --list --verbose
简写:
wsl -l -v
常见输出里最值得看的只有两项:
VERSION是否是2STATE是否正常运行
启动和关闭
wsl
wsl -d Ubuntu
wsl --shutdown
wsl --terminate Ubuntu
如果你改了 .wslconfig,一般都要执行一次:
wsl --shutdown
然后再重新启动 WSL。
Linux 里最常用的事
进入 WSL 以后,先确认自己在哪:
whoami
pwd
uname -a
最常见的目录和文件操作:
ls
ls -la
cd ~
mkdir demo
touch note.txt
cp note.txt note.bak
mv note.bak demo/
rm note.txt
rm -r demo
Ubuntu、Debian、Kali 这类发行版常用 APT:
sudo apt update
sudo apt upgrade
sudo apt install git curl vim htop ripgrep
查看网络:
ip a
ip route
hostname -I
测试连通性:
ping -c 4 8.8.8.8
ping -c 4 github.com
curl -I https://www.microsoft.com
文件互通
在 WSL 里访问 Windows 文件
Windows 磁盘通常挂在 /mnt 下:
cd /mnt/c/Users
cd /mnt/f/Obsi-neuroBlue
你现在这个笔记库路径:
F:\Obsi-neuroBlue\03_技术\Linux
在 WSL 里一般对应:
/mnt/f/Obsi-neuroBlue/03_技术/Linux
在 Windows 里访问 WSL 文件
资源管理器地址栏直接输入:
\\wsl$
或者直接打开某个发行版:
\\wsl$\Ubuntu\home\your_username
在 WSL 当前目录打开资源管理器:
explorer.exe .
文件放哪更合适
我自己的经验很简单:
- Linux 工具频繁读写小文件,优先放
/home - Windows 软件频繁参与编辑,放 Windows 盘更方便
- 两边不要同时改同一批文件,省得碰到权限、锁文件、换行符问题
网络这块最容易踩坑
NAT 和 mirrored
默认情况下,WSL 经常是 NAT 模式。你在 Linux 里看到 172.x.x.x 很正常,这通常是内部地址。
如果你要判断 WSL 到底是不是 mirrored,不要只看 ip a。更稳的是查网络模式:
在 PowerShell 里执行:
wsl wslinfo --networking-mode
如果输出是:
mirrored
说明已经切过去了。
mirrored 的配置
编辑:
notepad "$env:USERPROFILE\.wslconfig"
可以先写成这样:
[wsl2]
networkingMode=mirrored
dnsTunneling=true
autoProxy=false
firewall=true
然后:
wsl --shutdown
再重新打开 WSL。
我这里把 autoProxy=false 单独拎出来,是因为很多人开着代理软件时,WSL 会先撞到 localhost 代理问题。你前面碰到的那种“回退到 None”日志,很多时候就和这一类设置有关。
如果 mirrored 启动失败
如果你看到类似这种信息:
无法配置网络 (networkingMode Mirrored),回退到 networkingMode None
CreateInstance/CreateVm/ConfigureNetworking/0x8007054f
那就不是“IP 看起来不对”的问题了,而是 mirrored 没起来,WSL 直接掉到 None 了。
这时先做最稳的恢复动作:
- 把
.wslconfig改回networkingMode=nat - 保持
autoProxy=false - 执行
wsl --shutdown - 再启动 WSL
恢复版配置可以先用:
[wsl2]
networkingMode=nat
dnsTunneling=true
autoProxy=false
如果还是不行,重启 Windows 往往比反复 wsl --shutdown 更有效。
配置文件
.wslconfig
位置在 Windows 用户目录:
C:\Users\你的用户名\.wslconfig
常用内容:
[wsl2]
memory=8GB
processors=4
swap=4GB
networkingMode=mirrored
dnsTunneling=true
autoProxy=false
firewall=true
它主要管的是 WSL 2 虚拟机级别的行为,比如:
- 内存
- CPU
- swap
- 网络模式
- DNS
- 代理
改完记得:
wsl --shutdown
/etc/wsl.conf
这个是 Linux 发行版内部的配置:
sudo vim /etc/wsl.conf
常见写法:
[user]
default=你的Linux用户名
[automount]
enabled=true
root=/mnt/
options=metadata,umask=22,fmask=11
[boot]
systemd=true
改完后同样要回到 PowerShell 执行:
wsl --shutdown
systemd 和服务
如果你要在 WSL 里跑 SSH、数据库、一些常驻服务,systemd=true 会方便很多。
常用命令:
systemctl status
sudo systemctl status ssh
sudo systemctl start ssh
sudo systemctl enable ssh
sudo systemctl restart ssh
journalctl -u ssh
注意一点:WSL 不是传统 Linux 服务器。即便 systemd 开了,服务能不能“像服务器一样长期在线”,还是要看 WSL 自己有没有被启动。
常见坑
wslinfo 找不到
PowerShell 里不能直接把 Linux 内部命令当成 Windows 命令跑。
错误写法:
wslinfo --networking-mode
正确写法:
wsl wslinfo --networking-mode
ip a 里还是 172
这不一定是错。
如果网络模式已经是 mirrored,Linux 里依然可能看到 172.x.x.x。判断是否生效,不要只盯着一个地址看,要结合 wslinfo --networking-mode 和启动日志一起看。
只有 lo 没有网卡
如果 ip a 里只有 lo,没有 eth0 之类的网卡,通常说明网络栈没起来。
先试:
wsl --shutdown
wsl --update
再不行就先回 NAT。要是还卡着,重启 Windows。
局域网访问不了 WSL 服务
先看服务是不是只监听了 127.0.0.1。
比如这样:
python3 -m http.server 8000 --bind 0.0.0.0
才更适合局域网访问。
如果只监听:
127.0.0.1:8000
那通常只能本机访问。
我现在最常用的一套顺手流程
我平时会这样用:
wsl
进去以后:
cd ~
mkdir -p projects
cd projects
如果是 Linux 工具链项目,我会尽量放在 WSL 里;如果是和 Windows 资料混着来的笔记或素材,就放 Windows 盘。
最省心的习惯其实就一句话:
让 WSL 负责 Linux 的事,让 Windows 负责 Windows 的事,文件和网络只在边界上交接。
结尾
WSL 真正好用的地方,不是“能跑 Linux”,而是它把 Windows 和 Linux 之间那道墙拆薄了。
你可以在 Windows 里写文件、在 Linux 里跑工具、在两边之间来回切,而且不用把整台电脑切成两个世界。
如果你刚开始用,先把这几件事记住就够了:
wsl --installwsl --list --verbosewsl --shutdown/mnt/c\\wsl$networkingMode=mirroredautoProxy=false
这几项基本就能覆盖日常 80% 的使用场景。