CentOS 5和6的启动流程

  Linux:kernel+rootfs

    kernel:进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能

    rootfs:

      glibc

    库:函数集合,function,调用接口

      过程调用:procedure,无返回值。

      函数调用:function,有返回值。

    程序

    操作系统启动过程简要描述:开机后,想办法让内核运行起来,内核运行起来后让它加载根文件系统,运行根文件系统上的第一个应用程序init,init负责整个用户空间所有应用程序的启动、回收等。

  内核设计流派:

    单内核设计:Linux

      把所有功能集成于同一个程序;

    微内核设计:Windows,Solaris

      每种功能使用一个单独子系统实现;

  Linux内核特点:

    支持模块化:.ko

    支持模块的动态装载和卸载;

    组成部分:

      核心文件:/boot/vmlinuz-VERSION-release

        ramdisk:

          CentOS 5:/boot/initrd-VERSION-release.img

          CentOS 6:/boot/initramfs-VERSION-release.img

      模块文件:/lib/modules/VERSION-release  # 内核模块目录版本号必须与内核严格匹配。

CentOS 系统启动流程:

  POST:加电自检;

    ROM:CMOS

      BIOS:Basic Input and Output System

      ROM+RAM

  BOOT Sequence:

    按次序查找各引导设备,第一个有引导程序的设备即为本次启动用到的设备;

    bootloader:引导加载器,程序

      windows:ntloader

      Linux:

        LILO:LInux LOader

        GRUB:GRand Uniform Bootloader

          GRUB 0.X:GRUB Legacy

          GRUB 1.X:GRUB2

      功能:提供一个菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核;

    MBR:

      446:bootloader

      64:fat  File Allocation Table

      2:55AA

    GRUB:

      bootloader:1st stage

      disk:2nd stage

  kernel:

    自身初始化:

      探测可识别到的所有硬件设备;

      加载硬件驱动程序;(有可能会借助于ramdisk加载驱动)

      以只读方式挂载根文件系统;

      运行用户空间的第一个应用程序:/sbin/init

      init程序的类型:

        SysV:init,CentOS 5

          配置文件:/etc/inittab

        Upstart:init,CentOS 6

          配置文件:/etc/inittab,/etc/init/*.conf

        Systemd:systemd,CentOS 7

          配置文件:/usr/lib/systemd/system,/etc/systemd/system

      ramdisk:

        内核中的特性之一:使用缓冲和缓存来加速对磁盘上的文件访问;

          ramdisk --> ramfs

          CentOS 5:initrd,工具程序:mkinitrd

          CenOS 6:initramfs,工具程序:mkinitrd,dracut

    系统初始化:

      POST --> BootSequence(BIOS) --> Bootloader(MBR) --> kernel(ramdisk) --> rootfs(只读) --> init

/sbin/init

  CentOS 5:

    运行级别:为了系统的运行或维护等应用目的而设定;

      0-6:7个级别

        0:关机

        1:单用户模式(root,无须登录),single,维护模式;

        2:多用户模式,会启动网络功能,但不会启动NFS,维护模式;

        3:多用户模式,正常模式;文本界面;

        4:预留级别;可同3级别;

        5:多用户模式,正常模式;图形界面;

        6:重启

      默认级别:

        3,5

      切换级别:

        init #

      查看级别

        runlevel

        

        前一个为之前级别,后一个为当前级别。N表是None

        who -r

  配置文件:/etc/inittab

    每一行定义一种action以及与之对应的process

      id:runlevel:action:process  # id可以是任何字母组成,当然也可以用id本身。

        action:

          wait:切换至此级别运行一次;

          respawn:此process终止,就重新启动之;

          initdefault:设定默认运行级别;porcess省略;

          sysinit:设定系统初始方式,此处一般为指定/etc/rc.d/rc.sysinit;

      id:3:initdefault:

      si::sysinit:/etc/rc.d/rc.sysinit

      l0:0:wait:/etc/rc.d/rc 0

      l1:1:wait:/etc/rc.d/rc 1

      ...

      l6:6:wait:/etc/rc.d/rc 6

      说明:rc 0 --> 意味着读取/etc/rc.d/rc0.d/

        K*:K##*:##运行次序:数字越小,越先运行;数字越小的服务,通常为依赖到别的服务;

        S*:S##*:##运行次序:数字越小,越先运行;数字越小的服务,通常为被依赖到的服务;

        for srv in /etc/rc.d/rc0.d/K*;do

          $srv stop

        done

        for srv in /etc/rc.d/rc0.d/S*;do

          $srv stop

        done

      chkconfig命令

        查看服务在所级别的启动或关闭设定情形:

          chkconfig [--list] [--type type][name]

        添加:

          SysV的服务脚本放置于/etc/rc.d/init.d(/etc/int.d)

          chkconfig --add name

            #!/bin/bash

            #

            #chkconfig:LLLL nn nn

        删除:

          chkconfig --del name

        修改指定的链接类型

          chkconfig [--level levels] name <on|off|reset>

            --level LLLL:指定要设置的级别;省略时表示2345;

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

    tty1:2345:respawn:/usr/sbin/mingetty tty1

    tty2:2345:respawn:/usr/sbin/mingetty tty2

    ....

    tty6:2345:respawn:/usr/sbin/mingetty tty6

      mingetty会调用login程序

  

  /etc/rc.d/rc.sysinit:系统始化脚本

    (1)设置主机名;

    (2)设置欢迎信息;

    (3)激活udev和selinux;

    (4)挂载/etc/fstab文件中定义的文件系统;

    (5)检测根文件系统,并以读写方式重新挂载根文件系统;

    (6)设置系统时钟;

    (7)激活swap设备;

    (8)根据/etc/sysctl.conf文件设置内核参数;

    (9)激活lvm及software raid设备;

    (10)加载额外设备的驱动程序;

    (11)清理操作;

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

CentOS 6:

  init程序为:upstart,其配置文件:/etc/initab,/etc/init/*.conf

    注意:/etc/init/*.conf文件语法遵循upstart配置文件语法格式;

博客作业:系统启动流程;

启动系统时,设置其运行级别1;

Linux:Day13(上) CentOS系统启动流程的更多相关文章

  1. CentOS系统启动流程

    CentOS系统启动流程 POST --> Boot Sequence(BIOS) --> Boot Loader(MBR) --> kernel(ramdisk) --> r ...

  2. CentOS系统启动流程你懂否

    一.Linux内核的组成 相关概念: Linux系统的组成部分:内核+根文件系统 内核:进程管理.内存管理.网络协议栈.文件系统.驱动程序. IPC(Inter-Process Communicati ...

  3. (转)CentOS系统启动流程图文详解

    CentOS系统启动流程图文详解. 原文:http://www.linuxidc.com/Linux/2017-03/141966.htm 熟悉系统启动流程对于我们学习Linux系统是非常有帮助的,虽 ...

  4. linux基础之CentOS启动流程

    一.基本概念 内核设计流派: 单内核设计:Linux //所有功能集成于同一个程序 微内核设计:Windows,Solaris //每种功能使用一个单独子系统实现 Linux内核特点: 支持模块化:. ...

  5. 13.1 CentOS系统启动流程介绍

    CentOS系统启动流程介绍 本章我们将学习 Linux 启动流程和内核模块管理相关的内容.通过本章我们将学习如下内容: Linux 系统的组成及特点 CentOS 系统的启动流程 开机启动成 gru ...

  6. CentOs 系统启动流程相关

    CentOS的启动流程 1)加载BIOS 的硬件信息,获取第一个启动设备 2)读取第一个启动设备MBR 的引导加载程序(grub) 的启动信息 3)加载核心操作系统的核心信息,核心开始解压缩,并尝试驱 ...

  7. 图解CentOS系统启动流程

    当我们按下开机键后,系统背后的秘密我们是否了解呢?这里,我带大家探索一下linux系统开机背后的秘密. 1.加电自检     主板在接通电源后,系统首先由POST程序来对内部各个设备进行检查,自检中如 ...

  8. Linux基础知识之 系统启动流程

    [1]Linux启动的几个主要阶段 启动流程示意图

  9. 简述Centos系统启动流程

    1. Centos5 POST开机自检 运行CMOS中的BIOS程序,加载第一个启动磁盘的Bootloader 由Bootloader读取kernel 通过挂载临时根目录initramfs加载核心模块 ...

随机推荐

  1. 前端笔记之JavaScript(三)关于条件判断语句、循环语句那点事

    一.条件分支语句 条件分支语句,也叫作条件判断语句,就是根据某种条件执行某些语句,不执行某些语句. JS中有三种语法是可以表示条件分支的 1.1 if……else…… 条件分支的主力语法,这个主力语法 ...

  2. Mysql实战面试题

    一.索引 B+ Tree 原理 1. 数据结构 B Tree 指的是 Balance Tree,也就是平衡树.平衡树是一颗查找树,并且所有叶子节点位于同一层. B+ Tree 是基于 B Tree 和 ...

  3. Android Nine-patch(.9.png)小结

    最近在项目开发过程中,因为界面布局美化的需要开始接触到.9.png,无论是Goolge官方文档还是网上其他资料, 都给出了很多关于.9.png的基本介绍,.9.png基础文章推荐以下几篇: Googl ...

  4. springboot集成下,mybatis的mapper代理对象究竟是如何生成的

    前言 开心一刻 中韩两学生辩论. 中:端午节是属于谁的? 韩:韩国人! 中:汉字是谁发明的? 韩:韩国人! 中:中医是属于谁的? 韩:韩国人! 中:那中国人到底发明过什么? 韩:韩国人! 前情回顾 M ...

  5. 一统江湖的大前端(1)——PPT制作库impress.js

    <一统江湖的大前端>系列是自己的学习笔记,旨在介绍javascript在非网页开发领域的应用案例和发现各类好玩的js库,不定期更新.如果你对前端的理解还是写写页面绑绑事件,那你真的是有点O ...

  6. (摘)老司机也必须掌握的MySQL优化指南

    当 MySQL 单表记录数过大时,增删改查性能都会急剧下降,本文会提供一些优化参考,大家可以参考以下步骤来优化. 单表优化 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑.部 ...

  7. 使用 Lombok 优雅编码

    一.介绍和使用 Lombok 是一个 java 库,能以简单的注解形式来简化 java 代码,提高开发人员的开发效率. 常见使用在开发过程中需要写的 javabean,往往开发需要花时间去添加相应的 ...

  8. 预计2019年发布的Vue3.0到底有什么不一样的地方?

    摘要: Vue 3.0预览. 原文:预计今年发布的Vue3.0到底有什么不一样的地方? 作者:小肆 微信公众号:技术放肆聊 Fundebug经授权转载,版权归原作者所有. 还有几个月距离 vue2 的 ...

  9. sqlserver操作geography方法

    参考:https://www.cnblogs.com/ytwy/p/5977848.html http://desktop.arcgis.com/zh-cn/arcmap/latest/manage- ...

  10. 开源ERP-成功案例分析(3)

    Odoo用户概要 关于Odoo全球的用户,我们来看一些数据: Odoo目前全球有300万使用者 Odoo系统上每天新创建的数据库超过1000个 Odoo和Word.Excel.PowerPoint一样 ...