对于Linux系统来说,系统的整个启动过程分为六个部分,我们分别介绍如下:
第一部分:BIOS
所谓BIOS,也就是basic input ouput system,可以称之为基本输入输出系统,一般都是保存在主板上的BIOS芯片中。计算机启动时第一个运行的就是BIOS,它主要负责对硬件的检测,当电脑的硬件检测不通过时,电脑会发出滴滴的声音,这个时候我们就要对硬件进行检查了。
第二部分:MBR
所谓MBR,也就是Master Boot Recorder,我们可以称之为主引导记录。在分区的时候,硬盘的第一个扇区512字节存放的就是这个MBR,如果该设备可启动,那么该扇区的最后两个字节就应该是55AA,因此在寻找可启动设备时,如果该设备的最后两个字节是这个,那么该设备就是可启动的,BIOS在找到可启动设备后会执行其引导代码。MBR除去分区表的64字节,再除去最后的两个标志字节,则MBR的引导代码就是MBR的前446个字节,这446个字节存放的是启动引导程序的一些代码。
第三部分:GRUB
所谓GRUB,也就是GRand Unified Bootloader,它是一个多重操作系统启动管理器,它是现在Linux使用的主流的引导程序,它不仅可以用来引导Linux,还可以用来引导BSD、Mac OS、Windows等等,GRUB的配置保存在//boot/grub这个目录下,它里面有个stage1,这个文件就是MBR的一个备份,如果MBR出问题了,我们可以用他来恢复。当我们的GRUB引导程序运行完就要去加载文件系统中的操作系统内核,也就是kernel了,这个对于不同的操作系统可能就差距很大了。在我们执行完stage1之后会加载一些文件,它的目的就是去找操作系统的内核以及驱动信息,在这些执行完就会去执行stage2这个文件,它包含了整个操作系统的引导程序的代码。
第四部分:Kernel
MBR引导代码就是为了启动GRUB去加载操作系统的内核,而Linux系统的内核是放在/boot目录下的,我们在系统启动完之后可以用dmesg来查看本次启动时操作系统的内核输出信息,它和/var/log/demsg的内容一般是一样的。
第五部分:init
在操作系统加载完内核之后,这时操作系统上的第一个进程init就启动了,这个进程会一直启动,直到系统退出关机,而init进程会调用 /etc/rc.d/rc.sysinit这个脚本来对系统进行初始化,并且根据它来运行启动基本的服务。