CentOS系统启动流程

虽然知识很基础,但是对于我们理解linux的工作机制是有帮助的。
因为在CentOS 5、CentOS 6以及CentOS 7使用的初始化程序init各不相同,虽然CentOS 6和CentOS 7也都有向后兼容,但在工作机制上还是存在一些差异,所以以下主要介绍CentOS 5/6系统启动流程。

启动流程图:

CentOS系统启动流程

1.加电自检POS

当主板加电后主板会检测CPU是否存在,而后CPU将唤醒并找到位于主板bios芯片中的特定地址,并且运行其中的指令,从而完成自检等各种相关操作。

2.BIOS引导BOOT Sequence

主板BIOS根据设定的引导设备(可按F2进BIOS设置,不同型号主板进BIOS按键不同)按次序查找各引导设备,第一个有引导程序的设备即为本次将启动的设备。

3.引导加载程序GRUB开始引导

由于GRUB功能较多体积太大MBR存不下,所以GRUB有部分文件是存放在磁盘分区上的。然而想要读取磁盘分区上的GRUB文件是需要分区的文件系统驱动的,所以在系统安装时GRUB程序会自动将分区所对应的文件系统的驱动放置在MBR后空闲空间中。GRUB程序启动时第一阶段会加载bootloader,随后第一点五阶段将加载第二阶段所在分区文件系统的驱动,最后就可以加载第二阶段完成引导程序启动加载用户所选择的操作系统或内核。(CentOS5,6使用的是GRBU0.X: GRUB Legacy版本,而CentOS7则使用的是完全重构后的GRUB 1.x: GRUB2版本)

4.内核kernel自身初始化

加载内核后内核会完成自解压,并开始探测可识别的所有硬件,然后加载硬件驱动(内核中自带的驱动,如果内核中没有的驱动将借助ramdisk加载驱动)并以只读方式挂载根文件系统,最后运行用户空间的第一个应用程序/sbin/init(CentOS 5为SysV: init CentOS 6为Upstart: init CentOS 7为Systemd)。

5.init初始化

当init程序运行进程起来后,系统启动的控制权将移交给init进程。然后init会去读取/etc/inittab配置文件,获取到默认运行级别。
设定好运行级别后init将会执行系统初始化脚本/etc/rc.d/rc.sysinit(CentOS 5),对系统进行基本的配置,以读写方式挂载根文件系统及其它文件系统。
之后init会执行/etc/rc.d/rc该文件定义了服务启动的顺序和K开头需要关闭的服务,S开头需要启动的服务,而具体的每个运行级别的服务状态是放在/etc/rc.d/rcn.d(n=0~6)目录下,所有的文件均链接至/etc/init.d下的相应文件。(正常级别下,最后启动一个服务S99local没有链接至/etc/rc.d/init.d一个服务脚本,而是指向了/etc/rc.d/rc.local脚本;因此,不便或不需写为服务脚本放置于/etc/rc.d/init.d/目录,且又想开机时自动运行的命令,可直接放置于/etc/rc.d/rc.local文件中)
在关闭对应运行级别下需要关闭的服务,启动需要启动服务后,启动虚拟终端/sbin/mingetty(级别3)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值