开机启动流程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开机启动流程相关的知识,希望对你有一定的参考价值。

1 开机启动电源(加点自检 POST)

检查电脑硬件的问题,对于严重的问题则停机,对于故障则给出提示。

2 完成这个阶段之后,然后进入下一个阶段Bios( 首先BIOS下面有ROM芯片(,是用于计算机开机过程中各种硬件设备的初始化和检测的芯片)BIOS会对计算机的硬件进行检查,并且设置一个启动顺序,这里以启动流程为例,第一个启动的设备是硬盘设备)

3 启动硬盘 (BIOS程序会读取硬盘中的MBR中的grub1阶段的程序,这个程序就是bootloader程序,并且读取MBR之后的第一个扇区   512字节  读取前446bit  55AA 如果是说明这个引导有效 (grub1.5阶段程序),让grub1阶段能够识别grub2阶段所在的分区上的文件系统

4 grub2在硬盘的/boot/grub目录下,在读取到grub2阶段时,grub2就能够加载kernel文件(以vmlinuz开头的文件)到内存,并且展开。由于内核中没有驱动根文件系统所在分区的驱动,需要借助于initramfs.XXX.img文件(虚拟文件系统),让这个虚拟文件系统挂载到内核成为根文件系统,虚拟文件系统中有真正的根文件系统所在分区的驱动,能够识别根文件系统所在的分区,这样就使得内核可以通过只读方式挂载真正的根文件系统,并且卸载虚拟文件系统。那么现在就完成了内核空间的初始化工作(因为内存无法识别到根分区,没有驱动,但是可以驱动boot分区,initramfs虚拟文件系统下面有很多像根分区的文件,可以当做根文件系统,微型的linux操作系统,下面有一个真正的驱动可以找到真正的根分区。)

5 chroot 根切换 无法启动,内存太小,这个时候我们要卸载虚拟的文件系统,因为在boot下面的initramfs虚拟文件系统里面有一个真正的根文件系统驱动,识别到真正的根分区,这时候卸载虚拟文件根分区,挂载真正的根。

6 当真正的根文件系统挂载到内核上面的时候,有用户空间和内核空间,然后内核会呼叫 /sbin/init初始化程序首先会读取其配置文件/etc/inittab,将系统在默认运行级别下启动,并且读取/etc/rc.d/rc#.d/目录下的文件,以K开头的脚本文件停止对应的服务,以S开头的脚本文件开启对应的服务。

7 在所有的自启动服务启动运行之后,会执行/etc/rc.d/rc.sysinit程序对系统空间进行一次初始化,启动一个登入终端让用户登入。

以上是关于开机启动流程的主要内容,如果未能解决你的问题,请参考以下文章

CentOS 6开机启动流程实验篇

Android的开机启动流程

Linux如何启动流程?Linux启动流程详解

CentOS 开机启动流程

(转)CentOS 7系统详细开机启动流程和关机流程

CentOS开机启动流程简介