文章目录

  • 一、Linux 的启动过程
  • 二、初始化程序
    • (一)System V init
    • (二)Upstart init
    • (三)systemd
    • (四)Launchd
    • (五)Epoch
    • (六)Mudar

一、Linux 的启动过程

在我们打开 Linux 电脑的电源后第一个启动的进程就是 init。分配给 init 进程的 PID 是1。它是系统其他所有进程的父守护进程。 init 进程在 Start_kernel 执行完毕之后,也就是 Kernel 初始化完毕之后启 动,它是系统所有进程的起点,内核在完成核内引导以后,即在本进程空间内加载 init 程序。

当一台Linux电脑启动后,处理器会先在系统存储中查找BIOS,之后BIOS会检测系统资源然后找到第一个引导设备,通常为硬盘,然后会查找硬盘的主引导记录(MBR),然后加载到内存中并把控制权交给它,以后的启动过程就由MBR控制。

主引导记录会初始化引导程序(Linux上有两个著名的引导程序,GRUB和LILO,80%的Linux系统在用GRUB引导程序),这个时候GRUB或LILO会加载内核模块。内核会马上查找/sbin下的“init”程序并执行它。从这里开始init成为了Linux系统的父进程。init读取的第一个文件是 /etc/inittab,通过它init会确定我们Linux操作系统的运行级别。它会从文件 /etc/fstab 里查找分区表信息然后做相应的挂载。然后init 会启动 /etc/init.d 或者 /etc/rc.d/init.d 里指定的默认启动级别的所有服务/脚本。所有服务在这里通过init一个一个被初始化。在这个过程里,init每次只启动一个服务(串行启动),所有服务/守护进程都在后台执行并由init来管理。

关机过程差不多是相反的过程,首先init停止所有服务,最后阶段会卸载文件系统。

以上提到的启动过程有一些不足的地方。而用一种更好的方式来替代传统init的需求已经存在很长时间了。也产生了许多替代方案。其中比较著名的有Upstart,Epoch,Muda和Systemd。而Systemd获得最多关注并被认为是目前最佳的方案。

二、初始化程序

(一)System V init

System V init 是类 Unix 操作系统传统的也是首款初始化系统。

SysV init 守护进程是一个基于运行级别的系统,它使用运行级别(单用户、多用户以及其他更多级别)和链接(位于 /etc /rcN.d/ 目录中,分别链接到 /etc/init.d 中的 init 脚本)来启动和关闭系统服务。SysV启动是线性、顺序的。一个S20的服务必须要等待S19启动完成才能启动,如果一个启动要花很多时间,那么后面的服务就算完全无关,也必须要等。

在 SysV init 中,服务被分成两大类,一类是可独立运行的服务,另一类是受xinetd管理的服务,而xinetd本身是一个独立运行的服务,用来负责管理一些不常用的服务,当这些服务需要被使用时,由xinetd来唤醒它们,当服务使用完后,这些服务会被结束以减少系统资源的占用。

(二)Upstart init

Upstart init 是由 Ubuntu 的制造商开发的基于事件的初始化系统,用于替代 SysV init 初始化系统。它用于 Ubuntu 6.10 - 14.10 版本和基于 RHEL 6 的系统中,之后的被 systemd 取代了。

UpStart(Upstart init daemon)是基于事件的启动系统,它使用事件来启动和关闭系统服务。Upstart是并行的,只要事件发生,服务可以并发启动。这种方式无疑要优越得多,因为它可以充分利用现在计算机多核的特点,大大减少启动所需的时间。

Upstart是基于事件的,当系统中的什么情况发生变化时,它会运行某个特定的程序。这里被运行的程序多半是用来启动或终止服务的脚本。这个配置方式和System V在系统进入某个运行级别的时候运行init脚本的链接的概念实际上是非常类似的。只不过Upstart更加灵活一些,Upstart不仅能在运行级别改变的时候启动或终止服务,也能在接收到系统发生其他改变的信息的时候启动或终止服务。这些系统的改变被称为“事件”。例如,当Upstart从udev接收到运行时文件系统加载、打印机安装或其他类似的设备添加或删除的信息,并采取相应的行动。Upstart也可以在系统启动、关闭或某个任务状态改变的时候启动或关闭服务。

UpStart 系统初始化的过程是在工作和事件的相互协作下完成的,可以大致描述为:系统上电后运行 GRUB 载入内核。内核执行硬件初始化和内核自身初始化。在内核初始化的最后,内核将启动 pid 为 1 的 init 进程(即 UpStart 进程),init 进程运行后,init 进程自身会产生不同的事件,这些最初的事件会触发一些工作运行,而每个工作运行过程中又会释放不同的事件,这些事件又将触发新的工作运行。如此反复,直到整个系统正常运行起来。

UpStart 是一个由事件触发工作运行(事件驱动机制)的初始化系统,每一个程序的运行都由其依赖的事件发生而触发的。UpStart 核心模块就是 Job 和 Event。

(三)systemd

systemd 中文名叫“系统管理守护进程”,是旨在以并行方式启动进程的替换传统 init 系统的初始化系统,目前已经在许多标准发行版(Fedora,OpenSuSE,Arch,RHEL,CentOS 等)中应用。借鉴 Mac OS。

开发 systemd 的主要目的就是减少系统引导时间和计算开销。systemd 最开始以GNU GPL协议授权开发,现在已转为使用GNU LGPL协议,它是如今讨论最热烈的引导和服务管理程序。如果你的Linux系统配置为使用Systemd引导程序,它取替传统的SysV init,启动过程将交给systemd处理。systemd 的一个核心功能是它同时支持 SysV init的后开机启动脚本。

(四)Launchd

launchd 是 Mac OS 下用于初始化系统环境的 init 系统,它是内核装载成功之后在 OS 环境下启动的第一个进程。其实 systemd 的很多概念来源于此。

(五)Epoch

一种基于简单性的管理服务的 init 替换守护进程,旨在启动单线程进程。

(六)Mudar

一种用Python编写的 init 替换守护进程,在 Pardus GNU / Linux上实现,旨在异步启动进程

Linux 及其它类 Unix 系统的系统服务管理和控制程序(初始化系统/init system)简单梳理相关推荐

  1. Linux 系统服务管理器(初始化系统/init system) -- systemd 及命令 systemctl 的详细介绍

    文章目录 一.系统服务管理器 systemd (一)systemd 的特性 (二)systemd 与 传统 init 系统的区别 (三)systemd 的目录和文件 (四)systemd 的 Unit ...

  2. 浅析 Linux 初始化系统(系统服务管理和控制程序/Init System) -- sysvinit/systemvinit(System V init)

    文章目录 从 sysvinit 到 systemd 什么是 init 系统,init 系统的历史和现状 sysvinit 概况 运行级别 sysvinit 运行顺序 sysvinit 和系统关闭 sy ...

  3. 浅析 Linux 初始化系统(系统服务管理和控制程序/Init System) -- systemd

    文章目录 一.Systemd 的简介和特点 (一)同 SysVinit 和 LSB init scripts 兼容 (二)更快的启动速度 (三)systemd 提供按需启动能力 (四)Systemd ...

  4. 浅析 Linux 初始化系统(系统服务管理和控制程序/init system) -- UpStart

    文章目录 一.Upstart 简介 (一)开发 Upstart 的缘由 (二)Upstart 的特点 二.Upstart 概念和术语 (一)Job (二)Job 生命周期 (三)事件 Event 1. ...

  5. Linux 初始化系统(系统服务管理和控制程序/Init System) -- System V init(SysV init) 的简单理解

    文章目录 SysV init 简介 SysV init 的缺点 运行级别 主要文件和目录的截图 SysV init 简介 System V init(缩写 SysV init)是类 Unix 操作系统 ...

  6. CentOS 7 Linux 的初始化系统(系统服务管理和控制程序/Init System) -- systemd 详解

    文章目录 一.systemd 的由来 (一)常用的 init 系统 (二)init 程序的缺点 (三)systemd 简介 (四)systemd 架构图 二.服务管理 三.unit 配置文件 (一)概 ...

  7. 计算机毕业设计Java信用卡增值业务系统小程序管理端(源码+系统+mysql数据库+lw文档

    计算机毕业设计Java信用卡增值业务系统小程序管理端(源码+系统+mysql数据库+lw文档 计算机毕业设计Java信用卡增值业务系统小程序管理端(源码+系统+mysql数据库+lw文档) 本源码技术 ...

  8. JSP电影院在线订票系统JSP电影购票系统JSP电影票预订系统JSP电影院管理jsp电影购票系统

    JSP电影院在线订票系统JSP电影购票系统JSP电影票预订系统JSP电影院管理jsp电影购票系统 开发语言:Java 开发工具:Myeclispe /Eclipse 数据库:MYSQL 应用服务:To ...

  9. javaweb JAVA JSP停车场管理系统源码JSP停车收费系统JSP停车场管理 JSP停车场收费系统

    javaweb JAVA JSP停车场管理系统源码JSP停车收费系统JSP停车场管理 JSP停车场收费系统 protected void doGet(HttpServletRequest req, H ...

最新文章

  1. luogu P1064 金明的预算方案
  2. bzoj2959 长跑
  3. 灾备知识总结:容灾与备份区别、灾备技术、容灾体系规划
  4. 玩转webpack(一)下篇:webpack的基本架构和构建流程
  5. cocos 事件分发2
  6. c语言函数调用数组_第七讲:C语言基础之函数,第二节,实现汉诺塔
  7. Java数据库篇9——备份与还原、忘记密码
  8. 028-Dell服务器做Raid
  9. 【ISL-1】统计学习概览
  10. 即刻VR 唯快不破——2021服贸会的黑科技应用侧记
  11. 拉普拉斯金字塔融合原理浅析
  12. 计算机键盘的删除键,电脑删除键在哪 删除的快捷键是什么
  13. Koo叔说Shader-描边效果
  14. 谷歌身份验证器的使用超详细步骤
  15. 信息数据采集软件-什么工具可以快速收集信息
  16. Python编程PTA题解——查询水果价格
  17. vr游戏模型测试软件,Steam VR性能测试工具介绍
  18. 微信体现计算机网络功能,教你微信提现如何免手续费
  19. Listio官网教程
  20. 厚积薄发打卡Day75 :【MSUP】Java语言特性与设计模式(上)

热门文章

  1. jdk12源代码文件_在JDK 11中启动单文件源代码程序
  2. react java_独眼巨人React组织了Java 8库的寒武纪爆发
  3. 设计模式的Java 8 Lambda表达式-策略设计模式
  4. jsf 单元测试_构建和测试JSF.next
  5. java 解析日期格式_日期/时间格式/解析,Java 8样式
  6. java8 默认方法_如何不使用Java 8默认方法
  7. 将HTML转换为Apache POI的RichTextString
  8. ldap java_使用LDAP保护Java EE6中的Web应用程序
  9. 实际的Reactor操作–检索Cloud Foundry应用程序的详细信息
  10. 新ANTLR 4.6的重要更改