你有没有在服务器上重启的时候,盯着那串绿色的启动日志发呆?
“为什么我的系统要30秒才起来?为什么服务老是挂?”
这些痛点,十年前几乎所有Linux用户都经历过。那时候,SysV init(从1980年代活下来的老古董)已经明显跟不上时代:串行启动、依赖关系靠脚本手动写、启动慢得像蜗牛……
于是,一场“初始化系统革命”在Linux生态里爆发了。
无数天才项目跳出来,想取代SysV,甚至直面后来杀出来的systemd。
其中有4个项目一度离“统一Linux”只差临门一脚:
Upstart、OpenRC、runit、s6。
它们曾经被Ubuntu、Gentoo、Void Linux等大厂/社区寄予厚望,甚至让Red Hat都紧张过。
结果呢?全部出局,只剩下小众生态在顽强存活。
1. Upstart
时间回到2006年。Canonical(Ubuntu背后的公司)看着SysV那堆乱七八糟的shell脚本,忍不了了。
他们搞出了Upstart——一个事件驱动的初始化系统。
核心理念彻底颠覆:
不再是“按固定顺序跑脚本”,而是“服务监听事件”。
比如:

这种异步启动,让Ubuntu 6.10~14.10的开机速度直接提升30%-50%(我当时用老ThinkPad实测,从45秒降到28秒)。
Upstart的Job配置文件超级简洁:
# /etc/init/myservice.conf 示例
start on filesystem or net-device-up IFACE=eth0
stop on runlevel [06]
exec /usr/bin/myapp
Ubuntu作为当时全球最大的桌面Linux发行版(份额一度超50%),直接把Upstart推向了风口浪尖。
Red Hat、Debian社区都认真评估过:“这玩意儿会不会成为下一个标准?”
连Lennart Poettering(systemd之父)当时都公开承认Upstart“很有创意”。
2010-2013年,几乎所有Ubuntu服务器都在用Upstart。
Google、Facebook的部分内部集群也短暂采用过。
为什么最终失败?
- 视野太窄:Upstart只管“init + 服务管理”,压根没碰日志(rsyslog)、设备管理(udev)、定时任务(cron)、用户会话这些。
而systemd直接把这些全吞了,做成“一站式平台”。
- 2014年Debian生死判决:Debian投票决定默认采用systemd(287:146)。
这一票,直接把整个生态带偏。Ubuntu迫于包兼容性,在15.04也无奈切换。
- 网络效应碾压:一旦Debian/Fedora/Arch全站队systemd,软件包维护者就只愿意写
.service文件,不再维护Upstart job。
Upstart项目2014年后基本停更,Canonical官方宣布“不再维护”。
我到现在还保留着Ubuntu 12.04的Upstart虚拟机,偶尔开机玩怀旧——启动确实干净利落,但一想到要手动适配几百个软件,就头大。
2. OpenRC
如果你是极简主义爱好者,OpenRC绝对是你的菜。
它根本不是“重写init”,而是在SysV基础上做手术:
- 保留了大家熟悉的
/etc/init.d/ shell脚本 - 加上真正的依赖管理(use、need、after)
OpenRC本身不带PID 1,它跑在sysvinit或BusyBox init上面。

Gentoo从2007年开始默认使用,至今仍是Gentoo官方推荐。
Alpine Linux(容器/嵌入式神器)也全系OpenRC,体积小到只有几MB。
典型配置超级Unix风:
# /etc/init.d/nginx
depend() {
need net
use logger
}
start() {
ebegin "Starting nginx"
start-stop-daemon --start --exec /usr/sbin/nginx
eend $?
}
它为什么没火?
OpenRC的哲学是“绝不越界”。
它只管启动和监督,日志、设备、网络、cgroups全交给其他工具。
而systemd一句话:“我全包了,还带cgroup隔离、瞬时服务、socket激活”。
结果:想用统一方案的发行版(Ubuntu、Fedora、Debian)直接选择了systemd。
OpenRC只能守住Gentoo和Alpine这两个“极客天堂”。
我自己服务器上跑过OpenRC+Alpine,稳定性拉满,但每次新增服务都要手写脚本,效率确实比systemd低30%。
3. runit
runit把“极简”做到了极致。
整个系统只有三个阶段:
- Stage 2:启动所有服务(supervision目录)
每个服务就是一个目录,里面放三个可执行脚本:run、finish、check。

没有配置文件解析器,没有复杂DSL,纯shell+目录结构。
Void Linux(我个人最爱的滚动发行版之一)默认就是runit。
我装过一次,系统安装后只有不到200MB,启动速度实测8秒(对比Fedora systemd的18秒)。
为什么没成为主流?
runit几乎不做任何“额外”的事。
想用日志?自己接svlogd。
想用依赖?自己写脚本顺序。
想用cgroup?自己接其他工具。
这种“乐高式”设计,极客爱到爆炸,但普通运维和发行版维护者直接投降。
systemd一句“systemctl enable xxx”就能搞定的事,runit要搭好几层积木。
所以runit永远是“小众中的小众”,但在Docker、嵌入式、路由器领域活得特别滋润。
4. s6
s6可以说是runit的“学术加强版”。
它把服务监督上升到形式化系统层面:
- 精细的失败处理(failure handling)

作者Laurent Bercot把“正确性”放在第一位,代码风格干净到像数学论文。
很多内核开发者私下都说:“从纯技术角度,s6是最好的。”
但……它太难用了。
普通用户看一眼s6-svc、s6-rc-db、s6-log的命令就头晕。
systemd的[Unit]、[Service]、[Install]三段式配置,小白10分钟就能上手。
目前s6主要用在:
我曾经在树莓派上搭过s6+Artix Linux,监控服务从不掉线,但配置花了我整整两天。
为什么systemd笑到了最后?
- 时间点完美:2010-2014年正是Linux走向服务器、云、桌面全面爆发期。
大家最需要一个“统一标准”来降低碎片化。
Red Hat全力背书:Fedora率先默认systemd,Red Hat Enterprise Linux跟进。
企业用户、云厂商(AWS、Azure)直接跟进。
Debian 2014年投票:这是压倒骆驼的最后一根稻草。
所有基于Debian的衍生版(Ubuntu、Mint、Deepin)全部倒戈。
- 文档、教程、StackOverflow全是systemctl
- 第三方工具(Docker、Kubernetes、Prometheus)原生集成

结果就是:你不用systemd,就要额外维护一堆兼容层。
成本直接起飞。
systemd真的完美吗?
当然不是。
它被骂得最多的一点就是违反Unix哲学——“做一件事且做好”。
systemd把日志(journald)、网络(networkd)、设备(udevd)、登录(logind)全塞进一个二进制里,体积巨大,攻击面也大。
但它确实解决了真实痛点:
所以即使Devuan、Artix、MX Linux这些“反systemd”发行版在努力,也只能吸引5%的用户。
你用过哪个替代系统?
或者你对systemd最恨哪一点?
欢迎在评论区狂喷或者安利,我每条都看!
