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

etc配置文件解读——inittab

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
PC主机:Ubuntu 和 redhat 9.0
+ A, B+ y# s! e* k2 m. h6 Y( C: c4 [4 {
目标板:TQ2440开发板 cpu:s3c2440 linux内核:2.6.30; n6 f. ]+ j- M5 A1 I# `
6 t9 M7 f" C/ @) o9 k) M
NOTE:这里的讲解将针对嵌入式Linux,而不是一般的PC平台。( v9 y- U. W; K" p# \1 q  b

7 X- o9 ^2 T+ Y$ m! I( x如发现错误欢迎指正。2 L5 \7 i2 ~/ t6 h

/ X2 }2 z/ [0 ^2 {' j& H/ A1 o0 w
- I9 J' O" q+ I" o
首先,先来看下我的/etc/inittab是怎么样的,然后再详细说明。
/ g/ ~& `2 e  V" z! S  l$ N+ h0 j0 s/ l- ]+ b0 h

! M5 W  q) z8 X, X) q, W[root@yj423 /]#cat /etc/inittab
8 b: h0 b& X( @, |4 }::sysinit:/etc/init.d/rcS8 O" a0 z+ \6 T$ N3 s1 p# G. P0 Z
console::respawn:-/bin/sh
  `' {; _) B- V( Z# W% {0 D6 V:: once:/usr/sbin/telnetd -l /bin/login7 r! x9 j+ S+ o1 R4 g$ W
::ctrlaltdel:/sbin/reboot% b; `4 h* F7 _! H7 Z) N
::shutdown:/bin/umount -a -r
8 b5 s; s8 ]8 r  e. Z( d* E# f. N0 T5 K3 s
这个配置文档的内容什么时候会被执行呢?
/ ~8 j, C9 [7 C; O1 Z0 V7 y' R0 @% z/ A% F/ A. ]
当用户进程init启动以后,该进程会读取该配置文档中的内容,然后执行。而在嵌入式系统中,用户进程init通常就是由busybox产生的/linuxrc。9 T- O, K9 L9 e' }, A8 k4 K$ L
# y( E7 s2 [' Q
该文档中每一行的格式如下:
  F( n. {8 p! S( L$ g2 J; i- J) q) C$ e- {1 R
<id>:<runlevels>:<action>:<process>
2 Y' n3 G$ @6 m* l- J) [  C8 F
1 s. K, H2 a9 j# q, {# ~id:该字段通常是busybox的init进程来用来寻找controlling tty,也就是终端设备。这个字段的前面会被加上/dev/。在上面的例子中我的终端设备就是/dev/console。
3 _( D1 C; i$ W+ m) t5 j/ N0 o* o3 x' D- V) B$ P! c
runlevels:该字段被忽略。也就是说,busybox的init不支持运行级别。6 F9 b$ ]  ^  c6 I+ P

8 S. J5 A9 C, f5 j; ~* |, taction:该字段用于描述后面process的运行方式。在busybox中,有效的action包括如下几种:6 I7 k1 G3 t5 T9 \# ^' T
  o3 s0 y0 I" G2 O/ @6 d% ?
    sysinit——在系统启动阶段,后面的process将被执行。在上面例子中,执行rcS脚本。& ?$ V! c% ~; D, w) s" w% Q( s
4 K9 a# i: |& Z. p
    respawn——当后面的process进程结束时,该进程又会被重启。
. p0 X1 n( I6 r0 u% X
1 U" G9 h4 Q5 U- i% U/ q" ?6 R+ k    askfirst——这个类似于上面的respawn,但是在运行process之前,它会打印" Please press Enter to activate this console.",然后等待用户按下Enter来启动该7 F, k8 ~1 w, [+ L# {! \

$ U; L! F  `0 o3 ]/ q: ~                     process。通常askfirst是用于启动终端设备的,如果不想看到这个提示,就像我那样使用respawn,而非askfirst.0 s! f! U5 k. o) g

; j! K  Y- f0 g% q/ ?$ y1 U/ A    wait——init进程会等待该process执行完毕,然后执行下一项。
4 e: b2 E' {7 M; E$ I0 X1 `8 v# S/ o  Q$ l, a5 M* b" d
    once——process只会执行一次。在上面的例子中,执行telnetd守护进程,-l参数表示连接时,使用login登录。同时执行login程序。7 u$ s* S+ z7 V4 i4 V
* i, |8 s, T3 i  _7 }5 M0 a
    restart——重新启动init进程时执行process.; _) F  O0 Y  ]1 G

* J7 N# H: S. c+ I0 G2 D6 P     ctrlaltdel——当Ctrl+Alt+Del三个键同时按下后,init进程就会收到SIGINT信号,此时运行process。
) \" \& l$ ?) l, N+ i6 d
# M  j, |, h4 L; n- `, Y0 ]+ x    shutdown——在系统关机的时候执行process。在上面的例子中,在关机时卸载了所有已挂载的设备。
8 t3 g( }) D) s  k5 O% A4 I) R' ~  D8 d9 g/ z
process:该字段表示要执行的程序和相应的参数。
4 z% B3 Q: N9 X* j
9 A* k$ r! J% i: g
$ a5 x! R6 L% z! g+ N3 Gconsole::respawn:-/bin/sh2 M' p6 {  D; p" r+ v, {

! `6 M5 B, Q' R  l7 `" y5 o这句表明:/bin/sh在/dev/console这个tty上被执行。“-”表示该shell为 login shell。
; O( S) ?$ z! E0 r8 N0 f* B3 b* S5 g3 N- T9 [% S
7 c5 A! \" A5 m
如果没有inittab文件,init进程将使用默认的行为:/ f5 e: D) V/ q4 o0 g
::sysinit:/etc/init.d/rcS" M4 G- Q0 Y0 b5 h: s/ J% b
::askfirst:/bin/sh' s7 U* X  N0 X, k
::ctrlaltdel:/sbin/reboot4 j  ~. u7 ?  {+ P0 f, ~, `5 R4 q' w
::shutdown:/sbin/swapoff -a- U# k- v# Q) b
::restart:/sbin/init
" c. b( M; T& @& `  n: |! m, x" P4 d( R! P2 r, S& b' X

3 h; T) ^  g2 v; {6 W/ I. v: y% X9 W" D* l: t, l8 f4 ~  _

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-25 18:52 , Processed in 0.156250 second(s), 24 queries , Gzip On.

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

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

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