Linux启动流程
一般Linux的启动流程分为以下几步:
- 加载BIOS(基本输入输出系统)的硬件信息,并确定第一启动设备;
- 读取第一个启动设备的MBR(Master Boot Record)的启动信息;
- 加载内核,即加载核心操作系统的核心信息,并解压缩,然后驱动所有硬件设备;
- 执行init程序;
- init执行rc.sysinit,系统初始化;
- 启动内核的外挂模块;
- init执行不同级别的脚本;
- init执行rc.local;
- 执行/bin/login,等待用户登录。
下面就逐一都介绍一下。
1.加载BIOS
主机启动第一个读取的就是BIOS,BIOS记录了 CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。系统会根据这些信息,进行加电自检,然后初始化硬件检测,并确定第一个按启动设备。
2. 读取MBR
MBR大小是512字节,里面存储了分区信息,系统预启动信息等重要信息。一般这里面都是引导加载程序,如grub等等。加载程序是非常重要的,因为通过它,系统可以在开始阶段加载Linux的内核。
3.加载内核
通过引导加载程序之后,读取了内核文件信息,并对其解压缩。然后会利用核心驱动硬件设备。一般核心文件在/boot/vmlinuz..........。
这步骤完成之后,主机开始正常运行起来。
4.执行init进程
系统运行后,第一个执行的程序是init,/sbin/init.PID为1。
该过程主要是根据设置的运行登记启动不同的服务。如关机,单用户,多用户,重启等等。
5.init执行rc.sysinit
这步骤就是系统的初始化。包括环境变量,网络环境(主要读取/etc/network);载入内存设备(/proc)、设置系统时间等等。
6.启动内核的外挂模块
7、init不同级别的脚本
在Ubuntu中主要是在/etc/rcX.d,X从0到6都有。里面的文件都是链接文件,指向/etc/init.d/。
/etc/init.d/中存放的都是服务或者任务的执行脚本。只要安装了一个程序(特别是服务程序daemon),并且它可以在系统启动的时候运行,那么它必定会在/etc/init.d/中有一个脚本文件。
8.rc.local
如果我们想在开始时候自动启动一些程序,可以将自定义的完整脚本名写到该文件中。开始时会与运行你的脚本。
9、执行行/bin/login,等待用户登录
此时,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了 。
微信分享/微信扫码阅读