QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 8474|回复: 1
打印 上一主题 下一主题

Linux init详解

[复制链接]
字体大小: 正常 放大

1253

主题

442

听众

-586

积分

复兴中华数学头子

  • TA的每日心情
    开心
    2011-9-26 17:31
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    自我介绍
    数学中国网站(www.madio.cn)是目前中国最大的数学建模交流社区

    邮箱绑定达人 优秀斑竹奖 发帖功臣 元老勋章 新人进步奖 原创写作奖 最具活力勋章 风雨历程奖

    群组越狱吧

    群组湖南工业大学数学建模同盟会

    群组四川农业大学数学建模协会

    群组重庆交通大学数学建模协会

    群组中国矿业大学数学建模协会

    跳转到指定楼层
    1#
    发表于 2004-9-27 15:00 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta |邮箱已经成功绑定
    一、什么是INIT:  * e) l6 j, Y" W. l- ?+ w

    ! r  K) j  l& s  init是Linux系统操作中不可缺少的程序之一。  : q/ j# s' t- f5 c+ X
    : I  w. A- j  c7 a. Z
      所谓的init进程,它是一个由内核启动的用户级进程。  0 i- k" _$ s( e3 K9 E$ v

    4 R+ P8 t3 p& Z/ }, u: m+ f. M  内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。  - B2 P1 m5 S' u& D4 A5 _1 O% G/ ?
    # Q: V; e. e1 S6 m- D/ R
      内核会在过去曾使用过init的几个地方查找它,它的正确位置(对Linux系统来说)是/sbin/init。如果内核找不到init,它就会试着运行/bin/sh,如果运行失败,系统的启动也会失败。  5 E; X* o& t9 f8 f
      c4 t0 K8 y+ D( x& `
      二、运行级别  
    # ~* `, @$ G1 h3 n: o; E& m
    ; Y2 |( K/ Q5 h  那么,到底什么是运行级呢?  $ Q. m$ w# M) w

    ! R! i$ [8 o( C) m% K2 m  简单的说,运行级就是操作系统当前正在运行的功能级别。这个级别从1到6 ,具有不同的功能。  
    . ^: R, U6 d# i0 r6 b3 [0 v: C. }
    " R: `) c4 G7 M1 z3 h% }  不同的运行级定义如下:(可以参考Red Hat Linux 里面的/etc/inittab)  
    - F7 p0 h3 t4 [, ~5 }6 v- m" @! W7 f  ?+ p7 x
      # 0 - 停机(千万不能把initdefault 设置为0 )  , Y7 J. m* l* w& i/ g

    * i  W( V+ Q! Y  # 1 - 单用户模式  
    ( o6 ^6 n1 H3 I1 X* `7 P
    ) D& B& l0 G: Q& B  # 2 - 多用户,没有 NFS  
    $ @0 i, e. H1 N9 {7 O8 W& E# n3 |) }9 u9 o
      # 3 - 完全多用户模式(标准的运行级)  1 E0 l8 f! c+ x
    & v9 s3 g- S# }) a4 m% S
      # 4 - 没有用到  
    - Q3 d+ K# h- w* \6 f* U( x) h$ s
    ( q9 i9 o- _2 M( m* Q; @  # 5 - X11 (xwindow)  
    $ v4 M: m* w, z# d. B- Q
    # G5 B) v; w& ~1 U4 N5 D  D) o  # 6 - 重新启动 (千万不要把initdefault 设置为6 )  
    ) g6 c$ u; Q; P; \4 u, a8 m3 {
    ! }" q5 J' w, R$ _  这些级别在/etc/inittab 文件里指定。这个文件是init 程序寻找的主要文件,最先运行的服务是放在/etc/rc.d 目录下的文件。在大多数的Linux 发行版本中,启动脚本都是位于 /etc/rc.d/init.d中的。这些脚本被用ln 命令连接到 /etc/rc.d/rcn.d 目录。(这里的n 就是运行级0-6)  
    / }* V$ h6 g2 [: q9 [' i0 n* f* c  _0 ]% M) F- q- s" n2 X8 O
    三、运行级别的配置  8 ?' H; G' u$ i. C3 }
    . v( z- Z: n( E: w3 o6 O. M3 j
      运行级别的配置是在/etc/inittab行内进行的,如下所示:  
      J! v6 @2 F( D3 O4 {0 A  h7 [/ J. I
    5 X* t1 u, P7 P9 g+ }2 b( s  12 : 2 : wait : / etc / init.d / rc 2  ( F" @& p" M  h- m- ~
    " y& {4 ?* m' R. v+ N
      第一个字段是一个任意指定的标签;
    / u0 M  i8 T% ]; A% i7 P0 H+ q% [5 [+ M
      第二个字段表示这一行适用于运行那个级别(这里是2); $ x& d# ^$ V/ f" @& L+ }7 @

    # E  r; A5 t. ]& A  第三个字 段表示进入运行级别时,init应该运行第四个字段内的命令一次,而且init应该等待该命令结束。/etc/init.d/rc命令运行启动和终止输入以便进入运行级别2时所需的任何命令。  
    : D/ ^: h3 k% K) ~) n5 @, F) \+ d+ S  u2 t. [1 U5 G' D
      第四个字段中的命令执行设置运行级别时的一切“杂活”。它启动已经没有运行的服务,终止不应该再在新运行级别内运行的服务。根据Linux版本的不同,采用的具体命令也不同,而且运行级别的配置也是有差别的。  
    + g7 b4 H( @9 q( c0 U: [- F; M' A. ?0 C4 a1 o7 }
      init启动时,它会在/etc/inittab内查找一个代码行,这一行指定了默认的运行级别:  ( {8 e5 L! a% R1 q. h

    & Y2 b! d  }# a2 B& O) L  id : 2 : initdefault :  ' `9 l  @7 l" C4 X. e
    3 |- g3 _4 s( A' I$ h
      你可以要求init在启动时,进入非默认运行级别,这是通过为内核指定一个“single”或“emergency” 命令行参数来实现的。比如说,内核命令行参数的指定可通过LILO来执行。这样一来,你就可以选择单用户模式了(即运行级别1)。  
    ) L4 }& N# }& e- x9 l( g; Y  u( N# K% k$ t+ v4 L- F1 [# X( p
      系统正在运行时,telinit命令可更改运行级别。运行级别发生变化时, init 就会从/etc/inittab运行相应的命令。  ! l/ D) K. n. q, Q6 U: D

    , b+ J) E0 G- o* h- f  四、/etc/inittab中的特殊配置    J2 K: ]& H! A4 d
    " {3 N* F/ O9 k$ K" F, O
      /etc/inittab中,有几个特殊的特性,允许init重新激活特殊事件。这些特殊特性都是用第三个字段中的特殊关键字标记出来的。比如:  
    + R, I; c- B5 a) k' H- E- X+ K* E% n5 V: Q# ^/ Z; N7 `- s
      1. powerwait  7 I' x9 E- r3 s0 \" l
    ( n! a# t/ l/ f+ R) r0 r9 T
      允许init在电源被切断时,关闭系统。其前提是具有U P S和监视U P S并通知init电源已被切断的软件。  
    * I' G& T' \3 Q  \& Y9 c9 U) d) t: @( H" x7 z
      2. ctrlaltdel  6 }  H- d* |( T2 @% M6 n
      z: e" Y" c% d- p: W
      允许init在用户于控制台键盘上按下C t r l + A l t + D e l组合键时,重新启动系统。注意,如果该系统放在一个公共场所,系统管理员可将C t r l + A l t + D e l组合键配置为别的行为,比如忽略等。  3 R2 ?  r2 V! U3 F' P' P' Q
    ! Z- q' n; V& z  N( S
    3. sysinit  3 J. h/ @- F1 C6 Q  ^4 @% I
    3 M5 E* k  c/ a( D( i& h
      系统启动时准备运行的命令。比如说,这个命令将清除/tmp。  
      s% a0 w; l8 G8 F% [; x8 e5 U
    ) d# h/ V" c% \: H+ Q  上面列出的特殊关键字尚不完整。其他的关键字及其使用详情,可参考你的inittab手册页。  7 H1 b$ |" x8 b
    ! W6 }4 J. A5 }% N9 G# u: d
      五、在单用户模式下引导
      }- e- Q: m6 Q- ^3 O* c. v. g9 W* `0 e5 f, }, g, ^1 S+ q# j: v
      一个重要的运行级别就是单用户模式(运行级别1),该模式中,只有一个系统管理员使用特定的机器,而且尽可能少地运行系统服务,其中包含登录。单用户模式对少数管理任务(比如在/usr分区上运行fsck)而言,是很有必要的,因为这需要卸载分区,但这是不可能的,除非所有的服务系统已被杀死。  
    : ?% g) _' k; F5 n$ L7 C5 j3 T: i5 n3 B7 R+ \
      一个正在运行的系统可以进入单用户模式,具体做法是利用init,请求运行级别1。内核启动时,在内核命令行指定single或emergency关键字,就可进入运行级别1了。内核同时也为init指定命令行, init从关键字得知自己不应该采用默认的运行级别(内核命令行的输入方式和你启动系统的方式有关)。  
    . Z$ F3 J2 [% F8 P* p
    & b6 K' I( c( E3 {/ Z5 M0 i+ T6 K  有时,以单用户模式进行启动是必要的,这样一来,用户在装入分区之前,或至少在装入分散的/usr分区之前,能手工运行fsck(在分散的文件系统上,任何活动都可能使其更为分散,所以应该尽可能地运行fsck)。  
    * r) [2 Y/ A2 _# Q( k
    : L2 ?4 N- D: h' k9 @2 g  如果自动化的fsck在启动时失败了,启动脚本init的运行将自动进入单用户模式。这样做是为了防止系统使用不连贯的文件系统,这个文件系统是f s c k不能自动修复的。文件系统不连贯的现象极为少见,而且通常会导致硬盘的不连贯或实验性的内核释放,但最好能做到防患于未然。  
    + M; Q2 h5 J4 a2 n- C0 K1 G) a9 H/ P+ L" {+ ]( e
      由于安全上的考虑,在单用户模式下,启动外壳脚本之前,配置得当的系统会要求用户提供root密码。否则,它会简单地为L I L O输入合适的一行代码,以r o o t的身份登录(当然,如果/etc/passwd已经由于文件系统的问题而不连贯了,就不适合这里的原则了,为对付这种情况,你最好随时准备一张启动盘)。  0 t* F( @" |( n! x1 G3 v& P+ F' f; _: ?
    ! C+ e; G5 j/ Z' B2 a) O' ^/ s( o
      不同的运行级有不同的用处,也应该根据自己的不同情形来设置。  4 ~1 f) V$ q1 D, J9 d( C

    4 _8 l' T2 v3 U  例如,如果丢失了root口令,那么可以让机器启动进入单用户状态。在启动后的 lilo 提示符下输入: 8 g6 \$ B# b" n
    . s1 u! I6 W6 R" N1 C! a* E4 m8 k
      init=/bin/sh rw 使机器进入运行级1 ,并把 root 文件系统挂为读写。他会跳过所有系统认证,让你可以使用passwd 程序来改变root口令,然后启动到一个新的运行级。
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    数学中国网站是以数学中国社区为主体的综合性学术社区,下分建模、编程、学术理论、工程应用等版块。从2003年11月建站以来一直致力于数学建模的普及和推广工作,目前已经发展成国内会员最多,资源最丰富,流量最大的数学建模网络平台。我们始终秉承服务大众的理念,坚持资源共享、共同进步的原则,努力营造出严肃、认真、务实、合作的学术氛围,为中国数学的发展做出应有的贡献。
    宇仲        

    2

    主题

    13

    听众

    1263

    积分

    升级  26.3%

  • TA的每日心情
    开心
    2015-4-10 07:33
  • 签到天数: 36 天

    [LV.5]常住居民I

    社区QQ达人

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-7-19 21:35 , Processed in 0.467920 second(s), 57 queries .

    回顶部