N25第七周学习总结(CentOS 7 系统启动流程)

CentOs系统启动流程

大纲

1、    什么是CentOs系统启动流程

2、    为什么要了解CentOS系统启动流程

3、    了解CentOS系统启动流程对我们有什么帮助

4、    CentOs系统启动流程详解

 

正题

1、    什么是CentOs系统启动流程

    CentOs系统启动流程是CentOs主机从开机加电自检到整个系统(包括应用程序)都处于一个正常工作的状态;

    整个流程从宏观可分为硬件与系统两个层面,而系统又可以分为内核空间和用户空间的启动,每一块都是按照某些规则自动运行。

 

2、    为什么要了解CentOS系统启动流程

因为作为一名Linux技术人员,了解CentOs启动流程是必要的,而且通过学习CentOs系统启动流程可以对CentOs工作原理有更深入的了解。

 

3、    了解CentOS系统启动流程对我们有什么帮助

在实际工作中,CentOs主机难免会出现无法启动或启动异常,而在了解了CentOs系统启动流程后,可以针对问题对症下药,而且通过学习CentOs系统启动流程后,可掌握部分的Linux工作机制,为以后的解决Linux故障打下扎实的基础。

 

4、    CentOs系统启动流程详解

在讲解CentOs系统启动流程前,先讲一下Linux系统的组成与运行中的系统环境分层,有助于掌握启动流程的原理。

 

Linux系统的组成:

     内核  +  根文件系统

 

     内核可实现以下功能:

                     进程管理、内存管理、网络协议栈、文件系统、安全功能、驱动程序。

                      内核是linux的整个核心,确切的说内核即是Linux,其他程序都是通过调度内核来实现其功能。

 

              运行中的系统环境分层:

                  内核空间 +  用户空间

                 

内核空间: 由内核代码组成,拥有系统级别权限,可直接更改硬件;

用户空间: 由各种应用程序组成,通过调用内核来完成各种复杂的任务。

 

CentOs系统的启动流程:

1、 POST:加电自检

它是由主板中的BIOS完成的,主要功用是检查主机的各个组件是否完好,例如:cpu、内存、硬盘、网卡、光驱等。

 

2、 Boot Sequence:启动顺序

这一步主要是根据Bios中的设置来按序查找各引导设备,第一个有引导程序的设备即为本次启动要用到的设备,绝大部分为硬盘启动;

 

    Bootloader:引导加载器,是一个微小的程序,众所周知MBR引导记录大小为512字节,其中前446字节就是Bootloader,主要用来引导用户选择要启动的系统或不同的内核版本;把用户选定的内核装载到RAM中的特定空间中,解压、展开,而后把系统控制权移交到内核;

      GRUB:是一个典型的BootLoader程序,因为MBR引导记录限制,所以GRUB分为两部分:

            1、在MBR引导记录中,大小为446字节,主要功用是引导启动存储在磁盘上的GRUB主体文件;

            2partition/boot/grub ,此为GRUB的主体,由此来引导用户。

 

3、 Kernel:加载内核

当用户选定启动的内核或系统,由Bootloader将内核加载到ram中特定空间中,解压、展开,而后把系统控制权移交到内核时,Kernel会开始自身初始化:

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

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

      注:(Kernel在内存中加载时,为了模拟系统环境,会生成一个ramdisk文件,来进行下一步操作,等到加载到真正的根文件系统是,就会推出ramdisk,切换到真正的根文件系统中去。)

   以只读方式加载根文件系统;(会涉及到根切换)

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

 

   init程序类型:

      centos5 :sysVinit

         配置文件: /etc/inittab

 

      centos6 :Upstart

         配置文件:/etc/inittab
被架空,主要为了兼容5

                     /etc/init/*.conf 主要

 

Centos 7 Systemd

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

 

ramdisk(内存上临时虚拟的系统)

 

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

                                ramdisk(虚拟磁盘,双缓冲,双缓存)–>ramfs(虚拟文件系统)

                        

                                centos5initrd

                                              工具程序:mkinitrd

                                centos6,7initramfs

                                              工具程序:dracutmkinitrd

 

系统初始化流程(内核级别):post(加电自检)–>BootSequence(启动顺序选择BIOS中实现)–>bootloder(引导加载器,MBR中实现)–>Kernel(加载内核,会生成ramdisk–>rootfs(以readonly方式加载根文件系统)–>/sbin/init(运行第一个应用程序(相当于小管家))

 

至此,内核空间就已经启动完毕,接下来讲解用户空间的启动流程:

 

   /sbin/init:

      是除了内核外拥有最高权限与级别的应用程序,因为所有的应用程序都是由init创建而来,相当于都是init的子进程。

 

   1、选择默认运行级别

在运行init后,他会根据配置文件定义的运行级别而启动

  /etc/inittab配置文件为例:(每行定义一种action以及与之对应的process

              idrunlevelsactionprocess

            id一个任务的标识符

            runlevels在哪些级别启动此任务;####,也可以为空,表示所有级别;

            action在什么条件下启动此任务;

            process任务;

 

        action

            wait等待切换至此任务所在的级别执行一次;

            respawn一旦此任务终止时,就自动重新启动之;

            initdefault设定默认允许级别;此时process省略;

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

               

                示例:

                    id:5:initdefault
默认以图形化界面启动

                    si::sysinit:/etc/rc.d/rc.sysinit  所有级别都以此脚本完成系统初始化方式;

               

   2、运行系统初始化脚本,完成系统初始化

      根据上一步的指定的rc.sysinit系统初始化脚本,完成以下操作:

         设置主机名;

         设置欢迎信息;

         激活udevSELinux

         挂载/etc/
fstab
文件中定义的所有文件系统;

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

         设置系统时钟;

         根据/etc/sysctl.conf文件的设置,来设定内核参数;

         激活lvm及软raid设备;

         激活swap设备;

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

         清理操作

 

3、 关闭对应级别下要停止的服务和启动对应级别下需要开启的服务

根据init配置文件:

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

           

意味着去启动或关闭/etc/rc.d/rcX.d/目录下的服务脚本所控制服务;

                K*要停止的服务;K##*,优先级,数字越小,越是优先关闭;依赖的服务先关闭,而后关闭被依赖的;

                S*要启动的服务;S##*,优先级,数字越小,越是优先启动;被依赖的的服务先启动,而依赖的访问后启动;

                   

                  注:rcX.d 中的X代表默认启动级别,如果之前定义的是5(图形界面),他会在rc.d里查找rc5.d里的服务来启动关闭;

rc脚本:接受一个运行级别为参数; 不适用os7

 

4、 设置登陆终端

其实到上一步时服务器已经完成了基本的启动,这一步主要是开启一个登陆终端,然后加载环境变量、和别名的配置文件,如果是图形界面的话,会启动图形界面,然后加载图形界面需要的各种插件。

 

 

总结:(用户空间的启动流程):/sbin/init(/etc/inittab)

  设置默认允许级别–>允许系统初始化脚本,完成系统初始化–>关闭对应级别下要停止的服务,启动对应级别下需要开启的服务–>设置登陆终端–>[启动图形终端]

 

 

最后是总结CentOS系统启动流程:

  post(加电自检–>  BootSequence(启动顺序选择BIOS中实现)–> bootloder(引导加载器,MBR中实现  –>  Kernel(加载内核,会生成ramdisk  –>  rootfs(以readonly方式加载根文件系统)–>  /sbin/init(运行第一个应用程序(相当于小管家)–>  设置默认允许级别  –>  允许系统初始化脚本,完成系统初始化  –>  关闭对应级别下要停止的服务启动对应级别下需要开启的服务 –>  设置登陆终端 –>  [启动图形终端]

 

原创文章,作者:N25_韩奇洋,如若转载,请注明出处:http://www.178linux.com/69177

(3)
N25_韩奇洋N25_韩奇洋
上一篇 2017-02-20
下一篇 2017-02-20

相关推荐

  • 初识MySQL(一)

        数据库(DATABASES)      数据库是一个单位或是一个应用领域的通用数据处理系统,存储有企业和事业部门、团体和个人的有关数据的集合,该集合中数据是从全局观点出发建立的,按一定的数据模型进行组织、描述和存储。其结构基于数据间的自然联系,从而可提供一切必要的存取路径,且数据不…

    Linux干货 2015-08-24
  • Linux学习之数据重定向

    大纲: 一、数据重定向定义 二、数据重定向分类 三、数据重定向作用 四、示例 一、数据重定向:命令的运行的结果默认输出在监视器上,重定向就是把这个结果输出到其它地方或其它文件。 二、数据重定向分类: 1.标准输出: (standard output,简称stdout,代码为 1 ,使用 > 或 >>):命令执行成功输出的正确提示信…

    Linux干货 2015-06-24
  • 使用yum源码编译安装程序

    需要的安装包:httpd-2.2.29.tar.bz2 1、安装develpment tools     yum groupinstall "Development Tools" 2、下载服务器中的http源安装包到本地,然后解压到指定文件夹中 lftp 10.1.0.1:/pub/Sources/…

    Linux干货 2016-08-24
  • 2016/08/07:文本处理工具及正则表达式

      在本次课程中,本以为和前面的内容难度差不多,内心毫无提防,但在做随堂练习的时候,被惨虐,不由得使我想起了高三时候拿到一张数学单元练习题,一道题也不会做的那种感觉,无助,彷徨,不甘。到了晚上总结了一下,还是有缘由可寻的。直接原因就是前面知识记得不牢固,也并未完全理解是和意思,尤其是tr命令,适用于何处,没按照5W1H方法来进行总结学习,导致应用的…

    Linux干货 2016-08-07
  • 文件相关操作练习

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限: 2、编辑/etc/group文件,添加组hadoop: 3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop: 4、复制/etc/sk…

    2017-11-17
  • Linux系统中的Inode节点表

    索引节点是指在许多类Unix文件系统中的一种数据结构。每个索引节点保存了文件系统中的一个文件系统对象的元信息数据,但不包括数据内容或者文件名。

    2017-11-16

评论列表(1条)

  • 马哥教育
    马哥教育 2017-03-30 14:05

    非常认真详细的总结,看好你,再接再励。