找回密码
 注册
关于网站域名变更的通知
查看: 216|回复: 1
打印 上一主题 下一主题

etc配置文件解读——inittab

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-6-22 17:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
PC主机:Ubuntu 和 redhat 9.02 c2 }$ P+ C1 j6 L6 W+ Z

+ T$ `/ r6 p. x! P目标板:TQ2440开发板 cpu:s3c2440 linux内核:2.6.30
. k7 u$ y% K& _$ F
$ J3 B1 Q, v) j2 n' D5 FNOTE:这里的讲解将针对嵌入式Linux,而不是一般的PC平台。
  G5 }4 R( P! E- s$ ^- t; c! C- u5 i5 K$ ~) R
如发现错误欢迎指正。4 f8 _5 D; f* e4 Y6 P

# C2 C. b% H5 {2 A' X+ D
2 G( f8 v$ |7 A! y2 ^# J3 l8 [  K) x0 j
首先,先来看下我的/etc/inittab是怎么样的,然后再详细说明。- H  C5 ~( j4 Y# I  p; w
; a/ e1 v. d& X9 _- O

) s! t+ N! E* I0 {# Q[root@yj423 /]#cat /etc/inittab 1 @6 J' ~5 y# s9 t% R! N
::sysinit:/etc/init.d/rcS
4 m$ _" J/ t2 p4 X. H4 fconsole::respawn:-/bin/sh
1 M8 x9 u& _: [6 [  M" V:: once:/usr/sbin/telnetd -l /bin/login0 S8 v1 R) x5 \  l! i' O
::ctrlaltdel:/sbin/reboot: j4 p2 M. r% Z
::shutdown:/bin/umount -a -r1 H5 h! m6 l# d3 Z% A$ Z) _

8 K0 o% {( |  K5 q) u这个配置文档的内容什么时候会被执行呢?
4 h) K& }. Q% U- ]4 u# Z( X4 m7 h5 R  y. ^- T
当用户进程init启动以后,该进程会读取该配置文档中的内容,然后执行。而在嵌入式系统中,用户进程init通常就是由busybox产生的/linuxrc。
) O  P  z; P" ]% E' P3 {
; n, A8 t& U+ I7 j该文档中每一行的格式如下:, K& W. r# ^% B$ S
! k) Y2 C" x/ p9 Q4 J
<id>:<runlevels>:<action>:<process>  ]8 F/ s3 P* E* `1 q
1 J% q2 i1 W1 ^2 o
id:该字段通常是busybox的init进程来用来寻找controlling tty,也就是终端设备。这个字段的前面会被加上/dev/。在上面的例子中我的终端设备就是/dev/console。
& ?& x& [) d( f+ c7 J' c% X" l( T- M% D+ Q7 J3 C
runlevels:该字段被忽略。也就是说,busybox的init不支持运行级别。
8 I2 V* v# V1 D9 Q% t, Y: t. B; @& c6 F
action:该字段用于描述后面process的运行方式。在busybox中,有效的action包括如下几种:) h* G+ T8 Y( ?9 c% x

( x) ]* _- E, x; v9 J    sysinit——在系统启动阶段,后面的process将被执行。在上面例子中,执行rcS脚本。* R$ H4 K- p' P" c5 |+ O

# a7 u% V' ~" V7 h+ }    respawn——当后面的process进程结束时,该进程又会被重启。2 @) L) d2 ~! ^' a* n
8 O; l- T/ J% ]5 P( I$ j
    askfirst——这个类似于上面的respawn,但是在运行process之前,它会打印" Please press Enter to activate this console.",然后等待用户按下Enter来启动该
6 z& c4 U: s$ w8 }. N
2 i8 \) H1 _$ I* r+ Y                     process。通常askfirst是用于启动终端设备的,如果不想看到这个提示,就像我那样使用respawn,而非askfirst.) u4 k0 T% `' h, t

3 m' O/ ~! a' M2 j) n# Y, m    wait——init进程会等待该process执行完毕,然后执行下一项。
1 o. G3 I" T  V" |1 S. H# p% O1 R5 C: @5 `# a5 k
    once——process只会执行一次。在上面的例子中,执行telnetd守护进程,-l参数表示连接时,使用login登录。同时执行login程序。# Y/ n" M, p8 @3 K2 N

' Y8 j0 F: u. @% d9 j    restart——重新启动init进程时执行process.7 o9 k  |/ D+ v2 H

$ K3 w, Y) t0 U: T* z     ctrlaltdel——当Ctrl+Alt+Del三个键同时按下后,init进程就会收到SIGINT信号,此时运行process。
6 @8 }9 k" }  O1 O6 l" L9 L7 r( |$ y2 \  |
    shutdown——在系统关机的时候执行process。在上面的例子中,在关机时卸载了所有已挂载的设备。0 |) `+ Z8 k, ~2 z5 ], e

# H' I- I  Q# u/ Bprocess:该字段表示要执行的程序和相应的参数。7 e: C. Z4 `& Y% Q8 U. J# K1 U8 g% S# U
* j; q9 U% `; G) k! `

- g. R1 w% k% Z* U9 U0 r$ Q7 f& Xconsole::respawn:-/bin/sh( ]+ c+ L7 L2 G( P
, X4 z" n5 b' X  D
这句表明:/bin/sh在/dev/console这个tty上被执行。“-”表示该shell为 login shell。
$ ^3 W0 H, k+ m8 {& L4 T1 {+ q
. |3 b, ?2 v" z0 z- [+ ^3 C9 x0 {- o* v
如果没有inittab文件,init进程将使用默认的行为:
& {7 ^! e2 `0 b6 P  M' V& }( O::sysinit:/etc/init.d/rcS
( H, e0 R6 L& x  X::askfirst:/bin/sh
0 A% y) G- _* a- h+ g" W( i::ctrlaltdel:/sbin/reboot  g$ \# d# D0 Y- G/ U% V: F6 b
::shutdown:/sbin/swapoff -a
( O: y9 M2 K  s3 F2 n5 B/ @2 P: z1 A::restart:/sbin/init9 @6 I- J( e/ @7 N3 W

& l6 L( Y) `5 w- m
7 H" \: h9 o6 b$ M! i; T' ^' N2 O( p! E1 b9 {" S3 }0 d/ Y4 Z- P/ T, M

该用户从未签到

2#
发表于 2020-6-22 17:55 | 只看该作者
etc配置文件解读——inittab
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-25 16:42 , Processed in 0.203125 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表