CentoOS 系统的启动流程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentoOS 系统的启动流程相关的知识,希望对你有一定的参考价值。

简介:

   作为一个Linux运维工程师,必须要熟悉Linux系统的启动流程,才能在Linux系统出现故障时及时地发现问题,解决问题;下面将为大家介绍一下CentOS系统的系统启动流程。

CentOS启动流程

技术分享图片

  根据上图所示,centos系统总体可分为5个阶段:POST加电自检—BOOT启动引导阶段—Grub启动引导阶段—Kernel初始化阶段—进程引导阶段(init)。

一. POST加电自检
此阶段是所有操作系统都必须的阶段,就是设备开机,主板硬件检测的阶段,

二. BOOT启动引导阶段
当硬件自检没有问题之后,Bios会按照次序查找各个引导设备,第一次有引导程序的设备,即为本次启动要用到的设备,一般为磁盘的第一个扇区,上面有MBR的系统引导加载器,MBR为用户提供了一个菜单,允许用户选择要启动的系统或不同的内核版本,把用户选定的内核装载到RAM中的特定空间中,进行解压、展开,而后把系统控制权移交给内核。
而MBR的引导程序可分为三个部分,前446个字节为BootLoader的引导程序,复制引导启动操作系统;中间的64个字节为分区表,每16自己标识一个分区,一共只能有4个分区,分别为3个主分区和1个拓展分区;最后的2个自己为MBR区域的有效性标识,一般标识为55AA即有效

三. Grub启动引导阶段
GRUB(GRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操作系统 启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。
GRUB可分为两个版本,grub 0.x称为grub legacy;grub 1.x称为grub2。CentOS 6之前的系统一般为grub legacy,配置文件的路径为/boot/grub/grub.conf或/etc/grub.conf,CentOS 7 为grub2,配置文件的路径为/boot/grub2/gurb2.cfg或者/etc/grub2.cfg

 Grub的引导可以分为三步:
    Stage 1:mbr引导
    Stage 1_5:mbr之后的扇区,让stage1中BootLoader能识别stage2所在分区上的文件系统
    Stage 2:将主引导程序载入磁盘分区中(CentOS 6 /boot/grub/,CentOS 7 /boot/grub2)

四. Kernel初始化阶段
当系统读取到grub.conf文件中的内核启动参数后,内核随即进入内核初始化启动阶段。内核初始化进程分为四个步骤进行,首先内核会探测可识别到的所有硬件设备;接着为硬件设备加载硬件驱动程序,加载硬件驱动时,内核需要借助伪文件系统ramdisk进行加载驱动;当硬件驱动加载完成后,内核会以只读的方式挂载一个根文件系统,并且移交根文件系统给正常的系统;然后运行用户空间的第一个程序:/sbin/init,至此,内核的初始化阶段就完成了。

五. 进程引导阶段
在内核启动用户空间的第一个程序/sbin/init之后,init将全面接管centos系统,init也是所有其他进程的父进程;
Init程序在centos系统的不同版本中各不一样,在centos 5中,init程序是SysV init,其配置文件为/etc/inittab;在centos 6中,init程序是upstart,其配置文件为/etc/init/&.conf,而/etc/inittab文件仅用于定义默认运行级别;在centos 7中,init程序是systemctl,其配置文件为/usr/lib/system/或/etc/system/system/

Init引导阶段可分为四个部分,1.设置默认运行级别;2.运行系统初始化脚本,完成系统初始化;3.关闭对应级别下需要停止的服务,启动对应级别下需要启动的服务;4.设置登录终端(如需启动图形界面,则启动图形界面)

1.设置默认运行级别
Centos系统的运行级别是为了系统运行或维护等目的设定的运行机制,分为7个级别,分别是
0:关机,shutdown
1:单用户模式(single user),登录用户为root用户,无须认证,为维护模式
2:多用户模式(multi user),会启动网络功能,但不会启动NFS,为维护模式
3:多用户模式(multi user),完全功能模式,文件界面
4:预留级别,目前无特别适用目的,但习惯以同3级别功能使用
5:多用户模式(multi user),完全功能模式,图形界面
6:重启,reboot
级别3和5是centos系统的默认级别,如需要进行级别切换,可以使用init+#,进行级别切 换,如需查看当前所在的运行级别可以使用who -r或runlevel命令查看

2.运行系统初始化脚本
系统初始化的脚本为/etc/rc.d/rc.sysinit脚本,脚本执行后会设置下列信息
(1)设置主机名
(2)设置欢迎信息
(3)激活udev和selinux
(4)挂载/etc/fstab文件中定义的所有文件系统
(5)检测根文件系统,并以读写方式重新挂载根文件系统
(6)设置系统时钟
(7)根据/etc/sysctl.conf文件来设置内核参数
(8)激活lvm及软raid设备
(9)激活swap设备
(10)加载额外设备的驱动程序
(11)清理操作

  1. 关闭对应级别下需要停止的服务,启动对应级别下需要启动的服务
    当系统选择了启动的运行级别#后,init进程会在/etc/rc.d/rc#.d/运行对应的服务脚本,关闭对应级别下需要停止的服务,启动对应级别下需要启动的服务。
    K:要停止的服务,K##,优先级,数字越小,越是优先关闭,依赖的服务先关闭,而后关闭被依赖的
    S:要启动的服务,S##,优先级,数字越小,越是优先启动,被依赖的服务先启动,而依赖的服务后启动

4.设置登录终端(如需启动图形界面,则启动图形界面)
当init进程启动完对应级别下需要启动的服务后,将进入系统启动进程的最后一步,就是设置登录终端,如需要启动图形界面的,则启动图形界面,当登录终端启动完成后,centos系统的启动流程就完成了,输入正确的用户名跟密码后将可以正常使用centos系统。

以上为本人对于Centos系统启动流程的一些总结理解,如有不当之处,希望各位大神多多指导,感谢每位朋友的阅读。

以上是关于CentoOS 系统的启动流程的主要内容,如果未能解决你的问题,请参考以下文章

springboot启动流程构造SpringApplication实例对象

VSCode自定义代码片段——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

scrapy按顺序启动多个爬虫代码片段(python3)

Python篇---Python3.5在Centoos的安装教程--超实用