一文教你在 openEuler 使用 sysMaster 代替 systemd
sysMaster 是一套超轻量、高可靠的服务管理程序集合,是对 1 号进程的全新实现,旨在改进传统的 init 守护进程。它使用 Rust 编写,具有故障监测、秒级自愈和快速启动等能力,从而提升操作系统可靠性和业务可用度。
sysMaster 支持进程、容器和虚拟机的统一管理,其适用于服务器、云计算和嵌入式等多个场景。
sysMaster 实现思路是将传统 1 号进程的功能解耦分层,结合使用场景,拆分出 1+1+N 的架构。
本文将详细介绍 sysMaster 在 OpenAtom openEuler(简称 “openEuler”) 上的安装、部署以及使用方法。
环境要求
软件要求
- 操作系统:
openEuler 25.03
硬件要求
x86_64架构、aarch64架构
安装与部署 openEuler 虚拟机
系统安装
参考文档:https://docs.openeuler.org/zh/docs/25.03/server/installation_upgrade/installation/installation-modes.html
initramfs 镜像制作
为了避免 initrd 阶段 systemd 的影响,需要制作一个剔除 systemd 的 initramfs 镜像,并以该镜像进入 initrd 流程。使用如下命令:
dracut -f --omit "systemd systemd-initrd systemd-networkd dracut-systemd" /boot/initrd_withoutsd.img新增启动项
在 grub.cfg 中增加新的启动项,aarch64 下的路径为 /boot/efi/EFI/openEuler/grub.cfg,x86_64 下的路径为 /boot/grub2/grub.cfg,拷贝一份原有启动项,并做以下几处修改:
menuentry项修改启动项名称为openEuler 25.03 withoutsdlinux项内核启动参数修改为root=/dev/mapper/openeuler-root rwlinux项内核启动参数修改plymouth,如果环境上安装了plymouth,需要添加plymouth.enable=0禁用plymouthlinux项内核启动参数增加init=/usr/lib/sysmaster/initinitrd项修改为/initrd_withoutsd.img
安装 sysMaster
yum install sysmaster验证启动配置
重启后出现 openEuler 25.03 withoutsd 启动项表示已成功配置,选择此启动项进入虚拟机
sysMaster 使用指南
创建单元配置文件
sysMaster 支持 target、socket 和 service 三种类型的单元配置文件,用户可以在 /usr/lib/sysmaster/system/ 目录下创建这些文件。
单元配置文件类型说明
target:用于将多个单元集中到一个同步点,例如multi-user.target代表系统已完成启动,用户可以依赖此目标启动自定义服务。socket:封装用于进程间通信的套接字,支持基于套接字的启动。当套接字有数据写入时,sysMaster 会自动拉起对应的service单元。service:封装被 sysMaster 监视与控制的进程。
单元配置文件构成
通常包含三个部分:
Unit:单元的公共配置,如服务名称、描述、依赖关系等。Install:描述如何安装和启动服务。Service或Socket:各单元类型的特定配置。
创建 service 单元配置示例
以 sshd 服务为例,以下是 sshd.service 单元配置文件:
[Unit]
Description="OpenSSH server daemon"
Documentation="man:sshd(8) man:sshd_config(5)"
After="sshd-keygen.target"
Wants="sshd-keygen.target"
[Service]
Type="notify"
EnvironmentFile="-/etc/sysconfig/sshd"
ExecStart="/usr/sbin/sshd -D $OPTIONS"
ExecReload="/bin/kill -HUP $MAINPID"
KillMode="process"
Restart="on-failure"
RestartSec=42
[Install]
WantedBy="multi-user.target"配置选项说明
Description:说明单元的主要功能。Documentation:提供单元的文档链接。After:配置单元启动顺序,sshd.service会在sshd-keygen.target之后启动。Wants:配置单元依赖关系,启动sshd.service时会自动启动sshd-keygen.target。Type:配置服务启动方式,notify表示需要主进程启动完成后发送通知消息。EnvironmentFile:设置环境变量的文件读取路径。ExecStart:配置服务启动时执行的命令。ExecReload:配置重新加载服务配置时执行的命令。KillMode:配置停止服务进程的方法,process表示只杀死主进程。Restart:配置服务退出或终止时的重启策略,on-failure表示服务非正常退出时重新启动。RestartSec:配置服务重启的间隔时间。WantedBy:配置依赖当前服务的单元。
管理单元服务
sctl 是 sysMaster 的命令行工具,可用于启动、停止、重启和查看服务状态。
启动服务
sctl start sshd.service停止服务
sctl stop sshd.service重启服务
sctl restart sshd.service查看服务状态
sctl status sshd.service总结
通过本文的介绍,你已经了解了 sysMaster 在 openEuler 上的安装、部署过程,以及如何创建单元配置文件和管理单元服务。更多详细信息可查阅文档。希望这些内容能帮助你更好地使用 sysMaster 管理系统服务。
- 文档链接:https://docs.openeuler.org/zh/docs/25.03/server/administration/sysmaster/overview.html
- 项目主页:https://gitee.com/openeuler/sysmaster
- 欢迎到 openEuler 论坛分享使用经验:https://forum.openeuler.org/




