Chinaunix首页 | 论坛 | 博客
  • 博客访问: 403331
  • 博文数量: 49
  • 博客积分: 6020
  • 博客等级: 准将
  • 技术积分: 520
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-18 21:36
文章分类

全部博文(49)

文章存档

2008年(14)

2007年(4)

2006年(31)

我的朋友

分类: LINUX

2008-04-19 14:31:58

    init是Linux启动的最后一步,它帮助用户完成每次启动系统都必须完成的一些重复性任务,如加载文件系统、各类网络服务等等程序;它还有一个重要用途,让用户自定义系统运行环境,只启动需要的进程,关闭不用的进程,释放内存和处理器资源,让系统运行得更快更稳。
    init会按任务表/etc/inittab里面的设置运行对应的脚本。我们可以为系统制定多个运行环境以满足不同任务的需要,在 inittab中称之为运行等级(runlevel)。
    下面是我的gentoo的/etc/inittab文件:
 
======================================================
id:3:initdefault:
 
si::sysinit:/sbin/rc sysinit
 
rc::bootwait:/sbin/rc boot
l0:0:wait:/sbin/rc shutdown
l1:S1:wait:/sbin/rc single
l2:2:wait:/sbin/rc nonetwork
l3:3:wait:/sbin/rc default
l4:4:wait:/sbin/rc default
l5:5:wait:/sbin/rc default
l6:6:wait:/sbin/rc reboot

c1:12345:respawn:/sbin/agetty 38400 tty1 linux
c2:2345:respawn:/sbin/agetty 38400 tty2 linux
c3:2345:respawn:/sbin/agetty 38400 tty3 linux
c4:2345:respawn:/sbin/agetty 38400 tty4 linux
c5:2345:respawn:/sbin/agetty 38400 tty5 linux
c6:2345:respawn:/sbin/agetty 38400 tty6 linux
 
ca:12345:ctrlaltdel:/sbin/shutdown -r now

x:a:once:/etc/X11/startDM.sh
======================================================
    该文件有一个基本类型的指令,它们指定命令行,命令行所采取的动作,在何种运行等级下激活命令。这引起命令行的格式大体如下:
id:runlevels:action:process
    id是任意一个名称(具体是什么并不重要),runlevels是一个数字串(代表运行等级),action描述何时执行命令,process指定执行的实际命令。
    拿启动agetty的命令行举例:
c1:12345:respawn:/sbin/agetty 38400 tty1 linux
    该命令告诉init,它应该在引导后以运行等级1-5运行命令/sbin/agetty 38400 tty1。动作标记respawn表示命令在退出时重新运行(当用户在shell输入exit的时候)。
    ·respawn:启动命令并监视命令的执行,当进程退出时,再次执行该命令(通常用于虚拟终端设备上的登录提示)。
    ·wait:进入指定运行等级时,启动进程。init会停下来,直到执行完成。这个标记用于设置特定等级下软件的启动。
    ·once:进入指定的任一运行等级时,启动一次进程。
    .boot:当系统启动时执行,这种类型的执行忽略runlevel.
    .bootwait:当系统启动时执行,init进程等待这些脚本执行完成,象/etc/rc.
    ·initdefault:这种类型的项指定在系统引导时进入哪个运行等级。
    .sysinit:在boot或者bootwait之前启动,这种类型的执行忽略runlevel.
    ·powerwait:这类指令给出在电源不足时需要执行的命令。init直到进程完成后才继续工作。
    ·powerfail:与powerwait类似,但init不等待进程完成。
    ·powerworkwait:电源正常后执行。init暂停,直到进程结束。
    ·powerfailnow:当便携机电池或外部UPS电池电量不足时执行。
    ·ctrlaltdel:指定init在捕获ctrl+alt+del组合键时执行的命令。
    ·kbdrequest:把特殊动作映射到特定的按键。Debian中的是alt+UpArrow。
 
    从上面的分析可以看到:
    id:3:initdefault:
    #系统的缺省级别是3
    si::sysinit:/sbin/rc sysinit
    #系统启动时自动执行脚本/sbin/rc sysinit
    那么我们可以看下/sbin/rc,这个是一个脚本,rc到底干了什么事情呢?请听下回分解!!!!!!
    l3:3:wait:/sbin/rc default
    #当系统运行级别是3的时候,init等待/sbin/rc default执行完
    c1:12345:respawn:/sbin/agetty 38400 tty1 linux
    #在1-5运行级别的时候运行/sbin/agetty,如果进程退出,再次执行/sbin/agetty
    ca:12345:ctrlaltdel:/sbin/shutdown -r now
    #在1-5运行级别按下ctrlaltdel,那么系统就shutdown now!!!
    x:a:once:/etc/X11/startDM.sh
    #不管是什么runlevel,都会执行/etc/X11/startDM.sh,启动X,只有启动一次

   
阅读(1803) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~