Linux启动流程

一般Linux的启动流程分为以下几步:

  1. 加载BIOS(基本输入输出系统)的硬件信息,并确定第一启动设备;
  2. 读取第一个启动设备的MBR(Master Boot Record)的启动信息;
  3. 加载内核,即加载核心操作系统的核心信息,并解压缩,然后驱动所有硬件设备;
  4. 执行init程序;
  5. init执行rc.sysinit,系统初始化;
  6. 启动内核的外挂模块;
  7. init执行不同级别的脚本;
  8. init执行rc.local;
  9. 执行/bin/login,等待用户登录。

 

       下面就逐一都介绍一下。

    1.加载BIOS

   主机启动第一个读取的就是BIOS,BIOS记录了 CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。系统会根据这些信息,进行加电自检,然后初始化硬件检测,并确定第一个按启动设备。

   2. 读取MBR

   MBR大小是512字节,里面存储了分区信息,系统预启动信息等重要信息。一般这里面都是引导加载程序,如grub等等。加载程序是非常重要的,因为通过它,系统可以在开始阶段加载Linux的内核。

 

 3.加载内核

 通过引导加载程序之后,读取了内核文件信息,并对其解压缩。然后会利用核心驱动硬件设备。一般核心文件在/boot/vmlinuz..........。

这步骤完成之后,主机开始正常运行起来。

4.执行init进程

系统运行后,第一个执行的程序是init,/sbin/init.PID为1。

该过程主要是根据设置的运行登记启动不同的服务。如关机,单用户,多用户,重启等等。

5.init执行rc.sysinit

这步骤就是系统的初始化。包括环境变量,网络环境(主要读取/etc/network);载入内存设备(/proc)、设置系统时间等等。

6.启动内核的外挂模块

7、init不同级别的脚本

 在Ubuntu中主要是在/etc/rcX.d,X从0到6都有。里面的文件都是链接文件,指向/etc/init.d/。

/etc/init.d/中存放的都是服务或者任务的执行脚本。只要安装了一个程序(特别是服务程序daemon),并且它可以在系统启动的时候运行,那么它必定会在/etc/init.d/中有一个脚本文件。

 

8.rc.local

如果我们想在开始时候自动启动一些程序,可以将自定义的完整脚本名写到该文件中。开始时会与运行你的脚本。

 

9、执行行/bin/login,等待用户登录
此时,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了

 

 

--------EOF---------
微信分享/微信扫码阅读