linux启动过程详解

转自: http://5272491.blog.51cto.com/5262491/1167967


Linux系统启动过程详解

一、rehat linux启动过程


1、POST上电自检

电脑刚接通电源时对硬件部分的检测,也叫做加电自检(Power On Self Test,简称POST),功能是检查电脑是否良好,通常完整的POST自检将包括对CPU640K基本内存1M以上的扩展内存ROM,主板CMOS存储器,串并口,显示卡,软硬盘子系统及键盘进行测试,一旦在自检中发现问题,系统将给出提示信息或鸣笛警告。自检中如发现有错误,将按两种情况处理:对于严重故障(致命性故障)则停机,此时由于各种初始化操作还没完成,不能给出任何提示或信号;对于非严重故障则给出提示或声音报警信号,等待用户处理。

2、BIOS初始化、引导程序

BIOS对硬件设置的一些参数,当电脑启动时会读取这些参数,并和实际硬件设置进行比较,如果不符合,会影响系统的启动。引导启动设备,系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0x7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了。


3、BootLoader加载内核

Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们把内核加载到内存,从而是内核开始操作整个计算机,BootLoaderlinux上主要有GrubLilospfdisk

4、执行init进程(用于设置系统的各类服务)

核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。

其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是id:3:initdefault:”,这就表明Linux需要运行在等级3上。Linux的运行等级设定如下:

0:关机

1:单用户模式

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

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

4:保留,未使用

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

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

5init进程执行rc.sysinit

设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它的主要工作是:

1、激活udevselinux

2、根据/etc/sysctl.conf文件,来设定内核参数;

3、设定时钟时钟;

4)、装载键盘映射;

5)、启用交换分区;

6)、设置主机名;

7)、根文件系统检测,并以读写方式重新挂载;

8、激活RAIDLVM设备;

9)、启用磁盘配额;

10)、根据/etc/fstab,检查并挂载其它文件系统;

11)、清理过期的锁和PID文件;

6、装载内核模块

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

7、执行不同运行级别的脚本程序

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

这个过程是靠/etc/inittab中如下图的字段交给rc,然后rc再根据所运行的级别,运行相应级别下的脚本,如所在级别是3就运行rc3.d下的脚本.


rc(1-6).d下的脚本都是以SK开头的链接,它们指向/etc/rc.d/init.d下相应的脚本,

rc在进入该级别时按一定的顺序执行rc#.d中以S开头的文件,离开该级别时,按一定的顺序执行相应rc#.d下的以K开头的文件。

8、执行/etc/rc.d/rc.local

/etc/rc.d/rc.local是系统启动过程中最后运行的一个脚本

rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。

9、执行/bin/login程序,进入登录状态

和该过程有关的有inittab中的字段(打开虚拟终端)





注:

漫长的启动过程终于完成,当然这也只是linux系统(红帽系列的)的主要启动过程,这也是我现在所了解的,要想更加深入的了解linux系统的启动的过程,我觉得还得看看起动过程中涉及的相关文件的内容,弄清个文件的联系,我也是刚开始学习linux,所了解的只有这些,希望能帮到刚开始或想学linux的人,后续还有介绍如何制作自己的小linux系统的内容,相信可以让我们可以更加形象的了解linux的启动过程。


你可能感兴趣的:(linux)