---------------------------------------------------------------------
 Ʈ μ
---------------------------------------------------------------------

۾ : 迵 (hwicool1@hanmail.net)

      α Ʈ ȭ鿡 Ÿ  
     Դϴ. 
ǵ ڼϰ  Ͽ,   Ǵ ũƮ 
ؼ м(?)ϵ Ͽϴ. 
     Ƿ ٸ   
 ̰   ֽϴ. ׷,  ð ⺻ ϱ 
 Ͻñ ٶϴ.

 :   κ̳, ߸ κ  Ϸ ϰ ˷ ֽø
       ٷ ġ ϰڽϴ. (,  𸣴 κ   ؼ 
       ֱ ϰ, Ȱŵ ^^;)
             ñ Ͻô ʺе鿡  
       Ǿ ڽϴ.

  : 0.1.1 (۾ : 2000. 8. 21)
ֱ  : 2000. 8. 22

--------------------------------------------------------------------
   
--------------------------------------------------------------------
1.  Ѵ κ init μ ۵ 
2. init μ inittab 
3. init :  
4. /etc/rc.d/rc.sysinit, /etc/rc.d/rc
5. , ڷ

--------------------------------------------------------------------
1.  Ѵ κ init μ ۵ 
--------------------------------------------------------------------
츮 PC   Ѹ PC  ҿ Ǿ ִ ʱȭ α׷ 
ϴ. ʱȭ α׷  ޸ üũ  ǰ ʿ ʱȭ 
Ϸǰ , ϵ ũ Ȥ ٸ  ü (÷ ũ CDROM ) 
0   Ʈ α׷ нϴ. , 0 ͸ MBR (Master Boot 
Record) ̶ մϴ.    lilo     ְ,
NT  OS/2  ٸ ü Ʈ δ    ֽϴ.
lilo  MBR  ִٰ ϰ  ϰڽϴ.
lilo  Ŀ ϱ ؼ  Է ٸϴ.  
ǻ͸   

        lilo:

 Ʈ װԴϴ. 
̶ 츮 lilo  Ʈ ڿ Ŀο ְ ɼ̳, ϰ 
ϴ Ŀ ̹    ֽϴ. ̿  ڼ  
lilo HOWTO  Ͻʽÿ.

, ڴ lilo  Ű⸦ ϴ Ŀ ̹ Ŀο Ѱְ
ϴ ɼǰ Բ ˷ݴϴ. ׸, lilo  شϴ Ŀ ̹ 
εؼ ϰ ˴ϴ. ⺻ δ /vmlinuz Ǵ /boot/vmlinuz 
̹ ˴ϴ.

vmlinuz   Ŀ  ̹Դϴ. ⼭ swapper  Ҹ 
μ id 0  μ ˴ϴ.  μ ü  ü
  ִ μν, ޸ , ũ , μ   
մϴ.  μ μ id 1  init  μ Ű
  swapper ν  ϱ մϴ.

⼭ swapper    ϴ ϰ ̾߱ ڽϴ.

н ýۿ Ǵ  μ "ϻ(lifetime)(?)"  
ֽϴ. μ Ʈ ñ... ׵ cpu  ϸ鼭 
Ǵ ð  ̰,    ڷκ Է ٸٵ
 "" ִ ð ֽϴ. 
swapper μ  ϸ鼭  ̾߱⸦ ϴ  swapper  ϴ
 ٷ, "" ִ μ ޸𸮿  ũ   
""״ٰ,  μ ߸  ñⰡ , ũ μ 
ٽ ޸𸮷  ִ   ϱ Դϴ.

 ,  ýۿ ʹ  μ ǰ ־ ׳ѵ  
 ŭ ޸𸮰 ũ ʴٰ սô. ׷, ð   ɸ 
I/O û  μ,  Է ٸ μ .. 
 sleep · ִ μ ( , httpd  κ ð.. 
- ׸      - port  û  ٸ鼭 
 ִ (asleep) ̰?)   ѵ   ޸𸮿  
ʿ䰡  Դϴ. ׷,  ޸𸮰 ڶϱ ũ ""  
ؼ  Ǿ ϴ μ  ޸  ø ǰ? 
̶ swapper  ۵ ؼ ޸𸮿 ִ μ ũ  Ű δ
(swap out) Դϴ. , swapper  ݴ ũ ҵǾ ִ μ 
޸𸮷 Ǿ Ǿ  ʿ䰡  ҵ μ 
޸𸮷 ٽ ø(swap in)  ϱ⵵ մϴ. 

  μ  "θ" μ  ֽϴ. ,  
μ Ų  Ѵٴ Դϴ. ׷,  ϳ. pid  
0  swapper μ(̰ μ ٴ ü ü ص 
  ϴ.) θ  ʰ, lilo  ؼ ""  
˴ϴ.  μ  fork() ý ݰ exec() ý  
̿ؼ  ˴ϴ.

 ⼭, fork() ý ݰ exec() ý ݿ   ̾߱ϰ
Ѿڽϴ. UNIX ý α׷   е   ƽô 
 Դϴ.

fork()  exec()   μ ٸ μ Ű  ϴ 
ý ȣԴϴ.  Լ  ַ ϸ, 켱 fork() ý
ȣ ο μ  ޸𸮸 Ҵմϴ. ׸, fork()  ȣ 
μ ο  α׸ մϴ. ׸   μ 
 μ ǰ, fork()  ̿ؼ  μ   
fork() ý     κ  ˴ϴ. (  
μ  μ Ȱ ڵ带 ֽϴ.)
ݸ, exec() ý  fork() ó ο μ  ޸𸮸 Ҵ 
ʰ, exec()  ȣ μ ޸𸮿 ο μ ڵ带  
ϴ.  exec()  ȣ μ ƴ exec()   ȣ 
μ ޸𸮿  ˴ϴ.

ٽ ϰ ϸ, fork()   μ ϳ   Դϴ. 
, μ id (pid)   ٸ  ϳ μ  . 
ݸ, exec()   Ǵ ο μ ϴ. exec()  
ȣ μ pid  ״ ο μ  Ǹ, exec()  
ȣ μ ο μ   ˴ϴ.

--------------------------------------------------------------------
2. init μ inittab 
--------------------------------------------------------------------

μ id 1  init μ ڵ ؼ ý ϰ 
˴ϴ. pid 0  μ ʱȭ(?) Ŀ   ۾ 
ϴ .

init μ ϴ

    Ͻý  ˻ϰ,
    Ͻý Ʈϰ,
      ,
     α ٸ,
    ڰ α ϸ, ڸ    ͱ

͵Դϴ.

init  ó ؼ ؾ  ۾   /etc/inittab 
Դϴ. init  ο ෹  μ ϱ ؼ  
 մϴ. 
ٽ ϸ, inittab  ý ¿  شϴ  init
μ ؾ  ϵ   Դϴ.
init α׷ inittab  Ͽ  ο    
 μ   ̸,  μ ̰, ο 
 ؾ߸ ϴ μ   ǰ   μ  
 ŵϴ.

Ʒ    ǻͿ ִ inittab Դϴ. ( ϱ
  ֽñ ٶϴ.  ÿ οϿϴ. -_-;)
---------------------------------------------------------------------
#
# inittab       This file describes how the INIT process should set up
#               the system in a certain run-level.
#
# Author:       Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
#               Modified for RHS Linux by Marc Ewing and Donnie Barnes
#

# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
# 
id:3:initdefault:

# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

# Things to run in every runlevel.
ud::once:/sbin/update

# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

# When our UPS tells us power has failed, assume we have a few minutes
# of power left.  Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly.  
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"


# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

# Run xdm in runlevel 5
# xdm is now a separate service
x:5:respawn:/etc/X11/prefdm -nodaemon
---------------------------------------------------------------------

׷ , inittab   м ڽϴ.
#  ϴ  ̶ּ°  ˰  ̴ϴ.
inittab  뵵 ڰ ,  (ren level)    
(?) ɴϴ. 

   # Default runlevel. The runlevels used by RHS are:
   # 0 - halt (Do NOT set initdefault to this)
   # 1 - Single user mode
   # 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
   # 3 - Full multiuser mode
   # 4 - unused
   # 5 - X11
   # 6 - reboot (Do NOT set initdefault to this)

 0  ý   Ǵ Դϴ.
 1  ̱  忡 Ǵ Դϴ.  lilo: Ʈ
          linux single ̶ Էϸ  1   ϰ 
         ˴ϴ. 
           Ʈ root  αεǸ, ټ ߿  
          ʰ Ǿ ֽϴ.
 2  NFS   ʴ   带 ϸ,
 3  Ʈŷ ϴ   Դϴ. (Ʈ  
         ַ ˴ϴ.)
 4    ؼ   ִ Դϴ. ʿ信 
          Ű ϴ ̳ 񽺸 /etc/rc.d/rc4.d 
         丮 ؿ ν и Ư    
           ֽϴ.
 5  X  Ű   ӵǾ ֽϴ.
 6  ý ýŰ ǵ Դϴ.

, inittab  ó 

        id:3:initdefault:

  

        id:6:initdefault:

Ȥ 

        id:0:initdefault:

  ,   ý ڸ Ǿ 
ų,  ŵ ݺϰ Ǿ Ƿ Ͻñ ٶϴ. 

! ̶ ΰ... ϰ Ͻô е  ̴ϴ. Ƹ, 
 ̴ٸ,   ϰ ø մϴ. 

---------- runlevel ̶ ------------

init   :

        õ ׷ μ ýۿ ǵ 
       ϱ   Ʈ ̴. 
       A runlevel is a software configuration of the system which
       allows  only  a selected group of processes to exist.

ý ϴ , ý  Ȥ  ؼ 붧 
  ٸ  񽺸  ʰ ϰ  찡  
Դϴ.
 , Ʈũ   off ϰ ϰ ʹٵ,   
尡 ƴ϶ ̱   ϰ ʹٵ ϴ 찡   
ֽϴ.

ó  ٸ  ϱ ؼ   "" ̶ 
̸   Դϴ.
׸, ""    0, 1, 2, 3, 5, 6   ̸ 
Ǿ "ý , , ̱, ߻ , Ʈũ
 ʴ     "     Դϴ. 
(   0, 1, 6 ۿ ϴ.   2, 3, 5  
"ʻ"  ش 뵵 ϰ ִ  ϴ.  2, 3  SunOS 
 ٸ System V 迭 init μ  ü  
ϰ ϰ ֽϴ.)
 ܿ 7, 8, 9  ڰ ؼ   , ʻ ׷ 
 ʴ´ٰ մϴ.
׸, S  s  Ư ν մϴ. 

  ý ÿ Ʈ Ǵ Ͽ ؼ Ű  
 ִٸ,  0  ߰ Ͻø Ǵ Դϴ.

̷   ϴ ۾ ߰ϱ ؼ /etc/rc.d/rcN.d 
丮 Ʒ ɺ ũ Ͻø ˴ϴ. ڼ    
4  ξϴ.
-------------------------------------

 inittab     ϰڽϴ.
ڼ inittab   ̶      Ǿ 
ִٴ  Ƽ ̴ϴ. 

        id:run-levels:action:process

 ó  id  ش state ϱ  ̶̺ ø 
˴ϴ. ׸,   rul-levels     ϱ  
 Դϴ. ׸, action   (Ʈ ϰڽϴ.), 
Ʈ  Ǵ μ   ΰ  Դϴ. 
  process  μ  ο μ Ѱ 
μԴϴ. ( Ű ɾ  ̶ ϼ, , 
ش Ʈ   process κп  ɾ ϶ Դϴ. 
-_-;)

action κп   ִ Ű  ϴ. 
(  Դϴ.)

---------------------------------------------------------------------
  wait 

    μ ϰ,   Ʈ  ,  μ 
    ϱ ٸ Դϴ.


  respawn 

    μ ϰ,  μ װ Ǹ, ٽ Ű 
    Դϴ. ַ getty  μԴϴ. 


  initdefault 

    Ʈ  ϰڴٴ Դϴ.   inittab 
     ùٿ  Ű尡 µ, ؼϸ,  3  Ʈ 
     Ѵٴ ǹԴϴ. , initdefault Ʈ ý
    Ʈ μ  Ŀ   Ű ƮԴ
    . process ʵ ƹ ǹ̰  ˴ϴ.


  off : ƹ͵   Դϴ.


  once 

    ̹ ǰ ִ μ  , ǰ   
     ѹ Ű Դϴ. , wait ó ٸų  
     մϴ.


  boot 

    ý ýÿ Ǿ  μ ŵϴ.  ʵ 
    ƹ ǹ̰  ˴ϴ. (õ˴ϴ.)


  bootwait 

    μ ý ýÿ ǵ մϴ. , init  
    μ Ǳ⸦ ٸٴ  boot  ٸϴ.
     /etc/rc    ֽϴ.


  sysinit 
  
    μ ý Ʈÿ ǰ մϴ. ׸,  Ʈ 
     boot  bootwait Ʈ Ǳ  Ǵ Ʈ 
    ˴ϴ.  ʵ մϴ.


  powerwait 
    
    init μ SIGPWR ñ׳  Ǵ μԴϴ.
    SIGPWR ñ׳  ؼ ΰ   Ű 
    ñ׳Դϴ. ̶ init  μ Ǳ մϴ.

 
  powerfail 

    powerwait ׸ , μ Ǳ ٸ
    ʴ´ٴ  ٸϴ.


  powerokwait 
    
     Ʈ  init  SIGPWR ñ׳   μ
    մϴ. ׷,  Ʈ  μ 
    /etc/powerstatus Ͽ OK  ܾ   ˴ϴ.
    ,  ٽ ƿ  ˴ϴ.

  
  ctrlaltdel 

    init  SIGINT ñ׳ ް Ǹ  μ մϴ.
    , ý ֿܼ  CTRL-ALT-DEL Ű    Ʈ
      μ Ǵ Դϴ.
	       
  
  kbrequest 

     Ʈ ϴ μ init  Ű ڵ鷯κ 
    ֿܼ ƯŰ  ٴ ñ׳  Ǵ μ
    Դϴ. Ű ϰ Բ   ֽϴ.
---------------------------------------------------------------------

Ƹ  븸 ŵ ڽ inittab  κ Ͻ   
̴ϴ. ,  ,  inittab  پ м 
ڽϴ.

        id:3:initdefault:

  Ʈ  3 ϴ Դϴ. initdefault Ű ڿ 
process ʵ尡 õȴٰ κп Ǿ ? ^^;
 ٿ ؼ  Ŀ  3  Ŀ  ˴ϴ. , 
ó  ϸ, ٷ X  ô ̶ ̺κ   
Ǿ  ̴ϴ.

        id:5:initdefault:

 5   inittab Ͽ ʽÿ. X11 ̶ Ǿ ?

׷,  Դϴ.

        si::sysinit:/etc/rc.d/rc.sysinit

 ο sysinit  Ű尡 action ʵ忡 Ǿϴ. action 
ʵ忡   ִ Ű  sysinit  ãƺ, μ ý 
ýÿ Ǹ,  Ѵٴ , ٸ boot  bootwait  
action ʵ忡  μ麸  ȴٴ  ֽϴ.
,  ó init μ Ű Դϴ. Ȯ ϸ, start-up
ũƮ   ֽϴ. process ʵ忡 /etc/rc.d/rc.sysinit  
õǾ ֽϴ.
ٽѹ ܼȭѼ ̾߱ϸ,   inittab  ϴ  
 ڽ  ø, /etc/rc.d/rc.sysinit  ȴٴ Դϴ.
rc.sysinit   ߿ 캸 ϰ, ٷ ϰڽϴ.

        l0:0:wait:/etc/rc.d/rc 0
        l1:1:wait:/etc/rc.d/rc 1
        l2:2:wait:/etc/rc.d/rc 2
        l3:3:wait:/etc/rc.d/rc 3
        l4:4:wait:/etc/rc.d/rc 4
        l5:5:wait:/etc/rc.d/rc 5
        l6:6:wait:/etc/rc.d/rc 6

ð, Ͻ ٿ      ũƮԴϴ. 
/etc/rc.d/rc ũƮ ش  μ Ѱִ±.
/etc/rc.d/rc ũƮ  ߿ ϳ м ڽϴ.
    ũƮ     init μ 
 ʰ, ٸ ǹ wait Ű带 action ʵ忡  ξ.

        ud::once:/sbin/update

 ٿ action ʵ忡 once Ű尡 ϴ. ׷   
ѹ Ǵ μԴϴ. /sbin/update  ϴ±.
/sbin/update  bdflush  Ŀ  ŵϴ.   ۸ 
Ѵٵ ϴ  մϴ. ڼ  man update   ø   
ֽϴ.

        ca::ctrlaltdel:/sbin/shutdown -t3 -r now

    ڰ ֿܼ CTRL-ALT-DEL Ű   
̱  ų Ȥ ý ˴ٿ Ϸ   ҷ 
μ մϴ.
/sbin/shutdown -t3 -r now  ߱.
3 Ŀ ϰ ˴ϴ.
shutdown   ϱ ؼ init μ  ٲٵ 
϶ ñ׳  ˴ϴ.  0 ý halt  ǰ,  
6 , 1 ̱ 忡 ˴ϴ. 

ִ , ڰ (root  ) init μ ü 
  init  ų Ŀǵο    ֽϴ.

        /sbin/init N

̶  , N  õ ෹ init  ϰ ˴ϴ.

        /sbin/init 6

̶ ϸ, init   6  ϰ Ǹ鼭 ý  ǰ 
˴ϴ. ٸ System V 迭 ü ̷ 츦 ؼ Ư 
telinit  ɾ غ  ֽϴ. ( Դϴ.)

  pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
  pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"

    , UPS  ϴ е鿡Ը شǴ° .

        1:2345:respawn:/sbin/mingetty tty1
        2:2345:respawn:/sbin/mingetty tty2
        3:2345:respawn:/sbin/mingetty tty3
        4:2345:respawn:/sbin/mingetty tty4
        5:2345:respawn:/sbin/mingetty tty5
        6:2345:respawn:/sbin/mingetty tty6

׸,   κп پ ִ ,     2,3,4,5   
Ǵ ν, ܼ ,  ٸ κԴϴ.
ռ  ʱȭ    Ǵ κ. 
   ٷ X  ۵Ǵ е 

        x:5:respawn:/etc/X11/prefdm -nodaemon

   5 شǴ α׿ μ õǾ  ̴ϴ.


--------------------------------------------------------------------
3. init :  
--------------------------------------------------------------------

   ٿ  init μ ڽſ Ҵ ʱȭ  
 ġ , inittab   κп õ ó mingetty Ȥ 
getty μ ŵϴ. Ű  ʿ pid 0  μ 
  ""(?) init  fork() ý  ѹ ϰ, ׿  
 ڽ init  exec() ý  ̿ؼ mingetty  μ 
ϰ ˴ϴ. ׸ , mingetty μ ٽ exec()  ȣϿ 
login μ ϰ, login μ  userid  passwd  
Է¹޾Ƽ   Ĩϴ. , ε ڶ, /etc/passwd 
Ͽ õ ڿ شϴ   ˴ϴ.     
exec() ý  ̿ؼ Դϴ. 
׷, ڴ ڽ  (ַ bash)  ۾ ϰ,  Էϴ 
ɾ   fork()     ڽμ exec()  Ͽ 
ǰ, ϴ Դϴ.
  ϰ ׸ ׸  ϴ.

        +-------------+
        |  "" init  |
        |   (pid 1)   |                                
        +------+------+
               | <-------------------------------------+
               | fork()                                | respawn
              \|/                                      |
        +------+------+                                |
        | "ڽ" init |                                |
        |  (pid 266)  |                                |
        +------+------+                                |
               |                                       |
               | exec()                                |
              \|/                                      |
        +------+------+                                |
        |  mingetty   |                                |
        |  (pid 266)  |                                |
        +------+------+                                |
               |                                       |
               | exec()                                |
              \|/                                      |
        +------+------+                                |
        |    login    |                                |
        |  (pid 266)  |                                |
        +------+------+                                |
               |                                       |
               | exec()                                |
              \|/                                      |
        +------+------+                                |
        |    bash     +----------------------------  
        |  (pid 266)  |          α׾ƿ          
        +------+------+
               | ɾ 
               | fork()
              \|/
        +------+------+
        |    bash     |
        |  (pid5909)  |
        +------+------+
               |
               | exec()
              \|/
        +------+------+
        |ٸ μ|
        |  (pid5909)  |
        +------+------+


--------------------------------------------------------------------
4. /etc/rc.d/rc.sysinit, /etc/rc.d/rc
--------------------------------------------------------------------

rc.sysinit ũƮ 캻  ũ Ư    ϴ. ϴ 
ϵ    𵨷 ϰڽϴ.
  inittab  ǿ , ý ʱȭ      Ǵ 
ʱȭ ũƮԴϴ.

   - ⺻ path 
   - /etc/sysconfig/network    ũƮ Ŵ
   - Ű ε
   - ý Ʈ ε
   -   Ȱȭ
   - ũ ˻ (fsck)
   - /proc Ͻý Ʈ
   - Ʈ Ͻý rw  ٽ Ʈϱ
   - /etc/HOSTNAME  
   - /etc/mtab Ͽ Ʈ /proc Ͻý Ʈ ߰ϱ
   - Ŀ  εϱ
   - ý ð 
   - ....

  մϴ. ڼ  rc.sysinit   о    
ֽϴ.

, 츮 Ǹ  ʱȭ ũƮ   Ű, 
̴µ Ǵ /etc/rc.d/rc ũƮԴϴ.
 ũƮ μ   ޽ϴ.(-_-; ǥ  Ų ϱ)
, 

        /etc/rc.d/rc n

   ŵϴ. n  ෹ ϴ.
   ظ ؼ    ʽÿ.

        ls /etc/rc.d

  /etc/rc.d 丮  µ,  ߿   
丮 ֽϴ.

        rc0.d/
        rc1.d/
        rc2.d/
        rc3.d/
        rc4.d/
        rc5.d/
        rc6.d/

 丮 rc.d  ̸  ֽϴ.  丮 
Ʒ ش   񽺳 μ ǵǾ ֽϴ.
 丮 ؼ  ϵ ִ 캸ڽϴ.

        $ ll /etc/rc.d/rc3.d
        drwxr-xr-x  ./
        drwxr-xr-x  ../
        lrwxrwxrwx  K05keytable -> ../init.d/keytable*
        lrwxrwxrwx  K15gpm -> ../init.d/gpm*
        lrwxrwxrwx  K15proftpd -> ../init.d/proftpd*
        lrwxrwxrwx  K60atd -> ../init.d/atd*
        lrwxrwxrwx  K60crond -> ../init.d/crond*
        lrwxrwxrwx  K80random -> ../init.d/random*
        lrwxrwxrwx  K89portmap -> ../init.d/portmap*
        lrwxrwxrwx  K92apmd -> ../init.d/apmd*
        lrwxrwxrwx  K96pcmcia -> ../init.d/pcmcia*
        lrwxrwxrwx  S10network -> ../init.d/network*
        lrwxrwxrwx  S30syslog -> ../init.d/syslog*
        lrwxrwxrwx  S50inet -> ../init.d/inet*
        lrwxrwxrwx  S55named -> ../init.d/named*
        lrwxrwxrwx  S80sendmail -> ../init.d/sendmail*
        lrwxrwxrwx  S90mysql -> ../init.d/mysql*
        lrwxrwxrwx  S91smb -> /etc/rc.d/init.d/smb*
        lrwxrwxrwx  S99local -> ../rc.local*

ô ٿ  S  ϴ ϵ, K  ϴ ϵ ֿ~ 
ִµ,  /etc/rc.d/init.d Ʒ ϵ鿡 ũ Ǿ ֽϴ.

ó, rcN.d 丮  ϵ  ũθ Ǿ ,  
񽺸 ϰų ϴ ũƮ /etc/rc.d/init.d 丮 Ʒ 
մϴ.

S  ϴ  ش 񽺸 Űµ ǰ, (Start)
K  ϴ  ش 񽺸 ̴µ ˴ϴ.(Kill)
 ǻͿ Ʈ  3  network, syslog, inet, named, 
sendmail, mysql, smb  ϵ  ξϴ. (ġ proftpd 
 Ǵµ,  ũ ɱⰡ (^^;)Ƽ S99local  Ű 
/etc/rc.d/rc.local ȿ  ũƮ  ξϴ.) 

׷ ̻Ƽ, /etc/rc.d/rc0.d 丮 뵵  ڽϴ.

        $ ll /etc/rc.d/rc0.d
        drwxr-xr-x  ./
        drwxr-xr-x  ../
        lrwxrwxrwx  K05keytable -> ../init.d/keytable*
        lrwxrwxrwx  K15gpm -> ../init.d/gpm*
        lrwxrwxrwx  K15proftpd -> ../init.d/proftpd*
        lrwxrwxrwx  K30sendmail -> ../init.d/sendmail*
        lrwxrwxrwx  K45named -> ../init.d/named*
        lrwxrwxrwx  K50inet -> ../init.d/inet*
        lrwxrwxrwx  K60atd -> ../init.d/atd*
        lrwxrwxrwx  K60crond -> ../init.d/crond*
        lrwxrwxrwx  K80random -> ../init.d/random*
        lrwxrwxrwx  K85netfs -> ../init.d/netfs*
        lrwxrwxrwx  K89portmap -> ../init.d/portmap*
        lrwxrwxrwx  K90killall -> ../init.d/killall*
        lrwxrwxrwx  K90mysql -> ../init.d/mysql*
        lrwxrwxrwx  K90network -> ../init.d/network*
        lrwxrwxrwx  K92apmd -> ../init.d/apmd*
        lrwxrwxrwx  K96pcmcia -> ../init.d/pcmcia*
        lrwxrwxrwx  K99syslog -> ../init.d/syslog*
        lrwxrwxrwx  S00halt -> ../init.d/halt*

ߴ   ΰ K  ϴ ũ մϴ.  ϳ S  
ϴ ũ halt Դϴ. ý Ḧ ϴ ũƮ ũ ɷ 
ֽϴ.

, ̷ ෹   丮 ãƼ  丮 Ʒ 
ũ Ű ũƮ Ű ũƮ /etc/rc.d/rc  
캸ڽϴ.
	
Ʒ  ǻ /etc/rc.d/rc  Ϻθ  ҽϴ.  
ν Ŀ ϳ ٲ ʾҽϴ. (^^;)

--------------------------------------------------------------------
#!/bin/bash
#
# rc            This file is responsible for starting/stopping
#               services when the runlevel changes. It is also
#               responsible for the very first setup of basic
#               things, such as setting the hostname.
#
# Original Author:       
#               Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
#

# Source function library.
. /etc/rc.d/init.d/functions

...  ...

# , ù° ڷ Ѿ  شϴ 丮 ִٸ, 켱, 
#   μ Դϴ.
# μ ̴  Ǵ ɾ K  ξ  Դϴ.
#  شϴ 丮 /etc/rc.d/rcn.d ν, n  0, 1, 2, 3, 4,
# 5, 6  ڰ ٽϴ. ls /etc/rc.d   ø rc0.d 
# rc1.d...   丮 ϴ    ֽϴ.

if [ -d /etc/rc.d/rc$runlevel.d ]; then
    # , kill ũƮ Ų.
    for i in /etc/rc.d/rc$runlevel.d/K*; do
        # ũƮ ϴ üũѴ.
        [ ! -f $i ] && continue

        # [KS]??foo.{rpmsave,rpmorig} ũƮ Ű ʴ´.
        # [KS]??foo.{rpmsave,rpmorig}  ... ǥ   
        #    ִ. 
        # ù ڰ K Ȥ S  ϸ,  ڿ   ΰ , 
        #  ڿ foo.  ,  rpmsave  rpmorig     
        # ̸ Ѵ. 
        [ "${i%.rpmsave}" != "${i}" ] && continue
        [ "${i%.rpmorig}" != "${i}" ] && continue
        [ "${i%.rpmnew}" != "${i}" ] && continue

        # Check if the subsystem is already up.
        subsys=${i#/etc/rc.d/rc$runlevel.d/K??}
        [ ! -f /var/lock/subsys/$subsys ] && \
            [ ! -f /var/lock/subsys/${subsys}.init ] && continue

        # Bring the subsystem down.
        if egrep -q "(killproc |action )" $i ; then
            $i stop
	else
            action "Stopping $subsys" $i stop
        fi
    done

# μ  ׿ٸ, , ش  Ǿ ϴ 
# μ ų Դϴ. μ ϴ ɾ S  
# ξ  Դϴ. 

    for i in /etc/rc.d/rc$runlevel.d/S*; do
        # ũƮ ϴ ȮѴ.
        [ ! -f $i ] && continue

        # Don't run [KS]??foo.{rpmsave,rpmorig} scripts
        [ "${i%.rpmsave}" != "${i}" ] && continue
        [ "${i%.rpmorig}" != "${i}" ] && continue
        [ "${i%.rpmnew}" != "${i}" ] && continue

        # Check if the subsystem is already up.
        subsys=${i#/etc/rc.d/rc$runlevel.d/S??}
        [ -f /var/lock/subsys/$subsys ] || \
            [ -f /var/lock/subsys/${subsys}.init ] && continue
	    
        # 񽺸 ų  Ű  ڿ  
        # "confirm"  ȮѴ.  confirm ̸, ڿ 
        # ش μ  θ Ѵ.
        # confirm Լ /etc/rc.d/init.d/functions  ǵǾ ִ.
        [ -n "$CONFIRM" ]  && 
            { 
                confirm $subsys
                case $? in
                    0)
                        :
                        ;;
                    2)
                        CONFIRM=
                        ;;
                    *)
                        continue
                        ;;
                esac 
            }

        # Bring the subsystem up.
        if egrep -q "(daemon |action )" $i ; then
            $i start
        else
          if [ "$subsys" = "halt" -o "$subsys" = "reboot" -o \
	          "$subsys" = "single" ]; then
              $i start
          else
              action "Starting $subsys" $i start
          fi
        fi
    done
fi
--------------------------------------------------------------------

  ũƮ  м ø ƽ   Դϴ. 
⼭ ߿ , ڽ ýÿ Ű⸦ ϴ    
ִٴ Դϴ. rc ũƮ , rc  μ ǳ  ڸ 
, شϴ 丮 K  ϰų, S  ϴ   
ãƼ ̰ų ŵϴ.

        for i in /etc/rc.d/rc$runlevel.d/K*; do
	....
        $i stop



        for i in /etc/rc.d/rc$runlevel.d/S*; do
	....
        $i start

κ   ϰ ˴ϴ.

츮     , , ǻ͸   ڵ 
Ű ϴ  ߿, , httpd  ִٰ ϸ, httpd  
   ڵ ǰ ϱ ؼ /etc/rc.d/rc3.d 丮 Ʒ 
SNNhttpd  ϰ KNNhttpd  ɺ ũ httpd Ȥ apachectl 
ũ ָ Ǵ Դϴ.

׷, ýÿ  3 ϸ鼭, /etc/rc.d/rc3.d 丮 S* 
ϵ ϰ ǰ, (S ڿ ȣ ִµ   ˴ϴ.) 츮 
 SNNhttpd ũ ϰ ˴ϴ. (⼭ NN   ȣԴϴ. 
Ʈũ Ȱȭ  Ŀ apache  Ǿ ϴ°  
ϰ ȣ Ҵ ֽø ˴ϴ.

 κ, ش μ Űų Ű ũƮ ݵ, 
׻, μ start Ȥ stop ̶  Ѱ ޵ ۼؾ Ѵٴ 
Դϴ.   ش μ  Ȥ Ű ũƮ 
 ⸦ ϽŴٸ,   ڵ尡 ݵ ԵǾ /etc/rc.d/rc 
ũƮ   ֵ ۼ ϼž մϴ. ׸, ý , 
ϰ ְ,  ũƮ /etc/rc.d/init.d  ־ ֽô° ⿡  
 ϴ.

        . /etc/rc.d/init.d/functions

        ... ߷ ...

        case "$1" in
         start)
            #  κп ϴ ڵ带 ִ´.
            ;;
         stop)
            #  κп ϴ ڵ带 ִ´.
            ;;
         *)
            #  start Ȥ stop  õ   Ѵ.
            echo "Usage: skeleton {start|stop}"
            exit 1
        esac

        exit 0

̰  ϴٰ ô е /etc/rc.d/rc.local ũƮ ִµ,  
ũƮ  κп Ű⸦ ϴ  ϴ ڵ带 ־ 
ֽø ˴ϴ.
, rc.local ũƮ ෹ 2, 3, 5   ǵ Ǿ 
ֽϴ. rc.local ũƮ rcN.d 丮 S99local ̶ ̸ 
ũǾ ˴ϴ. S99local ̶  rc2.d rc3.d rc5.d  ?


--------------------------------------------------------------------
5. , ڷ
--------------------------------------------------------------------

  ,   Ʈ μ  ˰ 
ִ   ҽϴ.  ó    ̿  
ڷᰡ   ϸ鼭   ± T_T
ε ʺ(  ʺ   -_-;)Ե    
ڽ  ý  ٲٴ    ϰ  ڽϴ.
  ٸ   ̿ (!)  ϳ ϴ  
Ǿ ڷḦ ãô е鲲 ȥ ġ   ϴ  
.. ^^;  ̷ kldp   ۹ ÷ ϴ.

ô е   ٸڽϴ.

----------
ڷ :
   
   Essential System Administration / AEleen Frisch / O'REILLY
   The Design of the UNIX Operating System / M.J.Bach / Prentice Hall
   Ǵٸ    SysV ʱȭ / ̸ / kldp
    inittab, init  
