概述
CentOS的启动流程总体顺序如下(以CentOS6为例):
POST –> Boot Sequence –> bootloader(MBR) –> kernel –> 加载rootfs –> switchroot –> /sbin/init –> (配置文件:/etc/inittab,/etc/init/*.conf) –>根据init配置文件设置默认运行级别 –> 运行系统初始化脚本/etc/rc.d/rc.sysinit,完成系统初始化 –> 开启或关闭用户选定的对应级别下所对应的服务 –> 启动终端,打印登陆提示符。
1。POST加电自检
主要实现的功能是检测各个外围硬件设备是否存在而且能够正常运行起来,实现这一自检功能的是固化在主板上的ROM(主要代表是CMOS)芯片上的BIOS程序;
2。Boot Sequence(选择启动设备以加载MBR)
主要实现的功能是选择要启动的硬件设备,选择了之后就可读取这个设备上位于MBR里头的bootloader了。这一步的实现是这样的:根据BIOS中对启动顺序的设定,BIOS自己会依次扫描各个引导设备,然后第一个被扫描到的具有引导加载程序(bootloader)的设备就被定位要启动的引导设备。
3。加载bootloader(位于MBR中)
bootloader要实现的功能就是提供一个菜单给用户,让用户选择要启动的系统或不同的内核版本,然后把用户选择的内核版本加载到RAM中的特定空间,接着在RAM中解压,展开,而后把系统控制权移交给内核,即完成把内核加载到内存空间中。grub是bootloader中的一种。
4。Kernel自身初始化
kernel在得到系统的控制权后,首先要进行自身初始化。分为四步:
第一:探测可识别的所有硬件设备
第二:加载硬件驱动程序(有可能会借助于randisk加载驱动)
第三:以只读方式挂载根文件系统
第四:运行用户空间的第一个应用程序:/sbin/init
注意:ramdisk和内核一起由bootloader一同加载到内存当中的,这个文件是在第一次安装完系统后,根据各个不同的硬件接口的驱动组装打包起来的。为什么要加载这个伪文件系统呢?是因为在系统进行初始化第二步,加载的驱动文件在/boot/中,由于根还没有挂载,所以是访问不了的。因此就出现了ramdisk,提供一个伪文件系统,这个文件系统中就包括了各驱动程序。
5。init管理用户空间服务进程
init可以理解为是内核派来管理用户空间的使者。init这个初始化程序会跟据其配置文件执行一系列操作。虽然CentOS5,6,7的init配置文件各不相同,但总体的启动流程是不变的。
/sbin/init –>根据init配置文件设置默认运行级别 –> 运行系统初始化脚本/etc/rc.d/rc/sysinit,完成系统初始化 –> 关闭或启动用户选定的默认运行级别所对应的服务 –> 启动终端,打印登陆提示符
摘自:https://www.linuxidc.com/Linux/2017-03/141966.htm
https://www.cnblogs.com/swordxia/p/5476551.html
最后
以上就是天真服饰为你收集整理的Centos开机过程的全部内容,希望文章能够帮你解决Centos开机过程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复