WSL 基本使用教程 的文章封面
返回文章列表
Neuroblue writing

WSL 基本使用教程

从安装、命令、文件互通到 mirrored 网络,整理一份能直接上手的 WSL 基本使用教程。

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 是否是 2
  • STATE 是否正常运行

启动和关闭

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 了。

这时先做最稳的恢复动作:

  1. .wslconfig 改回 networkingMode=nat
  2. 保持 autoProxy=false
  3. 执行 wsl --shutdown
  4. 再启动 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 --install
  • wsl --list --verbose
  • wsl --shutdown
  • /mnt/c
  • \\wsl$
  • networkingMode=mirrored
  • autoProxy=false

这几项基本就能覆盖日常 80% 的使用场景。