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

相关推荐

  • N28-第一周

    *计算机的组成以其功能: 当今计算机系统由硬件系统和软件系统两大部分组成。硬件系统是指计算机的物理设备,包括CPU,存储器,输入/输出模块等。软件系统则是各种程序和数据的集合。 硬件结构的基本构成: 处理器: 用于控制计算机的操作,执行数据处理功能,是计算机硬件的核心。由控制器,运算器和一组寄存器组成。 控制器:负责根据读入的指令决定计算机的操作 运算器:负…

    2017-12-06
  • Bash的I/O重定向及管道

    每周更新的博客定时派送啦,本周与大家一起分享的是重定向和管道 首先了解一下 读入数据:Input 输出数据:Output 我们来看一下重定向:  >  覆盖重定向 上面图中 > 文件名     创建空文件 touch 文件名 创建空文件 这两种方法都可以创建一个新的文…

    2017-07-21
  • grep,find等相关命令

    Q1:显示当前系统上root、fedora或user1用户的默认shell; ~]# grep -E "^root|^fedora|^user1" /etc/passwd | awk -F: '{print $1,$NF}' ro…

    Linux干货 2016-11-27
  • linux高级文件系统管理

    磁盘配额:         (1)如果存放的文件空间不足,虽然分区后不能直接扩容,但是可以迁移,下面以/home目录示例: 1、新建分区,同步分区表 /dev/sda62、mkfs.ext4 /dev/sda6             &n…

    Linux干货 2017-03-14
  • 文件挂载

    (1)创建目录 /mnt/file,利用dd命令创建一个大文件; (2)将文件格式化,这个文件有文件系统,相当于一个分区; (3)直接用blkid 看不到文件,可以用mount -o loop 挂载文件,挂载上后,文件就可以当作分区来用了; (4)挂载文件的优势在于,方便移动。分区不能随便移动而文件可以; centos6是要加-o loop的 centos7…

    2017-05-03
  • 网络21期第十周博客作业

    网络21期第十周博客作业 1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) Centos6启动流程:       POST加电自检 —> BOOT Sequence —> 加载内核启动系统  &…

    Linux干货 2016-09-15