注:CentOS系统5.x,6.x和7.x的启动流程不同,所以本文仅讨论CentOS 5.x的启动流程。
1. POST加电自检
服务器在开机之后首先会先进行硬件的检测,在开机界面我们可能会看到检测硬盘,cpu或raid卡等信息,此界面即硬件自检界面。
2. BIOS引导
BIOS(BootSequence)用于通过指定的引导装置引导系统启动。
3. Bootloader(MBR)
在所有可以引导系统启动的介质都会存在引导启动程序,即MBR。当然现在也可能会有UEFI引导启动的系统,此处只讨论MBR引导启动方式。
- MBR为于硬盘0柱面0扇区的前446字节,随后的64字节为分区表信息和分区标识位。
此处即为系统引导盘的前512字节,这512字节如果被破坏的话系统将无法启动。
-
BootLoader分为多种类型,如LiLo,grub等,其中CentOS 系统采用的为grub。
- grub程序为于/boot/grub/目录下
其中存放有stage1,stage2,grub.conf等信息。
- stage1存放的是MBR的备份信息,如下:
- grub.conf即开机引导启动的菜单,其内容如下,用户也可以自己定义:
- grub启动系统分为多个阶段,首先会通过grub.conf文件寻找内核和initrd文件引导系统,然后内核通过initrd文件加载硬盘的根文件系统。
4./sbin/init
/sbin/init为系统的第一个进程,内核加载完毕之后会只读挂载rootfs,然后寻找/sbin/init,然后内核启动阶段结束,转由用户空间启动阶段。
5./etc/inittab
系统启动之后会运行/etc/inittab文件,此文件定义如下信息:
- 系统默认运行级别;
- 执行/etc/rc.d/rc.sysinit脚本进行系统初始化;
- 关闭对应级别下需要停止的服务,以k*开头,启动对应级别下需要运行的服务,以S*开头;
- 通过mingetty加载指定的tty;
- 加载图形终端;
- 定义ctrl+alt+del是否可以重启系统;
-
定义系统断电和电力恢复的动作;
其中/etc/rc.d/rc.sysinit定义如下内容: - 设置主机名;
- 设置欢迎信息;
- 激活udev和selinux;
- 挂载/etc/fstab文件中定义的所有文件系统;
- 检测根文件系统,并以读写方式重新挂载根文件系统;
- 设置系统时钟;
- 根据/etc/sysctl.conf文件设置内核参数;
- 激活lvm及软raid设备;
- 激活各swap设备;
- 加载额外设备的驱动程序;
- 清理等操作;
6. 详解系统服务加载过程:
系统所有的服务都存放于/etc/init.d/目录下,然而在/etc/rc.d/存放多个rc#.d命名的目录,这些目录定义的就是对应的运行级别下所有需要停止和启动的服务:
以上为3级别下需要启动和停止的服务,可以看到所有的服务都是以软连接的形式存在的。
以软连接存在原因:
- 所有服务脚本都存放在/etc/init.d/目录下
-
所有服务脚本都有一个共同过的特性,脚本开头必须定义如下两行信息:
#chkconfig 运行级别 启动优先级 停止优先级
description:*****
如atd服务的脚本:
-
此类脚本收chkconfig管理,当执行以下指定命令之后会在相应rc#.d目录下创建指定的以K*或S*开头的脚本软连接,系统就是通过加载这些脚本的软连接启动服务:
chkconfig –add 脚本名 #添加服务
chkconfig –del 脚本名 #删除服务
chkconfig –level 运行级别 on|off #定义指定服务在指定级别下是否运行
chkconfig –list #列出所有服务信息
以上便是CentOS 5.x的启动流程总结。
原创文章,作者:王子豪,如若转载,请注明出处:http://www.178linux.com/75515