CentOS启动流程

  我们介绍一下CentOS操作系统的详细启动流程,了解这些启动流程之后,我们可以实验做一个小型的Linux。

763_f97_e38.jpg

1、Linux的组成

  我们Linux操作系统主要内核和根文件系统来组成的,那么内核的主要功能分别有:进程管理、内存管理、网络协议栈、文件系统、安全功能、驱动程序组成,那么部署内核的地方就叫核心文件那么核心文件称之为bzimage,在/boot分区目录下,名为vmlinuz-VERSION,它是一个可引导的、压缩的一个内核,是开机时加载的重要的一环。它们的组成部分分为两类,一类内核文件,一类时模块文件,内个文件在/boot/vmlinuz-VERSION-realease,而模块文件在/lib/modules/VERSION-release中,如果我们编译安装新的内核版本时,系统将会有多个目录版本。

2、Linux的运行环境

  在内核的运行的环境当中可分为两个层次,一类是内核空间,一类是用户空间,内核空间主要是内核代码,运行时作为系统调用,而用户空间主要是那些应用的空间,运行时可作为进程或线程。Linux的内核设计是单内核的设计,内核设计流派总的来说分为两类,一个是单内核设计,而单内核的设计是把所有功能集成与同一个程序,另一类是微内核设计,就是将每种功能都由它的子功能来实现,其采用微内核的操作系统有:Windows和Solaris。  
但是Linux内核又汲取了微内核的特性,其特性就是支持模块化,意思就是在用户编译内核
duKnnmM.png时,不必要把所有功能全部都打在一个内核文件中,我们可以把某个功能编译成一个模块放在那个路径里中,等到我们需要时可以安装,不63918611gw1f8xtex8dz4j209u0hwwfa.jpg需要重新编译,所以,Linux的内核支持模块运行时动态装载与卸载。  
  再说一下ramdisk,它是一个辅助性的文件,在CentOS 5中名字叫作Sysn init,配置文件在
/etc/inittab,主要作用就是设置运行级别然后启动第一个进程init,Sysv init早期在Unix上流传下来的,不过由于启动太慢,主要不是并行启动,且还要缓冲,所以在CentOS
 6中使用的Upstart,它是一个并行启动的一个程序,早期用于ubuntu,后来用于CentOS上,它的启动速度比CentOS快的很多,因为它的CentOS 5的
initrd在CentOS 6上换成了initramfs由原来的模拟磁盘换成了模拟文件系统,这是一种提速机制,一旦转换成文件系统的话就不需要进行缓冲了。  
  现在的CentOS 7中,采用了全新的一种启动软件,叫systemd,与之前的版本改变很大,管理起来也是全新的模式,不过启动速度比5和6还要快,因为它只是检测,检测到在的话,就检测下一个程序,并不让这个程序启动起来。

3、Linux的启动流程

  现在说一下CentOS的启动流程,这里主要还是以6为主,且只使用PC架构。

3.1、POST加电自检

  第一步,在我们开机时,或者说我们插上电时,PC机会自我检查一下它们的零件组成结构有没有缺失,如果零件缺失那么我们的主机岂不是启动不了啦?其实duKnnmM.png对于启动PC来说每一步都挺重要的。那么有谁来管理?在我们的主板上有个CMOS断电时那个纽扣电池来给它们供电保持运行,在CMOS中有个小型系统,叫做BIOS,叫基本输出输出系统,如果说对硬件设置或者说开启支持虚拟化的话,就要进入这个小型系统设置,以上这些叫加电自检(POST)

3.2、Boot Sequence(启动次序)

  第二步就是它的启动次序  (Boot Sequence)按次序查找引导设备,第一个有引导程序的设备就在本次要用到的设备,其主要的程序是bootloader,它是一个引导加载器,是安装在U盘、硬盘上的第一个程序,那么我们操作系统在启动时,通常都是靠bootloader来启动的,在MBR上占据446个字节,通常我们在安装系统时,操作系统的引导启动程序都写进这个bootloader里,Windows和Linux都使用不同的引导程序,前者使用ntloader,后者使用的时grub,我们来讲后者。

3.3、MBR

  第三步MBR叫做主引导记录,共有512个字节,位于第一个扇区上,这个扇区是不能更改的,其中446个字节是我们在安装操作系统时写的bootloader,64位是分区表,最后2位是验证。  
在我们安装Linux时,安装引导程序的叫grub,以下共分为三段:  
  1st_stage:主要写进了bootloader 
  1.5_st_stage:让1st_stage区识别2stage所在的系统分区(/boot/grub)  
  2_stage:放置在某个分区的路径下(/boot/grub)  
  功能时提供一个菜单界面,允许用户选择不同的操作系统与内核,一旦选择完成之后,内核就放在一个RAM中一个特定的空间里,展开与解压之后将系统控制权移交给内核。

3.4、Kernel

  第四步Kernel是Linux的核心,它是将硬件调用起来,并且驱动它们发挥它们的用处的一个程序,用户在grub中选择完成之后,内核就会开始自身初始化,然后探测可识别所有的硬件设备,之后我们借助ramdisk来进行加载驱动(ramdisk是一个辅助性的文件,它是一个在内存中的模拟根文件系统用来使内核初始化,这个文件可以没有,不过前提是你的内核能够直接驱动rootfs下的所有设备。),以只读方式挂载根文件系统,等内核加载完成之后,系统就开始施行根切换。并且运行用户空间中的第一个程序:/sbin/init。

3.5、init

  我们都说上帝是不管这些个人间的那些俗物,就像内核一样,它也并不管用户空间里所运行的程序,所以就派出了一个大管家,叫做init,它是所有进程的父进程,并且就是内核初始化之后在用户空间中运行的第一个程序,它的程序类型在各个版本上也有所不同,在CentOS 5 中叫sysv init,配置文件在/etc/inittab,在CentOS 6中使用的时Upstart,不过为了兼容CentOS 5,其配置文件也是在/etc/inittab中,不过和5不同的是,里面的内容已经很少了,真正的配置文件在  /etc/init/*.conf,新版的CentOS 7使用的是使用的时systemd,就连父进程由原来的init改成了systemd,其配置文件在/usr/lib/systemd/system以及/etc/systemd/system里面有诸多文件,可需备份。我们是根据这个配置文件的默认运行级别在关闭某些服务,之后在开启这个级别下的服务,启动登陆终端,登陆成功之后运行CTL或者是GUI界面,这幅图供参考。

6c9c694dbfcedfb1effa1c2665cb73f9_03fe4502-7eb5-4bc2-93b0-11106ca493f3.png

原创文章,作者:刘 祥宇,如若转载,请注明出处:http://www.178linux.com/62552

(1)
刘 祥宇刘 祥宇
上一篇 2016-12-04
下一篇 2016-12-04

相关推荐

  • Linux三剑客之grep使用入门指南

    Linux的grep是一个具有强大功能的文本搜索工具,正确的学习和使用,能很大程度上提高工作效率,减轻运维工作所面临的压力。

    2017-09-09
  • zabbix快速创建筛选(sql操作)

        公司由于大量业务调整,尤其是服务器功能和性能的转变,监控也跟随这变化,其中操作最为繁琐的当数zabbix筛选(相信各位从页面添加的都深感痛苦)于是有了本文。     本文采用的方法是sql操作(由于本人不会php等,无法写程序直接调用官方api,所以,嘿嘿,不解释,同时也希望各路大…

    Linux干货 2015-12-17
  • 内部命令与外部命令——Linux基本命令(3)

    1.     内部命令与外部命令 内部命令:由shell自带的,而且通过某命令形式提供 内部命令在系统启动时就调入内存,是常驻内存的,所以执行效率高。 外部命令:在文件系统路径下有对应的可执行程序文件 外部命令是系统的软件功能,用户需要时才从硬盘中读入内存。 2.     命令类…

    2017-07-13
  • Linux文件查找命令find和压缩解压缩

    概述     Linux系统上一切皆文件,那么随着时间的推移和管理的服务器增加,在众多的文件中,如何找到我们需要的文件,这就需要用到文件查找命令了。本章就分享下关于文件查找命令的一些内容和压缩解压缩的相关内容。     具体分为一下几个部分:    …

    Linux干货 2016-08-16
  • N25-第6周博客作业

    N25-第6周博客作业 vim:     模式化的编辑器         基本模式:             编辑模式,…

    Linux干货 2017-01-09
  • Linux 学习基本

    环境配置主要分硬件和软件两种

    2018-03-26