CentOS 6.x 开机启动流程


CentOS 6.x  开机启动流程 第1张

这个图就很完整的介绍了Linux的开机启动顺序
下面我就跟大家详细介绍下开机的一个启动流程
第一步,加载BIOS
当你打开计算机电源的时候,计算机就会首先加载BIOS信息,也就是所谓的加电自检。由此可见BIOS信息是如此的重要,计算机必须首先就找到它。这是因为BIOS中包含了CPU的相关信息、硬盘信息、内存信息、时钟信息、PnP特性等等。加电自检主要由硬件的部分来完成,BIOS被设计为用来初始化硬件组成,POST作为BIOS的组成部分,用于检验电脑硬件基本功能是否正常。如果POST失败,那么这个电脑也就不能使用。
第二步,读取MBR
BIOS加点自检如果确认硬件的基本功能正常后,会产生一个 BIOS 中断 INT 13H,该中断指向某个接入的可引导设备的引导扇区。
众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小为512字节。里面存放了预启动信息,分区表信息。系统找到MBR后,就会复制0X7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了。
第三步,Boot Loader
而BIOS所找到的包含有效的引导记录的第一个引导扇区将被装载到内存中,并且控制权也将从引导扇区转移到此段代码。

引导扇区是引导加载器真正的第一阶段。大多数 Linux 发行版本使用的引导加载器有三种:GRUB、GRUB2 和 LILO。GRUB2 是最新的,也是相对于其他老的同类程序使用最广泛的。系统通过读取内存中的grub配置信息,并依照此配置信息来启动不同的操作系统。
第四步,加载内核
内核的相关文件位于 /boot 目录下,这些内核文件可以通过其文件名进行识别,其文件名均带有前缀 vmlinuz。你可以列出 /boot 目录中的内容来查看操作系统中当前已经安装的内核。
在选定的内核加载到内存中并开始执行后,在其进行任何工作之前,内核文件首先必须从压缩格式解压自身。
系统会根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK, booting the kernel”。
系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。
第五步,设定运行等级
内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。
其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是“:id:5:initdefault:”,这就表明Linux需要运行在等级5上。Linux的运行等级设定如下:
0:关机
1:单用户模式
2:无网络支持的多用户模式
3:有网络支持的多用户模式
4:保留,未使用
5:有网络支持有X-Window支持的多用户模式
6:重新引导系统,即重启
第六步,init进程执行rc.sysinit
在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。
做好以上一切准备后,系统开始进入用户层的初始化阶段。
第七步,启动内核模块
依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块
第八步,执行运行级别目录下rcX.d下的脚本
执行/etc/rc.d/rc和/etc/rc.d/rcX.d目录下的脚本。 X为缺省运行级别。用来完成相应的初始化工作和启动相应的服务。
第九步,执行/etc/rc.d/rc.local
执行用户自定义启动脚本。你可以把你想设置和启动的东西放到这里
第十步,执行/bin/login程序,等待用户登录
此时,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了。

作者头像
南宫俊逸创始人

君子好学,自强不息~

上一篇:ITDB部署(固定资产管理系统)
下一篇:Nginx+php+fastcgi的原理与关系

相关推荐

4

发表评论

阿里云2021年 618 年中钜惠活动