现代Linux的五大初始化系统(1992-2015)
原创
现代Linux的五大初始化系统(1992-2015)
在Linux操作系统的早期提升阶段,初始化系统扮演着至关重要的角色。从1992年到2015年,Linux社区见证了多种初始化系统的诞生、提升和衰落。以下是这一时期内最具代表性的五大初始化系统。
1. SysV init
SysV init是System V初始化系统的简称,它是Linux系统中最古老的初始化系统之一,起源于Unix系统。SysV init通过运行脚本和守护进程来管理系统的启动和关闭。以下是SysV init的基本结构和流程:
# /etc/inittab 文件定义了init进程的运行级别
# 运行级别通常为0(关机)、1(单用户模式)、2(多用户模式,无网络)、3(多用户模式,有网络)、4(自定义)、5(图形界面)和6(重启)
id:5:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
SysV init在Linux系统中应用广泛,但随着时间的推移,其性能和可扩展性逐渐不能满足现代需求。
2. Upstart
Upstart是由Canonical公司开发的初始化系统,旨在取代SysV init。Upstart使用事件驱动的对策来管理系统的启动和关闭,它通过事件触发器来控制服务的启动和停止。以下是Upstart的基本结构和流程:
# /etc/init.conf 文件定义了服务的启动和停止规则
start on runlevel [2345]
stop on runlevel [!2345]
script
start-stop-daemon --start --quiet --pidfile /var/run/mydaemon.pid --exec /usr/local/bin/mydaemon --make-pidfile
end script
script
start-stop-daemon --stop --quiet --pidfile /var/run/mydaemon.pid --exec /usr/local/bin/mydaemon
end script
Upstart在性能和响应速度上有所提升,但在社区中的拥护度并不高,最终被systemd所取代。
3. systemd
systemd是Linux社区中最受欢迎的初始化系统之一,由Lennart Poettering开发。systemd使用单元文件来管理系统的服务,它拥护并行启动、依靠关系和系统状态管理。以下是systemd的基本结构和流程:
# /etc/systemd/system/mydaemon.service 文件定义了服务的启动和停止规则
[Unit]
Description=Mydaemon Service
[Service]
ExecStart=/usr/local/bin/mydaemon
ExecStop=/usr/local/bin/mydaemon-stop
[Install]
WantedBy=multi-user.target
systemd在性能、可扩展性和保险性方面都有显著提升,成为了现代Linux系统的首选初始化系统。
4. OpenRC
OpenRC是由SuSE Linux社区开发的初始化系统,它是一种轻量级的初始化系统,适用于嵌入式系统和资源受限的设备。以下是OpenRC的基本结构和流程:
# /etc/rc.conf 文件定义了服务的启动和停止规则
bootwait=yes
services=networking,syslog,acpid,usb
# /etc/init.d/networking 文件定义了网络服务的启动和停止规则
start() {
/sbin/ifconfig eth0 up
}
stop() {
/sbin/ifconfig eth0 down
}
OpenRC具有较低的内存和CPU占用,适合在资源受限的设备上使用。
5. SysVinit复活:systemd-sysv
尽管systemd已经成为了现代Linux系统的主流初始化系统,但一些社区成员仍然愿望保留SysV init的传统对策