作者:沈传越
明德融创工作室(Minter Fusion Studio, MFS) 出品
一、什么是磐石架构
磐石架构是新版麒麟软件的一个非常重要的特色。在传统的系统维护中,安装过程是一次性的,特别是安装各种开源软件包的时候,一旦该软件包不是操作系统发行版所支持的,就需要从源代码开始安装。这时候可能需要安装大量依赖的软件包,经常会遇到版本不匹配的情况,或者安装错误,这时候,系统可能会发生软件冲突,造成系统错误。在以前的操作系统上,当软件安装混乱的时候,难以快速恢复现场,极端情况下就需要重新安装系统。大量依赖维护人员的经验,而开放麒麟(openKylin)推出的磐石架构,则通过一种安全的运行模式+维护模式+快照的模式,很好地解决了这个问题。图1是磐石架构的分层图。
磐石架构不仅用于openKylin,同时也是新一代麒麟系列软件实现高安全性的核心技术之一。

图1 磐石架构分层图[1]
从图1可以看到,最底层是核心系统层,这一层是整个操作系统的核心,这一层在正常的运行模式下是不能被修改的。在系统安装完毕后,会运行在正常模式(Normal Mode)下。在这个模式下,凡是涉及操作系统的基本运行功能和配置参数的程序和文件是不能被更改的,这样,就大大提高了系统的抗攻击能力,提升了系统的稳定性。
当需要对核心系统层的软件和配置文件进行修改的时候,需要将系统切换到维护模式(Maintain Mode),这时候才可以安装系统级的软件,比如SSH服务,或者是安装apt-utils这样的系统应用程序,都需要在维护模式下进行。
磐石架构在核心系统层中,设计了快照功能。当你安装配置好一个环境之后,可以建立一个该环境的备份,称为"快照"。用户可以针对不同的系统运行环境建立不同的快照,这样众多快照就了形成一个快照空间,可以在需要的时候调取不同的快照,将系统快速恢复到某一个特定的系统运行环境。这种方式为系统的管理维护提供新的灵活性和更高的安全性。
二、利用磐石架构进行系统维护
(一)系统维护的关键命令 ------ mm-cli
mm-cli是麒麟系列软件独有的命令,它用于将系统设置为维护模式或一般模式,并管理快照和系统恢复。
mm-cli的格式为:mm-cli [操作参数]。相关操作参数的说明和举例请见表1。
表1 mm-cli命令操作参数说明表
|-------------------|----------------------------------------------------|-----------------------------------------------------------------------|-----------------------------------------------------------------------------|
| 操作参数 | 说明 | 举例 | 备注 |
| -s | 检查当前的系统状态是维护模式,还是正常运行模式 | mm-cli -s Maintain Mode | |
| -s -t | 获取当前的系统维护状态的类型 | mm-cli -s -t Miantain Mode (Persistent) | |
| -h | 显示mm-cli命令的帮助信息(全英文) | | |
| -o | 系统重新启动后,将进入维护模式 | sudo mm-cli -o reboot | 重新启动后,系统会进入维护模式,桌面右下角会显示"维护模式"字样。 |
| -b COMMIT_SUBJECT | 备份维护模式快照。 | sudo mm-cli -b baseos+VirtualBoxAddition 重启系统以创建快照,是否立即重启创建快照?(Y/N) | COMMIT_SUBJECT意思是备份摘要,在实际操作中,就是用户给自己的系统快照起的名字。 必须以管理员身份才能执行此命令。 |
| -c -a | 取消维护模式,并存储所有信息 | sudo mm-cli -c -a sudo reboot | 只有运行这个命令,才能在重新启动后,让刚刚安装的环境生效。 必须以管理员身份才能执行此命令。 |
| -c -n | 取消维护模式,不存储任何信息 | sudo mm-cli -c -n sudo reboot | 如果执行这个命令,那么刚刚安装的软件,在重新启动后就无效了。 必须以管理员身份才能执行此命令。 |
| -S -l | 显示所获得的维护快照和操作的列表 | sudo mm-cli -S -l | 必须以管理员身份才能执行此命令。 |
| -S -c COMMIT | 切换到指定版本的快照 | sudo mm-cli -S -c COMMIT 切换快照需重启系统生效,是否切换快照并立即重启?(Y/N) | COMMIT是快照名称,可以通过命令 sudo mm-cli -S -l 进行查阅。 必须以管理员身份才能执行此命令。 |
| -S -d COMMIT | 在快照仓库中删除指定版本的快照。如果相同名字的快照有很多个,无论这些这些快照是否挨着,都会统一删除。 | sudo mm-cli -S -c COMMIT | COMMIT是快照名称,可以通过命令 sudo mm-cli -S -l 进行查阅。 命令执行过程的例子见图2。 必须以管理员身份才能执行此命令。 |
(二)使用mm-cli进行系统维护的实际操作
1. 恢复快照操作
第一步,进入维护模式
(1)使用快捷键Ctrl + Alt + T(同时按下键盘上的Ctrl、Alt和T键),打开终端窗口。
(2)输入命令:sudo mm-cli -o & reboot
让麒麟系统重新启动后进入维护模式(Maintain Mode)。
第二步,为系统创建快照
(1)使用快捷键Ctrl + Alt + T(同时按下键盘上的Ctrl、Alt和T键),打开终端窗口。
(2)为当前系统创建快照。
输入命令:sudo mm-cli -b vsftpd1_notall
命令执行后系统会重新启动。
(3)系统重新启动后,使用快捷键Ctrl + Alt + T(同时按下键盘上的Ctrl、Alt和T键),打开终端窗口。
(4)输入命令:sudo mm-cli -S -l,可以显示快照列表,显示如下:
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| minterfusion@minterfusion-pc:~$ sudo mm-cli -S -l [sudo] minterfusion 的密码: ** Commit: 5c04521dcc8b6f512192da662e64741709d83c100cd41e9061c0683593814f6f ContentChecksum: 67263418aa1cbd7863b2d4909e347d970e6fea10eb3066bdc9e0dde2b759aea6 Date: Sun Mar 22 21:00:25 2026 Snapshot: vsftpd1_notall ** Commit: 657985f2204c97aad459c76f0a171aaf3fac0bc853df48859d66b263984e766b ContentChecksum: 3300e4a7ca5b1119150aba52952042ba045c55997d18f60bf18117aa62c02f6d Date: Thu Mar 12 09:47:34 2026 Snapshot: baseos+SSHD ** Commit: 811b9a3275e6ff9c0747386167d5fbf9a1ff8f144964e3ad2ba715500419a51d ContentChecksum: 76fb2fadf495951dd4b0f589feac8a49fd3a1810c8e25c0e53c86ed4fd5b9403 Date: Wed Mar 11 11:48:51 2026 Snapshot: baseos+VirtualBoxAddition |
从这个列表中,可以看到这个openKylin系统中有3个快照,其中最后一个就是刚刚创建的vsftpd1_notall。这个快照对应的系统,是已经安装了OpenSSHD[注1]和vsftpd[注2]的,但是这个vsftpd不能满足匿名访问的需求。
注1: OpenSSHD是一种SSH服务器软件,具体安装配置过程参见本人CSDN博客文章《如何在openKylinx下安装配置SSH服务》。
注2: vsftpd是一种FTP服务器软件,具体安装步骤参见本人CSDN博客文章《如何在开放麒麟(openKylin)下安装FTP服务器(v0.1.0)》。
如果现在,我们希望把系统恢复到一个没有vsftpd的环境,开展自研FTP软件的实验,那么我们可以使用以下命令,将系统恢复到基础系统baseos+VirtualBoxAddition。
sudo mm-cli -S -c 811b9a3275e6ff9c0747386167d5fbf9a1ff8f144964e3ad2ba715500419a51d
其中,811b9a3275e6ff9c0747386167d5fbf9a1ff8f144964e3ad2ba715500419a51d,这一串字符是baseos+VirtualBoxAddition这个快照对应的Commit,是一个64位的哈希值。
执行上述命令后,系统会恢复快照,显示如图2所示的画面。恢复快照需要一段时间。

图2 恢复快照
如果这种状态一直存在,强制关机后,重新启动。重启电脑后,打开终端窗口,检查系统,可以看到所有曾经安装好的sshd服务和vsftpd服务都不在了(如图3所示),说明系统已经恢复到最初的状态。

图3 检测系统恢复到最初状态
2. 当前维护发生错误,直接放弃所做的修改
如果在系统维护过程中出现了混乱,可以使用以下命令,直接放弃所做的修改,防止系统越装越乱,最后崩溃。
$ sudo mm-cli -c -n
$ sudo reboot
做一个实验,按照《如何在openKylinx下安装配置SSH服务(v0.2.0)》中所介绍的方法,安装好OpenSSH Server。
在另外一台Windows主机中,打开MobaXterm,连接前面这台openKylin主机(IP地址:192.168.1.81),如图4所示,连接成功,说明它的OpenSSH Server正常运行。

图4 通过ssh成功连接openKylin主机
接下来,运行命令:
sudo mm-cli -c -n
重新启动系统后,openKylin返回正常模式,但是,MobaXterm无法再连接上该主机,说明刚刚对系统做的所有修改都被取消了。
【参考资料】
1\] openKylin社区. openKylin 2.0 SP2揭秘 - 磐石架构:不变的核心,更好的体验\[EB/OL\]. (2025-07-30 15:31:12)\[2026-03-11\]. https://www.openkylin.top/news/3822-cn.html. *** ** * ** *** ## ******【创作团队】****** 策 划:沈传越 文字创作:沈传越 图片采集:沈传越 技术验证:沈传越 版式设计:沈传越