当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > 剖析Linux系统启动过程(3)

Unix/Linux
Linux 备份 恢复方法
Linux玩CS反恐精英的方法
在一个ISO镜像中集成多个不同的linux发行版,可刻盘,可引导
Linux 快捷键使用
Linux DHCP 服务器配置方法介绍
Linux 22端口的修改方法
Linux 记录会话过程的命令
Linux 后台执行程序如何操作?
linux Wget命令来浏览网页的方法
Linux tail命令的巧妙应用
Wine 中文存在很多的乱码怎么解决方法
linux 新手教程之创建锁文件的方法
配置Linux 保证其系统的安全
Linux DHCP协议实现过程
Linux系统下破解SAM密码
linux/unix vi 编辑器用法详解
Linux 误删文件的解决方法
Linux系统下的历史记录删除方法
Red Hat Linux 安全设置指南
Linux基本命令-注销、关机、重启

Unix/Linux 中的 剖析Linux系统启动过程(3)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 33 ::
收藏到网摘: n/a

第二部分:运行init
  init的进程号是1,从这一点就能看出,init进程是系统所有进程的起点,Linux在完成核内引导以后,就开始运行init程序,。init程序需要读取配置文件/etc/inittab。inittab是一个不可执行的文本文件,它有若干行指令所组成。在Redhat系统中,inittab的内容如下所示(以“###"开始的中注释为笔者增加的):  #  # inittab This file describes how the INIT process should set up  # the system in a certain run-level.  #  # Author: Miquel van Smoorenburg, 〈[email protected]〉  # Modified for RHS Linux by Marc Ewing and Donnie Barnes  #  # Default runlevel. The runlevels used by RHS are:  # 0 - halt (Do NOT set initdefault to this)  # 1 - Single user mode  # 2 - Multiuser, without NFS (The same as 3, if you do not havenetworking)  # 3 - Full multiuser mode  # 4 - unused  # 5 - X11  # 6 - reboot (Do NOT set initdefault to this)  #  ###表示当前缺省运行级别为5(initdefault);  id:5:initdefault:  ###启动时自动执行/etc/rc.d/rc.sysinit脚本(sysinit)  # 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  ###当运行级别为5时,以5为参数运行/etc/rc.d/rc脚本,init将等待其返回(wait)  l5:5:wait:/etc/rc.d/rc 5  l6:6:wait:/etc/rc.d/rc 6  ###在启动过程中允许按CTRL-ALT-DELETE重启系统  # Trap CTRL-ALT-DELETE  ca::ctrlaltdel:/sbin/shutdown -t3 -r now  # When our UPS tells us power has failed, assume we have a few minutes  # of power left. Schedule a shutdown 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; System Shutting Down"  # If power was restored before the shutdown kicked in, cancel it.  pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"  ###在2、3、4、5级别上以ttyX为参数执行/sbin/mingetty程序,打开ttyX终端用于用户登录,  ###如果进程退出则再次运行mingetty程序(respawn)  # 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  ###在5级别上运行xdm程序,提供xdm图形方式登录界面,并在退出时重新执行(respawn)  # Run xdm in runlevel 5  x:5:respawn:/etc/X11/prefdm -nodaemon   以上面的inittab文件为例,来说明一下inittab的格式。其中以#开始的行是注释行,除了注释行之外,每一行都有以下格式:   id:runlevel:action:process   对上面各项的详细解释如下:   1. id   id是指入口标识符,它是一个字符串,对于getty或mingetty等其他login程序项,要求id与tty的编号相同,否则getty程序将不能正常工作。   2. runlevel   runlevel是init所处于的运行级别的标识,一般使用0-6以及S或s。0、1、6运行级别被系统保留:其中0作为shutdown动作,1作为重启至单用户模式,6为重启;S和s意义相同,表示单用户模式,且无需inittab文件,因此也不在inittab中出现,实际上,进入单用户模式时,init直接在控制台(/dev/console)上运行/sbin/sulogin。在一般的系统实现中,都使用了2、3、4、5几个级别,在Redhat系统中,2表示无NFS支持的多用户模式,3表示完全多用户模式(也是最常用的级别),4保留给用户自定义,5表示XDM图形登录方式。7-9级别也是可以使用的,传统的Unix系统没有定义这几个级别。runlevel可以是并列的多个值,以匹配多个运行级别,对大多数action来说,仅当runlevel与当前运行级别匹配成功才会执行。   3. action   action是描述其后的process的运行方式的。action可取的值包括:initdefault、sysinit、boot、bootwait等:   initdefault是一个特殊的action值,用于标识缺省的启动级别;当init由核心激活以后,它将读取inittab中的initdefault项,取得其中的runlevel,并作为当前的运行级别。如果没有inittab文件,或者其中没有initdefault项,init将在控制台上请求输入runlevel。   sysinit、boot、bootwait等action将在系统启动时无条件运行,而忽略其中的runlevel。   其余的action(不含initdefault)都与某个runlevel相关。各个action的定义在inittab的man手册中有详细的描述。   4. process   process为具体的执行程序。程序后面可以带参数。