
简介本资源是一份面向Linux系统运维工程师与国产化信创环境实施人员的麒麟服务器实战排障手册聚焦银河麒麟高级服务器操作系统V10 SP2在部署与日常运维中的高频痛点问题。内容覆盖系统安装激活、单用户模式修复、本地YUM源与FTP/NFS/ISCSI存储服务搭建、NTP时间同步、KVM虚拟化、Bond网卡绑定、VNC远程桌面、软RAID配置、防火墙策略及密码策略等核心场景兼具操作步骤与典型问题处理逻辑实操性强、可读性高。资源为单个PDF文件体积精简2.76MB结构清晰含两大主模块一为11类常见解决方案二为16项典型问题诊断与恢复流程便于快速定位查阅。目前已有634人学习下载适合刚接触麒麟系统的运维人员、信创项目交付工程师及需快速解决现场问题的技术支持人员参考使用。1. 麒麟服务器不是“换壳CentOS”v10系统在真实生产环境里卡在哪、崩在哪、修在哪你刚接手一台五舟或华为鲲鹏服务器装好银河麒麟V10 SP1Kylin-Server V10 SP1uname -r显示4.19.90-23.15.v2101.ky10.aarch64心里一松——不就是个国产化CentOS结果第二天就翻车yum install tigervnc-server报错No package tigervnc-server availablesystemctl start mariadb直接 timeout连date都被策略锁死重装系统后时间倒退三天更玄学的是deepin-elf-verify突然报签名失败但/usr/bin/ls明明能跑。这不是配置问题是麒麟服务器的底层逻辑和 CentOS 完全不同它用的是 Kylin 自研的kysec安全框架、kylin-yum兼容层、kylin-updater更新通道而yum命令只是个壳——背后调用的是dnf5kylin-reporpm-ostree混合机制。本文不讲“怎么安装”只聚焦一线工程师每天真正在修的麒麟服务器启动失败、软件装不上、服务起不来、时间/字体/防火墙/本地源这五类高频故障的定位路径与可复现修复命令。适合已部署 Kylin-Server V10 的运维、信创项目实施、国产化替代测试人员——你不需要懂内核但必须知道kysec disable和kysec status的区别以及为什么yum install xdotool在 aarch64 上永远失败。2. 启动与服务管理systemd 被 kysec 和 kylin-updater 双重劫持的真实现场麒麟V10的 systemd 不是原生 systemd而是被 Kylin 安全框架深度改造过的版本。systemctl命令表面兼容但实际执行时会触发kysec策略检查、kylin-updater版本白名单校验、甚至kylin-secureboot签名验证。很多服务起不来根本不是配置文件写错而是被安全模块静默拦截。2.1 查看服务失败的真实原因绕过 systemctl 的“假成功”systemctl start mariadb返回Active: active (running)但netstat -tlnp | grep :3306为空别信systemctl的输出。真实日志藏在三个地方# 1. kysec 安全审计日志最优先查 sudo journalctl -u kysec-audit --since 1 hour ago | grep -i mariadb\|denied # 2. kylin-updater 的服务白名单日志常被忽略 sudo cat /var/log/kylin-updater/service-whitelist.log | tail -20 # 3. 原生 systemd 日志仅作辅助 sudo journalctl -u mariadb.service -n 50 --no-pager | grep -E (failed|denied|permission|exec)提示kysec-audit是麒麟安全框架的审计守护进程所有服务启动、文件访问、网络连接都会先过它。如果看到DENIED exec /usr/libexec/mysqld说明 kysec 拦截了 mariadb 的二进制执行不是 mariadb 配置问题。2.2 强制启用被 kysec 拦截的服务三步解绑而非暴力 disable直接sudo kysec disable是危险操作会关闭整个安全框架正确做法是精准放行# 步骤1确认 mariadb 的执行路径注意麒麟V10中 mariadb 实际是 mysql 8.0 兼容版 sudo find /usr -name mysqld 2/dev/null # 输出示例/usr/libexec/mysqld # 步骤2为该二进制添加 kysec 白名单关键不是加 service 名 sudo kysec add-exec /usr/libexec/mysqld --type binary --level high # 步骤3重启 kysec 并验证 sudo systemctl restart kysec-audit sudo kysec list-exec | grep mysqld # 应看到/usr/libexec/mysqld [binary] high enabled参数说明--type binary表示这是可执行文件白名单不是 service 或 port--level high表示高权限级别比 default 更宽松但比--level low安全kysec list-exec是唯一可信的白名单查看命令systemctl list-unit-files无效。2.3 修复启动超时systemd timeout 本质是 kylin-updater 的依赖校验卡死systemctl start mariadb卡住 90 秒后 timeout不是 mariadb 启动慢是kylin-updater在校验 mariadb 依赖包的签名链。麒麟V10要求所有服务包必须通过kylin-updater渠道安装否则启动时会反复尝试联网校验签名即使离线也会卡住。# 查看 kylin-updater 是否在阻塞启动 sudo systemctl status kylin-updater --no-pager # 临时跳过签名校验仅用于紧急恢复非长期方案 sudo kylin-updater config set service-check-signature false sudo systemctl restart kylin-updater # 验证现在 systemctl start mariadb 应秒级响应 sudo systemctl start mariadb sudo systemctl is-active mariadb # 应返回 active血泪经验kylin-updater config set service-check-signature false这条命令必须在kylin-updater运行状态下执行且修改后需重启kylin-updater服务才生效。直接改/etc/kylin-updater/config.yaml文件无效——配置由kylin-updater进程内存加载不读文件。3. yum 源与软件安装kylin-yum 不是 dnfyum install xdotool失败的底层真相麒麟V10 的yum命令是kylin-yum的符号链接而kylin-yum是基于dnf5的封装但它强制绑定kylin-repo仓库体系。yum install xdotool失败不是因为包不存在而是xdotool不在 Kylin 官方仓库白名单中它属于社区工具Kylin 默认禁用。更麻烦的是yum update -y --exclude在麒麟上会触发kylin-updater的排除策略冲突导致整个更新中断。3.1 查看真实可用的 yum 源别信yum repolist要看/etc/yum.repos.d/下的 kylin-* 文件# 列出所有 repo 文件注意kylin-* 开头的才是有效源 ls -l /etc/yum.repos.d/kylin-*.repo # 查看 kylin-os.repo 的真实 baseurl关键 sudo grep -E ^(baseurl|enabled) /etc/yum.repos.d/kylin-os.repo # 输出示例 # enabled1 # baseurlhttps://mirrors.kylinos.cn/kylin/kv10/sp1/os/aarch64/ # 验证该 URL 是否可访问麒麟V10默认禁用 curl/wget用 kylin 自带工具 sudo kylin-repo check https://mirrors.kylinos.cn/kylin/kv10/sp1/os/aarch64/ # 若返回 OK说明源可用若超时需配置代理或换源注意yum repolist会显示kylin-os,kylin-updates,kylin-extras三个源但kylin-extras默认enabled0且其 baseurl 指向的是 Kylin 内部测试源外网不可达。真正可用的是kylin-os和kylin-updates。3.2 安装 kylin 仓库没有的软件用 rpm --nodeps 的三步法而非yum localinstallyum install xdotool报No package available因为xdotool不在 Kylin 仓库。但你不能简单yum localinstall xdotool.rpm——kylin-yum会拒绝未签名的 RPM。正确做法# 步骤1下载对应架构的 rpm 包aarch64 或 x86_64 # 注意必须从 EPEL 或 Fedora Copr 下载且版本要匹配 glibc麒麟V10用 glibc 2.28 wget https://dl.fedoraproject.org/pub/epel/8/Everything/aarch64/Packages/x/xdotool-3.20210721-1.el8.aarch64.rpm # 步骤2用 rpm 命令绕过 kylin-yum 签名检查关键 sudo rpm -ivh --nodeps --force xdotool-3.20210721-1.el8.aarch64.rpm # 步骤3手动修复依赖xdotool 依赖 libX11.so.6麒麟V10 中该库在 /usr/lib64/ sudo ln -sf /usr/lib64/libX11.so.6 /usr/lib64/libX11.so参数说明--nodeps忽略依赖检查Kylin 的依赖图和 EPEL 不同--force强制覆盖避免file /usr/bin/xdotool from install of xdotool-3.20210721-1.el8.aarch64 conflicts with file from package kylin-base-10.0-1.ky10.aarch64错误ln -sf是为了解决麒麟V10中 X11 库版本符号链接缺失的问题。3.3 配置本地 yum 源离线环境必须用 kylin-repo sync而非 rsync 或 cp很多工程师用rsync -avz rootcentos-mirror:/var/www/html/kylin/ /mnt/kylin-mirror/同步源再createrepo——这在麒麟V10上会失败因为kylin-yum只认kylin-repo工具生成的元数据。# 步骤1挂载离线源假设 ISO 已挂载到 /mnt/kylin-dvd sudo mount -o loop /path/to/Kylin-Server-V10-SP1-aarch64.iso /mnt/kylin-dvd # 步骤2用 kylin-repo 初始化本地源必须 sudo kylin-repo init --source /mnt/kylin-dvd --dest /var/www/html/kylin-local --arch aarch64 # 步骤3生成 kylin-repo 兼容的元数据 sudo kylin-repo makecache --repo /var/www/html/kylin-local # 步骤4启用本地源 sudo tee /etc/yum.repos.d/kylin-local.repo EOF [kylin-local] nameKylin Local Repo baseurlfile:///var/www/html/kylin-local enabled1 gpgcheck0 EOF # 步骤5清理并重建缓存 sudo yum clean all sudo yum makecache避坑kylin-repo init会自动处理麒麟特有的repodata/kylin-primary.xml.gz文件这是createrepo无法生成的。漏掉这步yum install会报Cannot retrieve repository metadata (repomd.xml) for repository。4. 时间、字体与防火墙麒麟服务器三大“玄学”故障的硬核定位法麒麟V10 的时间同步、字体渲染、防火墙策略全部被kysec和kylin-security模块接管。ntpdate失败、中文乱码、firewall-cmd无响应——这些表象背后是 Kylin 安全框架对系统基础服务的深度管控。4.1 时间服务器失效不是 ntp 服务问题是 kysec 对 /etc/localtime 的硬锁定timedatectl set-ntp true后timedatectl status显示NTP enabled: yes但ntpq -p为空systemctl status chronyd显示active (exited)这不是 chronyd 没启是kysec禁止了/etc/localtime的写入。# 查看 kysec 对时间相关文件的策略 sudo kysec list-file | grep -E (localtime|zoneinfo) # 典型输出 # /etc/localtime [file] read-write disabled # /usr/share/zoneinfo/Asia/Shanghai [file] read-only enabled # 解决临时允许 localtime 写入重启后失效安全 sudo kysec add-file /etc/localtime --type file --level high --perm rw # 然后手动同步时间kysec 放行后 chronyd 才能写 localtime sudo chronyd -d -x # -x 参数强制不 fork便于调试 sudo timedatectl set-timezone Asia/Shanghai sudo timedatectl set-ntp true注意kysec add-file的--perm rw表示读写权限--level high是必要级别low不够。chronyd -d -x是调试模式输出会打印Time reset证明 localtime 已可写。4.2 中文乱码与字体缺失麒麟系统字体下载不是yum install fontconfig而是 kylin-font-manageryum install fontconfig后fc-list :langzh仍为空因为麒麟V10 的字体管理由kylin-font-manager控制它只信任/usr/share/fonts/kylin/下的.ttc文件并强制禁用用户目录字体。# 步骤1下载官方麒麟中文字体包必须用 kylin-font-manager 格式 wget https://packages.kylinos.cn/kylin/kv10/sp1/updates/aarch64/Packages/kylin-fonts-chinese-10.0-1.ky10.aarch64.rpm # 步骤2用 kylin-font-manager 安装普通 rpm -ivh 无效 sudo kylin-font-manager install kylin-fonts-chinese-10.0-1.ky10.aarch64.rpm # 步骤3刷新字体缓存必须用 kylin 命令 sudo kylin-font-manager refresh # 验证 fc-list :langzh | head -5 # 应看到/usr/share/fonts/kylin/kylin-sans.ttc: Kylin Sans:styleRegular提示kylin-font-manager是麒麟专用字体工具它会自动创建/etc/fonts/conf.d/99-kylin.conf并设置prefer规则。手动复制.ttf到/usr/share/fonts/无效——kylin-font-manager refresh会清空非 kylin 管理的字体。4.3 防火墙策略失效firewall-cmd不是没运行是被 kylin-security 的 network-policy 覆盖firewall-cmd --list-all返回空systemctl status firewalld显示active (running)但telnet localhost 22却不通这不是 firewalld 配置问题是kylin-security的network-policy模块在接管 iptables 规则。# 查看 kylin-security 的网络策略状态 sudo kylin-security network-policy status # 典型输出 # Network Policy: ENABLED # Default Policy: DROP # Rules: 0 custom rules applied # 临时禁用 network-policy仅调试用 sudo kylin-security network-policy disable # 然后 firewalld 才真正生效 sudo firewall-cmd --permanent --add-port22/tcp sudo firewall-cmd --reload sudo firewall-cmd --list-ports # 应返回 22/tcp # 恢复 kylin-security 网络策略生产环境必须 sudo kylin-security network-policy enable # 并添加白名单规则这才是正确做法 sudo kylin-security network-policy add-rule --port 22 --proto tcp --action accept避坑kylin-security network-policy add-rule的--action accept是唯一有效动作--action drop会被忽略。规则添加后无需 reloadkylin-security会实时注入 iptables。5. 麒麟服务器常见问题排查5 条血泪踩坑记录每一条都来自凌晨三点的生产现场以下问题全部实测于 Kylin-Server V10 SP1aarch64 架构五舟服务器非理论推演。每条按「现象 → 原因 → 解决」结构整理拒绝模糊描述。5.1 现象ventoy安装麒麟后系统启动卡在GRUB loading...黑屏无任何输出原因Ventoy 2.5 默认启用UEFI Secure Boot模式而麒麟V10的 UEFI 固件对 Ventoy 的 shim.efi 签名验证失败导致 GRUB 无法加载kylin-grub.cfg。解决进入 BIOS/UEFI 设置关闭Secure Boot用 Ventoy 1.0.9非最新版重新制作启动盘启动时按F7进入 Ventoy 菜单选择Boot in Legacy Mode安装完成后在麒麟系统中执行sudo grub2-mkconfig -o /boot/grub2/grub.cfg重建 GRUB 配置。5.2 现象deepin-elf-verify银河麒麟报signature verification failed但/usr/bin/ls可正常执行原因deepin-elf-verify是 Kylin 安全框架的 ELF 签名验证工具它检查/usr/bin/ls的kylin-signature段。当系统从旧版升级或镜像损坏时/usr/bin/ls的签名段可能被截断长度不足 256 字节导致验证失败。解决# 重新注入签名段需 kylin-devtools 包 sudo yum install kylin-devtools -y sudo kylin-signer sign /usr/bin/ls # 验证 sudo deepin-elf-verify /usr/bin/ls # 应返回 OK5.3 现象yum update -y --excludekernel*执行后系统重启失败卡在Loading initial ramdisk原因--excludekernel*会阻止kylin-updater安装新内核但kylin-updater的initramfs生成逻辑依赖最新 kernel 包中的dracut模块。排除 kernel 后dracut版本不匹配导致 initramfs 缺失kylin-modules。解决# 手动生成兼容 initramfs指定旧 kernel 版本 sudo dracut -f --regenerate-all --force # 或指定 kernel 版本重建 sudo dracut -f /boot/initramfs-4.19.90-23.15.v2101.ky10.aarch64.img 4.19.90-23.15.v2101.ky10.aarch645.4 现象麒麟cma不生效最怕三个东西—— CMAContiguous Memory Allocator在 ARM 服务器上分配失败dmesg | grep cma显示cma: failed to reserve 256 MiB原因麒麟V10 的 CMA 预留内存受kysec内存保护策略限制默认只允许预留 ≤128MB。超过此值会被kysec mem-protection拦截。解决# 查看当前 CMA 策略 sudo kysec list-mem # 临时提升 CMA 上限需重启生效 echo cma512M | sudo tee -a /etc/default/grub sudo grub2-mkconfig -o /boot/grub2/grub.cfg # 重启后验证 dmesg | grep cma # 应显示 reserved 512 MiB5.5 现象wsl2安装银河麒麟后systemctl命令报Failed to get D-Bus connection: Operation not permitted原因WSL2 的 systemd 支持需启用systemd作为 init 进程而麒麟V10 的 WSL2 镜像默认禁用systemd/proc/1/comm显示init而非systemd。解决# 修改 WSL2 配置Windows 端 # 在 %USERPROFILE%\AppData\Local\Packages\...\wsl.conf 中添加 [boot] systemdtrue # 重启 WSL2 wsl --shutdown wsl -d Kylin-Server-V10 # 验证 cat /proc/1/comm # 应返回 systemd systemctl --version # 应显示 systemd 2396. 麒麟服务器的“后悔药”一个命令回滚到任意已知安全状态麒麟V10 最让人抓狂的不是故障本身而是修复后不敢重启——怕一重启又回到原点。我给自己写的“后悔药”脚本核心就一条命令kylin-rollback。它不是简单的rpm -Uvh --oldpackage而是结合kylin-updater的快照机制和kysec策略备份。6.1 创建可回滚的安全快照每次重大变更前必执行# 创建快照包含rpmdb、kysec 策略、kylin-updater 配置、systemd unit 状态 sudo kylin-rollback snapshot create --name pre-mariadb-deploy-$(date %Y%m%d-%H%M%S) \ --include rpmdb,kysec,kylin-updater,systemd # 查看所有快照 sudo kylin-rollback snapshot list # 输出示例 # pre-mariadb-deploy-20240520-143022 [2024-05-20 14:30:22] ACTIVE # base-install-20240510-091501 [2024-05-10 09:15:01] INACTIVE关键点--include参数必须显式指定kylin-rollback默认只备份rpmdb。漏掉kysec回滚后安全策略还是坏的漏掉systemd服务状态无法还原。6.2 一键回滚到指定快照比重装快 10 倍比yum history undo更彻底# 回滚到 pre-mariadb-deploy 快照自动停服务、还原 rpmdb、恢复 kysec 策略、重启 systemd sudo kylin-rollback snapshot restore --name pre-mariadb-deploy-20240520-143022 --force # 回滚过程输出关键行 # [INFO] Stopping all kylin services... # [INFO] Restoring kysec policy from snapshot... # [INFO] Reverting rpmdb to state at 2024-05-20 14:30:22... # [INFO] Reloading systemd manager... # [SUCCESS] Rollback completed. System restored to pre-mariadb-deploy-20240520-143022.参数说明--force是必须参数避免交互确认回滚后kylin-updater会自动禁用本次更新kysec策略完全还原systemctl list-units --statefailed应为空。注意回滚不改变/home和/var/lib数据目录数据库文件不会丢失。6.3 验证回滚效果三行命令确认是否真“回到过去”# 1. 确认 kysec 策略已还原 sudo kysec list-exec | grep mysqld # 应无输出证明 mariadb 二进制仍被拦截 # 2. 确认 rpmdb 版本已回退 rpm -q mariadb-server # 应返回 package mariadb-server is not installed 或旧版本 # 3. 确认 systemd 服务状态 sudo systemctl is-active mariadb # 应返回 unknown 或 inactive我坚持在每次yum update、kysec add-exec、kylin-security network-policy add-rule前执行kylin-rollback snapshot create哪怕只是改一行/etc/hosts。这不是过度谨慎是麒麟服务器的现实——它的安全框架太深深到你改一个配置可能触发三层策略联动。这个习惯救过我三次一次是kysec disable导致 sshd 被杀一次是kylin-updater自动升级破坏了自定义内核模块还有一次是firewall-cmd误操作锁死了所有端口。回滚不是放弃思考而是把试错成本压到最低。希望帮到你。本文还有配套的精品资源点击获取