天涯共此良辰时

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

背景

  系统开机其实是一项非常复杂的程序,理解Linux开机的原理,将有助于在系统出问题时候能够很快速的修复系统,而且还能够顺利的配置多重引导系统!

 

第一阶段:硬件引导启动

  1. Power On    开机上电
  2. BIOS(Basic Input Output System)

    (1)BIOS读取硬件的配置的信息

      BIOS是写入到主板上的一个软件程序,是电脑系统主动执行的第一个程序。BIOS主动读取CMOS中的硬件配置信息。

    (2)BIOS开机自我测试

      BIOS读取完配置信息后,开始执行硬件检测并且初始化硬件。

    (3)BIOS读取MBR(Master Boot Record,主要开机记录区)

      BIOS主动分析电脑里面的存储设备,根据使用者的设定去取得能够开机的存储设备,并且到该设备里面去读取第一个扇区的位置。MBR共有512字节(其中446bytes放置最基本的开机的引导程序 boot.img)。那么为什么需要这个MBR,主要因为BIOS大小太小,功能真的有限!

      至此,BIOS将MBR加载到内存中,并且控制权限移交给MBR内的引导镜像(boot.img)。

      备注:MBR中包含引导镜像boot.img(可以称为grub2的第一阶段部分) ,分区表等信息。

 

 

第二阶段:Grub2启动引导

 

  1. stage1

    Grub2的第一阶段主要保存在MBR中,用汇编语言编写,也就是MBR中的引导镜像部分。其中包括基本的硬件设备初始化,定位并加载1.5阶段的代码。

    主要作用:加载1.5阶段代码到内存后,将控制权移交给1.5阶段

  2. stage1.5

    主引导记录跟磁盘的第一分区的开始位置之间遗留下62个512字节,该区域用于存储stage1.5的代码镜像core.img文件。该文件大小为49个512字节,故此区域有足够大小的空间存储core.img。因为有更大的存储空间,足够容纳一些通用的文件系统驱动程序,比如EXT,FAT和NTFS等。GRUB2的stage2能够放在标准的EXT文件系统内,即在/boot/grub2目录下。

    主要的作用:为stage2阶段准备环境,并且引导位于文件系统中stage2

  3. stage2

   stage2所有的文件都已经存放于/boot/grub2目录以及子目录之下。该阶段需要从/boot/grub2/i386-pc目录下加载一些内核运行时模块(*.mod模块),同时加载/boot目录下的内核文件以及/boot/grub2/grub.cfg配置文件。

   主要的作用:定位和加载Linux内核和虚拟文件系统/boot/initramfs到内存中,并转移控制权到内核。

   备注:配置文件详情

    

 

 

    总结:

    GRUB的功能:

      1.选择需要启动的内核或者系统,加载内核参数

      2.提供交互式接口

      3.基于密码保护

      4.加载自定义选项

 

第三阶段:内核引导

   Grub2加载内核,核心开始解压,启动一些最核心的程序。为了让内核足够的轻小,硬件驱动并没有放在内核文件里面。kernel借助内存中的initramfs虚拟根目录加载适当的驱动程序,最终释放虚拟文件系统,并挂

载实际的根目录文件系统,就能够开始后续的开机流程。 

   主要作用:硬件检测,卸载虚拟文件系统,挂载真实的根文件系统

   权限移交:内核将控制权限移交给systemd服务

 

第四阶段:systemd初始化阶段

   命令:

    [root@centos01 boot]# systemctl list-dependencies multi-user.target      # 查看依赖关系

    

    multi-user.target

       ├─basic.target    # 准备系统,加载主要的周边硬件驱动程序与防火墙任务

         ├─sysinit.target  # 初始化系统,侦测硬件,加载所需要的核心模块

          ├─local-fs.target  # 挂载fstab定义的分区

          └─swap.target  # 挂载swap分区

      ├─getty.target

        └─getty@tty1.service  # 提供终端登录服务,包括systemd-logind.service, systemd-user-sessions.service等服务

      ├─xxx.services

第五阶段:运行mingetty进程,显示登录界面

 

 

 

 

 

posted on 2020-08-19 16:59  天涯共此良辰时  阅读(180)  评论(0编辑  收藏  举报