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 19:12
下一篇 2016-12-04 20:16

相关推荐

  • Linux程序包管理

    软件包管理   API:Application Programming Interface POSIX:Portable OS                程序源代码–>预处理–…

    Linux干货 2016-08-29
  • linux基础知识:文件管理,bash特性

    本文简要介绍了文件类的管理命令,包括mv、cp、mkdir等等。还介绍了一些万用字符的用法。

    2017-12-12
  • 马哥教育网络班21期-第八周课程练习

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥:是将广播域划分为多个小的冲突域,但广播域没有变。工作在OSI模型的数据链路层,端口很少;基于软件;可以处理上层事务。集线器:对接收到的信号进行再生整形放大,扩大网络传输距离;属于纯硬件网络底层设备,工作在OSI模型的物理层,不具有交换机的”智能记忆”和”学习”的能力;也不具…

    Linux干货 2016-08-29
  • N26——第三周作业

    一、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可 [root@localhost ~]# who | cut -d ' ' -f1 | uniq root zhaoyujia 二、取出最后登录到当前系…

    Linux干货 2017-01-14
  • N25_第四周博客作业_leon

    N25_第四周博客作业_leon 1.    复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限复制[root@localhost ~]# cp -rp /etc/skel /home/tuser1   查看目录里文件的权限[root@loc…

    Linux干货 2017-01-16
  • vsftpd、nfs、samba

    I/O:网络、存储 存储: DAS:Direct Attached Storage 接口类型:“block”;只有块设备才能够进行分区格式化 设备:SATA,SAS;IDE,SCSI;USB; NAS:Network Attached Storage(网络附加存储) 接口类型:”file” 协议:CIFS(samba), NFS(Ne…

    Linux干货 2017-06-13