3Àå. init : ±× ÀÌÈÄ

¾Õ Àý¿¡¼­ ¼³¸íÇÑ ¹Ù¿Í °°ÀÌ init ÇÁ·Î¼¼½º°¡ Àڽſ¡°Ô ÇÒ´çµÈ ÃʱâÈ­ °úÁ¤À» ¸ðµÎ ³¡¸¶Ä¡°í ³ª¸é, inittab ÆÄÀÏÀÇ ¸Ç ³¡ºÎºÐ¿¡ ¸í½ÃµÈ °Íó·³ mingetty ȤÀº getty ÇÁ·Î¼¼½º¸¦ ½ÇÇà½Ãŵ´Ï´Ù. ½ÇÇà½ÃŰ´Â ¹æ¹ýÀº ÃÖÃÊ¿¡ pid 0 ÀÇ ÇÁ·Î¼¼½º [1] ¿¡ ÀÇÇØ ½ÇÇàµÈ init °¡ fork() ½Ã½ºÅÛ ÄÝÀ» Çѹø ¼öÇàÇϰí, ±×¿¡ ÀÇÇØ »ý¼ºµÈ ÀÚ½Ä init °¡ exec() ½Ã½ºÅÛ ÄÝÀ» ÀÌ¿ëÇØ¼­ getty ȤÀº mingetty µîÀÇ ÇÁ·Î¼¼½º¸¦ ¼öÇàÇÏ°Ô µË´Ï´Ù.

getty °¡ ÇÏ´Â ÀÏÀº È­¸é¿¡

	login :
ÇÁ·ÒÇÁÆ®¸¦ ¶ç¿ì°í¼­ »ç¿ëÀÚÀÇ userid °¡ ÀԷµDZ⸦ ±â´Ù¸®´Â ÀÏÀÔ´Ï´Ù. »ç¿ëÀÚ°¡ ÀÚ½ÅÀÇ userid ¸¦ ÀÔ·ÂÇÏ°í¼­ ¿£ÅÍ۸¦ Ä¡°Ô µÇ¸é, getty ´Â /bin/login À» ½ÇÇà½ÃŰ°Ô µË´Ï´Ù.

/bin/login ÇÁ·Î±×·¥Àº

	Password:
¶ó´Â ÇÁ·ÒÇÁÆ®¸¦ ¶ç¿ì°í, »ç¿ëÀÚ°¡ password ¸¦ ÀÔ·ÂÇϱ⸦ ±â´Ù¸³´Ï´Ù. »ç¿ëÀÚ°¡ ¾ÏÈ£¸¦ ÀÔ·ÂÇϸé, /etc/passwd ȤÀº /etc/shadow ÆÄÀϷκÎÅÍ ÆÐ½º¿öµå¸¦ Àо ¾Ïȣȭ ÇÑ ÆÐ½º¿öµå¿Í ÀÏÄ¡ÇÏ´ÂÁö¸¦ °Ë»çÇÕ´Ï´Ù. ¸¸¾à ÆÐ½º¿öµå°¡ ÀÏÄ¡ÇÏÁö ¾ÊÀ¸¸é, login ÇÁ·Î±×·¥Àº ¿¡·¯¸¦ ³»°í Á¾·áÇÕ´Ï´Ù. ±×·¯¸é, init ÇÁ·Î¼¼½º´Â ´Ù½Ã ÀÚ½ÅÀ» fork() Çϰí, /sbin/getty ÇÁ·Î±×·¥À» exec() ÇØ¼­ È­¸é¿¡ ·Î±×ÀÎ ÇÁ·ÒÇÁÆ®¸¦ Ãâ·ÂÇϵµ·Ï ÇÏ°í »ç¿ëÀÚÀÇ ÀÔ·ÂÀ» ±â´Ù¸®°Ô µË´Ï´Ù. ¸¸¾à ÆÐ½º¿öµå°¡ ÀÏÄ¡Çϸé, login ÇÁ·Î±×·¥Àº Ȩµð·ºÅ丮¸¦ ¹Ù²Ù´Â µî ¿©·¯°¡Áö ÀÛ¾÷À» Çϰí, ÃÖÁ¾ÀûÀ¸·Î exec()¸¦ ÇÏ¿©, ·Î±×ÀÎ ½© [2] À» ¶ç¿ì°Ô µË´Ï´Ù.

±×·¯¸é, »ç¿ëÀÚ´Â ÀÚ½ÅÀÇ ½© (ÁÖ·Î 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)  |
        +------+------+

ÁÖ¼®

[1]

ÃÖÃÊÀÇ init ´Â Ä¿³ÎÀÇ init ¾²·¹µå¿¡ ÀÇÇØ ½ÇÇàµË´Ï´Ù.

[2]

ps ¸¦ ¼öÇàÇßÀ» ¶§ bash µîÀÇ ¾Õ¿¡ '-' ±âÈ£°¡ ºÙ¾î¼­ -bash µî°ú °°ÀÌ Ç¥½ÃµÈ °ÍÀÌ ·Î±×ÀÎ ½©ÀÔ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº ´Ù¸¥ ¹®¼­¸¦ ã¾Æº¸¼¼¿ä.