linux系统启动过程

系统启动过程

第一步:加载BIOS

当你开启计算机电源,计算机会首先加载BIOS信息,让计算机知道BIOS中的CPU信息,设备启动循序信息、硬盘信息、内存信息、时钟信息PnP特性等等这些信息后,计算机心里就有谱了,知道应该读取那个硬件设备了。

 

第二步:调用MBR中的Boot loader

系统开始找到BIOS所指定的硬盘的MBR,硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,里面存放三部分信息。

第一部分:主引导程序(Boot Loader),占446个字节,找到标记为活动的分区,并将活动分区的引导区读入内存

第二部分:分区表(DPT),占64个字节,记录硬盘的分区信息

第三部分:Magic number,占2个字节,固定为0Xaa55(小端模式处理器、如intel系列)或0x55AA(大端模式处理器,如Motorola6800),这取决于处理器类型

 

找到MBR后,把里面的Boot Loader复制到物理内存去,系统读取内存中的grub配置信息,依照这些信息来启动不同的操作系统。

BootLoader就是在操作系统内核运行之前运行的一段严重依赖于硬件的小程序。这段程序可以初始化硬件设备、建立内存空间的映射图,把软硬件的坏境带到一个合适的状态,以便为做终调用系统内核做好一切准备。不同体系结构的系统存在这不同的Boot Loader。

BootLoader有Grub、Lilo和spfdisk

 

第三步:加载内核

根据grub设定的内核映像所在路劲,系统读取内存映像,并进行解压内核,将解压后的内核加载到内存之中

 

第四步:init进程

内核被加载之后,第一个运行的程序便是/sbin/init,该程序会读取/etc/inittab文件,依据此文件来设定linux运行等级

Linux运行等级如下:id:5:initdefault

0:关机

1:单用户模式

2:无网络支持的多用户模式

3:有网络支持的多用户模式

4:保留,未使用

5:有网络支持有X-Window支持的多用户模式

6:重新引导系统,即重启

 

设定了运行级别之后,linux系统会执行第一个用户层文件/etc/rc.sysinit脚本程序,让一般的用户程序可以正常的被执行,从而真正完成可供应用户程序运行的系统坏境

 

第五步:启动内核模块

具体是依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块

 

第六步:执行不同级别的脚本程序

根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来进行相应的初始化工作和启动相应的服务。

 

第七步:执行/etc/rc.d/rc.local

Rc.local就是在一切初始化工作后,linux留给用户进行个性化的地方(开机启动脚本),你可以把你想设置的和启动的东西放到这里

 

第八步:执行/bin/login

此时,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了。

 

内核->/sbin/init(/etc/inittab)->/etc/rc.sysinit(/etc/rc.d/rc.sysinit)->/etc/rc[?

].d(/etc/rc.d/rc[?].d)->/etc/rc.local(/etc/rc.d/rc.local)->/sbin/login


你可能感兴趣的:(linux系统启动过程)