启动流程
开机自检(检查硬件是否有问题(BIOS))- 加载引导程序MBR/GPT – GRUB菜单 – 加载Linux内核 – 内核初始化使用systemd进程 – 读取运行级(/etc/systemd/system/default.target)- 系统初始化过程(网络、自动挂载……)(usr/lib/systemd/system/sysinit.target)- 启动服务 – 显示login界面(/usr/lib/systemd/system/getty.target)
1.加载BIOS
BIOS含有CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、pnp信息在BIOS将系统的控制权交给硬盘的第一个扇区之后,就开始由LINUX来控制系统了
2.读取MBR
硬盘上第0磁道第一个扇区:MBR(Master Boot Record),即主引导记录,存放了预启动信息、分区表信息
3.GRUB阶段
grub第1.5和第2阶段,信息默认存放在扇区中,如果使用grub-install生成的第2阶段的文件是存放在/boot分区中的。
为了加载内核系统,不得不加载/boot分区,而加载/boot分区,要有/boot分区的驱动,/boot分区驱动是放在/boot分区中的啊,我们好像进入死循环了,Linux是怎么解决的呢?就是靠放在1.5阶段中的数据,放在第一个扇区后的后续扇区中,第1.5阶段和2阶段总共27个扇区。
第1.5阶段:mbr之后的扇区,识别stage2所在的分区上的文件系统。
第2阶段:开机启动的时候看到Grub选项、信息,还有修改GRUB背景等功能都是stage2提供的,stage2会去读入/boot/grub/grub.conf或者menu.lst等配置文件。
4.加载内核
根据BL设定的内核映像所在路径,系统读取内存映像并解压缩,然后start_kernel();内核初始化