您的位置:首页 > 运维架构 > Linux

浅谈Linux开机启动流程

2014-02-27 22:55 330 查看
以我的虚拟机系统centos5.8为例,
当你接通电源,开机启动,这时BIOS开始自检,这个过程可以理解成硬件初始化,它的主要作用是检测硬件是否工作正常,包含了CPU以及相关硬件的信息、设备启动顺序信息等等。BIOS自检完成后,便会根据BIOS设定的设备启动顺序启动第一个设备(一般第一个启动是硬盘)并读取这个设备的MBR的boot loader里面的开机信息。接下来,就是主机通过boot loader加载内核,并将内核解压缩到内存中。一般内核文件放在/boot中,取名为/boot/vmlinuz。如图:


内核被加载后,内核会启动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, <miquels@drinkel.nl.mugnet.org># 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 0l1:1:wait:/etc/rc.d/rc 1l2:2:wait:/etc/rc.d/rc 2l3:3:wait:/etc/rc.d/rc 3l4:4:wait:/etc/rc.d/rc 4l5:5:wait:/etc/rc.d/rc 5l6:6:wait:/etc/rc.d/rc 6
# Trap CTRL-ALT-DELETEca::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 runlevels1:2345:respawn:/sbin/mingetty tty12:2345:respawn:/sbin/mingetty tty23:2345:respawn:/sbin/mingetty tty34:2345:respawn:/sbin/mingetty tty45:2345:respawn:/sbin/mingetty tty56:2345:respawn:/sbin/mingetty tty6
# Run xdm in runlevel 5x: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 0l1:1:wait:/etc/rc.d/rc 1l2:2:wait:/etc/rc.d/rc 2l3:3:wait:/etc/rc.d/rc 3l4:4:wait:/etc/rc.d/rc 4l5:5:wait:/etc/rc.d/rc 5l6:6:wait:/etc/rc.d/rc 6
  如运行级别为3,将运行l3:3:wait:/etc/rc.d/rc 3即运行 etc/rc.3d这个目录下的相应程序运行相关脚本程序。

K*开头表示停止的服务;S*开头表示启动的服务;数字越小代表越早执行 你可以使用ls –l /etc/rc.d/rc3.d看到所有S*开头和K*开头的文件都是链接文件,这里要特别提到的是S99local;这个文件是链接到/etc/rc.d/rc.local;在这个文件里面,你可以把想要启动的命令或者脚本添加在里面,让其开机时自动执行。
 最后系统执行/bin/login程序,此时用户便可以进行登录了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: