Linux启动探究
1.系统初始化
a.初始化流程
POST->MBR->GRUB->VMLinuz->Init->其他进程
POST:BIOS加电自检,启动设备选择,读取和执行第一启动设备
MBR:启动盘的第一扇区(446IPL+64分区表+2 magic number)中前446字节,
由于空间有限,无法完成复杂的启动,
一般将高级启动任务交给GRUB
GRUB:不受大小限制,有菜单,图形化和简单交互
VMLinuz:操作系统核心
Init:所有进程的祖先
2.启动过程细节:
BIOS自检成功,将启动盘的MBR中的启动程序复制到内存中,执行该启动程序(stage1),
接着执行/boot/grub目录下相应文件系统类型的stage1_5(Linux对应的文件为 e2fs_stage1_5,这里装载文件系统为之后核心读取RAM盘作准备),
然后是stage2(引导分区装载),GRUB包含丰富的启动设置,以菜单的方式指向核心和RAM文件系统,通过stage2,Linux加载核心,读取initrd(RAM盘,包含缩略的文件系统和必要的模块,通过将模块编译在RAM盘中,缩小了核心大小,同时为了配置的方便),为加载真正的文件系统做准备。