Linux(入门基础):111---BIOS、boot loader、内核加载流程

系统启动流程

当你按下电源按键后,计算机硬件会去主动地读取BIOS或UEFI BIOS来加载硬件信息以及进行硬件系统的自我检测,之后系统会主动地读取第一个可启动的设备(由BIOS设置),此时就可以读入启动引导程序了

启动引导程序可以指定使用哪个内核文件来启动,并实际加载内核到内存当中解压缩与执行。此时内核就能够开始在内存中活动,并检测所有的硬件信息与加载适当的驱动程序来使整台主机开始运行,等到内核检测硬件与加载驱动程序完毕后,一个最普通的操作系统就开始在你的PC上面运行了

主机系统开始运行后,此时Linux才会调用程序开始准备软件执行的环境,并且加载所有的操作系统运行所需要的软件流程,最后操作系统就会开始等待你的登录与操作

操作系统启动的流程,可以概括为以下方面

  • ①加载BIOS的硬件信息与进行自我检测,并根据设置取得第一个可启动的设备
  • ②读取并执行第一个启动设备内的MBR的启动引导程序(亦即grub2等程序)
  • ③根据启动引导程序的设置加载Kernel,Kernel会开始检测硬件与记载驱动程序
  • ④在硬件驱动成功后,Kernel会主动调用systemd程序,并以defaule.target流程启动:

systemd执行sysinit.target初始化系统及basic.target准备操作系统

systemd启动multi-user.target下的本机与服务器服务

systemd执行multi-user.target下的/etc/rc.d/rc.local文件

systemd执行multi-user.target下的getty.target及登录服务

systemd执行graphical需要的服务

一、BIOS

1.功能

  • 进行自我检测与读取boot loader

2.大致工作流程

  • ①系统启动之后,加载BIOS,并通过BIOS去加载CMOS的信息,并且借由CMOS内的设置值取得主机的各项硬件配置,例如CPU与接口设备的沟通频率、启动设备的查找顺序、硬盘的大小与类型、系统时间、各周边总线是否启动PnP、各接口设备的I/O地址。以及与CPU沟通的IRQ中断等的信息
  • ②取得上面这些信息后,BIOS开始自我检测。然后开始执行硬件检测的初始化,并设置PnP设备,之后再定义出可启动的设备顺序,接下来就会开始进行启动设备的数据读取了
  • ③BIOS会指定启动的设备好让我们可以读取此盘中的操作系统内核文件,由于不用的操作系统它的文件系统格式不同,此时就需要一个启动引导程序(boot loader)来处理内核文件加载问题,boot loader就在启动设备的第一个扇区,也就是MBR

二、boot loader

1.概念与特点

  • 启动引导程序,可以来加载内核文件
  • boot loader可以存在MBR中,也可以存在文件系统的boot srctor中。总之,boot loader最后的功能都是用来加载内很文件

2.MBR与boot loader的关系

  • 在安装Windows的时候,Windows系统会默认在MBR内会安装一份boot loader,并且在自己文件系统的boot sector内也会安装有boot loader。
  • 在安装Linux的时候,你可以选择将boot loader安装在MBR,也可以选择不安装在MBR中

3.启动扇区:boot sector

  • 每一个文件系统中都含有一个boot sector,并且这个启动扇区内也包含有boot loader。因此MBR中提供有选项功能,你可以选择启动哪一个文件系统的boot sector内的boot loader来加载不同的操作系统

4.内核文件加载结构图

Linux(入门基础):111---BIOS、boot loader、内核加载流程_第1张图片

过程详解

  • MBR内提供了选项功能,你可以选择不同的选项来加载文件系统
  • 例如:你可以选择加载Windows系统的boot sector内的启动引导程序,来最终进入Windows系统。也可以选择Linux系统的boot srctor内的启动引导程序,来最终进入Linux系统

 三、内核加载

  • boot loader读取内核文件后,接下来Linux就会将内核加压缩到内存中,并且利用内核的功能,开始测试与驱动个各周边的设备,抱愧存储设备、CPU、网卡、声卡等
  • 此时Linux内核会以自己的功能重新检测一次硬件,而不一定会使用BIOS检测到的硬件信息

你可能感兴趣的:(Linux(入门基础))