码迷,mamicode.com
首页 > 其他好文 > 详细

开机启动流程

时间:2017-09-05 13:33:27      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:boot   只读   开机启动流程   linux   电源   分区   自启动服务   grub   启动顺序   

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程序对系统空间进行一次初始化,启动一个登入终端让用户登入。

开机启动流程

标签:boot   只读   开机启动流程   linux   电源   分区   自启动服务   grub   启动顺序   

原文地址:http://www.cnblogs.com/gongll/p/7478048.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!