Linux的启动流程

一、Linux启动流程简介

BIOS阶段–>MBR–>GRUB–>Boot loader–>加载linux内核映像–>自定制启动程序 -->进入登录状态

二、Linux的启动流程详细介绍

1. BIOS加电自检

      BIOS(Basic Input / Output System),又称基本输入输出系统,可以视为是一个永久地记录在ROM中的一个软件,是操作系统输入输出管理系统的一部分。早期的BIOS芯片确实是”只读”的,里面的内容是用一种烧录器写入的,一旦写入就不能更改,除非更换芯片。现在的主机板都使用一种叫Flash EPROM的芯片来存储系统BIOS,里面的内容可通过使用主板厂商提供的擦写程序擦除后重新写入,这样就给用户升级BIOS提供了极大的方便。

      BIOS的功能由两部分组成,分别是POST码和Runtime服务。POST阶段完成后它将从存储器中被清除,而Runtime服务会被一直保留,用于目标操作系统的启动。BIOS两个阶段所做的详细工作如下:

  • 步骤1:上电自检POST(Power-on self test),主要负责检测系统外围关键设备(如:CPU、内存、显卡、I/O、键盘鼠标等)是否正常。例如,最常见的是内存松动的情况,BIOS自检阶段会报错,系统就无法启动起来;

  • 步骤2:步骤1成功后,便会执行一段小程序用来枚举本地设备并对其初始化。这一步主要是根据我们在BIOS中设置的系统启动顺序来搜索用于启动系统的驱动器,如硬盘、光盘、U盘、软盘和网络等。以硬盘启动为例,BIOS此时去读取硬盘驱动器的第一个扇区(MBR,512字节),然后执行里面的代码。实际上这里BIOS并不关心启动设备第一个扇区中是什么内容,它只是负责读取该扇区内容、并执行。
    接!

2. 加载主引导加载程序(MBR)

      它由三个部分组成,主引导程序(Bootloader)、 硬盘分区表DPT(Disk Partition table)和硬盘有效标志(55AA)。

      MBR(Master Boot Record),主引导记录,MBR存储于磁盘的头部,大小为512bytes,其中,446bytes用于存储BootLoader程序,64bytes用于存储分区表信息,最后2bytes用于MBR的有效性检查。
GRUB
 
      GRUB(Grand Unified Bootloader),多系统启动程序,其执行过程可分为三个步骤:

  • 第一步:这个其实就是MBR,它的主要工作就是查找并加载第二段Bootloader程序(stage2),但系统在没启动时,MBR根本找不到文件系统。
  • 第二步:识别文件系统
  • 第三步:GRUB程序会根据/boot/grub/grub.conf文件查找Kernel的信息,然后开始加载Kernel程序,当Kernel程序被检测并在加载到内存中,GRUB就将控制权交接给了Kernel程序。
3. boot loader

      bootloader就是在操作系统内核运行之前执行的的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,为加载内核做准备。 常见的bootloader有Grub、Lilo和spfdisk

4. 加载linux内核映像

      init程序就是进行OS初始化操作,实际上是根据/etc/inittab(定义了系统默认运行级别)设定的动作进行脚本的执行,第一个被执行的脚本为/etc/rc.d/rc.sysinit,这个是真正的OS初始化脚本,简单讲下这个脚本的任务(可以去看看实际脚本,看看都做了什么):

      linux内核获得控制权之后开始干自己的事

                  (1) 检测硬件   
                  (2)解压缩自己并安装必要驱动   
                  (3)初始化与文件系统相关的虚拟设备   
                  (4)完成之后,linux在进程空间里面加载init程序,下面轮到init干活

5. init进程

      init是所有进程的发起者和控制者,所有的进程都由此衍生。   
      init进程获得控制权之后,它会执行/etc/rc.d/rc.sysinit脚本,根据里面的代码设置环境变量、网络、启动swap、检查并挂载文件系统、执行其他初始化工作。

6. 自定制启动程序

      自定制启动程序 /etc/rc.local rc.local就是在一切初始化工作后,Linux留给用户进行自己定制开机启动的地方。你可以把你想设置和启动的东西放到这里。

7. 执行/bin/login程序,进入登录状态

你可能感兴趣的:(Linux的启动流程)