Linux启动过程

传统 Linux SysV init 启动过程

  • 按下计算机电源按钮开机
  • CPU查找系统的BIOS设置知道第一个引导设备,一般为硬盘
  • 查找到硬盘的主引导记录(MBR),将其加载到内存并将控制权移交给MBR
  • 主引导记录初始化引导程序(GRUB或LILO)
  • GRUB引导程序加载内核模块
  • 内核模块马上查找sbin下的init程序并执行她
  • init的进程id为1,成为后续linux系统的父进程
  • init进程读取/etc/inittab文件,查找分区表信息,然后分别挂载
  • init启动/etc/init.d文件夹里指定的默认启动级别的所有服务和脚本,所有服务都由init进程一个一个初始化,整个过程中init进程每次只启动一个服务

更先进的 Systemd 启动过程

开发Systemd的主要目的就是减少系统引导时间和计算开销。Systemd(系统管理守护进程),最开始以GNU GPL协议授权开发,现在已转为使用GNU LGPL协议,它是如今讨论最热烈的引导和服务管理程序。如果你的Linux系统配置为使用Systemd引导程序,它取替传统的SysV init,启动过程将交给systemd处理。Systemd的一个核心功能是它同时支持SysV init的后开机启动脚本。
Systemd引入了并行启动的概念,它会为每个需要启动的守护进程建立一个套接字,这些套接字对于使用它们的进程来说是抽象的,这样它们可以允许不同守护进程之间进行交互。Systemd会创建新进程并为每个进程分配一个控制组(cgroup)。处于不同控制组的进程之间可以通过内核来互相通信。systemd处理开机启动进程的方式非常漂亮,和传统基于init的系统比起来优化了太多。让我们看下Systemd的一些核心功能,和init比起来引导过程简化了很多。

  • Systemd支持并发引导过程从而可以更快启动
  • 通过控制组来追踪进程,而不是PID
  • 优化了处理引导过程和服务之间依赖的方式
  • 支持系统快照和恢复
  • 监控已启动的服务;也支持重启已崩溃服务
  • 包含了systemd-login模块用于控制用户登录
  • 支持加载和卸载组件
  • 低内存使用痕迹以及任务调度能力
  • 记录事件的Journald模块和记录系统日志的syslogd模块
    原文作者:我是柯南
    原文地址: https://www.jianshu.com/p/a97ee1c4ad8d
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞