Linux启动流程主要分成下面几步

  1. POST, 加电自检

  2. Boot Sequence,引导启动设备

  3. MBR启动引导程序

  4. 引导kernel和ramdisk

  5. 切换到真正的根,并运行/sbin/init


3. MBR启动引导程序

系统启动时会在启动的设备上查找是否有MBR(Master Boot Record), 如果有则运行这个引导程序.CentOS5或6用的是grub. 它主要是加载/boot分区硬盘的驱动, 以便来运行后面的kernel和ramdisk


4.引导kernel和ramdisk

在引导kernel前,还要运行最后一部分grub程序, 包括配置文件信息/boot/grub/grub.conf. 在通过这个加载不同的内核和ramdisk.

ramdisk的主要作用是加载后面根的分区硬盘, 这个和grub需要加载内核分区硬盘相似. ramdisk包含了根分区硬盘的驱动模块, 它其实是一个只存在于内存中的根系统.


5. 切换到真正的根,并运行/sbin/init

也就是运行一连串相关/sbin/init的脚本, 主要包括/etc/inittable -> /etc/rc.d/rc.sysinit -> /etc/rc.d/rc#.d->/etc/rc.d/init.d/下的脚本, #是根据系统的启动编号, 命令行启动是3, 图形启动是5.


和windows 7 启动流程比较

  1. POST, 加电自检

  2. Boot Sequence,引导启动设备

  3. MBR启动引导程序

  4. 运行保留分区上的Bootmgr+BCD, bootmgr相当于一个小型的windows系统, 而bcd就是配置文件, 可以用来显示并启动多个操作系统.

  5. 运行系统分区上的winload.exe,并加载内核.