Linux系统启动过程介绍

2016-06-02 10:06:48 8385

Linux系统启动流程简述如下:

1. 加电自检加载BIOS

这一步启动启动加载BIOS,BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等,系统在此读取boot选项读取从哪个设备启动,比如主板上的设置第一启动为硬盘,光盘,u盘等设备。 

2. 读取MBR

MBR,即Master Boot Record,即主引导记录,在磁盘的的0磁道1扇区,大小为512字节,系统通过上面的步骤读取主机从哪个设备启动,根据上面的启动选项找到对应设备的MBR,如果第一个设备未找到MBR,将根据BIOS的设置去读取第二个设备的MBR。

3. 读取boot loader

由于各个操作系统格式不同,我们需要一个管理程序来处理核心档案加载问题即boot loader,每个用自己的loader扄能够加载属于自己的操作系统核心,其中Grub、Lilo和spfdisk是常见的Loader,linux中我们以grub为例,系统读取内存中的grub配置信息(一般为menu.lst或grub.lst)在Redhat系统中是在/boot/grub/grub.conf,根据此启动不同的操作系统。

4. 加载内核

根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK, booting the kernel”。

5. 启动第一个进程init 

此步启动系统的第一个进程/sbin/init进程,读取配置文件为 /etc/inittab,此文件的id:5:initdefault决定了系统的启动级别为5级别。

注:各级别的意义

0):关机    

1):单用户模式  类似于windows中的安全模式

2):无网络的多用户模式

3):有网络的多用户模式

4):预留

5):图形化界面

6):重启

如果设定为6,则系统会不停重启。

6. 执行系统的初始化脚本rc.sysinit脚本

此脚本是系统的初始化脚本,她做了很多工作,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc激活udev等等。

7. 启动内核模块

根据系统的配置文件etc/modules.conf文件或/etc/modules.d加载内核模块。

8. 执行不同级别的脚本程序

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

9. 执行/etc/rc.d/rc.local脚本内容

此脚本执行开机自启动的脚本,你可以将你准备开机启动的脚本写在此文件中,相当于winodows中的开启自动启动的功能。

10. 执行打印登录的程序/bin/login程序

到此系统算启动完毕,打印客户的登录界面mingetty程序待用户输入密码执行即可。



提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: