CentOS 5.0系统启动流程

注:CentOS系统5.x,6.x和7.x的启动流程不同,所以本文仅讨论CentOS 5.x的启动流程。

1. POST加电自检

服务器在开机之后首先会先进行硬件的检测,在开机界面我们可能会看到检测硬盘,cpu或raid卡等信息,此界面即硬件自检界面。

2. BIOS引导

BIOS(BootSequence)用于通过指定的引导装置引导系统启动。

3. Bootloader(MBR)

在所有可以引导系统启动的介质都会存在引导启动程序,即MBR。当然现在也可能会有UEFI引导启动的系统,此处只讨论MBR引导启动方式。

  1. MBR为于硬盘0柱面0扇区的前446字节,随后的64字节为分区表信息和分区标识位。

CentOS 5.0系统启动流程
此处即为系统引导盘的前512字节,这512字节如果被破坏的话系统将无法启动。

  1. BootLoader分为多种类型,如LiLo,grub等,其中CentOS 系统采用的为grub。 

    • grub程序为于/boot/grub/目录下

CentOS 5.0系统启动流程
其中存放有stage1,stage2,grub.conf等信息。

  • stage1存放的是MBR的备份信息,如下:

CentOS 5.0系统启动流程

  • grub.conf即开机引导启动的菜单,其内容如下,用户也可以自己定义:

CentOS 5.0系统启动流程

  • grub启动系统分为多个阶段,首先会通过grub.conf文件寻找内核和initrd文件引导系统,然后内核通过initrd文件加载硬盘的根文件系统。

4./sbin/init

/sbin/init为系统的第一个进程,内核加载完毕之后会只读挂载rootfs,然后寻找/sbin/init,然后内核启动阶段结束,转由用户空间启动阶段。

CentOS 5.0系统启动流程

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命名的目录,这些目录定义的就是对应的运行级别下所有需要停止和启动的服务:

CentOS 5.0系统启动流程
以上为3级别下需要启动和停止的服务,可以看到所有的服务都是以软连接的形式存在的。 
以软连接存在原因:

  • 所有服务脚本都存放在/etc/init.d/目录下
  • 所有服务脚本都有一个共同过的特性,脚本开头必须定义如下两行信息: 
    #chkconfig 运行级别 启动优先级 停止优先级 
    description:***** 
    如atd服务的脚本:

CentOS 5.0系统启动流程

  • 此类脚本收chkconfig管理,当执行以下指定命令之后会在相应rc#.d目录下创建指定的以K*或S*开头的脚本软连接,系统就是通过加载这些脚本的软连接启动服务: 
    chkconfig –add 脚本名 #添加服务 
    chkconfig –del 脚本名 #删除服务 
    chkconfig –level 运行级别 on|off #定义指定服务在指定级别下是否运行 
    chkconfig –list #列出所有服务信息

以上便是CentOS 5.x的启动流程总结。

原创文章,作者:王子豪,如若转载,请注明出处:http://www.178linux.com/75515

(0)
王子豪王子豪
上一篇 2017-05-14
下一篇 2017-05-14

相关推荐

  • 系统基础之shell脚本编程详解4(数组及字符串处理,变量赋值和配置文件)

    系统基础之shell脚本编程详解4(数组及字符串处理,变量赋值和配置文件)     今天来讲shell脚本编程的最后一些内容,数组及字符串处理,变量赋值和配置文件.这些内容也是我们经常在工作中使用到的知识点.下面让我们来详细了解下: 数组:   程序=指令+数据        &…

    Linux干货 2016-08-24
  • LAMP

    练习:编译安装amp,提供两个基于主机名的虚拟主机      (1) https, 部署pma      (2) 部署wordpress 编译安装: mariadb: # wget 10.1.0.1:/pub/Sources/7.x86_64/mariadb/…

    Linux干货 2016-10-12
  • 脚本编程之循环:for,while,until

    shell中的循环语句一般有: for   while   until 一、for     for 变量名 in 列表;do         循环体     d…

    Linux干货 2016-08-18
  • N26-博客作业-week7

    1、创建一个10G分区,并格式为ext4文件系统;      (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;     ~]# fdisk /dev/sda Welcome to fdisk (util-li…

    Linux干货 2017-03-19
  • 网络管理命令

    linux网络属性     ifconfig命令家族:ifconfig,route,netstat ifconfig命令:接口及地址查看和管理     ifconfig [interface]:     ifconfig -a:显示所有接口…

    Linux干货 2016-09-13
  • linux基础服务之DNS

    一、DNS简介 1、DNS:Domain Name System(域名系统),是互联网上IP和域名相互解析的分布式层级结构的数据库。DNS的出现能够使用户更好的更加方便的访问互联网,不用记IP地址来访问互联网,可以通过人类更容易记住域名来访问互联网。 2、DNS是一种C/S架构的服务器,客户机用于一个名字对应的地址,而服务器是为客户机提供查询的,查询由两种机…

    2017-05-29