
简介面向服务器运维与系统管理员围绕银河麒麟高级服务器操作系统 V10 的日常维护场景整理成册的常见问题速查手册。文档以解决方案和问题处理两大模块组织涵盖本地 yum 源搭建、ftp/nfs/iscsi 服务配置、时间同步、kvm 安装、vnc 搭建、bond 与软 raid 创建、防火墙策略调整、密码复杂度配置等高频操作并针对忘记服务器密码、系统激活、语言切换、ssh 连接异常、图形界面登录闪退、网络显示异常等实际故障提供排错思路每项均按步骤说明可读性与操作性俱佳。资源为单个 PDF 文件压缩包大小 2.76MB目录按场景划分、便于按需定位查阅既适合新手逐步参考也可作为团队内部运维文档的补充。已有 634 人次学习该文档对于正在使用麒麟服务器或计划迁移到国产化系统的团队而言是一份务实的问题速查参考。1. 麒麟服务器和系统常见问题先从一次“莫名其妙”的故障说起一台银河麒麟 v10 的服务器跑着跑着网卡“消失”了重启以后ip a里只剩 lo。业务方催得急我查了半小时才定位到是 NetworkManager 和 network.service 抢管理权。这样的场景在麒麟服务器上不是个例。国产化替代铺开之后大量团队把旧 CentOS 上的运维经验直接搬过来结果发现版本差异、包管理机制、硬件适配全都要重新摸索。这篇笔记就是把我在麒麟服务器和系统上反复踩过的常见问题、排查思路和能直接复现的修复命令整理出来覆盖从版本选择到软件生态故障的完整路径。适合刚接手麒麟服务器的运维、做信创适配的研发以及正在评估“麒麟能不能扛住生产环境”的团队。2. 底层选型版本差异、硬件匹配和不看架构就装包的代价2.1 v10 SP1 与 SP2、通用版与专用版同一个问题不同版本解法不一样麒麟 v10 不是一个“单一系统”。你从官网或渠道拿到的 ISO可能是 SP1、SP2也可能是面向飞腾、鲲鹏、龙芯等不同 CPU 的专用版。很多“通病”在不同版本上的表现和解法都不同。最常见的例子SP2 升级了内核和 glibc 版本某些在 SP1 上装得好好的离线软件包拿到 SP2 上用dpkg -i安装会报libsepol.so.1找不到或版本不兼容。上机器第一件事先确认版本信息cat /etc/kylin-release uname -a lscpu | grep Architecture在 x86_64 上能跑的 rpm/deb 包拿到 aarch64飞腾、鲲鹏上大概率装不上。这不是麒麟的问题是 ARM 和 x86 的二进制接口差异。所以处理问题前先看架构再决定去哪找包。通用版 ISO 一般同时兼容 x86_64 和 aarch64但系统里预装的软件源、内核参数会随平台不同有差异网上搜到的教程如果没注明架构照抄容易翻车。版本还影响包管理器的行为。v10 早期版本更多使用yumSP2 之后dnf成为默认yum命令往往只是 dnf 的别名。这会导致一些旧文档里的参数失效。比如yum --disablerepo在 dnf 里还支持但某些网络源的镜像路径写法已经变了。排查任何问题先看/etc/os-release和/etc/yum.repos.d/下的源文件别急着改配置。2.2 硬件与内核为什么换了个板卡系统就进不去麒麟服务器常见的硬件平台是飞腾ARM64和鲲鹏ARM64但不少团队是在 x86 服务器上先做测试。硬件相关故障里我遇到最多的是两类换显卡/板卡后图形界面起不来以及 UEFI 与 Legacy 启动模式不匹配导致装完系统无法引导。如果是 ARM 平台的点屏问题常见做法是先加内核参数nomodeset看能不能进系统# 临时在 grub 启动项上追加 nomodeset确认是否显卡驱动问题 # 编辑 /etc/default/grub把 nomodeset 加到 GRUB_CMDLINE_LINUX 中 GRUB_CMDLINE_LINUXnomodeset # 生成新引导配置 grub2-mkconfig -o /boot/grub2/grub.cfgx86 平台上如果装完系统重启提示找不到引导先检查固件是 UEFI 还是 Legacy。麒麟 v10 默认按 UEFI 安装如果机器 BIOS 里开了 Legacy 模式装完大概率起不来。反过来BIOS 设为 UEFI 而引导盘是 MBR 分区表也会黑屏。判断当前系统固件类型[ -d /sys/firmware/efi ] echo UEFI || echo Legacy如果 UEFI/Legacy 不匹配最简单是进 BIOS 改模式重装不要试图用工具转换分区表麒麟的引导链路对分区表格式很敏感转换容易把启动分区搞坏。另外新换硬盘后系统起不来多摸一下是不是/etc/fstab里写了旧盘 UUID。麒麟对 UUID 不匹配的容忍度比 CentOS 低挂载失败会直接进 emergency mode。2.3 装系统前必做的三个检查固件、文件系统与源我经手的多数“装完就出问题”的案例其实在安装界面就能提前避免。装系统前花两分钟做三个检查# 1. 确认 CPU 架构避免拿 x86_64 镜像装 ARM 机器 lscpu | grep Architecture # 2. 确认磁盘分区表类型与 BIOS 启动模式匹配 fdisk -l /dev/sda | grep Disklabel # 3. 确认内存满足桌面环境最低要求v10 图形化建议 4G 以上 free -h磁盘分区建议用默认的 LVM后续扩容方便。生产环境我一般把/home独立分区避免用户数据把根分区塞满导致系统假死。文件系统选 ext4 或 xfs 均可xfs 在超大文件和高吞吐场景更稳但注意 xfs 分区不能缩小只能扩大。如果拿不准ext4 是最不后悔的选择。软件源在安装时就确认好能省后面很多事。物理机安装时如果无法访问互联网预先把 ISO 里的 Packages 目录拷到内网或者直接指定本地光驱源。系统装完后的第一件事也应该是验证源可用避免后面装任何软件都报错。3. 服务与网络类故障网卡不启动、时间漂移与软件源失效的处理3.1 重启后网卡不启动三条命令加一个持久化配置“麒麟 v10 命令重启后为什么网卡不启动”是热搜词里的高频问题也是我在生产环境遇到最多的第一类故障。现象很统一手动配置完 IP当时能通一重启网络就没了ip a里只剩 lo。常见原因有两个一是 NetworkManager 没有托管该网卡二是/etc/sysconfig/network-scripts/ifcfg-ens33里写死了旧的 HWADDR而网卡换了或虚拟机的 MAC 变了导致配置对不上接口。先按这个顺序排查# 查看网卡当前连接状态 nmcli dev status # 如果接口显示 unmanaged说明 NetworkManager 没接管 # 设置连接为开机自启并立即拉起 nmcli con mod ens33 connection.autoconnect yes nmcli con up ens33如果nmcli报错说找不到连接说明 ifcfg 文件没被 NetworkManager 识别。常见做法是直接写配置文件cat /etc/sysconfig/network-scripts/ifcfg-ens33确保内容有这几项TYPEEthernet BOOTPROTOstatic NAMEens33 DEVICEens33 ONBOOTyes IPADDR192.168.1.20 PREFIX24 GATEWAY192.168.1.1 DNS1114.114.114.114改完后执行systemctl restart NetworkManager。这里有个重要的机制说明麒麟 v10 同时装了 network.service 和 NetworkManager两者如果都在启用状态会抢网卡管理权。我的习惯是统一用 NetworkManager把 network.service 停掉systemctl disable --now network.service systemctl enable --now NetworkManager.service停用 network.service 后所有网络配置都由 NetworkManager 读取 ifcfg 文件行为更可控也避免“配置明明写对了重启就丢”的问题。3.2 时间同步失败chrony 与国内时间服务器的配置参数另一个高频问题是时间不同步。麒麟服务器在内网环境里跑着业务日志时间对不上有时差几分钟有时差几个小时。最常见的表现是date -R看到的时间标准和当前实际相差 8 小时或者即使设了 chronychronyc tracking显示Leap status : Not synchronised。原因是麒麟默认的 chrony 配置指向了官方时间服务器在内网环境下根本访问不到。处理方法是改成国内时间服务器# 编辑 /etc/chrony.conf server ntp.aliyun.com iburst server ntp.tencent.com iburst # 允许本机局域网客户端同步如需要 allow 192.168.0.0/16改完重启服务并验证systemctl restart chronyd chronyc sources -v chronyc tracking如果时间偏差已经很大比如超过几分钟chrony 默认不会直接大步跳变需要手动校准chronyc makestep hwclock --systohchwclock --systohc这步很关键。很多系统重启后时间又变回去是因为系统时间虽然改了但硬件时钟CMOS 里的 RTC没更新。把系统时间写入硬件时钟重启后才能保持。生产环境我还会加一条检查timedatectl set-local-rtc 0set-local-rtc 0表示硬件时钟使用 UTC 标准系统启动时按北京时间换算。如果一台服务器上有双系统比如 Windows 和麒麟共存两套系统对 RTC 的时区处理不同会出现反复横跳。这时候要么统一都设为 UTC要么统一设为 localtime二选一不要两边都自动处理。3.3 yum/dnf 源失效软件源替换与 GPG 签名踩坑在线源、离线源都可能导致yum install报错。典型的报错是Failed to download metadata for repo或Cannot retrieve metalink for repository: kylin_aarch64。这类问题的原因多半是源 URL 变了、镜像站不可达、或者 GPG 签名校验失败。我处理内网服务器时最稳的方案是做本地源。把 ISO 挂载出来做成 file 协议源# 挂载麒麟 v10 安装镜像 mkdir -p /mnt/kylin mount -o loop /path/to/kylin-v10.iso /mnt/kylin # 备份原有源 mkdir -p /etc/yum.repos.d/bak mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/ # 写新源 cat /etc/yum.repos.d/local.repo EOF [kylin-local] nameKylin Local Repo baseurlfile:///mnt/kylin enabled1 gpgcheck0 EOF # 验证源 dnf repolist说明一下参数gpgcheck0是为了跳过 GPG 签名校验因为本地 ISO 是可信来源如果是外网源建议保留gpgcheck1并导入公钥rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-kylin很多人在线装包失败不是源坏了而是公钥没导入。报错信息里会带Public key for xxx.rpm is not installed。遇到这种情况把报错里的 key URL 用rpm --import导入即可不要一股脑把gpgcheck0写上去那会让服务器暴露在不可信源的风险里。另一个坑是混用其他 Linux 发行版的源。有人图省事把 CentOS 的源指向麒麟结果依赖解析时拉到了 glibc 或 systemd 的旧版本把整个系统搞崩。麒麟的软件包是适配过自身内核和库版本的混用 CentOS 源是最危险的误操作。记住一句话麒麟的问题只用麒麟源解决找不到的包去官网下离线 deb不要跨发行版混源。4. 软件生态类故障装软件、Wine、字体和打印机的真实路径4.1 银河麒麟安装软件命令apt、dpkg 和留在官网的“离线包”麒麟系统的包管理是 dpkg/apt 体系。这和 CentOS 的 rpm/yum 是两套完全不同的规则从 CentOS 迁移过来的运维最容易在这里卡住。装软件有三个来源第一优先用 apt 在线安装sudo apt update sudo apt install nginx -y如果源里没有再从官网下载离线 deb 包。安装时用dpkg -i但经常遇到依赖问题sudo dpkg -i xxx.deb # 如果报依赖缺失执行 sudo apt-get -f installapt-get -f install会自动修复破损的依赖关系但前提是所需的依赖包能在当前源里找到。内网环境下依赖缺失最麻烦我的做法是把依赖的 deb 包手动拷进去逐个安装别想着偷懒只敲一条命令。判断一次安装是否成功不要只看命令有没有报错还要确认服务真正起来了dpkg -l | grep nginx systemctl status nginx --no-pager另外一个容易忽略的点麒麟 v10 预装了“麒麟软件商店”它的后端就是 apt。用户在图形界面点“安装”实际执行的是 apt 的安装流程日志在/var/log/apt/下。图形界面装不上时切到终端直接跑 apt 看具体报错往往比在商店里反复点更快。命令行输出比 GUI 弹窗信息量大多了看到真正依赖哪个包缺失再决定从哪补。4.2 麒麟 Wine 助手Windows 应用程序装上了却打不开的排查路径麒麟生态不完整有些 Windows 软件没有 Linux 版只能用 Wine 跑。麒麟 v10 预装了“麒麟 Wine 助手”本质是改了调用链的 Wine 环境。我见过很多“明明安装成功、双击却没反应”的案例这里的原因一般不在 Wine 本身而在运行库。第一件要做的事确认 Wine 容器是否完整# 检查已安装的 wine 版本 wine --version # 查看麒麟 Wine 助手的日志 ~/.kylinwine/logs/kylin-wine.log日志里常见的错误是wine: could not load kernel32.dll这种情况多半是 32 位运行库缺失。麒麟 aarch64 版 Wine 对 32 位 Windows 程序的支持依赖 32 位系统库装不上就会白屏或无响应。解决办法是补装 32 位运行库sudo apt install wine32 -y如果系统提示没有 wine32 包可以手动配置 multiarchsudo dpkg --add-architecture i386 sudo apt update sudo apt install wine-i386Windows 程序双击没反应还有个常见玄学文件权限不对。Wine 容器里的程序如果是在 root 账户下安装的切到普通用户后可能无法访问容器表现为点击图标无反应但进程里有 wine 在跑。处理方式是重新用当前用户安装别共享 root 的.wine目录。最后如果 Wine 里跑的是 Office 或 CAD 类软件优先检查字体。Windows 程序乱码或崩掉往往只是缺少中文字体。从能用的 Windows 机器上拷贝simsun.ttc和msyh.ttc到~/.wine/drive_c/windows/Fonts/再清一次字体缓存。4.3 打印机扫描与字体乱码驱动、IPP 协议和字体缓存三件事“银河麒麟 v10 SP1 怎么安装打印机扫描”是热搜里的高频词。打印机问题是桌面环境里最消耗耐心的部分。麒麟自带的打印管理走的是 CUPS 体系和大多数 Linux 发行版一致。设置里选“添加打印机”时如果自动发现不到不要手动输入型号改用 IPP 协议直连ipp://打印机IP:631/ipp/print很多国产打印机品牌官网提供了 Linux 驱动优先下官方 deb 包。下载后sudo dpkg -i printer_driver.deb sudo apt-get -f install sudo systemctl restart cups扫描功能的处理逻辑不同。扫描走的是 SANE 协议麒麟自带的扫描软件是simple-scan。驱动装完后扫描仪还认不到多半是缺少后端库sudo apt install sane-airscan字体问题则集中在“Windows 上传到麒麟的文件打开乱码”和“麒麟系统字体下载安装后不生效”。乱码百分之九十是中文字体缺失安装字体后需要清缓存fc-cache -fv fc-list | grep SimSun|微软雅黑|Noto Sans CJK华为、飞腾这些平台还容易遇到一个现象字体文件复制到/usr/share/fonts/后fc-list能看到但应用里依然是方块。这是应用没重启、没有重新读取字体缓存。重启应用或注销重登即可不需要反复重建缓存。5. 避坑看起来不是系统问题却坑了半天的 5 个案例5.1 现象重启后网卡 MAC 地址变了配置全失效现象虚拟化平台迁移虚拟机后网卡名从 ens33 变成 ens38原 ifcfg 文件全部作废网络不通。原因麒麟的 udev 规则按 MAC 地址绑定网卡名。虚拟机迁移后虚拟网卡的 MAC 变了规则匹配不上。解决删掉/etc/udev/rules.d/70-persistent-net.rules里旧 MAC 的行重写 ifcfg 文件NAME、DEVICE改成新的接口名重启 NetworkManager。5.2 现象系统时间每次重启都漂移回过去现象date命令校完时间当时显示正常重启后又变回差 8 小时甚至几天前。原因只改了系统时间没同步硬件时钟。麒麟默认硬件时钟按 UTC 处理但某些国产主板的 RTC 在关机时仍写入本地时间双系统环境下更混乱。解决执行hwclock --systohc把当前系统时间写入硬件时钟。再用timedatectl确认RTC in local TZ: no或与否根据实际环境固定一种策略不要每次开机都靠 chrony 硬拉。5.3 现象软件源替换后报 GPG key 错误现象配置好本地源后执行dnf install报Public key for xxx.rpm is not installed即使gpgcheck1也无法安装。原因本地源的 repo 文件里gpgkey指向外网公钥地址内网环境下载不到。解决要么把公钥文件拷到本地并用rpm --import导入要么在本地源上设gpgcheck0。内网环境用本地 ISO 做源时gpgcheck0是安全的不建议在生产外网源上照抄。5.4 现象用 CentOS 的 rpm 包强制装进麒麟把依赖搞崩了现象为了装某个工具从 CentOS 仓库下了 rpm用rpm -ivh --nodeps强制装上随后yum和apt全部报依赖错误系统里其他软件相继崩溃。原因CentOS 和麒麟虽然都是 Linux但动态库版本和包管理数据库格式不同。强装 rpm 会把麒麟的 dpkg 数据库状态和系统库版本搞乱。解决不要混用发行版二进制包。如果必须用先dpkg -l记录当前库版本装完出问题后立即卸载再用apt-get -f install修复。最保险的是去麒麟官网或源里找同名软件找不到就换方案别硬刚。5.5 现象systemd 服务报add: Invalid argument服务起不来现象自己写的启动脚本在 CentOS 上跑得好好的复制到麒麟上就报add: Invalid argument服务状态显示 failed。原因脚本是 Windows 下编辑的带有 CRLF 换行符。systemd 解析 ExecStart 时把\r当成参数尾带字符导致参数错误。解决sed -i s/\r$// /etc/systemd/system/xxx.service systemctl daemon-reload systemctl start xxx写服务文件时始终用 Linux 换行符。传文件时用dos2unix或直接在 Linux 下编辑这是个小问题但花过的人才知道有多扎心。6. 进阶把“麒麟系统修复助手”和基线检查做成开机自检最后一章不写安装教程写一个我每次交付麒麟服务器前都会做的事用“麒麟系统修复助手”加一份简易基线检查脚本把常见隐患在一次巡检中暴露出来。麒麟系统自带的“修复助手”是个图形化修复工具能处理软件源异常、引导问题、网络配置错乱等常见故障。命令行层面我更信任自己的脚本因为基线检查的结果需要留档。#!/bin/bash # kylin-health-check.sh # 检查麒麟服务器关键项输出 PASS/WARN/FAIL echo [1/5] 时间同步 systemctl is-active chronyd /dev/null 21 echo PASS: chronyd is running || echo WARN: chronyd not active echo [2/5] 防火墙状态 systemctl is-active firewalld /dev/null 21 echo PASS: firewalld running || echo WARN: firewalld disabled echo [3/5] SSH root 登录 if grep -Eq ^PermitRootLogin\s(yes|prohibit-password) /etc/ssh/sshd_config; then echo WARN: root login permitted else echo PASS: root login restricted fi echo [4/5] /boot 剩余空间 BOOT_USE$(df /boot | awk NR2 {print $5} | sed s/%//) [ $BOOT_USE -lt 80 ] echo PASS: /boot usage $BOOT_USE% || echo FAIL: /boot usage high echo [5/5] 磁盘分区只读检测 mount | grep -E on / .*ro echo FAIL: root mounted read-only || echo PASS: root writable这个脚本的价值在于把巡检固化成“售后交付前必跑一遍”的动作而不是等出了问题再到处敲命令查状态。每台机器交付时把 stdout 重定向到/var/log/kylin-health-check.log留档备查。后续出问题时先看这份日志比在聊天记录里翻聊天消息可靠得多。我处理过一台数据库服务器业务方反复报“日志时间错乱”远程排查了半小时没结论后来上机一看chronyd 服务压根没启动。这台机器是同事安装时手动关了服务之后就再没检查过。从那以后我把这个脚本放进了系统安装后的“标准动作”清单每次交付都跑一遍再签字。你也可以把这里的检查项扩展成自己的基线标准比如加磁盘 IO、内存阈值、关键服务状态但核心思路是一样的把“常见问题”从被动排障变成主动巡检。希望帮到你。本文还有配套的精品资源点击获取