解说Linux启动流程


一:概述 

    关于linux的系统启动流程我们可以从下面图片中的流程一步一步展开,其实linux系统的启动过程中,我们可以比喻为一个接力赛,计算机的不同模块负责这个接力赛中接力棒的交接(为了更好的理解,暂且这样比喻吧可能有点不是太恰当,呵呵

 二:剖析启动过程(整个过程将围绕上面的图片流程详细展开)

  1. 当我们打开计算机电源的时候,随后会听到滴的一声,linux系统开始了一段紧张有序的接力大赛,开始鸣枪(POST-power on self test)自检开始),这个过程中主要是检测我们的计算机硬件设备比如:CPU,内存,主板,显卡,CMOS等设备是否有故障存在,如果有硬件故障的话将按两种情况理:对于严重故障(致命性故障)则停机,此时由于各种初始化操作还没完成,不能给出任何提示或信号;对于非严重故障则给出提示或声音报警信号,等待用户处理),如果没有故障,POST完整自己的接力任务,将尾部工作交接给BIOS处理
  2. BIOS接过接力棒后,首先会在一个Boot Sequence程序中搜索可以让系统启动的引导设备(比如我们有时在BIOS中设置为从硬盘启动,或者从CD-ROM启动等等)

     这时如果BIOS找不到可以引导的设备及相关程序后,便会启动失败,如果顺利      的找到了相关设备及程序,那么BIOS将继续交接给启动设备中的                  MBR(Master Boot Record)主引导记录


  3. MBR程序找到其前446个字节的Boot Loader 

  4. Boot Loader 找到gub程序

     在这个过程的主要是靠Grub的引导开始,将贯穿到系统初始化开始前

  1. grub引导又分为两个阶段 stage1:主要是Boot loader  
  2.  
  3.                      stage 1.5:过渡  
  4.  
  5.                  stage2:主要是/boot/grub (这三个阶段在内部实现接力)    

从上面/boot目录中可以发现linux的内核(VMlinuz),grub,inird程序都在该目录下) 

  1. 在/boot/grub/下面我们看到了熟悉的stage1,stage2及grub工具的配置文件  grub.conf,呵呵, 
  2.  
  3. 那么grub.conf 是什么东东呢?呵呵,下面我们看下一该配置文件 

  1. 从grub的配置文件中我们看到了我们熟悉的开机图片 
  2. 在启动菜单中 
  3. root(hd0,0)告诉grub在什么地方引导内核及initrd程序 
  4. 然后说明kernel及initrd的位置 

从上面的grub.conf 的引导配置文件中得知,下面grub该找内核及initrd程序了,从启动菜单中得知相关位置信息后,开始步入引导kernel了,这就是kernel的初始化过程,MBR开始交接给kernel

  • 1
  • 2
  • 下一页

相关内容