Linux基础命令之: Linux启动过程详解
常工作。 (2)runlevels。 runlevels是运行级别记录符,一般使用0~6以及S和s。其中,0、1、6运行级别为系统保留:0作为shutdown动作,1作为重启至单用户模式,6为重启;S和s意义相同,表示单用户模式,且无需inittab文件,因此也不在inittab中出现。7~9级别也是可以使用的,传统的UNIX系统没有定义这几个级别。 runlevel可以是并列的多个值,对大多数action来说,仅当runlevel与当前运行级别匹配成功才会执行。 (3)action。 action字段用于描述系统执行的特定操作,它的常见设置有:initdefault、sysinit、boot、bootwait、respawn等。 initdefault用于标识系统缺省的启动级别。当init由内核激活以后,它将读取inittab中的initdefault项,取得其中的runlevel,并作为当前的运行级别。如果没有inittab文件,或者其中没有initdefault项,init将在控制台上请求输入runlevel。 sysinit、boot、bootwait等action将在系统启动时无条件运行,忽略其中的runlevel。 respawn字段表示该类进程在结束后会重新启动运行。 (4)process。 process字段设置启动进程所执行的命令。 以下结合笔者系统中的inittab配置文件详细讲解该配置文件完成的功能。 在“/etc/inittab”中列出了如下所示的登录模式,主要有单人维护模式、多用户无网络模式、文字界面多用户模式、X-Windows多用户模式等。其中的单人维护模式(runlevel为1)类似于Windows中的“安全模式”,在这种情况下,系统不加载复杂的模式从而使系统能够正常启动。在这些模式中最为常见的是3或5,其中本系统中默认的为5,也就是X-Windows多用户模式。以下是在“/etc/inittab”文件中设置系统启动模式的部分。 #Defaultrunlevel.TherunlevelsusedbyRHSare: #0-halt(DoNOTsetinitdefaulttothis) #1-Singleusermode #2-Multiuser,withoutNFS(Thesameas3,ifyoudonothavenetworking) #3-Fullmultiusermode(文本界面启动模式) #4-unused #5-X11(图形界面启动模式) #6-reboot(DoNOTsetinitdefaulttothis) # id:5:initdefault: 在确定了登录模式之后,就要开始将Linux的主机信息读入系统,其过程是通过运行“/etc/rc.d/rc.sysinit”脚本而完成的。查看此文件可以看出,在这里确定了默认路径、主机名称、“/etc/sysconfig/network”中所记录的网络信息等。以下是在“/etc/inittab”文件中运行该脚本的部分。 #Systeminitialization. si::sysinit:/etc/rc.d/rc.sysinit 在此,主要是读取模块加载配置文件(/etc/modules.conf),以确认需要加载哪些模块。接下来会根据不同的运行级(runlevel),通过带参数(运行级)运行“/etc/rc.d/rc”脚本,加载不同的模块,启动系统服务。init进程会等待(wait)“/etc/rc.d/rc”脚本的返回。系统还需要配置一些异常关机的处理部分,最后通过“/sbin/mingetty”打开几个虚拟终端(tty1~tty6),用于用户登录。如果运行级为5(图形界面启动),则运行xdm程序,给用户提供xdm图形界面的登录方式。如果在本地打开一个虚拟终端,当这个终端超时没有用户登录或者太久没有用户击键时,该终端会退出执行,脚本中的“respawn”即告诉init进程重新打开该终端,否则在经过一段时间之后,我们会发现这个终端消失了,无法利用ALT+Fn切换。 以下是“/etc/inittab”文件中的相应部分。 l0:0:wait:/etc/rc.d/rc0 l1:1:wait:/etc/rc.d/rc1 l2:2:wait:/etc/rc.d/rc2 l3:3:wait:/etc/rc.d/rc3 l4:4:wait:/etc/rc.d/rc4 l5:5:wait:/etc/rc.d/rc5 l6:6:wait:/etc/rc.d/rc6 #TrapCTRL-ALT-DELETE ca::ctrlaltdel:/sbin/shutdown-t3-rnow #WhenourUPStellsuspowerhasfailed,assumewehaveafewminutes #ofpowerleft.Scheduleashutdownfor2minutesfromnow. #Thisdoes,ofcourse,assumeyouhavepowerdinstalledandyour #UPSconnectedandworkingcorrectly. pf::powerfail:/sbin/shutdown-f-h+2PowerFailure;SystemShuttingDown #Ifpowerwasrestoredbeforetheshutdownkickedin,cancelit. pr:12345:powerokwait:/sbin/shutdown-cPowerRestored;ShutdownCancelled #Rungettysinstandardrunlevels 1:2345:respawn:/sbin/mingettytty1 2:2345:respawn:/sbin/mingettytty2 3:2345:respawn:/sbin/mingettytty3 4:2345:respawn:/sbin/mingettytty41.确定用户登录模式
2.执行/etc/rc.d/rc.sysinit
3.加载内核的外挂模块,执行各运行级别的脚本以及进入用户登录界面
操作系统 Linux bootsect init阶段 内核引导 相关文章:
- VxWorks实时操作系统下MPC8260ATM驱动的实现(11-11)
- VXWORKS内核分析(11-11)
- Linux内核解读入门(11-09)
- 嵌入式系统实时性的问题(06-21)
- 基于WinCE操作系统的通用USB数控键盘设计(08-05)
- 嵌入式实时操作系统设计探讨(10-15)