Linux的启动流程我们一般分为五个阶段,那么第五个阶段是启动完成阶段,前面四个才是主要的启动阶段。
第一个是硬件的引导启动阶段:
按下开机键那一刻开始加电自检(POST power-onself-test),检查外围设备(内存,cpu,显卡,键盘)是否正常。
接着加载BIOS信息,像是开启CPU的虚拟化支持、调整设备启动项顺序等(硬盘、光盘、U盘);
然后读取MBR扇区(BIOS指定的硬盘的MBR,结束标志55aa)
第二个是grub的初始化阶段:
grub的代码分三个阶段被加载。
先是运行stage1,大小只有512字节,也就是一个扇区,所以stage1的作用只有一个,就是帮助我们找到stage1.5,并且将它加载到内存里。
接着加载运行stage1.5,识别/boot目录所在分区对应的文件系统的驱动,有了这个文件系统驱动,就可以加载运行stage2这种比较大的文件了,
stage2是grub的核心程序,会根据menulist或者用户的输入去选择加载kernel(修改配置文件信息可以修改加载的系统参数)
第三个是kernel内核引导阶段:
在内存中释放kernel使用的根文件系统,
切换到真正的根文件系统的/sbin/init进程,
(可以修改启动过程中需要用到的内核参数,比如网络协议参数、主机名等)
第四个是init的初始化阶段 CentOS6
init进程初始