接手麒麟操作系统的部署任务,大概是半年前的事。当时项目组要在一批存量服务器和办公终端上,把跑了多年的通用Linux发行版统一替换成麒麟操作系统。听起来就是个常规的系统迁移,真正动手才发现,从制作安装盘、分区引导,到软件适配、服务迁移,每一环都有不少隐藏的坑。这篇文章是我蹲在这套系统上从装机到日常运维的完整实录,包含安装部署、软件生态、服务配置和故障排查几大块,给正在做同类评估的同学,或者已经拿到麒麟机器不知道怎么下手的运维朋友做个参考。
1. 项目概述与整体思路拆解
1.1 麒麟操作系统到底是什么
很多人对麒麟操作系统的认知,停留在"一个国产Linux发行版"这个层面。实际用下来,它本质上是一个基于Linux内核构建的独立操作系统发行版,有自己的软件仓库、内核版本管理和更新节奏,不是简单换了个皮肤的系统。从办公桌面到机架服务器,从x86架构到ARM架构,官方都提供了对应的版本和安装镜像。我这边项目涉及的主要是x86_64架构的服务器和办公终端,所以下面的操作记录默认以这个架构为准。
它的文件系统布局、系统服务管理方式、命令行工具集,对用过红帽系Linux的人非常友好。systemctl、yum、rpm这些命令可以直接上手,配置文件路径也基本遵循Linux标准。这意味着从CentOS或者RHEL迁移过来的团队,学习成本很低,运维脚本大部分可以复用。但对习惯了Ubuntu的开发者来说,需要适应一下包管理器的差异。
1.2 为什么值得把存量业务迁移过来
我接手的这批机器,原来跑着各种服务,运维方式五花八门。有人用脚本批量管理,有人手动一台台装包,系统版本也不统一,出问题以后排查路径非常发散。统一迁移到麒麟操作系统以后,最大的收益其实是标准化:软件仓库统一、更新源统一、系统版本统一、服务管理方式统一,后续交付脚本和监控告警都收敛到一套体系里。
当然迁移不是无痛的。软件兼容性、内核驱动、系统调用层面的差异,我都踩过坑。比如一些在旧系统上编译好的二进制程序,拿过来直接跑会报缺库或者缺符号,需要重新编译或者找适配版本。这些坑下面会详细说。整体结论是:麒麟系统完全能扛住日常的生产和办公场景,前提是前期把兼容性评估做细致。
1.3 桌面版和服务器版的选型差异
我一开始犯过一个错误:拿桌面版去当服务器用。当时图省事,想着反正是同一套系统,桌面版装完自带图形界面,操作起来还方便。结果跑了几天就发现问题:桌面版默认带图形环境,占用的内存和系统资源明显偏高,电源管理和内核调度策略也更偏向交互响应,跑持续性的生产服务并不是最优选择。
正确做法很简单:办公终端选桌面版,提供图形界面和办公套件;机房服务器选服务器版,不装桌面,资源占用小,内核参数和服务管理策略都是为长稳运行调过的。选型这一步错了,后面运维会不停为性能和环境问题买单。如果你还没开始装,务必先把版本确认清楚。
2. 安装部署与基础配置实操
2.1 安装介质准备:从ISO到U盘
先从官网下载对应架构的ISO镜像,注意区分桌面版和服务器版,下错镜像会浪费不少时间。制作启动U盘这一步,我栽过跟头:一开始用Windows下常见的写入工具直接写入,结果U盘启动后直接卡在引导界面,连安装菜单都进不去。后来换成写盘工具,以DD镜像模式完整写入,一次就成功了。这里的关键是把ISO以"原始镜像"的方式写入U盘,而不是像拷贝文件一样解压进去。
写盘完成后U盘会被重新分区,里面的原有数据会全部清空,操作之前记得备份U盘里的个人文件。建议准备一个8GB以上的U盘,FAT32或者ext4格式都行,重点是用DD模式完整写盘。写入完成后,在目标机器上开机进BIOS,设置U盘为第一启动项。UEFI机器和传统Legacy机器的启动项设置界面不一样,找一下Boot Order或者Boot Priority就行。
2.2 磁盘分区与引导关键点
安装界面里选择手动分区,比自动分区更可控。我长期踩出来的分区习惯是这样:
/boot:单独分区,2GB左右。内核升级时不容易把引导文件挤爆/:系统主体,建议至少50GB,办公终端可以再放大/home:单独分,数据和系统隔离。重装系统时这个分区可以保留,数据不丢swap:按机器内存大小给,一般4GB到8GB,内存小的机器可以给到内存的1.5倍
如果是UEFI引导的机器,还要确认存在一个/boot/efi分区,不然安装程序会在写引导的环节卡住。这个分区在自动分区方案里会自动创建,手动分区时容易漏掉。分区完成后,选择把引导程序写入系统盘,别挂在U盘上,不然装完系统拔掉U盘就起不来了。
2.3 首次启动初始化清单
系统起来以后,先用安装时设置的root密码登录,第一时间做几件基础配置:
- 修改root密码,满足复杂度要求
- 创建日常用的普通用户,并加入管理员组
- 确认SSH服务已启动,配置密钥登录,关闭密码登录(服务器必做)
- 关闭不用的图形服务和自启动项(服务器版默认就不带图形)
- 配置软件源,把默认源换成离自己网络最近的镜像源
软件源这块值得多说一句。如果机器在内网,外面源访问不稳定,强烈建议在内网搭一个本地源的镜像。我搭了一个基础的仓库同步服务,后续所有机器指向内网源,装包速度从"等几分钟"变成"秒级",批量部署的效率完全不是一个量级。搭建方式不复杂,配好HTTP服务,把官方源的仓库文件同步下来,再改客户端的源配置就行。
3. 日常使用与软件生态迁移
3.1 一条命令搞定软件安装
麒麟操作系统作为Linux发行版,包管理命令和主流的服务器系统很接近。yum、dnf负责安装和更新软件,rpm负责查询和校验本地包。我常用的操作整理成速查表:
| 操作场景 | 命令示例 |
|---|---|
| 安装软件 | yum install nginx |
| 搜索软件 | yum search 关键词 |
| 查询已装包 | `rpm -qa |
| 查看包依赖 | rpm -qpR 包文件.rpm |
| 检查库依赖 | ldd 可执行文件 |
| 查看系统信息 | cat /etc/os-release |
用第三方仓库之前一定要谨慎。系统自带的仓库是从内核到用户态软件统一编版测试过的,第三方仓库的库版本可能和系统基础库冲突,尤其是生产服务器上有服务在跑的时候,混用仓库极易把系统搞出依赖错乱。我的原则是:能装自带的就不加扩展源,必须加的先在测试机上验证。
3.2 办公与开发环境的搬迁记
办公终端最关心的是办公软件落地。麒麟自带的应用商店里,文档处理、浏览器、输入法、通讯工具这些主流办公软件基本都有收录,直接搜索安装就能用。部分Windows下的专业软件没有Linux原生版本,我的经验是先找Web版本替代,实在不行再用兼容层跑。稳妥的兼容方案是在系统里装虚拟机,专门跑Windows环境,虽然稍占用资源,但胜在稳定不出幺蛾子。
开发者的环境迁移稍微麻烦一点。Java的JDK有Linux安装包,Python有官方包,Node.js也有对应二进制包,大多数能直接跑。需要注意一个典型问题:有些软件包是在高版本glibc的系统上编译的,拿到麒麟上来会直接报version GLIBC_2.29 not found之类的错误。解决办法是优先找适配当前系统的版本,或者用容器环境把运行环境隔离起来,不要试图手动升级系统的glibc,那样大概率会把整个系统搞到不可用。
3.3 桌面习惯的平滑过渡
从Windows迁移过来的同事,最不适应的是桌面布局和快捷键。麒麟桌面自带的控制中心、文件管理器、应用商店,整体逻辑和主流桌面系统很像,但细节位置都要重新找一遍。我的建议是第一个星期先别急着追求操作效率,把日常高频操作完整过一遍:文件复制粘贴、截屏、连接Wi-Fi、配置有线网络、装打印机驱动、调整显示设置。花半天时间把这套流程走顺,后面基本就没什么障碍了。
输入法是个容易忽略的点。刚装完系统,中文输入法可能没有激活,需要在设置里手动添加输入法源并切换到常用输入法。有些同事装完系统说打不出中文,80%是这个原因,不是系统有问题。
4. 服务部署与运维管理实战
4.1 服务器初始化与网络配置
服务器版装完,第一件事是固定IP。麒麟的网络配置推荐用nmcli命令操作,比直接改配置文件更直观,能避免改完配置后网络服务没重载导致的不通。固定IP的参考步骤:
# 查看可用连接 nmcli connection show # 修改连接的IP配置为静态 nmcli connection modify "连接名" ipv4.method manual \ ipv4.addresses 192.0.2.10/24 \ ipv4.gateway 192.0.2.1 \ ipv4.dns 192.0.2.53 # 生效配置 nmcli connection up "连接名"配完验证两点:网络服务是否自启,主机名解析是否正常。很多业务部署后外网不通,查到最后都是主机名没配好或者网络服务没设自启。接着看防火墙默认状态,确保必要的端口放行,不需要的端口一律关掉。安全组策略、内部访问控制这些,也要在这步一起梳理清楚。
4.2 基于麒麟部署一套Web业务
用一个典型的Nginx+PHP+MySQL组合来演示完整部署过程。先装基础软件包,然后逐项配置:
# 安装软件 yum install -y nginx php-fpm mysql-server # 启动数据库并做初始安全设置 systemctl start mysqld mysql_secure_installation # 启动PHP和Nginx systemctl start php-fpm systemctl enable php-fpm systemctl start nginx这里最大的坑是SELinux。麒麟默认开启了SELinux,在强制模式下,Nginx无法读取站点目录、PHP-FPM连接通信、MySQL监听端口都可能会被拦。调试阶段可以临时放行或切换到宽松模式,生产环境一定不要关掉SELinux,而是用audit2allow分析日志,生成对应的策略模块放行。这样既保证了业务能跑,又保留了强制访问控制的安全能力。
我的排查顺序供参考:业务访问不通时,先看服务状态,再看端口监听,再检查防火墙,再查SELinux拦截日志。这四条路走完,90%的问题都能定位。
4.3 安全加固与日志监控
系统刚装完,安全加固这套动作不能省。SSH建议改到非默认端口,或者干脆只允许密钥登录,禁止root直接远程登录。端口放行用firewalld管理,命令行核对当前放行端口:
firewall-cmd --list-all firewall-cmd --permanent --add-port=80/tcp firewall-cmd --reload日志统一看/var/log目录,重点盯几个文件:secure记录登录认证信息,messages记录系统运行日志,业务日志按各自软件的配置路径找。我习惯先写一个简单的巡检脚本,用crontab每天早上跑一次,检查磁盘占用、内存水位、关键进程状态,有异常就追加到日志文件。这个小脚本在早期没有专业监控系统的时候帮了大忙,至少能保证问题第一时间被发现。
磁盘告警的经验值是:根分区超过80%就要处理,别等到100%再扩容,那会儿日志写不进去、服务起不来,排查起来非常被动。
5. 常见问题排查与避坑实录
5.1 装机阶段高频问题
装机阶段的坑基本集中在三个地方,整理成速查表:
| 问题现象 | 常见原因 | 解决办法 |
|---|---|---|
| U盘启动黑屏或卡死 | 镜像写入方式不对、U盘兼容性差 | 换DD模式重新写盘,换一个U盘试试 |
| 安装卡在"正在安装引导程序" | 选择了UEFI引导但缺少ESP分区 | 分区阶段手动建/boot/efi分区 |
| 装完无法从硬盘启动 | 引导程序写入了U盘 | 重装时把引导设备指定为系统硬盘 |
| 装完有线网络不通 | NetworkManager未启用或网卡未被识别 | systemctl start NetworkManager后用nmcli检查 |
这些问题的共性在于安装过程不透明,卡住了看不到具体原因。我现在的做法是:安装前先在官网查清楚目标机器的引导方式和固件类型,再决定分区方案,能省很多来回折腾的时间。
5.2 运行阶段疑难杂症
运行期最头疼的问题集中在两处:驱动不兼容和库依赖缺失。
显卡驱动是最典型的。普通办公模型自带的驱动够用,但如果桌面频繁卡顿、画面撕裂,大概率是显卡驱动和桌面环境没配合好。我在一台老机器上遇到过类似问题,最后通过在安装启动参数中增加兼容模式参数,让系统以基础图形模式运行解决的。当然,如果是核显机器,装官方推荐的驱动通常就能获得流畅体验。
库依赖问题排查最关键的命令是ldd。拿一个报错的二进制文件执行ldd 文件,能看到它依赖的所有动态库以及缺失项,然后按缺什么装什么的原则处理。系统自带的库版本不够时,优先找当前系统版本对应的兼容包或重编译版本。容器是另一个不错的解:把旧系统上能跑的软件包封装成容器,直接在新系统里跑,依赖问题就不再是问题。
5.3 个人实操心得
整套系统跑下来,我最大的感受是:麒麟不是某个通用发行版的复制品,它是一个有自己节奏的Linux发行版。遇到问题,先查官方发布的文档和公告,往往比在外部社区里漫无目的地搜索更高效。内核参数默认偏保守,做高性能调优时务必对照实际负载测试数据,不要照搬其他系统社区里的优化参数,硬件和应用场景不同,照搬可能适得其反。
重要数据不要放在系统盘。分区时把/home和数据盘独立出来,系统出现问题时数据还在,恢复起来会轻松很多。软件升级前先备份配置和数据库,这个大原则能在各种意外中保住命。
最后分享一个我的个人习惯:拿到新装的麒麟机器,先花十分钟写一份部署笔记,记录系统版本、分区方案、软件源配置、放行的端口、改过的内核参数。这个习惯在排查问题时帮我省了大量时间,因为很多疑难问题的根源就是"上次自己配了个什么东西,这次忘了记"。麒麟系统虽然有学习成本,但把基础配置的每个环节都理解透,它完全可以作为一个稳定可靠的基础设施,安心把业务放在上面跑。