centos启动流程

Posted 三千繁华01

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos启动流程相关的知识,希望对你有一定的参考价值。

1,centos启动过程中前半段启动流程图:

 

2.对流程的具体介绍:

  内核设计流程:
    单内核设计:linux
    把所有功能集成于同一个程序
    微内核设计:Windows , Solaris
    每种功能使用一个单独子系统

linux内核特点
    支持模块化:*.ko
    支持模块的动态装载和卸载:
    组成部分:
      核心文件:/boot/vmlinuz-VERSION-release
      ramdisk: 基于内存的磁盘
      centos5:/boot/initrd-VERSION-release.img
      centos6:/boot/initramfs-VERSION-release.img
      模块文件:/lib/modules/VERSION-release


centos 系统启动流程
  (1)POST:加点自检
    根据ROM:CSOM
    Bios:Basic Ipot and Output System
  (2)BOOT Sequence:引导程序
    按次序查找各个引导设备,第一个有引导程序的设备即为本次启动用到设备:

    BootLoader:引导加载器,程序 作用:找到操作系统所在的分区把内核加载到内存中并且把控制权正常转交给内核。
          windows:ntloader
          linux:    LILO:linux LOadeer
          GRUB:GRand Uniform Bootloader
    功能:提供一个菜单,允许用户选择要启动系统的或不同内核版本;把用户选定的内核装载到内存中的特定空间中,解压,展开,并把系统控制权移交给内核;
    MBR:
        446:bootloader
        64:fat
        2:55AA

   GRUB:
      bootloader :lst stage
      disk : 2nd stage

   kernel:
      自身初始化:
      探测可识别到的所有硬件设备
      加载硬件驱动程序:(有可能会借助于randisk加载驱动)
      以只读的方式挂在根文件系统
      运行用户空间的第一个程序:/sbin/init

  init程序的类型:
        SysV:init,Centos 5
        配置文件:/etc/inittab
        Upstart: init,centos6
        配置文件:/etc/inittab, /etc/init/*.conf
        Systemd:systemd, centos7
        配置文件:/user/lib/systemd/system , /etc/systemd/system

  ramdisk:
      内核的特性之一是:使用缓冲来回应对磁盘上的文件访问:
      ramdisk --> ramfs(现用)
      centos5:initrd,工具程序:mkinitrd
      centos6:initramfs, 工具:mkinitrd ,dracut

3.对init文件的具体介绍
    /sbin/init
      centos 5:
      运行级别:为了系统的运行或者维护等应用目的而设定
      0-6 : 7个级别
      0:关机
      1:单用户模式(root,无需登录),single,维护模式
      3:多用户模式,正常模式,文本界面
      4:预留级别,可用3级别
      5:多用户模式,正常模式,图形界面
      6:重启
      默认级别:3-5
      切换级别:init #
      查看级别:runlevel who -r

      配置文件:/etc/inittab
      每一行定义一种action以及与之对应的process
      id:runlevel:action:process
    action:
      wait:等待:切换至次级别运行一次
      respawn:重新启动 ,终止就重新启动
      initdefault;设定默认运行级别:processs省略:
      sysinit:设定系统初始化方式,此处一般指定/etc/rc.d/rc.sysinit;
      id:3:initdefault
      si::sysinit:/etc/rc.d/rc.sysinit


  chkconfig命令:
      查看服务在所有级别的启动或关闭设定情形
      chkconfig [--list] [name]

    添加:
      SysV的服务脚本放置于/etc/rc.d/init.d(/etc/init.d)
      chkconfig --add name :添加服务别添加的服务文件必须包好以下语句:
          #!/bin/bash
          #
          #chkconfig:LLL nn nn

    删除:chkconfig --del name
    修改指定的连接类型:
        chkconfig [--leve leves] name <on|off|reset>
          --level LLL:指定要设置的级别:省略时表示2345:

注意:正常级别下,最后启动的一个服务S99local没有连接至/etc/rc.d/init.d一个服务脚本,而是值相同为了/etc/rc.d/rc/local脚本,因此,不便或不需写为服务脚本放置于/etc/rc.d/init.d/目录,又想开机自动运行的命令,可以直接放置于/etc/rc.d/rc.local文件中;


4./etc/rc.d/rc.sysinit:系统初始化


          (1)设置主机名
        (2)设置欢迎界面
        (3)激活udev和selinnx
       (4)挂载/etc/fstab文件中定义的文件系统
        (5)检测跟文件系统,并以读写方式重新挂载根文件系统
        (6)设置系统时钟
       (7)激活swap设备
        (8)根据/etc/sysctl.conf文件设置内核参数
        (9)激活lvm及软raid设备
        (10)清理操作

总结:/sbin/init --> (/etc/inittab) --> 设置默认运行级别 --> 运行系统初始化脚本,完成系统初始化 --> 关闭对应下需要关闭的服务 ,启动需要启动的服务-->设置登录终端

 

以上是关于centos启动流程的主要内容,如果未能解决你的问题,请参考以下文章

CentOS 6开机启动流程实验篇

CentOS7启动流程

CentOS系统启动流程

centOS 6启动流程

Centos系统启动流程

centos 启动流程及grubinitramfs修复