标签: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