
Linux开机启动流程
总体有4个阶段
- BIOS启动引导阶段
- GRUB启动引导阶段
- 内核阶段
- init初始化阶段
1.BIOS启动引导阶段
在服务器通电的瞬间,ROM只读芯片中的开机程序被触发,第一个阶段开始进行。
硬件自检
BIOS程序首先检查计算机硬件能否满足基本条件
寻找启动设备
当硬件检测通过后,BIOS把控制权交给下一阶段的启动程序,系统是从硬盘启动,还是从网络启动,还是从U盘启动
2.GRUB启动引导阶段
两个步骤
MBR
MBR里面存储了系统预启动信息、分区表和主引导记录签名
MBR引导CPU读取Boot Loader引导加载程序
Boot Loader
引导加载程序,grub启动之后首先用到/boot目录,读取/boot/grub/grub.conf显式启动菜单,具体的作用是以下
- 提供一块硬盘上所有安装的系统的选择菜单
- 载入操作系统的内核,移交控制权给内核
- 将控制权移交给其他系统的boot loader
3.内核阶段
GRUB加载内核,将initrd加载到内存进行初始化启动,Kernel会初始化系统中的设备并且做相关的配置工作,驱动加载后会转换到真正的系统根上面,开启系统的1号进程,到达系统初始化阶段
4.init初始化阶段
核心加载完毕之后,系统就准备好了,开始进行程序执行。
执行系统初始化脚本(
/etc/rc.d/rc.sysinit),对系统进行基本的配置。/etc/inittab确定运行级别,/etc/rc.d/rcX.d运行服务,/etc/rc.d/init.d运行脚本,最终展现用户登陆界面