飞牛fnOS使用AMD显卡搭建llama.cpp本地模型养龙虾openclaw
fnos AMD 版 编解码/AV1/杜比视界色调映射/RoCM AI 都已经全面适配测试通过,您目前在用的 AMD 设备是什么?

好,雕牌认证,这就给它整起。
搭建环境介绍:
Intel 10700 * 1
32G 单条 * 1
AMD RX6600xt * 2
#安装 fnOS
飞牛的安装就不多说了,官方网站上也写得很细致了,而且外面有很多。👇
https://help.fnnas.com/articles/v1/start/install-os.md
#安装 AMD 驱动
雕牌认证,直接在应用中心安装就成。


AMD 容器工具包提供了一个强大且灵活的框架,用于简化在容器化应用中使用 AMD Instinct GPU 的过程。
#安装 ollam
飞牛应用中心提供了本地模型部署的 ollama 框架,直接安装它。
不知道是什么情况,我这里安装失败了很多次,进度从 10% 开始 到 55% 都很容易出现失败。

试了几次,安装不上就放弃了。
#转向 llama.cpp
我之前在玩 windwos 平台的 llama.cpp 时在 github 上寻找过很多关于 6600 相关的 rocm 仓库。 rx6600 的架构是 gfx1032,而苏妈默认是不给支持,只好找大佬们开放的支持方案。下面这个就是。👇
https://github.com/lemonade-sdk/llamacpp-rocm

我们提供基于 TheRock 的、带有 AMD ROCm™ 7 加速的 llama.cpp 夜间构建版本,可提供最新、最前沿的构建。我们的自动化流程专门针对与 🍋 Lemonade 以及其他需要高性能 GPU 推理的类似 AI 应用程序的无缝集成。
不过,该仓库也声明:
贡献与支持说明:虽然该项目目前侧重于在特定生产环境中集成 llama.cpp+ROCm,但我们更广泛的目标是为 llama.cpp+ROCm 生态系统做出有意义的贡献。我们暂未准备好提供全面的技术支持,但欢迎有助于推动该领域发展的合作、想法交流或贡献。
支持这么多设备:
gfx1151 (STX Halo APU) - Ryzen AI MAX+ Pro 395
gfx1150 (STX Point APU) - Ryzen AI 300
gfx120X (RDNA4 GPUs) - includes AMD Radeon RX 9070 XT/GRE/9070, RX 9060 XT/9060
gfx110X (RDNA3 GPUs) - includes AMD Radeon dGPUs: PRO W7900/W7800/W7700/W7600, RX 7900 XTX/XT/GRE, RX 7800 XT, RX 7700 XT/7700, RX 7600 XT/7600 and iGPUs: Radeon 780M/760M/740M
gfx103X (RDNA2 GPUs) - includes AMD Radeon dGPUs: RX 6800 XT/6800, RX 6700 XT/6700, RX 6600 XT/6600, RX 6500 XT/6500
刚好符合需求,👍 🙇♀️
而且很贴心的是:
All builds include ROCm™ 7 built-in - no separate ROCm™ installation required!
也就是说使用这个仓库提供的 llama.cpp 运行包,不需要额外安装单独的 rocm 运行时,解压即用。

那就开始吧。
为了不影响系统,这里使用docker来运行。
先拉一个 Ubuntu。
打开 docker,在镜像仓库搜索 Ubuntu ,下载第一个的 latest 版本

下载完成后,在本地镜像里运行

我是使用 ssh 创建的容器,命令如下:
docker run -d
--name llama.cpp
--privileged
--cap-add CAP_SYS_PTRACE
--security-opt label=disable
--device /dev:/dev
-v /vol1/1000/models:/models:rw
-p 8090:8000
--log-opt max-file=5
--log-opt max-size=100m
-i
ubuntu
/bin/bash
我让运行的 qwen3.5-9b 模型给转了一个 docker-compose 出来:
version: "3.9"
services:
llama-cpp:
# 镜像名称
: ubuntu
# 容器名称
container_name: llama.cpp
# 启动模式:后台运行
restart: "no"
# 环境变量
environment:
- PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 端口映射 (Host Port:Container Port)
ports:
- "8090:8000"
# 卷挂载 (Volume Bind Mounts)
# 注意:Docker Compose 语法中通常不需要显式指定 :rw (读写权限), 默认是 rw
volumes:
- /vol1/1000/models:/models
# 高级配置 (Advanced Configurations)
# 这些选项对应 docker run 中的 --privileged, --cap-add, --security-opt, --device 等
privileged: true
cap_add:
- CAP_SYS_PTRACE
security_opt:
- label=disable
devices:
- /dev:/dev
# 日志配置
logging:
driver: "json-file"
options:
max-file: "5"
max-size: "100m"
# 运行参数 (Run Options)
# -i 对应 stdin_open: true
stdin_open: true
# tty 通常默认就是 true,显式写上更清晰,但非必须
tty: true
# 工作目录默认为容器内 /,原命令为空串,这里保持默认即可
# working_dir: ""
# 启动命令
command:
- "/bin/bash"
# 网络配置 (默认使用 compose 自动创建的 bridge 网络,无需额外声明)
# network_mode: "bridge" (默认)
别忘了把 llama.cpp 运行包挂载到容器里了,当然忘了也没关系,可以使用 docker cp 命令复制进去。

然后进入容器运行 llama.cpp
先检查一下设备是否可用。
看到了两张显卡设备,没问题,直接运行。
./llama-server -ngl 99 -m /models/Qwen3.5-9B-Q4_K_M.gguf --alias qwen3.5-9b -mm /models/mmproj-F16-9b.gguf --host 0.0.0.0 --port 8000
当然,如果不需要思考,可以强制关掉,追加一个参数即可,👇
--reasoning off
为了方便运行,我让它给了一个运行脚本,一个关闭脚本。

#!/bin/bash
# ===========================
# llama-server 启动脚本(后台运行版本)
# 作者: Assistant
# 用途: 启动 Qwen3.5-9B 模型服务,自动后台运行
# ===========================
# 配置参数(可调)
MODEL_PATH="/models/Qwen3.5-9B-Q4_K_M.gguf"
MMPROJ_PATH="/models/mmproj-F16-9b.gguf"
ALIAS="qwen3.5-9b"
NGL=99
HOST="0.0.0.0"
PORT=8000
REASONING="off"
# 日志文件路径
LOG_FILE="./llama-server.log"
PID_FILE="./llama-server.pid"
# 检查模型文件是否存在
if [ ! -f "$MODEL_PATH" ]; then
echo "❌ 错误:模型文件未找到 - $MODEL_PATH"
exit 1
fi
if [ ! -f "$MMPROJ_PATH" ]; then
echo "⚠️ 警告:MMProj 文件未找到 - $MMPROJ_PATH"
fi
# 检查是否已在运行
if [ -f "$PID_FILE" ]; then
PID=$(cat "$PID_FILE")
if kill -0 "$PID" 2>/dev/null; then
echo "🚨 服务已在运行(PID: $PID)"
exit 1
else
echo "🗑️ 前次 PID 文件存在但进程已结束,清理中..."
rm -f "$PID_FILE"
fi
fi
# 输出启动信息
echo "🚀 正在启动 llama-server(后台运行)..."
echo " 模型: $MODEL_PATH"
echo " MMProj: $MMPROJ_PATH"
echo " 别名: $ALIAS"
echo " GPU 层: $NGL"
echo " 监听: $HOST:$PORT"
echo " Reasoning: $REASONING"
echo " 日志: $LOG_FILE"
echo " PID 文件: $PID_FILE"
echo "------------------------------"
# 启动服务并后台运行
nohup ./llama-server
-ngl "$NGL"
-m "$MODEL_PATH"
--alias "$ALIAS"
-mm "$MMPROJ_PATH"
--host "$HOST"
--port "$PORT"
--reasoning "$REASONING" > "$LOG_FILE" 2>&1 &
# 获取后台进程 PID 并保存
echo $! > "$PID_FILE"
echo "✅ 服务已启动,PID: $!"
echo "📌 日志已保存到: $LOG_FILE"
echo "🔧 可使用以下命令查看日志:tail -f $LOG_FILE"
安装完成后,可以通过访问 web 来确认


#安装 openclaw
一打开应用中心就可以看到小龙虾了 🦞,亲儿子大力推荐。

直接安装就可以,不过需要安装两个依赖,根据提示安装就行了。

安装完成后,打开它配置一下

添加刚才运行起来的模型

配置消息渠道

配置完成后,去概览里面重启一下

我配置的最近出来的微信 clawbot

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

