浅谈Linux开机启动流程

以我的虚拟机系统centos5.8为例,


当你接通电源,开机启动,这时BIOS开始自检,这个过程可以理解成硬件初始化,它的主要作用是检测硬件是否工作正常,包含了CPU以及相关硬件的信息、设备启动顺序信息等等。BIOS自检完成后,便会根据BIOS设定的设备启动顺序启动第一个设备(一般第一个启动是硬盘)并读取这个设备的MBRboot loader里面的开机信息。

接下来,就是主机通过boot loader加载内核,并将内核解压缩到内存中。一般内核文件放在/boot中,取名为/boot/vmlinuz。如图:

wKiom1MPUjnx1s7rAAFsvsWLaQc162.jpg


内核被加载后,内核会启动init程序,也是Linux内核启动后的第一个进程。通过init程序会去读取/etc/inittab配置文件,启动相应的运行级别。通过  cat /etc/inittab ,查看这个文件的内容。

# inittab       This filedescribes how the INIT process should set up

#               the system ina certain run-level.

#

# Author:       Miquel vanSmoorenburg, <[email protected]>

#               Modified forRHS Linux by Marc Ewing and Donnie Barnes

#


# Default runlevel. The runlevels used by RHS are:

#   0 - halt (Do NOT setinitdefault to this)

#   1 - Single user mode

#   2 - Multiuser, withoutNFS (The same as 3, if you do not have networking)

#   3 - Full multiuser mode

#   4 - unused

#   5 - X11

#   6 - reboot (Do NOT setinitdefault to this)

#

id:3:initdefault:


# System initialization.

si::sysinit:/etc/rc.d/rc.sysinit


l0:0:wait:/etc/rc.d/rc 0

l1:1:wait:/etc/rc.d/rc 1

l2:2:wait:/etc/rc.d/rc 2

l3:3:wait:/etc/rc.d/rc 3

l4:4:wait:/etc/rc.d/rc 4

l5:5:wait:/etc/rc.d/rc 5

l6:6:wait:/etc/rc.d/rc 6


# Trap CTRL-ALT-DELETE

ca::ctrlaltdel:/sbin/shutdown -t3 -r now


# When our UPS tells us power has failed, assume we have a fewminutes

# of power left.  Schedule ashutdown for 2 minutes from now.

# This does, of course, assume you have powerd installed and your

# UPS connected and working correctly.  

pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; SystemShutting Down"


# If power was restored before the shutdown kicked in, cancel it.

pr:12345:powerokwait:/sbin/shutdown -c "Power Restored;Shutdown Cancelled"



# Run gettys in standard runlevels

1:2345:respawn:/sbin/mingetty tty1

2:2345:respawn:/sbin/mingetty tty2

3:2345:respawn:/sbin/mingetty tty3

4:2345:respawn:/sbin/mingetty tty4

5:2345:respawn:/sbin/mingetty tty5

6:2345:respawn:/sbin/mingetty tty6


# Run xdm in runlevel 5

x:5:respawn:/etc/X11/prefdm -nodaemon                                                                                                      


id:3:initdefault:表示默认运行级别为3




Linux的运行等级设定如下:


0:关机


1:单用户模式


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


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


4:保留,未使用


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


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


   首先运行id:3:initdefault,表示设定的运行级别为3。接下来将会运行si::sysinit:/etc/rc.d/rc.sysinit。Linux系统执行/etc/rc.d/rc.sysinit脚本程序,进行系统初始化。在etc/rc.d/rc,sysinit后会根据不同的运行级别来启动不同的服务。


l0:0:wait:/etc/rc.d/rc 0

l1:1:wait:/etc/rc.d/rc 1

l2:2:wait:/etc/rc.d/rc 2

l3:3:wait:/etc/rc.d/rc 3

l4:4:wait:/etc/rc.d/rc 4

l5:5:wait:/etc/rc.d/rc 5

l6:6:wait:/etc/rc.d/rc 6


  如运行级别为3,将运行l3:3:wait:/etc/rc.d/rc 3即运行 etc/rc.3d这个目录下的相应程序运行相关脚本程序。

wKioL1MPUgHQgX4FAALVdAW1DQU335.jpg

K*开头表示停止的服务;

S*开头表示启动的服务;

数字越小代表越早执行

 你可以使用ls �Cl /etc/rc.d/rc3.d看到所有S*开头和K*开头的文件都是链接文件,这里要特别提到的是S99local;这个文件是链接到/etc/rc.d/rc.local

在这个文件里面,你可以把想要启动的命令或者脚本添加在里面,让其开机时自动执行。


 最后系统执行/bin/login程序,此时用户便可以进行登录了。


你可能感兴趣的:(虚拟机,System,配置文件,process,should)