12 代酷睿核显笔记本配置 Ubuntu Server + Ollama + Qwen2.5-coder 大模型

主题:在 12 代酷睿(Alder Lake)核显笔记本上,基于 Ubuntu Server 离线部署 Ollama 并启用 Intel 核显(Vulkan)加速,最终跑通 Qwen2.5-coder 大模型。

适用场景:无外网 / 内网隔离环境,从 2 号机把离线安装包传到 1 号机(x86_64 Linux),完成安装、配置与验证。

对常见问题进行了分析并给出解决方法。整个操作流程每个操作步骤都有「命令 + 解释 + 正确反馈」便于对照执行。

整理时间:2026-11-05

一、电脑配置与环境说明

本次部署涉及两台机器:1 号机是真正的部署目标机,2 号机只作为离线包的传输源机。

1.1 1 号机(Ollama 部署目标机)

项目

实际配置 / 取值

主机名 / 用户

maza@maza

IP 地址

192.168.31.185

CPU 架构

x86_64(Intel/AMD 64 位)

显卡

Intel Iris Xe Graphics (ADL GT2)

显卡类型

核芯显卡(集成显卡 / iGPU),无独立显卡

平台代号

Alder Lake(英特尔第 12 代酷睿)

核显规格

GT2 级别,Xe 架构,96 个执行单元(EU),常见于第 12 代酷睿移动标压 P/H 系列

内存

约 16 GB(系统可见 14.8 GiB)

核显可用共享显存

11.1 GiB(Ollama 识别结果,来自系统内存)

操作系统

Ubuntu Server(无桌面环境,使用 apt与 systemd)

内核 / 显示环境

无 X11/Wayland,纯命令行(Vulkan 走无头 Headless 模式)

Ollama 版本

0.40.13

二进制安装路径

/usr/local/bin/ollama

依赖库路径

/usr/local/lib/ollama/

模型存储目录

/home/maza/.ollama/models

目标大模型

Qwen2.5-coder(首测 qwen2.5-coder:1.5b,约 986 MB,核显友好)

关于这块核显需要说明两点:

  1. ADL 是 Alder Lake 的缩写,即英特尔第 12 代酷睿处理器平台;GT2 是核显档次代号。二者组合就是「Iris Xe 96 EU」这一档核显。
  2. 核显没有独立显存(VRAM),它借用系统内存当显存用。所以上面看到的「11.1 GiB 可用显存」实际上是系统内存划出来的,并不是真实存在的独立显存——这也是核显跑大模型时速度受限的根本原因之一。

1.2 2 号机(离线包传输源机)

项目

说明

角色

存放离线安装包 ollama-linux-amd64.tar.zst,通过网络推送到 1 号机

网络位置

与 1 号机同网段(192.168.31.x)

必备条件

能通过 ping/ ssh访问 1 号机的 192.168.31.185

之所以要「2 号机传包」而不是直接 curl 下载:内网隔离环境无法访问外网,只能提前在能联网的机器上下好包,再离线搬过去。

1.3 两机关系示意

       离线安装包                          部署目标

   ┌──────────────┐   scp (22 端口)   ┌──────────────────────┐

   │   2 号机      │ ───────────────► │       1 号机          │

   │ 持有 .tar.zst │                  │ maza@192.168.31.185  │

   │              │                  │ x86_64 + Iris Xe 核显 │

   └──────────────┘                   └──────────────────────┘

二、完整操作流程

以下「步骤 1」在 2 号机 执行,其余步骤都在 1 号机 执行。

步骤 0:前置条件确认

检查项

命令 / 说明

1 号机已开 SSH

1 号机上 sudo systemctl enable --now ssh

两机网络互通

2 号机 ping 192.168.31.185

22 端口放行

1 号机防火墙放行 SSH(默认 22)

1 号机系统架构

uname -m→ x86_64

步骤 1:在 2 号机上,把离线包推送到 1 号机

# 在 2 号机执行:把当前目录下的离线包推到 1 号机的家目录

scp ollama-linux-amd64.tar.zst maza@192.168.31.185:~/

命令解释:

  1. scp:基于 SSH 的安全文件复制命令。
  2. ollama-linux-amd64.tar.zst:要传输的本地文件(注意是 amd64 / x86_64 包,不是 arm64)。
  3. maza@192.168.31.185:~/:目标为 1 号机的 maza 用户家目录(/home/maza/)。
  4. 首次连接会提示确认主机指纹(输入 yes),随后输入 1 号机 maza 用户的密码。

正确反馈:

ollama-linux-amd64.tar.zst            100%  1850MB   45.3MB/s   00:41

常用变体:

# 若 SSH 端口不是默认 22(例如 2222)

scp -P 2222 ollama-linux-amd64.tar.zst maza@192.168.31.185:~/

# 反向:在 1 号机上从 2 号机拉取(把 2 号机 IP 换成实际地址)

scp 用户名@2号机IP:~/ollama-linux-amd64.tar.zst ~/

# 校验是否传成功(在 2 号机执行,远程列出文件)

ssh maza@192.168.31.185 "ls -lh ~/ollama-linux-amd64.tar.zst"

步骤 2:登录 1 号机,清理旧文件并安装解压工具

# 从 2 号机登录 1 号机(也可直接在 1 号机的终端操作)

ssh maza@192.168.31.185

# 确认架构

uname -m                 # 期望输出: x86_64

# 安装 zstd(解压 .zst 必需)

sudo apt update && sudo apt install -y zstd

# 清理之前装错的 ARM 版本残留(如果做过)

sudo systemctl stop ollama

sudo rm -rf /usr/local/bin/ollama

sudo rm -rf /usr/local/lib/ollama

步骤 3:解压安装包

# 解压到临时目录(路径最可控,推荐)

mkdir -p ~/ollama-install

tar -I zstd -xf ~/ollama-linux-amd64.tar.zst -C ~/ollama-install

# 查看解压结果,确认结构

ls -R ~/ollama-install | head -n 30

期望看到的结构:

~/ollama-install/bin/ollama

~/ollama-install/lib/ollama/llama-server

~/ollama-install/lib/ollama/libggml-*.so

~/ollama-install/lib/ollama/cuda_v12/...

~/ollama-install/lib/ollama/cuda_v13/...

步骤 4:安装到系统目录

# 1) 主程序

sudo cp ~/ollama-install/bin/ollama /usr/local/bin/ollama

sudo chmod +x /usr/local/bin/ollama

# 2) 依赖库与后端引擎(关键:整个 lib/ollama 目录都要复制)

sudo mkdir -p /usr/local/lib/ollama

sudo cp -r ~/ollama-install/lib/ollama/* /usr/local/lib/ollama/

# 3) 更新动态链接库缓存

sudo ldconfig

(备选)直接解压到 /usr:

官方 amd64 包内是 bin/ + lib/ 结构,直接解压到 /usr 会自动得到 /usr/bin/ollama 与 /usr/lib/ollama,无需手动复制:

sudo tar -I zstd -xf ~/ollama-linux-amd64.tar.zst -C /usr

步骤 5:验证架构一致性(最容易漏的一步)

file /usr/local/bin/ollama

file /usr/local/lib/ollama/llama-server

正确反馈(两个都必须含 x86-64):

/usr/local/bin/ollama:        ELF 64-bit LSB pie executable, x86-64, ...

/usr/local/lib/ollama/llama-server: ELF 64-bit LSB executable, x86-64, ...

若出现 ARM aarch64 → 说明包拿错了,回到步骤 1 重新传 amd64 包。

步骤 6:配置 systemd 服务并启用核显加速

sudo systemctl edit ollama

在编辑器中填入以下内容(只写需要新增的部分即可):

[Service]

# 启用 Intel 核显(关键,不加这行核显会被丢弃)

Environment="OLLAMA_IGPU_ENABLE=1"

# 启用 Vulkan 后端(核显走 Vulkan 加速)

Environment="OLLAMA_VULKAN=1"

保存退出(Nano:Ctrl+O → Enter → Ctrl+X;Vim::wq)。

核对覆盖文件已正确写入:

cat /etc/systemd/system/ollama.service.d/override.conf

(可选)让局域网其他机器也能访问 API:

Environment="OLLAMA_HOST=0.0.0.0:11434"

Environment="OLLAMA_ORIGINS=*"

步骤 7:修正数据目录权限

# 确保运行用户(User=ollama)的数据目录存在且归属正确

sudo mkdir -p /usr/share/ollama

sudo chown -R ollama:ollama /usr/share/ollama

如果你的服务不是以 ollama 用户运行,请先 systemctl cat ollama | grep User 确认实际用户,再对应用户名调整上面的命令。

步骤 8:重载并启动服务

sudo systemctl daemon-reload      # 让 systemd 读取新的覆盖配置(必须)

sudo systemctl enable ollama      # 设置开机自启

sudo systemctl start ollama       # 启动服务

步骤 9:验证服务与核显是否生效

# 查看服务状态

sudo systemctl status ollama

✅ 正确反馈:

Active: active (running)

# 查看日志(重点看显卡识别)

journalctl -u ollama -n 30 --no-pager

✅ 核显生效的关键日志:

msg="inference compute" ... library=Vulkan ... name="Intel(R) Iris(R) Xe Graphics (ADL GT2)" ... type=iGPU total="11.1 GiB" available="10.0 GiB"

msg="vram-based default context" total_vram="11.1 GiB" default_num_ctx=4096

判断要点:library=Vulkan、type=iGPU、total_vram 不再是 0 B。

# 测试 API 是否可达

curl http://localhost:11434/api/tags

✅ 正确反馈: 返回 JSON,例如 {"models":[]}。

步骤 10:拉取并运行模型

# 先测试轻量模型(核显友好)

ollama run qwen2.5-coder:1.5b

✅ 正确反馈:

pulling manifest

pulling 29d8c98fa6b0: 100% ▕██████████▏ 986 MB

verifying sha256 digest

writing manifest

success

核显负载监控(可选):

sudo apt install -y intel-gpu-tools

sudo intel_gpu_top

运行模型时观察 Render/3D 引擎是否有负载波动,确认核显正在参与计算。

三、常见问题分析(本次踩坑汇总)

这一节把整个部署过程中遇到的 6 类问题按「现象 → 原因 → 结论」讲清楚,方便日后换机或重装时避开同样的坑。

3.1 问题一:安装包架构与系统架构不匹配(最核心的坑)

现象:

Failed to execute /usr/local/bin/ollama: Exec format error

systemd[1]: ollama.service: Main process exited, code=exited, status=203/EXEC

后续运行模型时又出现:

Error: 500 Internal Server Error: error starting llama-server:

fork/exec /usr/local/lib/ollama/llama-server: exec format error

原因:

1 号机是 x86_64 架构,但最初下载的是 ARM64(aarch64) 的安装包 ollama-linux-arm64.tar.zst。x86 的 CPU 无法执行 ARM 指令集的程序,所以一启动就报 Exec format error。

判断方法(一条命令定生死):

# 看系统架构

uname -m

# 正确输出: x86_64

# 看已安装文件的架构

file /usr/local/bin/ollama

如果 uname -m 是 x86_64,而 file 的结果写着 ARM aarch64,就是架构装错了。

最容易忽略的一点(重点):

Ollama 由两部分组成,两者架构必须一致:

  1. 前端守护进程:/usr/local/bin/ollama
  2. 后端推理引擎:/usr/local/lib/ollama/llama-server

当时出现过「只替换了主程序、没换 lib/ollama 目录」的情况:结果 ollama serve 能正常启动(主程序已是 x86-64),但一运行模型就报 exec format error(后端引擎还是 ARM 的)。所以务必用 file 命令同时检查这两个文件。

结论: 凡是看到 Exec format error / status=203/EXEC / exec format error,第一反应就是「架构不匹配」,先去核对 uname -m 和 file 的结果。

3.2 问题二:核显与独显的区别,以及 Ollama 默认会禁用核显

现象:

手动启动时日志显示显卡被「丢弃」,退回到纯 CPU:

msg="dropping integrated GPU; to enable, set OLLAMA_IGPU_ENABLE=1"

id=0 library=Vulkan name=Vulkan0 description="Intel(R) Iris(R) Xe Graphics (ADL GT2)"

msg="inference compute" id=cpu library=cpu ... total="14.8 GiB"

msg="vram-based default context" total_vram="0 B"

独显与核显的关键区别:

对比项

独立显卡(dGPU)

核芯显卡(iGPU,本机情况)

显存来源

自带独立 VRAM

共享系统内存,无独立显存

显存容量

固定(如 8GB / 12GB)

随内存变化(本机显示 11.1 GiB)

Ollama 识别

默认直接识别并启用

默认被禁用,需手动开启

加速后端

CUDA(NVIDIA)/ ROCm

Vulkan

性能定位

强,可跑大模型

中低,适合 1.5B~3B 小模型

原因:

Ollama 出于稳定性考虑,默认不启用集成显卡(日志里的 dropping integrated GPU 就是被丢弃的意思)。想用核显,必须显式打开开关。

解决方法:

设置环境变量 OLLAMA_IGPU_ENABLE=1(配合 OLLAMA_VULKAN=1 启用 Vulkan 后端)。

结论: 没有独显 ≠ 不能用 GPU 加速。Intel 核显可以通过 Vulkan 后端参与推理,开启后日志里 library=Vulkan、type=iGPU、total_vram 不再为 0 B,即为生效。

3.3 问题三:.tar.zst 的解压方式错误

现象:

gzip: stdin: not in gzip format

tar: Child returned status 1

tar: Error is not recoverable: exiting now

原因:

.tar.zst 是 Zstandard(zstd) 压缩,不是 gzip。用 tar -xzf(-z 表示 gzip)去解压,自然报「not in gzip format」。

正确做法(三选一):

# 方式一:让 tar 显式走 zstd

tar --zstd -xf ollama-linux-amd64.tar.zst -C 目标目录

# 方式二:用 -I 指定 zstd 程序

tar -I zstd -xf ollama-linux-amd64.tar.zst -C 目标目录

# 方式三:分两步,先解 zst 再解 tar(最通用)

zstd -d ollama-linux-amd64.tar.zst -o ollama-linux-amd64.tar

tar -xf ollama-linux-amd64.tar -C 目标目录

前提:系统已装 zstd(sudo apt update && sudo apt install -y zstd)。Ollama 从 0.14.0 版本起改用 zstd 压缩,所以这个坑很常见。

3.4 问题四:解压目录层级与路径冲突

现象 A(层级不对):

解压后执行 chmod 报错:

chmod: cannot access '/usr/local/bin/ollama': No such file or directory

原因 A:

安装包内部结构是 bin/ollama、lib/ollama/...。如果直接 -C /usr/local/bin 解压,文件会落到 /usr/local/bin/bin/ollama,比预期多出一层 bin/ 目录。

现象 B(Not a directory):

tar: ollama/libggml-base.so: Cannot open: Not a directory

tar: ollama/libggml.so: Cannot create symlink to 'libggml.so.0': Not a directory

一大堆 Cannot open: Not a directory。

原因 B:

目标位置 /usr/local/bin/ollama 已经存在同名的「文件」(之前手动放进去的二进制)。而压缩包里要创建的是 ollama/ 目录。一个路径不可能既是文件又是目录,所以 tar 报「Not a directory」。

解决方法:

  1. 先删掉冲突的同名文件:sudo rm -f /usr/local/bin/ollama
  2. 解压到临时目录,再把文件分别复制到正确位置(推荐,路径最可控):

mkdir -p ~/ollama-install

tar -I zstd -xf ~/ollama-linux-amd64.tar.zst -C ~/ollama-install

# 得到 ~/ollama-install/bin/ollama 与 ~/ollama-install/lib/ollama/...

  1. 或在解压前先看清包内结构,再决定是否加 --strip-components:

tar tf ~/ollama-linux-amd64.tar.zst | head -n 10

结论: 不要盲目用 --strip-components;「先解压到临时目录,再精确复制」是最不容易出错的方式。

3.5 问题五:运行用户与数据目录权限

现象:

服务反复重启,日志报:

Couldn't find '/usr/share/ollama/.ollama/id_ed25519'. Generating new private key.

Error: could not create directory mkdir /usr/share/ollama: permission denied

ollama.service: Main process exited, code=exited, status=1/FAILURE

原因:

systemd 服务里配置了 User=ollama,该用户的 HOME 是 /usr/share/ollama。但这个目录不存在,且普通用户对系统目录 /usr/share/ 没有写权限,于是 mkdir /usr/share/ollama 失败,服务启动即退出,并触发无限自动重启(日志里 restart counter 已经涨到 499)。

解决方法(二选一):

  1. 方案 A(推荐,符合 Linux 规范):给服务用户建好数据目录

sudo mkdir -p /usr/share/ollama

sudo chown -R ollama:ollama /usr/share/ollama

  1. 方案 B:用环境变量把数据目录重定向到用户家目录在 systemd 覆盖配置里加:

Environment="OLLAMA_HOME=/home/maza/.ollama"

并确保目录归属正确:

mkdir -p /home/maza/.ollama

sudo chown -R maza:maza /home/maza/.ollama

结论: 只要日志里出现 permission denied + mkdir /usr/share/ollama,就是运行用户与数据目录权限对不上。查清 User= 是谁,再把目录归它所有。

3.6 问题六:systemd 覆盖文件(drop-in)的编辑方式

现象:

Found modifications outside of the staging area, which would be discarded.

/etc/systemd/system/ollama.service.d/override.conf:

after editing, new contents are empty, not writing file.

原因:

  1. 不能直接改 /lib/systemd/system/ollama.service:那是软件包自带的原始文件,升级时会被覆盖还原。
  2. 用 systemctl edit ollama 时,如果把内容全部删空或全部写成注释(# 开头),systemd 判定为「空配置」,拒绝写入。
  3. 覆盖文件里必须保留 [Service] 段头 + 至少一行有效键值。

正确的覆盖文件写法:

[Service]

Environment="OLLAMA_IGPU_ENABLE=1"

Environment="OLLAMA_VULKAN=1"

只需要写「要新增/修改」的部分,其余配置会自动从原始单元文件继承,不需要复制整份。

改完后必须重载:

sudo systemctl daemon-reload

sudo systemctl restart ollama

daemon-reload 是必须的,否则 systemd 不会读取新的覆盖文件。

结论: 用 systemctl edit 而非手改原始文件;覆盖文件要留有 [Service] 与有效配置;改完必须 daemon-reload。

四、命令速查表

操作

命令

查看系统架构

uname -m

查看文件架构

file /usr/local/bin/ollama

从 2 号机传包

scp ollama-linux-amd64.tar.zst maza@192.168.31.185:~/

解压 zst 包

tar -I zstd -xf 包名.tar.zst -C 目标目录

启动服务

sudo systemctl start ollama

停止服务

sudo systemctl stop ollama

重启服务

sudo systemctl restart ollama

查看状态

sudo systemctl status ollama

查看日志

journalctl -u ollama -n 50 --no-pager

重载配置

sudo systemctl daemon-reload

查看完整配置

systemctl cat ollama

列出已装模型

ollama list

删除模型

ollama rm 模型名

在线升级 Ollama

curl -fsSL https://ollama.com/install.sh \| sh

五、常见报错速查表

报错信息

根本原因

处理方式

gzip: stdin: not in gzip format

用 gzip 方式解压 .zst文件

改用 tar -I zstd或 zstd -d

Cannot open: Not a directory

目标路径已有同名文件,无法再建同名目录

先 rm掉同名文件,或解压到临时目录再复制

Exec format error/ status=203/EXEC

安装包架构与 CPU 架构不符

核对应为 amd64,重新下载/传输

error starting llama-server: exec format error

后端引擎 llama-server架构不对(只换了主程序)

file检查两个文件,整套重装

dropping integrated GPU; set OLLAMA_IGPU_ENABLE=1

Ollama 默认禁用核显

加环境变量 OLLAMA_IGPU_ENABLE=1

mkdir /usr/share/ollama: permission denied

服务用户对数据目录无写权限

mkdir+ chown ollama:ollama

after editing, new contents are empty

systemctl edit内容为空/全注释

保留 [Service]+ 有效键值

address already in use

11434 端口已被占用

sudo kill -9 $(lsof -t -i:11434)后重启

could not connect to ollama server

后台服务未运行

用 systemd 启动服务,或先 ollama serve

六、结论与建议

  1. 架构必须一致:x86_64 机器只能用 linux-amd64 包;且 bin/ollama 与 lib/ollama/llama-server 必须同为 x86-64。这是本次排查耗时最长的环节。
  2. 核显要手动开:Ollama 默认丢弃集显,必须 OLLAMA_IGPU_ENABLE=1 + Vulkan 后端才能用上 Intel Iris Xe。
  3. 权限要对上:systemd 服务以哪个用户跑,就要保证那个用户对数据目录有写权限。
  4. 模型选择:核显加速适合 1.5B~3B 的量化模型;7B 及以上模型会大量占用共享内存,导致系统卡顿。
  5. 离线部署最适合的场景:内网隔离环境用「2 号机下包 → scp 传 1 号机 → 本地解压安装」,比在所有机器上跑在线脚本更可控。
Logo

更多推荐