1.systemd 的项目简介(sysvinit | UpStart | systemd)
目前Linux的初始化init系统有sysvinit,UpStart以及systemd,现在sysvinit逐渐的推出历史舞台,越来越多的Linux发行版使用systemd来作为默认的初始化init系统。
Systemd是Linux系统中最新的初始化系统(init),它主要的设计目标是克服sysvinit固有的缺点,提高系统的启动速度。systemd和ubuntu的upstart 是竞争对手,预计会取代UpStart,目前Ubuntu的最新发行版也采用systemd作为其标准的系统初始化系统。Systemd的很多概念来源于苹果Mac OS操作系统上的launchd,不过launchd专用于苹果系统,因此长期未能获得应有的广泛关注,Systemd借鉴了很多launchd的思想。
我们知道,在内核加载完成后,内核会启动init进程(系统1#进程),init进程会根据/etc/inittab来启动一系列的系统服务。而现在systemd是用来替代init进程的,目前很多的Linux系统发行版都默认使用了systemd,例如RedHat从版本7开始默认使用systemd作为初始化进程。systemd的设计目标是为系统的启动和管理提供一套完整的解决方案。systemd和init有好大的差别,主要体现在如下几个方面:
(1)init 只需要从/etc/rc*.d/中启动一些服务就可以了,而 systemd 出了会启动服务外,还提供了丰富的服务管理、日志管理等等功能
(2)init 启动各个服务是串行的,而 systemd 启动各个服务按照一定的策略,可以并行地启动一些服务,提升了系统的启动速度。
从具体的一些配置上看 init 和 systemd 的区别如下:
(1)默认的 RunLevel(在/etc/inittab 文件设置)现在被默认的 Target 取代,位置是/etc/systemd/system/default.target,通常符号链接到 graphical.target(图形界面)或者 multi-user.target(多用户命令行)。
(2)启动脚本的位置,以前是/etc/init.d 目录,被软链接到不同的 RunLevel 目录 (比如/etc/rc3.d、/etc/rc5.d 等),现在各个服务的启动配置文件放在/usr/lib/systemd/system 目录中,被软链接到 /etc/systemd/system 目录中。
2.使用 systemd 后 linux 启动过程
(1)BIOS 开机自检
(2)BootLoader 加载内核
(3)kernel 会启动 systemd 进程,成为系统的 1#进程
(4)systemd 会从/etc/systemd/system 中读取系统启动时,需要使用的 Target(也就是由/etc/systemd/system/default.target 指定的 Target),从而确定要启动哪些服务。而/etc/systemd/system 目录中有很多软链接,是链接到/usr/lib/systemd/system/目录中的 Unit 配置文件的。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于