1、BIOS加电自检
计算机启动后,首先会进行固件BIOS的自检,即所谓的POST,然后把保持在MBR主引导记录中的主引导加载程序到内存中
2、加载主引导加载程序(MBR)
主引导加载程序通过分区表查找活动分区,然后将活动分区的次引导加载程序从设备读入内存并运行
3、加载次引导加载程序(GRUB)
次引导加载程序显示GRUB选择界面,根据选择把相应操作系统的内核加载到内存中。如果用户不进行选择,那么GRUB会在5秒后自动
启动grub.conf文件设置的默认操作系统,GRUB确定要启动的操作系统后,它就会定位相应的内核映像所在的/boot/vmlinuz-<内核版本>。
GRUB会把内存映像加载到内存中,由于内核映像并不是一个可执行的内核,而是经过压缩的内核映像,GRUB需要对内核进行解压,然后加载到内存中并执行。至此引导加载程序GRUB完成它的任务,它会把控制权交给内核映像,由内核继续完成接下来的系统引导工作。GRUB的配置主要通过修改/boot/grub/grub.conf文件来完成,介绍其中2个参数:
(1)root(hdx,y):设置内核所在的磁盘分区,GRUB的硬盘表示方法和Linux是不同的。GRUB是由0开始计数,(hd0,0)则表示第一块硬盘的第一个分区,而linux中的表示则是hda1;(hd0,1)表示第一块硬盘的第一个逻辑分区,而Linux中则是hda5
(2)设置内核文件的名称,放在/boot文件中
4、Linux内核映像
在内核的引导过程中,会加载必要的系统模块,以挂载根文件系统/,完成后内核会启动init进程,并把引导的控制器交给init进程
5、init进程
init进程会挂载/etc/fstab中设置的所有文件系统,并根据/etc/fstab文件来执行相应的脚本进行系统初始化,如设备键盘、字体、设置网络、启用应用程序等。init进程是linux所有进程的起点,内核在完成内核引导后,便会加载init进程,其进程号是1,init进程启动后,会初始化操作系统,并启动特定的运行级别(Runlevel)下的自动运行程序。用户可以通过更改相关配置文件或使用图形化配置工具服务配置,自定义需要在系统启动时自动运行的服务。
内核映像在完成引导后,便会启动init进程。init进程对应的执行文件为/sbin/init,他的是系统中所有进程的发起者和控制者,所有的进程都是由它所衍生。如果init进程出现问题,系统的其他进程也会随之而受影响,由于是系统中第一个运行的进程,所有init进程的进程号永远是1。
init进程主要有两作用
(1)作为所用进程的父进程参照对象
(2)运行不同级别的程序:init进程另一个作用就是初始化操作系统,在进入特定的运行级别