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网络管理命令的使用

    网络管理命令 ip命令 配置Linux网络属性:ip命令,不过该命令的操作只是临时操作,重启以后配置丢失 ip-show / manipulate routing, devices, policy routing and tunnels ip [ OPTIONS ] OBJECT { COMMAND | help }    &n…

    Linux干货 2016-09-11
  • 线上多服务管理工具实例剖析

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1583156        公司线上对nginx、tomcat和jar包的java应用的服务管理脚本之前都是单独分离开…

    Linux干货 2016-08-15
  • 链接分析算法之:SALSA算法

      SALSA算法的初衷希望能够结合PageRank和HITS算法两者的主要特点,既可以利用HITS算法与查询相关的特点,也可以采纳PageRank的“随机游走模型”,这是SALSA算法提出的背景。由此可见,SALSA算法融合了PageRank和HITS算法的基本思想,从实际效果来说,很多实验数据表明,SALSA的搜索效果也都优于前两个算…

    大数据运维 2015-07-21
  • 萧田国给你五个2017GOPS北京站的参会理由!

    2017年7月28日,GOPS全球运维大会即将开幕,发起人萧田国将在主会场发表题为《运维如何延续自己的职业生涯》演讲,参加第七届北京站您会有哪些收益? 收益一: 【长达半天时间的培训式演讲】让您系统性掌握顶级互联网自动化运维体系 收益二: 【腾讯智能运维】传奇背后的细节,听了才知道 收益三: 与Facebook、Twitter、BATJ等运维大咖【面对面深度…

    Linux干货 2017-07-24
  • 文本处理工具

    文本处理工具 文件查看命令:cat  cat [OPTION]… [FILE]…  -E: 显示行结束符$  -n: 对显示出的每一行进行编号  -A:显示所有控制符  -b:非空行编号  -s:压缩连续的空行成一行 [root@centous1 soft]#&nb…

    Linux干货 2016-08-08
  • Linux基础知识(六)-vim编辑器,crontab计划任务,bash脚本循环

    1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; [root@localhost ~]# cp /etc/rc.d/rc.sysinit /tmp [root@localhost ~]# vim&nbs…

    Linux干货 2016-10-31