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

etc配置文件解读——inittab

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
PC主机:Ubuntu 和 redhat 9.0
8 K, }5 Y9 g9 |8 x$ U
. y( G4 j" g: s% @( D; q% }1 {目标板:TQ2440开发板 cpu:s3c2440 linux内核:2.6.30, n& t$ G6 a8 n. @% S- M- s3 q
% G5 F/ u: [; L& P6 p
NOTE:这里的讲解将针对嵌入式Linux,而不是一般的PC平台。
6 N- _$ m% E/ U  P$ j3 w. s5 ?# O1 E+ q
如发现错误欢迎指正。
" a+ m' S& V' F1 d8 o5 ~3 C# q$ z) J/ `
$ k( s/ @( r9 z* X. j7 `' t- I  Y& g

7 M( m" ^% u0 _首先,先来看下我的/etc/inittab是怎么样的,然后再详细说明。
# H% N( J  c9 n) r  E2 W& W
9 D) F% P" t3 \4 P, F
6 V, h1 T7 _, @6 d; K; j2 ^& U[root@yj423 /]#cat /etc/inittab 9 R' T! W! c! C+ m+ r3 r6 \
::sysinit:/etc/init.d/rcS
  l: U6 c$ H& \# m# zconsole::respawn:-/bin/sh+ }3 e/ j% U* R/ G7 b2 x1 t- L
:: once:/usr/sbin/telnetd -l /bin/login4 ^, \' j. r% V7 j% u( b
::ctrlaltdel:/sbin/reboot
' }7 S3 o* O' w" j/ f1 d! F# [0 g::shutdown:/bin/umount -a -r
% M1 u% V5 P$ _! L
5 `* r% d% Y; X5 J7 D: B这个配置文档的内容什么时候会被执行呢?
0 P" t& P, c' G7 y2 d* @
& l5 D, T% A' X; h3 @当用户进程init启动以后,该进程会读取该配置文档中的内容,然后执行。而在嵌入式系统中,用户进程init通常就是由busybox产生的/linuxrc。$ g6 H8 p; S( h7 A3 g! s# n

- R. N! M, c" P# A该文档中每一行的格式如下:9 j/ B! d# W7 O9 F4 Q
/ E2 H% l) i" p, ~
<id>:<runlevels>:<action>:<process>
! Z; s' Y, |, j) [+ L, G- r" X, I2 a, C$ X5 i. m
id:该字段通常是busybox的init进程来用来寻找controlling tty,也就是终端设备。这个字段的前面会被加上/dev/。在上面的例子中我的终端设备就是/dev/console。+ o/ Y- ^# f& X, _1 v+ l1 E
9 V+ p2 q0 n7 V+ Z/ ^$ v& B
runlevels:该字段被忽略。也就是说,busybox的init不支持运行级别。1 k; s6 @1 t/ L* ~1 T* {
  Y& p$ i/ Q: G! W
action:该字段用于描述后面process的运行方式。在busybox中,有效的action包括如下几种:
" O0 K. t" v& f: s1 L) z
5 i. ~( S+ q% |2 ~7 `0 _% p    sysinit——在系统启动阶段,后面的process将被执行。在上面例子中,执行rcS脚本。
& ^( z' D, f3 c( F6 q. z5 }+ O
* p' f; L8 ]: L" f6 f" I- Q  u    respawn——当后面的process进程结束时,该进程又会被重启。2 |6 V7 F' C. \& ~$ c( Q' i

5 C. L) M! J8 w. e5 l' {/ k/ ~4 O    askfirst——这个类似于上面的respawn,但是在运行process之前,它会打印" Please press Enter to activate this console.",然后等待用户按下Enter来启动该
7 ~! C0 P1 y. C5 A, }; q( K" Z! P% |9 X6 Z
                     process。通常askfirst是用于启动终端设备的,如果不想看到这个提示,就像我那样使用respawn,而非askfirst.2 v+ t1 S: r/ Q/ G; P8 z; h
; n" H# z) Y  d- l( L
    wait——init进程会等待该process执行完毕,然后执行下一项。
$ h7 `# v4 z1 g7 x3 p; q. f# V2 ^' M5 {# y( w' i
    once——process只会执行一次。在上面的例子中,执行telnetd守护进程,-l参数表示连接时,使用login登录。同时执行login程序。
6 M( ~9 U. a8 w; ~
) g  p3 R& e7 `    restart——重新启动init进程时执行process.
( Q8 N3 l6 D) S9 M
: t5 E7 l: ?2 Q     ctrlaltdel——当Ctrl+Alt+Del三个键同时按下后,init进程就会收到SIGINT信号,此时运行process。
. t! {, Y1 G' n6 o
4 C# H9 K1 {- u5 \( Z    shutdown——在系统关机的时候执行process。在上面的例子中,在关机时卸载了所有已挂载的设备。
5 R  n7 m/ A- @4 d+ d2 r4 h$ e0 J# @) t% Z3 s
process:该字段表示要执行的程序和相应的参数。: C6 Y% F/ M  E. w4 d4 v2 Q2 f& g+ e6 A

: {: j; g4 @- p7 e+ U$ |: h1 b0 c  O2 r7 h9 Q+ ]
console::respawn:-/bin/sh# J6 i# j- V9 B1 [" |8 i

$ O6 _; G3 ?9 @" `* h这句表明:/bin/sh在/dev/console这个tty上被执行。“-”表示该shell为 login shell。9 V$ X: i9 \4 b+ R% S5 U

9 w# f0 h; w1 j% i3 c, v* M/ x+ d% {" k. s6 U/ g& @
如果没有inittab文件,init进程将使用默认的行为:
* T/ k4 X& ]  h, q::sysinit:/etc/init.d/rcS
; J* i3 @5 X" K& W+ A0 [4 q# \::askfirst:/bin/sh- n* j/ p8 p  j1 r3 {, c- k# q
::ctrlaltdel:/sbin/reboot
# ~) B# O" Q2 P8 V& ?::shutdown:/sbin/swapoff -a
4 O2 x# S: V' c" G9 a::restart:/sbin/init
) \3 D$ _/ G2 Y7 O
; p$ E+ l8 Y9 v6 s, ^1 C1 y" W  \; h) R8 ?0 a. e  U

! f  F2 W" v% B5 {: U0 ~% \* v

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-26 01:26 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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