一、加载BIOS
当我们打开计算机电源的时候,计算机首先会加载BIOS系统,BIOS一般存放在主板的ROM中,ROM即只读存储芯片。BIOS中包含了CPU的相关信息,设备启动程序信息,硬盘信息等等,通过加载BIOS系统,计算机得到了该去哪里读取硬件设备
二、读取主引导记录
主引导记录存放在硬盘的第一个扇区,里面存放了预启动信息和分区表信息。系统通过找到BIOS所指定的硬盘主引导记录后,就会将其复制到0x7c00地址所在的物理内存中,0x7c00是指BIOS加载MBR到内存时的起始地址
三、进行GRUB引导
在读取主引导记录时,被复制到物理内存里面的东西其实是Boot Loader,Boot Loader是操作系统内核运行前的一段程序,通过这个程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软件和硬件环境带到一个合适的状态,以便为最后调运操作系统内核做好正确的环境。说简单一点他就是系统启动引导程序,会引导操作系统,告诉你路该怎么走
四、加载Kernel(内核)
根据grub所设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作,系统将解压后的内核放在内存中,并调用一系列的初始化函数并初始化各种设备,完善Linux核心环境的建立
五、启动init进程,并依据inittab文件设定运行级别
内核加载完毕后,会启动系统的第一个守护进程init,然后通过该进程读取/etc/inittab文件,/etc/inittab文件里面存放这Linux运行等级,Linux常见的运行级别有:0 代表了关机模式 1 代表了单用户模式 2 代表了无网络支持的多用户模式 3 字符界面多用户模式 4代表了保留未使用模式 5 图像界面多用户模式 6 重新引导系统,重启模式
六、加载rc.sysinit
读取完运行级别后,Linux会执行第一个用户层文件/etc/rc.d/rc.sysinit 该文件功能是:设定了PATH运行变量,设定网络配置,启动swap分区,设定/proc、系统函数、配置selinux等
七、加载内核模块
读取完/etc/modules.conf文件及/etc/modules.d目录下的文件来加载系统内核模块,该模块文件可以后期添加或修改以及删除
八、读取rc.local文件
操作系统启动完相应服务之后,会读取执行/etc/rc.d/rc.local文件,他这个文件存放了开机要执行的命令或启动的服务
九、执行/bin/login程序
执行/bin/login程序,启动到系统登录界面,操作系统等待用户属于用户名和密码,即可登录到服务器上面