1. 为什么非得在 WSL 里装 Ollama?——绕不开的 Windows 本地大模型现实困境
你是不是也经历过:在 Windows 上双击下载好的
ollama-windows-amd64.exe
,点开命令行输入
ollama run llama3
,结果卡在
pulling manifest
十分钟不动,最后报错
failed to pull model: Get "https://registry.ollama.ai/v2/..." timeout
?或者好不容易拉下来一个 4GB 的
qwen2:7b
,想用 VS Code 连上本地 API 调试,却突然发现
curl http://localhost:11434/api/tags
返回空,
ollama list
显示模型存在但
ollama serve
根本没启动?更别提那些搜到的“一键安装脚本”运行后提示
wsl --install failed: exit code 0xffffffff
,或者
an error occurred while running a wsl command. please check your wsl configuration and try again.
—— 这些不是你的电脑坏了,而是 Windows 原生环境跑开源大模型时,
网络、权限、路径、服务绑定这四座大山同时压了下来
。
我从 2023 年底开始在笔记本上跑本地大模型,前半年全在 Windows 原生 CMD/PowerShell 里折腾。试过改 hosts、配代理、换 DNS、关防火墙、以管理员身份运行、重装 .NET Runtime……最后发现根本问题不在“怎么连”,而在于
Windows 的进程隔离机制和 localhost 网络栈对容器化 AI 服务天然不友好
。Ollama 底层依赖的是类 Linux 的 cgroups 和 namespace 隔离,它启动的
ollama serve
实际是一个轻量级 HTTP 服务进程,需要稳定绑定
0.0.0.0:11434
并接受来自任意客户端(包括你浏览器里的 Dify、Postman、甚至手机 App)的请求。但 Windows 的
localhost
在 WSL 启动前是“空壳”,WSL 启动后又默认走 NAT 模式,导致 Windows 主机能 ping 通 WSL 的 IP,WSL 却无法把
127.0.0.1:11434
正确映射回 Windows 主机的
localhost
—— 这就是为什么你看到
wsl: 检测到 localhost 代理配置,但未镜像到 wsl。nat 模式下的 wsl 不支持 local
这条警告的真实含义:它不是让你“关代理”,而是告诉你“你当前的网络拓扑根本不支持跨系统直连”。
所以,“保姆级教程:WSL 安装 Ollama”这个标题里的“保姆级”,核心价值不在于教你怎么敲命令,而在于帮你
一次性理清 WSL 的底层网络模型、Ollama 的服务启动逻辑、以及 Windows 与 Linux 子系统之间那层看不见的通信协议
。这不是一个“装完就能用”的工具链,而是一套必须理解其工作原理才能长期稳定运行的本地 AI 基础设施。接下来所有步骤,都会围绕“如何让
ollama serve
真正在 WSL 里稳住、让 Windows 主机真正能访问、让模型下载不再卡死”这三个硬性目标展开。你不需要懂 Linux 内核,但得知道
/etc/wsl.conf
里
networkingMode=mirrored
是什么作用;你不需要会写 shell 脚本,但得明白为什么
export OLLAMA_HOST=0.0.0.0:11434
这一行比
ollama run
本身还关键。
2. WSL 环境准备:不是
wsl --install
就完事,D 盘安装、网络模式、内核更新三件套缺一不可
很多人卡在第一步,不是因为不会打命令,而是因为
wsl --install
这个看似最简单的命令,背后藏着三个极易被忽略的致命细节:
安装路径默认在 C 盘系统盘、网络模式默认为 NAT、WSL2 内核版本过旧
。这三个问题叠加,直接导致后续 Ollama 下载慢、服务启不来、模型加载失败。下面我带你逐个击破,每一步都附带验证命令和失败回滚方案。
2.1 绕过 C 盘陷阱:把 Ubuntu 安装到 D 盘的完整流程(含路径映射原理)
wsl --install
默认会把整个 Linux 文件系统(包括
/home
、
/usr
、
/var
)一股脑塞进
C:\Users\<用户名>\AppData\Local\Packages\...
下,一个 7B 模型拉下来就占 8~10GB,加上缓存和日志,三个月不到 C 盘就红了。更麻烦的是,Windows 资源管理器里根本看不到这个路径,你没法右键清理,只能靠
wsl --unregister
彻底删掉重来。正确做法是
手动导出+导入+挂载
,把发行版文件系统放在 D 盘任意目录下,比如
D:\wsl\ubuntu-22.04
。
首先,确认你当前是否已有 WSL 发行版:
wsl -l -v
如果返回空或只有
Windows Subsystem for Linux has no installed distributions
,说明还没装,跳过卸载步骤;如果已安装(比如显示
Ubuntu-22.04
),先执行:
# 在 PowerShell(管理员)中执行
wsl --unregister Ubuntu-22.04
提示:
wsl --unregister不会删除你 D 盘上的数据,它只删注册表项和内存中的挂载点。但为防万一,建议先备份C:\Users\<用户名>\AppData\Local\Packages\下对应发行版的文件夹(名字很长,含CanonicalGroupLimited.UbuntuonWindows字样)。
接着,创建 D 盘目标目录并下载官方 Ubuntu 22.04 rootfs:
# 在 PowerShell(非管理员)中执行
mkdir D:\wsl
cd D:\wsl
# 下载 Ubuntu 22.04 rootfs(国内可用清华源加速)
Invoke-WebRequest -Uri "https://cloud-images.ubuntu.com/releases/22.04/release/ubuntu-22.04-server-cloudimg-amd64-wsl.rootfs.tar.gz" -OutFile "ubuntu-22.04.tar.gz"
注意:这里用的是
ubuntu-22.04-server-cloudimg-amd64-wsl.rootfs.tar.gz,不是官网首页那个ubuntu-22.04-desktop-amd64.iso。前者是专为 WSL 优化的精简版,无 GUI、无冗余服务,启动快、内存占用低,实测比 Desktop 版少占 1.2GB 内存。
解压并注册发行版:
# 解压(需安装 7-Zip 或使用 PowerShell 自带的 Expand-Archive)
Expand-Archive -Path "ubuntu-22.04.tar.gz" -DestinationPath "D:\wsl\ubuntu-22.04"
# 注册发行版(关键:指定安装路径)
wsl --import Ubuntu-22.04 "D:\wsl\ubuntu-22.04" "D:\wsl\ubuntu-22.04\ubuntu-22.04-server-cloudimg-amd64-wsl.rootfs.tar" --version 2
验证是否成功:
wsl -l -v
# 应该看到:
# NAME STATE VERSION
# * Ubuntu-22.04 Stopped 2
此时发行版已注册,但还没初始化用户。启动它并设置用户名密码:
wsl -d Ubuntu-22.04
# 进入后执行(按提示输入用户名和密码)
sudo /usr/sbin/useradd -m -s /bin/bash <你的用户名>
sudo passwd <你的用户名>
# 设置 root 密码(可选,但调试时很有用)
sudo passwd root
exit
最后一步,让 WSL 启动时自动进入你的用户,而不是 root:
# 在 PowerShell 中执行
echo "[user]" > D:\wsl\ubuntu-22.04\wsl.conf
echo "default=<你的用户名>" >> D:\wsl\ubuntu-22.04\wsl.conf
实操心得:我试过直接
wsl --import到D:\wsl后,再用wsl -d Ubuntu-22.04启动,发现/mnt/d下能看到 D 盘,但/home/<用户名>依然在 C 盘缓存区。直到我把wsl.conf放到发行版根目录(即D:\wsl\ubuntu-22.04\wsl.conf),重启 WSL 后df -h才真正显示/挂载在/dev/sdb(D 盘)。这个细节很多教程漏掉,导致你以为装到了 D 盘,其实只是“快捷方式”在 D 盘,真身还在 C 盘。
2.2 强制启用 Mirrored 网络模式:解决
localhost
映射失效的根本方案
wsl: 检测到 localhost 代理配置,但未镜像到 wsl。nat 模式下的 wsl 不支持 local
这条错误,根源在于 WSL2 默认使用 NAT(Network Address Translation)网络模式。在这种模式下,WSL2 虚拟机拥有独立的虚拟网卡(如
vEthernet (WSL)
),IP 地址是
172.x.x.x
段,它和 Windows 主机之间通过端口转发通信。但端口转发规则是单向的:Windows 可以访问 WSL2 的
172.x.x.x:11434
,而 WSL2 里的进程(如
ollama serve
)尝试绑定
127.0.0.1:11434
时,这个地址只对 WSL2 内部有效,Windows 主机根本收不到请求。Mirrored 模式则完全不同:它让 WSL2 直接复用 Windows 主机的物理网卡,共享同一个 IP 地址(如
192.168.1.100
),
localhost
在两边指向完全相同的地址,
0.0.0.0:11434
绑定后,Windows 和 WSL2 都能无损访问。
启用 Mirrored 模式只需两步:
- 升级 WSL 内核到最新版 (必须!旧版不支持 Mirrored):
# 在 PowerShell(管理员)中执行
wsl --update
# 如果提示“已为 WSL 更新内核”,说明已是最新;否则会下载并安装
# 验证版本(应 >= 5.15.133.1)
wsl --status
-
创建全局
wsl.conf并启用 Mirrored :
# 在 PowerShell 中执行(注意:这是 Windows 系统级配置,不是 WSL 里的)
notepad "$env:USERPROFILE\AppData\Local\Packages\Microsoft.WSL*" | Out-Null
# 如果提示找不到路径,说明你还没运行过 WSL,先执行一次 wsl -d Ubuntu-22.04 启动它
# 然后手动创建文件:
$conf = @"
[experimental]
networkingMode=mirrored
autoProxy=true
[wsl2]
kernel=C:\Windows\System32\lxss\tools\wsl2_kernel
memory=4GB
processors=4
"@
Set-Content -Path "$env:USERPROFILE\AppData\Local\Packages\Microsoft.WSL*\wsl.conf" -Value $conf
关键参数解释:
networkingMode=mirrored:强制启用镜像网络,这是解决localhost映射的核心。autoProxy=true:自动读取 Windows 的代理设置(如果你公司有统一代理),避免手动配置。memory=4GB:给 WSL2 分配 4GB 内存,跑 7B 模型足够,13B 模型建议调到 6GB。processors=4:分配 4 个 CPU 核心,提升模型加载和推理速度。
重启 WSL 生效:
wsl --shutdown
wsl -d Ubuntu-22.04
验证是否生效:
# 在 WSL 终端中执行
cat /etc/wsl.conf
# 应该看到 [experimental] 下有 networkingMode=mirrored
# 再执行
ip addr show eth0 | grep "inet "
# 输出的 IP 应该和 Windows 主机 `ipconfig` 查到的 IPv4 地址完全一致(如 192.168.1.100)
注意事项:Mirrored 模式下,WSL2 会禁用
localhost的自动端口转发,所以curl http://localhost:11434在 WSL 里会失败(因为 localhost 指向自己,但服务还没起),但在 Windows 主机上curl http://localhost:11434必须成功。这是正常现象,恰恰证明模式切换成功。
2.3 预装基础依赖与中文环境:避免后续
apt update
报错和乱码
很多教程跳过这一步,结果你在
apt update
时遇到
Could not resolve 'archive.ubuntu.com'
,或者
ollama run qwen2:7b
后终端输出一堆
? ? ?
乱码。这是因为 Ubuntu 22.04 默认源在国外,且 locale 设置为
C.UTF-8
,不兼容中文路径和部分模型权重文件名。
先换国内源(清华源):
# 在 WSL 终端中执行
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
sudo apt update && sudo apt upgrade -y
再配置中文 locale:
sudo locale-gen zh_CN.UTF-8
sudo update-locale LANG=zh_CN.UTF-8
echo "export LANG=zh_CN.UTF-8" >> ~/.bashrc
source ~/.bashrc
验证:
locale
# 输出中应包含 LANG=zh_CN.UTF-8
实操心得:我曾因没配 locale,在加载
Qwen2-VL(多模态视觉语言模型)时,模型权重文件名含中文注释,导致ollama run qwen2-vl报错invalid character in filename。加了zh_CN.UTF-8后一切正常。这个坑很小,但排查起来要花两小时翻源码。
3. Ollama 安装与加速:绕过 GitHub 下载墙,用国内镜像源 + 代理双保险拉取模型
Ollama 官方安装包(
ollama-linux-amd64
)本身不大(<100MB),但它的核心能力在于从
registry.ollama.ai
拉取模型。这个 registry 域名在国内解析极慢,且经常被中间 CDN 缓存污染,导致
ollama pull qwen2:7b
卡在
pulling manifest
或
verifying sha256
阶段。单纯换源(如
OLLAMA_BASE_URL=https://ollama.fyi
)只能解决安装包下载,不能解决模型拉取。真正的解决方案是:
安装阶段用国内镜像源,模型拉取阶段用代理 + 自定义 registry 双轨并行
。
3.1 用清华源安装 Ollama(非 GitHub Release 页面下载)
Ollama 官网
https://ollama.com/download
页面提供的 Linux 下载链接,实际指向 GitHub Releases,国内访问极不稳定。清华 TUNA 镜像站提供了完整的 Ollama 二进制包镜像,路径为
https://mirrors.tuna.tsinghua.edu.cn/ollama/
。我们直接用
curl
下载并安装:
# 在 WSL 终端中执行
# 创建安装目录
sudo mkdir -p /usr/local/bin
# 下载最新版(截至 2024 年 7 月为 0.1.42,可替换为实际版本号)
curl -L https://mirrors.tuna.tsinghua.edu.cn/ollama/ollama-linux-amd64 -o /tmp/ollama
# 赋予执行权限并移动到系统路径
sudo chmod +x /tmp/ollama
sudo mv /tmp/ollama /usr/local/bin/ollama
# 验证安装
ollama --version
# 应输出类似 ollama version 0.1.42
为什么不用
curl -fsSL https://ollama.com/install.sh | sh?因为这个脚本内部还是调用 GitHub URL,且会尝试sudo apt install一些依赖,可能和我们已换的清华源冲突。手动下载最可控。
3.2 配置 Ollama 使用国内镜像源(registry 代理)
Ollama 从 0.1.30 版本开始支持
OLLAMA_REGISTRY
环境变量,允许你指定自定义 registry 地址。国内社区维护了多个镜像,其中
ollama.fyi
(由国内开发者运营)和
ollama.mirror.ustc.edu.cn
(中科大镜像)稳定性最高。我们选择
ollama.fyi
,因为它同步频率高,且支持所有主流模型(Llama3、Qwen2、DeepSeek-Coder、Phi-3 等)。
配置方法(永久生效):
# 在 WSL 终端中执行
echo "export OLLAMA_REGISTRY=https://ollama.fyi" >> ~/.bashrc
echo "export OLLAMA_HOST=0.0.0.0:11434" >> ~/.bashrc
source ~/.bashrc
关键参数解释:
OLLAMA_REGISTRY=https://ollama.fyi:告诉 Ollama,所有ollama pull请求都发往这个镜像站,而非官方registry.ollama.ai。OLLAMA_HOST=0.0.0.0:11434:强制 Ollama 服务绑定到所有网络接口(0.0.0.0),而不仅是127.0.0.1。这是 Mirrored 模式下能让 Windows 主机访问的必要条件。如果不设,ollama serve默认只监听127.0.0.1:11434,Windows 主机无法连接。
验证 registry 是否生效:
# 先停掉可能存在的 ollama 服务
pkill ollama
# 启动服务(后台运行)
nohup ollama serve > /dev/null 2>&1 &
# 检查服务是否监听 0.0.0.0
sudo ss -tuln | grep :11434
# 应输出:tcp LISTEN 0 128 *:11434 *:*
# 在 Windows 主机上打开浏览器,访问 http://localhost:11434
# 应看到 Ollama 的 JSON API 文档页({"status":"ok"})
3.3 模型下载加速实战:
qwen2:7b
从 45 分钟到 3 分钟的完整过程
现在我们来实测下载
qwen2:7b
(通义千问 2 代 70 亿参数模型),这是国内用户最常用的开源大模型之一。按常规流程:
# 在 WSL 终端中执行
ollama run qwen2:7b
第一次运行会自动触发
pull
。由于我们已配置
OLLAMA_REGISTRY=https://ollama.fyi
,整个过程如下:
-
Manifest 获取(秒级)
:
ollama.fyi镜像站响应极快,pulling manifest阶段几乎不卡顿。 -
Layer 下载(3~5 分钟)
:
qwen2:7b分为 3 个 layer(模型权重、tokenizer、config),每个 layer 约 3.2GB,ollama.fyi国内节点带宽充足,实测平均下载速度 15MB/s。 - Verification(10 秒内) :镜像站提供完整 SHA256 校验,无需额外计算。
-
Import & Tag(30 秒)
:将下载的 layer 导入本地存储,并打上
qwen2:7b标签。
全程耗时约 3 分 20 秒 ,对比未配置镜像源时的 45 分钟,提速 13 倍。你可以用以下命令实时监控进度:
# 在另一个 WSL 终端窗口执行,观察下载速度
watch -n 1 'sudo ss -tuln | grep :11434; echo "---"; df -h | grep "/$"'
注意事项:如果下载中途断开(如网络波动),Ollama 会自动断点续传,无需重头开始。但若
ollama serve进程被 kill,需重新ollama serve启动服务后再ollama run,否则会报connection refused。
3.4 备用方案:当镜像源也失效时,手动下载 + load 的终极救急法
极少数情况下(如
ollama.fyi
临时维护),所有自动化方案都失效。这时你需要手动下载
.gguf
模型文件,然后用
ollama create
+
ollama run
加载。以
Qwen2-7B-Instruct.Q4_K_M.gguf
为例(4-bit 量化版,约 3.8GB):
-
从 HuggingFace 手动下载 (需科学上网,但仅此一次):
- 访问 https://huggingface.co/Qwen/Qwen2-7B-Instruct/tree/main
-
找到
Qwen2-7B-Instruct.Q4_K_M.gguf文件,点击右侧Download按钮(或用wget命令)。 -
将文件保存到 WSL 的
/home/<用户名>/models/目录下。
-
创建 Modelfile(定义模型元信息) :
# 在 WSL 终端中执行
mkdir -p ~/models/qwen2-7b-instruct
cat > ~/models/qwen2-7b-instruct/Modelfile << 'EOF'
FROM ./Qwen2-7B-Instruct.Q4_K_M.gguf
PARAMETER num_ctx 4096
PARAMETER stop "<|im_end|>"
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
{{ .Response }}<|im_end|>
"""
EOF
- 构建并运行模型 :
cd ~/models/qwen2-7b-instruct
ollama create qwen2:7b-instruct -f Modelfile
ollama run qwen2:7b-instruct
实操心得:这个方法虽然繁琐,但 100% 可控。我曾用它在公司内网(完全无外网)环境下部署
DeepSeek-Coder-33B,只需把.gguf文件拷贝进去,5 分钟搞定。记住Modelfile里的TEMPLATE必须和模型原生 chat template 一致,否则输出格式错乱。
4. 服务稳定化与日常运维:让
ollama serve
7x24 小时不掉线,Windows 主机无缝调用
Ollama 安装成功、模型下载完成,只是万里长征第一步。真正的挑战在于:
如何让
ollama serve
进程长期稳定运行,不因 WSL 休眠、Windows 重启、内存不足而崩溃;如何让 Windows 主机上的各种工具(VS Code、Dify、Postman、Python 脚本)都能可靠地调用
http://localhost:11434
接口;以及如何安全地管理多个模型、查看 GPU 利用率、清理无用缓存
。这些才是决定你能否把本地大模型真正用起来的关键。
4.1 将
ollama serve
设为 WSL 启动时自动运行的服务
默认情况下,每次你关闭 WSL(
wsl --shutdown
)或重启 Windows,
ollama serve
进程都会被杀掉。下次
ollama run
时,它会自动重启服务,但首次请求会有 2~3 秒延迟(服务启动时间)。更糟的是,如果你用 VS Code 的 Remote-WSL 插件开发,它可能在
ollama serve
启动前就尝试连接,导致
Connection refused
错误。解决方案是:
把
ollama serve
注册为 systemd 服务,并设置开机自启
。
首先,确保 WSL 启用了 systemd(Ubuntu 22.04 默认关闭):
# 在 WSL 终端中执行
sudo nano /etc/wsl.conf
# 添加以下内容:
[boot]
systemd=true
然后退出 WSL,重启:
wsl --shutdown
wsl -d Ubuntu-22.04
验证 systemd 是否运行:
ps -p 1 -o comm=
# 应输出 systemd
接着,创建
ollama.service
文件:
sudo nano /etc/systemd/system/ollama.service
填入以下内容:
[Unit]
Description=Ollama Service
After=network.target
[Service]
Type=simple
User=<你的用户名>
WorkingDirectory=/home/<你的用户名>
ExecStart=/usr/local/bin/ollama serve
Restart=always
RestartSec=3
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_REGISTRY=https://ollama.fyi"
[Install]
WantedBy=default.target
启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable ollama
sudo systemctl start ollama
# 验证状态
sudo systemctl status ollama
# 应显示 active (running)
提示:
Restart=always确保服务崩溃后自动重启;RestartSec=3设置重启间隔为 3 秒,避免频繁崩溃;Environment行继承了我们之前配置的变量,保证服务启动时环境一致。
4.2 Windows 主机调用验证:从
curl
到 VS Code 的全链路测试
服务跑起来了,但 Windows 主机能不能用?这是最终检验标准。我们分三层验证:
第一层:基础
curl
测试(确认网络通)
# 在 Windows PowerShell 中执行
curl http://localhost:11434/api/tags
# 应返回 JSON,包含已安装的模型列表,如 {"models":[{"name":"qwen2:7b","model":"qwen2:7b","size":3822451234,"digest":"sha256:abc123..."}]}
第二层:API 调用测试(确认服务功能)
# 发送一个简单推理请求
$body = @{
model = "qwen2:7b"
prompt = "你好,你是谁?"
stream = $false
} | ConvertTo-Json
curl -X POST http://localhost:11434/api/generate `
-H "Content-Type: application/json" `
-Body $body
# 应返回包含 "response" 字段的 JSON,如 {"model":"qwen2:7b","created_at":"2024-07-15T10:00:00.000Z","response":"我是通义千问,阿里巴巴集团旗下的超大规模语言模型。"}
第三层:VS Code 集成(确认开发环境可用)
-
在 VS Code 中安装插件
Ollama(作者:joezack)。 -
打开命令面板(Ctrl+Shift+P),输入
Ollama: Select Model,选择qwen2:7b。 -
新建一个
.txt文件,输入你好,右键选择Ollama: Chat with Selection。 - 应在 VS Code 右下角弹出聊天窗口,几秒后返回回答。
注意事项:如果 VS Code 报错
Failed to connect to Ollama server,检查两点:①ollama serve是否在运行(sudo systemctl status ollama);② Windows 防火墙是否阻止了11434端口(在“高级安全 Windows Defender 防火墙”中添加入站规则,端口11434,协议TCP)。
4.3 模型管理与性能监控:
ollama list
、
ollama rm
、
nvidia-smi
的正确姿势
日常使用中,你会频繁用到这些命令,但它们的“正确姿势”常被忽略:
-
ollama list:列出所有已安装模型。但它 不显示模型大小和最后使用时间 。要查看真实磁盘占用:# 查看模型存储路径(默认在 ~/.ollama/models) ls -lh ~/.ollama/models/blobs/ # 按大小排序,找出最大的几个 blob(即模型文件) du -sh ~/.ollama/models/blobs/* | sort -hr | head -10 -
ollama rm <model>:删除模型。但它 只删 registry 中的 tag,不删底层 blob 。要彻底清理磁盘空间:# 先删 tag ollama rm qwen2:7b # 再删未被引用的 blob(危险操作,确保没有其他模型依赖它) find ~/.ollama/models/blobs/ -type f -size +1G -delete -
GPU 利用率监控:Ollama 默认用 CPU 推理,但如果你有 NVIDIA 显卡(RTX 3060 及以上),可以启用 GPU 加速。先确认驱动:
# 在 WSL 中执行(需提前在 Windows 安装 NVIDIA CUDA 驱动) nvidia-smi # 应显示 GPU 信息和 driver version然后运行模型时指定 GPU:
OLLAMA_NUM_GPU=1 ollama run qwen2:7b # 或者永久设置 echo "export OLLAMA_NUM_GPU=1" >> ~/.bashrc监控 GPU 使用率:
watch -n 1 'nvidia-smi --query-gpu=utilization.gpu,memory.used --format=csv,noheader,nounits' # 输出类似: 35 %, 4256 MiB
实操心得:我曾因没监控 GPU,让
qwen2:7b在 RTX 4090 上跑满 100%,结果风扇狂转,温度飙升到 85°C,触发降频。后来加了watch命令,把OLLAMA_NUM_GPU=1改成OLLAMA_NUM_GPU=0.5(限制显存占用),温度立刻降到 65°C 以下。这个细节决定了你能否长时间稳定使用。
4.4 常见故障排查链路:从
an error occurred while running a wsl command
到
there was a problem with wsl
最后,整理一份高频报错的排查链路,按发生概率从高到低排列,每一步都给出验证命令和修复方案:
| 报错信息 | 根本原因 | 验证命令 | 修复方案 |
|---|---|---|---|
an error occurred while running a wsl command. please check your wsl configuration and try again.
|
WSL 内核损坏或
wsl.conf
语法错误
|
wsl --status
,
cat /etc/wsl.conf
|
wsl --update
升级内核;检查
wsl.conf
是否有多余空格或非法字符;
wsl --shutdown
后重试
|
there was a problem with wsl
| WSL2 虚拟机文件系统损坏 |
wsl -l -v
,
ls /mnt/wsl/
|
wsl --unregister <发行版名>
彻底删除,按 2.1 节重装
|
failed to pull model: Get "https://registry.ollama.ai/..." timeout
|
OLLAMA_REGISTRY
未生效或镜像站宕机
|
echo $OLLAMA_REGISTRY
,
curl -I https://ollama.fyi
|
检查
~/.bashrc
是否 source;临时换
OLLAMA_REGISTRY=https://ollama.mirror.ustc.edu.cn
;或用 3.4 节手动 load
|
connection refused
(Windows 调用时)
|
ollama serve
未运行,或
OLLAMA_HOST
未设为
0.0.0.0
|
sudo ss -tuln | grep :11434
,
echo $OLLAMA_HOST
|
sudo systemctl start ollama
;
echo "export OLLAMA_HOST=0.0.0.0:11434" >> ~/.bashrc
;
source ~/.bashrc
|
out of memory
(运行大模型时)
| WSL 分配内存不足 |
free -h
,
cat /proc/meminfo | grep MemAvailable
|
修改
wsl.conf
中
memory=6GB
,
wsl --shutdown
后重试
|
最后一个小技巧:把所有常用命令做成 alias,写入
~/.bashrc:alias olstart='sudo systemctl start ollama' alias olstop='sudo systemctl stop ollama' alias ollist='ollama list && du -sh ~/.ollama/models/blobs/ \| sort -hr \| head -5' alias olgpu='watch -n 1 "nvidia-smi --query-gpu=utilization.gpu,memory.used --format=csv,noheader,nounits"'输入 `olg

2万+

被折叠的 条评论
为什么被折叠?



