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

etc配置文件解读——inittab

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
PC主机:Ubuntu 和 redhat 9.0
; f' @- z, N5 t+ m9 n  R5 N) B/ S# e5 }1 a: L' ]' `( E
目标板:TQ2440开发板 cpu:s3c2440 linux内核:2.6.302 D& L1 s5 c1 _( t+ e( W8 i
) ^3 b$ Z' m3 v2 h6 h9 [9 W& x( j
NOTE:这里的讲解将针对嵌入式Linux,而不是一般的PC平台。" B5 n! B" B% f- E: ~3 b+ {& B( x
( x- K) K, b( f- |: p
如发现错误欢迎指正。
' Y. B) b8 B; G& X' h$ j9 ]$ m( u3 z! y- z* Y! j+ n

( B; f0 c: I( C' T/ S2 W6 k7 S& E8 v0 z. }6 C, S& Z
首先,先来看下我的/etc/inittab是怎么样的,然后再详细说明。
" f& E7 a, _! M* @' I. U/ j) B0 ~4 D3 h

" {4 x, U3 i3 {: s) r" c8 z. V$ ~[root@yj423 /]#cat /etc/inittab ) q# b1 h9 W! [7 N9 v" A
::sysinit:/etc/init.d/rcS- ], z3 _. ~/ j
console::respawn:-/bin/sh3 G2 e& t6 P; w0 q
:: once:/usr/sbin/telnetd -l /bin/login6 Z7 @8 }* I+ D. b9 `, q4 \
::ctrlaltdel:/sbin/reboot
9 c, O* e" E% S& _% l6 m) o3 ]::shutdown:/bin/umount -a -r
0 m( S; g. H* e  l& B0 c4 C- ]1 J4 N& K
这个配置文档的内容什么时候会被执行呢?* T8 {, F% N# }" {( }: d* m7 T

( L. d5 u  l2 h6 D当用户进程init启动以后,该进程会读取该配置文档中的内容,然后执行。而在嵌入式系统中,用户进程init通常就是由busybox产生的/linuxrc。
) R, c) @5 B  b0 g) Q8 W! A  `, B7 p1 Y9 }
该文档中每一行的格式如下:0 a8 a% a" N5 R% b6 |0 i, E( a$ w

; M$ ]  L- }) _/ h! b% C<id>:<runlevels>:<action>:<process>2 w5 q" {( K5 {8 n& F$ b! g( F

: k  c7 h% `) [$ X9 I/ ^& Qid:该字段通常是busybox的init进程来用来寻找controlling tty,也就是终端设备。这个字段的前面会被加上/dev/。在上面的例子中我的终端设备就是/dev/console。* I9 `0 F- V) ~1 W3 [
$ B' I, W! i- L4 ]
runlevels:该字段被忽略。也就是说,busybox的init不支持运行级别。
- S3 g3 O- g" }( [! M8 K$ G" w) Q- e8 v5 Q/ r/ g7 b5 {
action:该字段用于描述后面process的运行方式。在busybox中,有效的action包括如下几种:  v/ T5 Y3 R- M2 q

' X" W6 P) w2 x+ U" f* g. V    sysinit——在系统启动阶段,后面的process将被执行。在上面例子中,执行rcS脚本。( ]6 _- w" E" _/ d
: i  F% F5 m, P; C" z- R
    respawn——当后面的process进程结束时,该进程又会被重启。
! q/ W: V8 X8 [6 ~7 ~* q* F; @9 N
    askfirst——这个类似于上面的respawn,但是在运行process之前,它会打印" Please press Enter to activate this console.",然后等待用户按下Enter来启动该8 R/ \! T' n  F8 Y/ k7 o
& Y: [- ^7 C& h2 P1 H' L0 ?
                     process。通常askfirst是用于启动终端设备的,如果不想看到这个提示,就像我那样使用respawn,而非askfirst.; x- D/ @  |+ F5 I

( ]; \; K! x8 i    wait——init进程会等待该process执行完毕,然后执行下一项。
' l3 `/ K# P, P0 L! a2 ?' L) S
    once——process只会执行一次。在上面的例子中,执行telnetd守护进程,-l参数表示连接时,使用login登录。同时执行login程序。
5 t: M$ Y5 j% J# P, a1 |4 U, ]- b1 Z# I0 k9 S/ x% ^  N
    restart——重新启动init进程时执行process.
0 `, n9 p0 ?" _4 G6 S
4 P' n. q4 V* ^5 s: ]0 T     ctrlaltdel——当Ctrl+Alt+Del三个键同时按下后,init进程就会收到SIGINT信号,此时运行process。* m2 ]: T" _% ?4 A1 l9 l
2 a; b1 j+ t, o3 k
    shutdown——在系统关机的时候执行process。在上面的例子中,在关机时卸载了所有已挂载的设备。
, ]9 f) g$ P5 s1 x9 ]( O! ?. r+ Z, F4 \% Z' D- l
process:该字段表示要执行的程序和相应的参数。) L$ r2 I& F3 Y
  m2 N, L4 J' f# h

2 s* t! u8 p/ p3 w7 Z8 yconsole::respawn:-/bin/sh: B4 E+ t1 w$ t( q1 C! O

+ F9 G3 ?7 W% F; x. Q+ Y这句表明:/bin/sh在/dev/console这个tty上被执行。“-”表示该shell为 login shell。2 Y& Z' N4 J; H- p' j( Z

/ x6 F  D5 R; x% N+ G  e; `+ Z  A4 n# E# l. x! D; I2 v( w) x- }
如果没有inittab文件,init进程将使用默认的行为:
1 x- h# h# J- f( Y: D7 u* [: f& w1 [! p::sysinit:/etc/init.d/rcS9 M# T: d7 E; b$ h5 G4 [
::askfirst:/bin/sh
, g, }- j4 T8 }" r; u& d" O, f::ctrlaltdel:/sbin/reboot1 `& X6 T3 q% I4 q) B) K
::shutdown:/sbin/swapoff -a5 L+ u9 c6 ]; h- l1 Q0 @) f' E
::restart:/sbin/init1 r' @" N0 V, V) G' ^. P( W
/ F! B2 P% m; l1 N! u. P
7 h. S9 K6 a2 J; W7 H$ j
6 }. d1 Z- I$ G  ~+ @9 D

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-25 17:39 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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