综合资讯 技术文章 原文阅读 在线商城 下载专区 DATASHEET 技术论坛 商务频道

电子技术 | 技术资料 | 嵌入式系统 | 单片机专题 | DSP专题
EDA/PLD专题 | 电源技术专题 | 电子制作专题 | 其他综合 | 芯片选型

所在的位置:首页在线阅读嵌入式系统linux 笔记(一)正文
 
系统管理—启动—/etc/inittab文件

/etc/inittab文件

发信人: cloudsky (晓舟·轩辕明月), 信区: Linux
标  题: /etc/inittab文件简介
发信站: 武汉白云黄鹤站 (Thu Feb  4 22:29:31 1999) , 站内信件

init进程就是所谓1号进程,用ps -jfl -p 1就可以看到全貌。init在启动中会读取/etc/inittab,处理如下:

1. 查找initdefault项,存在则以相应运行级启动,不存在系统将要求输入运行级,若输入S或s将进入单用户状态。

2. 启动后,若系统首次进入除单用户以外的其他状态,init将在/etc/inittab中查找boot或bootwait项,存在则启动相关进程,然后再启动当前运行级下的其他进程。

3. init创建完所有子进程后进入循环等待,并不消亡。init q或者telinit Q将导致init重新读取/etc/inittab文件

4. 虚拟运行级a、b、c必须通过init a直接启动相关进程,不会改变当前运行级,这种进程在系统切换运行级时不会被终止,只有遇到下列情况才被终止:

   a. 该项action域被标记为OFF
   b. 该项被删除
   c. 进入单用户状态

5. 运行级
   0 停机;shutdown实际上最后做了init 0

   1 系统管理状态;若从常规运行级进入本运行级,不终止任何服务和进程,所以没有意义。只有从S级进入才有意义。S或s 单用户状态;最严格状态,与系统之间只能通过主控台进行交互。

   6 正常停机并重新启动,进入initdefault项指定的运行级a、b、c 虚拟运行级,用于在不改变当前运行级的情况下启动进程Q或q 通过init q引起对/etc/inittab的重新检测

6. 文件每行的格式

   id:rstate:action:process
   id 两个字符,不得重复
   rstate 该项应该被处理的运行级;可以指定多个运行级,0-6任意组合。为空表示所有运行级。切换运行级时,init会检查所有进程,如果进程相关rstate域中无新运行级,该进程收到SIGTERM信号,5秒后被强行终止。
   action
          respawn 进程不存在就启动,启动进程后不等待进程终止。一旦进程终止就再次启动。
                  进程已经存在则继续扫描/etc/inittab文件
          wait    如果系统正在进入的运行级在该项的rstate域已经指定,则启动该进程,并等待进程终止。
                  以后再次扫描/etc/inittab时,若运行级没有改变,则忽略本项。
          once    如果系统正在进入的运行级在该项的rstate域已经指定,则启动该进程,但不等待进程终
                  止。进程终止后也不再次启动。切换到新运行级时,若该进程已经存在,也不再重新启动它。
          boot    只在系统启动过程中被处理。启动进程后不等待进程终止,进程终止后也不再次启动它。
                  当这里指定boot时,相关rstate应该设置成系统缺省实际运行级。该项主要用于冷启动
          bootwait 系统启动后首次从单用户切换到常规运行级时被处理。启动进程并等待进程终止。
          powerfail 当系统接收到掉电信号时启动相关进程powerwait 当系统接收到掉电信号时启动相关进程,
                  并等待进程终止,在进程终止前不做任何其它操作。
          off     若该项相关进程已经存在则强行终止,否则忽略。
          ondemand 功能同respawn,但只用于虚拟运行级
          initdefault 只在系统首次启动init时被处理。注意,如果rstate为空,等同于将rstate指定为0123456,
                   此时init将引导系统进入最高运行级,实际上就是init 6,其结果是系统无休止的重启动。
                   另外,如果对应的rstate设置成0或者1,将导致系统无法正常启动,切记。
          sysinit 在系统激活主控台前执行(即主控台显示login:提示之前),并等待进程终止,一般用于设备初始化。
   process 格式遵从sh语法

下面是solaris2.5.1下的一个示例文件

ap::sysinit:/sbin/autopush -f /etc/iu.ap
fs::sysinit:/sbin/rcS >/dev/console 2>&1 </dev/console
is:3:initdefault:
p3:s1234:powerfail:/usr/sbin/shutdown -y -i5 -g0 >/dev/console 2>&1
s0:0:wait:/sbin/rc0 >/dev/console 2>&1 </dev/console
s1:1:wait:/usr/sbin/shutdown -y -iS -g0 >/dev/console 2>&1 </dev/console
s2:23:wait:/sbin/rc2 >/dev/console 2>&1 </dev/console
s3:3:wait:/sbin/rc3 >/dev/console 2>&1 </dev/console
s5:5:wait:/sbin/rc5 >/dev/console 2>&1 </dev/console
s6:6:wait:/sbin/rc6 >/dev/console 2>&1 </dev/console
fw:0:wait:/sbin/uadmin 2 0 >/dev/console 2>&1 </dev/console
of:5:wait:/sbin/uadmin 2 6 >/dev/console 2>&1 </dev/console
rb:6:wait:/sbin/uadmin 2 1 >/dev/console 2>&1 </dev/console
sc:234:respawn:/usr/lib/saf/sac -t 300
co:234:respawn:/usr/lib/saf/ttymon -g -h -p "`uname -n` \
console login: " -T sun -d /dev/console -l console -m ldterm,ttcompat

一个修改/etc/inittab的实例

假设/dev/tty00是个串口,想在这个串口上挂一个终端

1. 用RS232标准串行线连接串口和终端,终端上电,设置终端参数9600 7 偶校验

2. 主机上电,root注册,修改/etc/inittab,增加一行

00:23:respawn:/sbin/getty tty00 9600

3. init q


返回 上一页 下一页   信息发布:工号01   转引自: 【 】 【打印】 【关闭

关于我们 ┋ 友情链接


深圳市福田区海滨广场恒福花园恒华阁11F
电话:0755-88305872 传真:0755-88305880
Copyright©2005-2007 无忧电子开发网版权所有

粤ICP备05064233号