centos7启动流程

avatar
作者
筋斗云
阅读量:0

centos7启动过程,是一个复杂但有序的过程,centos7开机启动的主要步骤:

导航

0.加电质检,加载BIOS

1.根据顺序,加载MBR

2.加载内核

3.运行initramfs/initrd

4.挂载根文件系统

5.启动init系统

6.用户空间的初始化

7.终端和登录服务启动


0.加电质检,加载BIOS

        首先加载基本输入输出系统,BIOS 中包含硬件 CPU、内存、硬盘等相关信息,包含设备启动顺序信息、硬盘信息、内存信息、时钟信息、即插即用(Plug-and-Play,PNP,例如u盘的等外部设备),特性等。加载完 BIOS信息,计算机将根据顺序进行启动

1.根据顺序,加载MBR

        读取并执行启动设备的MBR(Master Boot Record 即主引导记录)中的Boot Loader

        MBR存储在计算机硬盘的第一个扇区(通常是第0个扇区)中的一个特殊的引导扇区。它包含了启动计算机所需的重要信息,如分区表、引导程序等。  Boot Loader就是MBR中的引导程序,例如GRUB就是引导程序中的一种多操作系统启动程序。BootLoader会被复制到内存中,然后进行启动引导。

2.加载内核

        BootLoader加载内核流程:(centos中常用的BootLoader是GRUB 2)

         第一阶段(加载内核映像):GRUB 会提供一个菜单,让用户选择要启动的操作系统或不同的内核版本。用户选择后,GRUB 会将选定的内核版本加载到RAM中的特定空间,并进行解压和展开。注:GRUB会从硬盘上读取内核映像(vmlinux或vmlinuz,后者是压缩过的)并加载到内存中。内核映像包含了操作系统启动所需的核心代码。

        第二阶段(初始化内核)GRUB 将控制权移交给Linux内核,包括探测可识别的硬件设备、加载硬件驱动程序等。内核在内存中加载时,为了模拟系统环境,会生成一个ramdisk(内存上临时虚拟的系统)文件,这个文件可以是initramfs或initrd。内核通过ramdisk加载必要的驱动程序和核心模块,以准备挂载真正的根文件系统。

3.运行initramfs/initrd

        在CentOS 7中,内核启动后会执行initramfs(或早期版本的initrd)脚本。这些脚本包含了用于加载额外模块、启动临时文件系统等所需的代码。initramfs使得内核能够在没有完整根文件系统的情况下进行初始化。注:initramfs/initrd是Linux系统启动过程中的一个关键组件,它允许内核在挂载根文件系统之前执行必要的初始化任务。

4.挂载根文件系统

        initramfs/initrd脚本执行完毕后,内核会挂载根文件系统,它使操作系统能访问其文件和目录。除了根文件系统外,系统还会根据/etc/fstab等配置文件挂载其他文件系统,如/home/var等分区。

5.启动init系统

        在centos7中systemd是默认的init系统。一旦根文件系统被挂载,内核就会启动systemd,由systemd接管后续的启动过程。systemd负责启动系统上的服务、会话和管理守护进程。

  • 启动目标(target)的设定:systemd会按照预设的默认目标(target)来启动系统。默认目标通常设置为graphical.target(图形界面)或multi-user.target(多用户文本界面)。
  • 服务启动:systemd会根据配置启动各种服务。这些服务包括系统服务(如网络、打印服务等)和用户服务。

6.用户空间的初始化

  • 运行级别设置(虽然CentOS 7使用systemd,但运行级别的概念仍然以兼容模式存在):系统会根据配置设置运行级别,虽然systemd使用targets代替了传统的运行级别,但两者在概念上有相似之处。
  • 初始化脚本执行:在早期的Linux系统中,/etc/rc.d/rc.local等初始化脚本会被执行以完成额外的系统配置。然而,在systemd下,这些脚本的作用可能已经被systemd单元文件所取代。

7.终端和登录服务启动

  • getty和agetty:这些程序负责在文本模式下启动终端会话。它们会监听特定的终端或伪终端,并在接收到连接时启动登录程序。
  • 登录程序(如login或getty内置的登录功能):当用户在终端上输入用户名并回车时,登录程序会验证用户的身份。如果验证成功,用户将被允许登录系统

        

     

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!