
搞了这么多年Linux头一回在国产系统上装东西还专门写了篇笔记。最近手头有台麒麟服务器系统V11需要部署本地大模型服务选了ollama这个工具。本以为一条命令就能搞定结果踩了一路的坑从下载源到系统依赖再到模型拉取每一步都有讲究。这篇东西就是我的实操记录给那些同样要在国产化环境下跑大模型的朋友当份参考。你可能会遇到和我一样的问题也可能环境比我更好但基本的思路和排查方法应该通用。1. 动手之前先搞清楚麒麟V11到底是个什么底子1.1 系统架构和版本信息别搞错麒麟服务器系统V11在技术上分两个大方向一个是x86_64体系一个是ARM体系特别是鲲鹏、飞腾这些芯片。这个区别直接决定了你后面下载什么架构的安装包装错了就是白忙活。上服务器第一件事先确认基础信息命令也不多uname -m cat /etc/os-release lscpu free -huname -m看架构x86_64就选amd64的包aarch64就选arm64的包。/etc/os-release看系统具体版本方便后面处理依赖。内存方面我多说一句ollama跑大模型内存是刚需低于8G连个3B的小模型都费劲建议16G起步有条件直接上32G以上。确认完这些再去官网看对应支持别想当然以为全网都是通用的deb/rpm包。1.2 为什么不能无脑用官方一键脚本绝大多数Linux教程上来就是一行curl -fsSL https://ollama.com/install.sh | sh这段命令在标准的Ubuntu、CentOS上很顺畅但在麒麟V11上坑主要在三点第一官方脚本会检测系统发行版麒麟的ID信息它不一定认。脚本里写死了Ubuntu、Debian、Fedora这些发行版的软件源路径识别不了就自动跳过包管理器配置依赖装不全后面根本跑不起来。第二默认下载源在国外国内服务器的出网带宽本来就不宽裕下载一个一两百兆的二进制很有可能半路断掉或者速度让人崩溃。第三麒麟V11的GLIBC版本比主流Ubuntu要老ollama新版二进制对GLIBC的要求越来越高如果系统自带的库版本不够直接报./ollama: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.34 not found这类错误基本上就等着哭了。排查GLIBC版本用这条命令ldd --version如果输出里的GLIBC_2.34没有就得用老版本ollama或者手动补充依赖库。1.3 先想清楚你要跑什么模型、用什么硬件安装前先确定用途再做方案。模型尺寸从1B到70B都有量化版本千奇百怪。跑多大模型直接决定了你的显存和内存规划。如果你有NVIDIA显卡先看驱动nvidia-smi驱动没问题的话ollama可以自动走CUDA。要是没有GPU或者驱动装不上也不用灰心ollama支持纯CPU推理只是速度会慢不少7B模型玩一玩是够用的再大就有点折磨了。麒麟平台如果用的昇腾NPU这里提醒一下ollama目前原生不支持NPU得绕道或者等适配方案。Intel集显的话有些实验性支持但别抱太大期望主力还是NVIDIA和CPU。2. 在线安装的实操流程以及换国内加速下载源的那点事2.1 手动下载二进制绕开官方脚本的识别问题官方脚本既然不省心那就自己动手。ollama的release包其实就是一个二进制加上一个systemd服务文件。手动安装的好处是路径可控、依赖清晰、系统对你来说完全透明。优先从国内能访问的镜像站下载。常用的思路是从FossHub、GitHub镜像站或者国内云厂商的镜像仓库获取release包——热词里反正下载慢和国内镜像源是高频词说明大家普遍卡在这一步。我用的是这种方式# 创建安装目录 mkdir -p /opt/ollama # 下载对应架构的压缩包这里以x86_64为例 wget https://某个国内可达的镜像路径/ollama-linux-amd64.tgz # 解压到目标目录 tar -xzf ollama-linux-amd64.tgz -C /opt/ollama # 加入PATH ln -s /opt/ollama/ollama /usr/local/bin/ollama # 验证版本 ollama --version这里给个重点解压出来的目录里其实自带一个名为ollama的可执行文件它需要的动态链接库主要是glibc。先跑一下ollama --version如果正常输出说明库依赖没太大问题。2.2 配置systemd服务让ollama开机自启麒麟V11虽然国产但底层继承了systemd体系所以服务写法跟主流Linux没有本质区别。我不建议直接裸启动ollama进程毕竟服务器要的是稳定和自动恢复。写一个服务文件cat /etc/systemd/system/ollama.service EOF [Unit] DescriptionOllama LLM service Afternetwork-online.target [Service] Typesimple Userroot EnvironmentOLLAMA_HOST0.0.0.0:11434 EnvironmentOLLAMA_MODELS/data/ollama/models ExecStart/opt/ollama/ollama serve Restarton-failure RestartSec10 [Install] WantedBymulti-user.target EOF然后加载并启用systemctl daemon-reload systemctl enable ollama systemctl start ollama systemctl status ollama这里解释下两个环境变量OLLAMA_HOST0.0.0.0:11434表示监听所有网卡如果你是单机使用出于安全考虑改成127.0.0.1:11434更稳妥热词里也有人专门搜ollama设置仅本地访问说明这是个普遍需求。我一般建议先本地跑通再对外开放。OLLAMA_MODELS/data/ollama/models是模型存储路径。默认路径在/usr/share/ollama/.ollama/models或者/root/.ollama/models装系统时根分区往往不大大模型动辄几个G甚至几十个G建议独立数据分区。路径设置这块启动服务后可以用以下命令确认是否生效ollama list如果模型目录没配好后面拉模型会直接报磁盘空间不足或者权限错误。2.3 环境变量优先级问题这是我踩过的泥坑跑了一遍之后发现明明systemd里写了OLLAMA_MODELS但实际模型还是存到了原来的默认位置。查了很久才反应过来systemd服务里直接写Environment有时候会被用户级环境变量或者systemd环境文件覆盖。更可靠的做法是在/etc/environment里加上OLLAMA_HOST0.0.0.0:11434 OLLAMA_MODELS/data/ollama/models再在systemd的service文件里保留Environment两边一致才不打架。另外/etc/systemd/system/ollama.service.d/下面如果有conf文件也会覆盖主配置检查的时候别漏掉这个目录。3. 没外网的环境怎么办离线安装与离线模型库方案3.1 在一台可联网的机器上收集全套依赖国产服务器很多部署在隔离内网没法直接访问互联网。这时候就得走离线路线。离线安装的关键是事前准备充分把二进制、依赖库、模型文件全部准备好一次性带进去。在一台同样架构、同样系统的联网服务器上# 1. 下载最新的二进制压缩包 wget https://镜像站路径/ollama-linux-amd64.tgz # 2. 下载对应的依赖库用ldd查看 ldd /opt/ollama/ollama正常ollama二进制的依赖其实很少主要就是glibc、libgcc这类基础库。如果目标系统实在太老可以把对应版本的libc和libstdc的包也拖下来。3.2 离线安装三步走到了内网服务器操作流程这样# 1. 创建目录并解压 mkdir -p /opt/ollama tar -xzf ollama-linux-amd64.tgz -C /opt/ollama # 2. 软链接或者直接放进PATH ln -s /opt/ollama/ollama /usr/local/bin/ollama # 3. 照常配置systemd服务比起在线安装离线少了一个网络验证的环节反而更丝滑。你用ollama --version验证完就可以直接拉了。3.3 模型库的离线准备别只会硬拉很多朋友卡在模型下载这一步。你可以在联网机器上执行ollama pull qwen2.5:7b模型会下载到当前机器的OLLAMA_MODELS目录里。把整个目录打包拷贝到内网机器再设置同样的OLLAMA_MODELS路径就可以直接使用。这里有个关键操作拷贝之前先记下原本的模型存储路径find / -name manifest.yaml -type f 2/dev/null如果服务还没运行也可以通过查找blobs目录来确认。打包的时候建议只打包模型目录里的manifests和blobs文件夹结构别乱路径别改目标机上原样解压。模型下载慢的问题除了离线拷贝还可以设置国内镜像环境变量。目前社区常用做法是设置OLLAMA_MODELS时结合魔搭ModelScope等国内模型托管平台你可以先用modelscope下载GGUF格式的模型文件再通过ollama导入本地模型。导入命令大概长这样ollama create mymodel -f ./ModelfileModelfile里指定基础模型路径即可。这种方法虽然多一步但下载体验比从国外源硬拉好太多。4. 模型下载、路径修改与GPU推理的实战答疑4.1 拉到模型后跑起来遇到报错怎么定位热词里高频出现这几个错误我基本都遇到过ollama run qwen2.5报500 internal server error: llama-server process。看到这个错不用慌它是说ollama主进程已经把请求转给了后端的llama-server推理进程但推理进程崩了。产生原因通常是内存不够、模型文件损坏、GLIBC版本不匹配。排查三步# 1. 看服务日志 journalctl -u ollama --no-pager -n 100 # 2. 检查内存 free -h # 3. 如果是cuda相关看GPU信息 nvidia-smi如果是内存不足最简单的方法就是换更小的量化版本模型。既然是跑qwen2.5:2b都报错说明这台机器资源比较紧张可以用qwen2.5:1.5b或者gemma2:2b这种更小的试。模型文件损坏的话把之前的模型删掉重新拉ollama rm qwen2.5:7b ollama pull qwen2.5:7b4.2 修改模型存储路径别让根分区先爆掉这是个很容易被忽略的问题。ollama默认把模型藏在用户目录下服务器根分区本来就不大拉两三个模型几十G直接撑爆。设置路径前先规划好数据盘挂载到/data或者任意你喜欢的路径mkdir -p /data/ollama/models然后按我前面说的方法在/etc/environment里写OLLAMA_MODELS/data/ollama/models再重启服务systemctl restart ollama如果你只是简单命令行跑也可以在~/.bashrc里追加环境变量然后source ~/.bashrc。但注意如果通过systemd启动的服务命令行环境变量不生效两者必须保持一致。4.3 CPU推理慢、GPU不可用的应对方案麒麟服务器上最常见的情况是要么没有GPU要么是国产GPU无法直接使用CUDA。这时候只能CPU硬扛。CPU推理的调优手段主要是调整并发数OLLAMA_NUM_PARALLEL1 OLLAMA_MAX_LOADED_MODELS1这两个变量能限制同时加载的模型数避免内存被多个模型抢空。实测下来单模型单并发推理响应反而更稳定。如果你用的是Intel CPU并且CPU支持AVX2指令ollama的CPU版本默认就带优化不用额外配置。如果编译时连接了AVX512之类的指令集某些老CPU反而会崩这时可以关注下你的处理器代次实在不行找社区编译的兼容版本。5. 我整理的一份速查表和几个容易忽略的小细节5.1 常用管理命令速查操作命令查看当前已拉取的模型ollama list拉取模型ollama pull 模型名:标签运行模型并进入交互ollama run 模型名:标签删除模型ollama rm 模型名:标签查看服务状态systemctl status ollama查看服务日志journalctl -u ollama --no-pager -n 200重启服务systemctl restart ollama修改模型路径后验证ollama list观察路径变化5.2 docker部署还是直接二进制部署有朋友用docker部署热词里也有docker部署ollama模型。这种方式的好处是隔离性好、环境统一不需要关心系统依赖。但如果你本来就是内网离线环境docker镜像是另一个搬运成本而且GPU透传在国产平台上偶尔有兼容性问题。我的建议是能直接二进制就别套docker至少在麒麟V11这类系统上二进制部署的排查路径最短。如果一定要用docker注意使用--gpus all参数并且容器内环境变量同样设置好OLLAMA_MODELS的映射。5.3 对外暴露服务时的安全注意事项服务器上装了ollama难免想用局域网内别的机器访问。默认端口是11434对外开放前先把防火墙配置好firewall-cmd --permanent --add-port11434/tcp firewall-cmd --reload但这里我说句真心话大模型推理服务没有认证鉴权的能力只要有人知道IP和端口就能往你的机器上灌模型、消耗GPU资源甚至可能把模型文件挤爆。我是在内网环境用风险可控如果真要跨网段访问建议前面加一层反向代理做访问控制或者至少限制来源IP不要裸奔。6. 最后补充两个值得收藏的排查技巧第一个怎么确认ollama到底有没有在正常工作。不是进程在跑就万事大吉直接看API层curl http://localhost:11434/api/tags能返回一坨JSON列表说明服务是活的。如果curl提示连接被拒大概率是服务没起来如果返回的是页面错误多半是OLLAMA_HOST端口设置异常。第二个修改完环境变量不起作用时一定检查systemd环境配置目录systemctl show ollama -p Environment这条命令能直接输出服务启动时实际加载的环境变量。我装完之后的体会是麒麟V11虽然外壳国产但底层跟标准的Linux发行版没有本质区别所有常规运维手段都适用。真正决定成败的是你对系统基础信息的掌握程度架构、GLIBC版本、内存、GPU驱动这四样确认完在线也好、离线也好安装过程最多半小时就能搞定。如果你也在国产化服务器上折腾ollama照着这个流程走能少走很多弯路。过程中要是碰到我没写到的报错先把服务和日志信息拉出来看多半问题就出在路径和资源这两个地方。