在刚才的启动过程中,我们早已晓得启动引导程序(BootLoader,也就是GRUB)会在启动过程中加载内核,然后内核能够替代BIOS接管启动过程。若果没有启动引导程,这么内核是不能被加载的。
本节,我们就来瞧瞧启动引导程序加载内核的过程,其实initramfs这个虚拟文件系统也是要靠启动引导程序调用的。在CentOS6.x中,启动引导程序默认是GRUB,GRUB是现今最为流行的启动引导程序,我们也用GRUB来说明启动引导程序的作用。
初期的LILO引导程序早已不是很常见了linux 开机启动 程序,GRUB相比来讲有好多优势,主要有:GRUB加载内核的过程GRUB的作用有以下几个:
根据启动流程,BIOS在自检完成后,会到第一个启动设备的MBR中读取GRUB。在MBR中拿来放置启动引导程序的空间只有446Byte,这么GRUB可以放在这儿吗?答案是空间不够,GRUB的功能十分强悍,MBRM空间是不够使用的。这么Linux的解决办法是把GRUB的程序分成了三个阶段来执行。
Stage1:执行GRUB主程序第一阶段是拿来执行GRUB主程序的,这个主程序必须置于启动区中(也就是MBR或则引导磁道中)。并且MBR太小了,所以只能安装GRUB的最小的主程序,而不能安装GRUB的相关配置文件。这个主程序主要是拿来启动Stage1.5和Stage2的。
Stage1.5:辨识不同的文件系统Stage2比较大,只能置于文件系统中(分区),而且Stage1不能辨识不同的文件系统,所以不能直接加载Stage2。这时须要先加载Stage1.5,由Stage1.5来加载不同文件系统中的Stage2。
还有一个问题linux 开机启动 程序,莫非Stage1.5不是置于文件系统中的吗?若果是,这么Stage1同样不能找到Stage1.5。虽然,Stage1.5还真没有放到文件系统中,而是在安装GRUB时,直接安装到紧随MBR以后的32KB的空间中,这段硬碟空间是空白无用的,并且是没有文件系统的,所以Stage1可以直接读取Stage1.5。读取了Stage1.5能够辨识不同的文件系统,能够加载Stage2。
Stage2:加载GRUB的配置文件Stage2阶段主要就是加载GRUB的配置文件/boot/grub/grub.conf如何安装linux,之后按照配置文件中的定义,加载内核和虚拟文件系统。接出来内核就可以接管启动过程中文linux操作系统,继续自检与加载硬件模块了。