CentOS6/7启动流程简述

1. CentOS6/7启动流程简述

1.1 启动流程简述

  硬件启动流程 -> GRUB启动引导 -> 内核引导 -> 系统初始化 -> 启动终端。

1.1.1 硬件启动流程

  设备上电后,BIOS进行初始化,开始POST自检,自检通过后,BIOS依照设置的启动顺序启动,如果第一启动项是硬盘,则BIOS进行引导并加载MBR中BootLoader。
  a.打开电源
  b.BIOS初始化
    POST自检:检测硬件设备是否有影响正常开机的故障,如果不影响正常开机,则自检通过。
    确定启动设备:根据BIOS设置的启动顺序,依次检测启动项,如果硬盘是第一启动项,则BIOS读取硬盘的前512字节(第一扇区-MBR)到内存,引导并加载BootLoader。
  c.执行MBR中的BootLoader:(这里只考虑MBR分区,暂不考虑GPT分区)。
    MBR:Main Boot Record:主引导记录,共512字节。由BootLoader(主引导程序,446字节),DPT(硬盘分区表,64字节),硬盘有效标志(2字节)组成。
    BootLoader:负责从活动分区中装载并运行系统引导程序。CentOS6为grub,CentOS7为grub2,Win10为Bootmgr。
    DPT:4个分区表项,每个分区表16个字节,记录每个分区信息,所以MBR分区的硬盘最多四个分区。
    硬盘有效标志:MBR分区固定为0xAA55。

1.1.2 GRUB启动引导阶段

  grub程序加载执行并引导kernel程序。
CentOS6:
  a.Stage1阶段:Stage1阶段是写在BootLoader里的,主要作用是加载硬盘的512-1024字节(第二扇区)到内存中,引导进入Stage1.5或Stage2阶段,该阶段还不能识别文件系统。
  b.Stage1.5阶段:Stage1.5阶段是写在硬盘的第二扇区(文件系统格式文件的前512字节),连接Stage1阶段和Stage2阶段,该阶段可以识别文件系统,使得grub程序能够访问/boot/grub目录下的Stage2文件,并将Stage2加载到内存中执行。
  c.Stage2阶段:解析并执行/boot/grub目录下的配置文件grub.conf文件,然后将内核镜像加载到内存中,通过initrd程序建立RAMDisk虚拟根文件系统,最后将控制权转交给内核程序。

CentOS7
  a.加载boot.img:boot.img也是写在BootLoader里的,主要作用是加载core.img的第一扇区。
  b.加载core.img:core.img是由diskboot.img(硬盘启动、core.img的第一扇区)、kernel.img(grub的内核,非OS的内核)和大量动态模块文件组成。
  c.加载grub2程序、解析并执行/boot/grub/grub.cfg文件,加载内核镜像到内存中,建立虚拟根文件系统,转交内核引导。

1.1.3 内核引导阶段

  通过内存中的虚拟根文件系统,加载驱动,然后加载并切换根文件系统,切换完成后执行系统初始化程序。
  a.调用虚拟根文件系统中的init程序。
  b.加载基本硬件驱动并配置,是内核能够识别并加载根目录的桥梁。
  c.根据grub.conf/grub.cfg中的"root=…"创建一个根设备,将根文件系统以只读方式挂载至根设备,然后加载并切换真正的根文件系统。
CentOS6
  d.调用/sbin/init程序。
CentOS7
  d.调用/usr/lib/systemd/systemd程序。

1.1.4 系统初始化阶段

  通过初始化程序确认运行级别,初始化软件运行环境,加载系统服务。
CentOS6
  a.确认登录级别:读取/etc/inittab文件。0-6共7个启动级别,3是文本界面,5是图形界面。
  b.初始化用户空间环境:执行/etc/rc.sysinit程序初始化软件运行环境。如挂载所有在/etc/fstab定义的文件系统等。
  c.加载系统服务:执行/etc/rc.d/rc${runlevel}.d文件,根据运行级别加载和停止服务;执行/etc/rc.local文件加载用户自定义服务等。

CentOS7
  a.执行默认target文件:执行默认target配置文件/etc/systemd/system/default.target,该文件与运行级别相关。
  b.执行依赖的target文件:default.target -> graphical.target or multiuser.taret;graphical.target -> multiuser.taret -> basic.target -> sysinit.target。
  c.加载系统服务:启动multiuser.taret下本机服务及执行/etc/rc.local文件加载用户自定义服务等。

1.1.5 启动终端

  启动终端,用户登录shell。
  a.启动终端:默认打开6个shell终端,验证用户名密码,启动用户指定的shell。
  b.启动桌面:运行级别为5时,打开X-window。

参考:
  https://blog.51cto.com/zhang789/1851675
  https://www.cnblogs.com/diantong/p/10745372.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值