2026年8月

下面把 WSL2 日常最常用的命令按场景归类,Windows 侧用 PowerShell,Linux 侧用 WSL 终端,分开标清楚,你以后查表就行。


一、Windows PowerShell 侧(管 WSL 平台本身)

# 安装默认 Ubuntu
wsl --install

# 安装指定发行版
wsl --install -d Ubuntu-24.04

# 列出已装发行版及状态
wsl -l -v

# 列出可在线安装的发行版
wsl --list --online

# 进入默认发行版
wsl

# 进入指定发行版
wsl -d Ubuntu-24.04

# 彻底关闭所有 WSL2 虚拟机(改 .wslconfig 后必须跑这个)
wsl --shutdown

# 注销(删除)某个发行版(不删文件需先 export)
w2l --unregister Ubuntu-24.04
wsl --unregister Ubuntu-24.04

# 导出发行版到 tar(迁移用)
wsl --export Ubuntu-24.04 D:\wsl-backup\ubuntu.tar

# 从 tar 导入到新位置(D 盘)
wsl --import Ubuntu-24.04 D:\WSL2\Ubuntu-24.04 D:\wsl-backup\ubuntu.tar --version 2

# 设默认发行版
wsl -s Ubuntu-24.04

# 查看 WSL 平台状态
wsl --status
.wslconfig 文件路径:C:\Users\你的用户名\.wslconfig,改完必须 wsl --shutdown 生效。

好,把每个命令是干嘛的用大白话说清楚:


二、WSL Ubuntu 终端侧(Linux 里日常用)

系统 & 包

sudo apt update && sudo apt upgrade -y

刷新软件源列表 + 把所有已装包升级到最新版,-y 是自动确认不用手敲 yes。

sudo apt install -y 包名

装一个新软件包,比如 sudo apt install -y git 就是装 git。

sudo apt autoremove -y

清掉那些"以前被依赖、现在没人要了"的孤儿包,省磁盘。


Python / venv

python3.12 -m venv .venv

在当前目录建一个叫 .venv 的隔离 Python 环境,里面有一份独立的 Python 解释器和 pip,跟系统全局的 Python 互不影响。

source .venv/bin/activate

激活这个虚拟环境。激活后终端前面会多个 (.venv) 标记,之后所有 pip install 的包装进这个 .venv 里,不会污染系统。

deactivate

退出当前虚拟环境,回到系统 Python。


编译 llama.cpp 等

cmake -B build -DGGML_CUDA=ON -DCMAKE_BUILD_TYPE=Release

用 cmake 配置编译参数:-B build 指定输出目录叫 build,-DGGML_CUDA=ON 开启 NVIDIA GPU 支持,Release 模式编译出来运行最快(不带调试信息)。

cmake --build build -j$(nproc)

真正开始编译,-j$(nproc) 是调用你所有 CPU 核心并行编译(你有 24 线程,所以 24 路同时编),速度拉满。


GPU / 驱动

nvidia-smi

查看 NVIDIA 显卡状态:显存占用、驱动版本、CUDA 版本、当前跑在 GPU 上的进程。你 3060 能不能被 WSL 看见就靠它验证。

nvcc --version

查看 CUDA 编译器版本。装了 nvidia-cuda-toolkit 才会有,编译 llama.cpp CUDA 版时 cmake 靠它找编译工具链。


网络

ip a

查看 WSL 里的网络接口和 IP 地址。一般能看到 lo(回环 127.0.0.1)和 eth0(WSL 虚拟网卡)。

cat /etc/resolv.conf

查看 DNS 服务器配置。WSL 里域名解析靠这个文件,网络不通时第一眼看这里对不对。

curl -I https://github.com

发一个 HTTP HEAD 请求测试能不能访问某个网站。-I 只拿响应头不下载正文,用来快速判断网络通不通。


进程

ps aux | grep server.py

列出所有正在跑的进程,然后过滤出包含 server.py 的那一行。用来确认 Parlor 服务是不是还在跑、进程号是多少。

pkill -f server.py

强制杀掉所有命令行里带 server.py 的进程。Parlor 卡死了跑这条直接干掉,不用手动 Ctrl+C。

htop

一个比 top 好看的交互式进程查看器,能看到 CPU、内存、每个核心的占用情况,按上下键滚动,按 q 退出。


文件位置

cd ~

回到家目录(/home/你的用户名),相当于 Windows 里的 cd %USERPROFILE%

cd /mnt/c/Users/你的用户名

进到 Windows 的 C 盘用户目录。WSL 里 Windows 的各盘挂载在 /mnt/ 下,C 盘是 /mnt/c,D 盘是 /mnt/d

WSL 虚拟硬盘物理位置在 Windows 侧:D:\WSL2\Ubuntu-24.04\ext4.vhdx(你迁移过的路径)。

环境变量(临时)

export MODEL=e2b

告诉当前 shell:"MODEL 这个变量的值是 e2b",Parlor 启动时会读这个变量决定加载哪个模型。关掉终端就消失。

export HF_ENDPOINT=https://hf-mirror.com

把 HuggingFace 的下载地址指向国内镜像,下模型不走原始境外地址,速度快且不会超时。

export PATH="/usr/local/bin:$PATH"

/usr/local/bin 插到 PATH 搜索路径的最前面,这样系统找 llama-server 时优先从这里找(你编译好的 CUDA 版在那)。


固化环境变量(永久)

echo 'export HF_ENDPOINT=https://hf-mirror.com' >> ~/.bashrc
source ~/.bashrc

第一行把那行 export 追加进 ~/.bashrc 文件末尾(每次开终端自动执行),第二行让当前终端立刻生效不用重开窗口。以后所有项目都能自动用上这个镜像源。


安装概述

  • 系统:Windows 11 25H2
  • 目标:WSL2 + Ubuntu 24.04 装到 D 盘 + 镜像网络 + 不用 uv/不用 conda + 直接系统 pip 装 Parlor 依赖 + 源码编译 llama.cpp CUDA 版 + 跑 Gemma 4 E2B + 浏览器对话

阶段一:Windows 侧(PowerShell 管理员)

1. 装 WSL2 平台 + Ubuntu 24.04(先落 C 盘,后面迁 D)

wsl --install -d Ubuntu-24.04

装完会让你设 Linux 用户名/密码。设完退出。

2. 迁到 D 盘

wsl --shutdown
mkdir D:\WSL2
wsl --export Ubuntu-24.04 D:\WSL2\ubuntu24.tar
wsl --unregister Ubuntu-24.04
wsl --import Ubuntu-24.04 D:\WSL2\Ubuntu-24.04 D:\WSL2\ubuntu24.tar --version 2

(以后物理文件在 D:\WSL2\Ubuntu-24.04\ext4.vhdx

3. 写镜像网络配置(不重开 PowerShell,用 wsl --shutdown 重启 WSL 即可)

记事本写 C:\Users\你的Windows用户名\.wslconfig

[wsl2]
networkingMode=mirrored
dnsTunneling=true
autoProxy=true
localhostForwarding=true
memory=12GB
processors=12

然后 PowerShell 执行(这就是“重启 WSL 让配置生效”的命令,不需要关 PowerShell 窗口):

wsl --shutdown

再进 Ubuntu 就已是镜像网络。

阶段二:进 WSL2 Ubuntu(开始菜单点 Ubuntu 24.04,或 wsl -d Ubuntu-24.04

4. 基础包 + CUDA 用户态头文件

sudo apt update && sudo apt upgrade -y
sudo apt install -y python3.12 python3.12-venv python3-pip git curl cmake build-essential libcurl4-openssl-dev
sudo apt install -y nvidia-cuda-toolkit   # 提供 nvcc + headers,匹配你 3060

验证驱动穿透(不重开终端):

nvidia-smi

5. 编译 llama.cpp CUDA 版(build ≥ 9503)

cd ~
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
cmake -B build -DGGML_CUDA=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
sudo ln -sf ~/llama.cpp/build/bin/llama-server /usr/local/bin/llama-server
llama-server --version   # 应显示 build 10xxx

6. 装 Parlor 的 Python 依赖(不用 uv、不用 conda,直接用系统 pip 装进一个 venv)

cd ~
git clone https://github.com/fikrikarim/parlor.git
cd parlor
python3.12 -m venv .venv
source .venv/bin/activate   # ← 这条就是“不重开终端让 venv 生效”的命令
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -e .

7. 让 llama-server 路径对当前 shell 生效(不重开终端)

export PATH="/usr/local/bin:$PATH"
which llama-server   # 当前终端立即认得

8. 走 HF 镜像下模型(避免直连超时)

export HF_ENDPOINT=https://hf-mirror.com
export MODEL=e2b

阶段三:启动 + 浏览器

9. 起 Parlor 服务(当前终端接着用)

cd ~/parlor
source .venv/bin/activate
export MODEL=e2b
export HF_ENDPOINT=https://hf-mirror.com
export PATH="/usr/local/bin:$PATH"
python src/parlor/server.py --host 0.0.0.0 --port 8000

首次会自动从 HF 镜像下 gemma-4-E2B-it-qat-q4_0.gguf(~2.6GB)+ mmproj,加载完打印:

Uvicorn running on http://0.0.0.0:8000

10. Windows 浏览器打开

http://localhost:8000

允许麦克风加摄像头 → 说话 → 英文口语老师对话。


11. 以后每次要运行时

打开Powershell输入wsl按回车再输入以下命令回车然后打开浏览器http://localhost:8000

cd ~/parlor && export PATH="/usr/local/bin:$PATH" && export HF_ENDPOINT=https://hf-mirror.com && export MODEL=e2b && .venv/bin/python src/parlor/server.py --host localhost --port 8000

12. 利用cloudflared tunnel实现手机也可以访问

cd ~
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -O cloudflared
chmod +x cloudflared
sudo mv cloudflared /usr/local/bin/

运行以后打开一个新的wsl窗口执行

cloudflared tunnel --url http://localhost:8000