From Power Up To Bash Prompt
|
Greg O'Keefe, gcokeefe@postoffice.utas.edu.au
v0.9a, November 2000
ȲÁØÇü, envia@kaist.ac.kr
¹ø¿ªÀ» ÇÏ´Â Áß°£¿¡ ô¶Ó©ë®ÞÉ´ÔÀÇ ÀϺ»¾î ¹ø¿ªÆÇÀ» Âü°íÇÏ¿´½À´Ï´Ù. ¿À·ù°¡ ÀÖ´Ù¸é Àú¿¡°Ô ¿¬¶ôÇϽðųª À§Å°ÀÇ Æ¯Â¡À» ÀÌ¿ëÇÏ¿© ¸»¾øÀ̰íÄ¡±â¸¦ ÀÌ¿ëÇØ Áֽñ⠹ٶø´Ï´Ù. ¶ÇÇÑ ÀÌ ¹®¼ÀÇ ³»¿ëÀº ²Ï ¿À·¡ µÇ¾úÀ¸¸ç Á¦°¡ ½ÃÇèÇØ º¸Áö ¾Ê¾Ò±â ¶§¹®¿¡ µ¿ÀÛÇÏÁö ¾Ê´Â °Íµµ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù.
ÀÌ ¹®¼´Â Àü¿øÀ» ÄÓ ¶§ºÎÅÍ ·Î±×ÀÎÇÏ°í ¹è½Ã ÇÁ·ÒÇÁÆ®°¡ ¶ã ¶§±îÁö ¸®´ª½º ½Ã½ºÅÛ¿¡¼ ¹«½¼ ÀÏÀÌ ÀϾ´ÂÁö¸¦ °£·«È÷ ¼³¸íÇÕ´Ï´Ù. À̰ÍÀ» ÀÌÇØÇÏ´Â °ÍÀº ¿©·¯ºÐÀÌ ¹®Á¦¸¦ ÇØ°áÇϰųª ½Ã½ºÅÛÀ» ¼³Á¤ÇÒ ¶§ µµ¿òÀÌ µÉ °ÍÀÔ´Ï´Ù.
1. ¼Ò°³ ¶Àú´Â Á¦ ¸®´ª½º ¸Ó½Å¿¡¼ Á¦°¡ ÀÌÇØÇÏÁö ¸øÇÑ ¸¹Àº ÀϵéÀÌ ÀϾٴ °ÍÀ» ºÒ¸¸½º·¯¿ö ÇÕ´Ï´Ù. ¿©·¯ºÐµµ Àú¿Í °°ÀÌ ±×Àú ½Ã½ºÅÛÀÇ »ç¿ë¹ýÀ» ¾Ë°í ½ÍÀ¸½Ç »Ó¸¸ÀÌ ¾Æ´Ï¶ó ÁøÂ¥·Î ½Ã½ºÅÛÀ» ÀÌÇØÇÏ°í ½Í¾îÇϽŴٸé, ÀÌ ¹®¼´Â ÁÁÀº Ãâ¹ßÁ¡ÀÌ µÉ °ÍÀÔ´Ï´Ù. ¿©·¯ºÐÀÌ ÃÖ°í ¼öÁØÀÇ ¸®´ª½º ¹®Á¦ ÇØ°á»ç°¡ µÇ°í ½ÍÀ» ¶§¿¡µµ ÀÌ·¯ÇÑ Á¾·ùÀÇ ¹è°æ Áö½ÄÀÌ ÇÊ¿äÇÒ °ÍÀÔ´Ï´Ù.
Àú´Â ¿©·¯ºÐÀÌ µ¿ÀÛÇÏ´Â ¸®´ª½º ¹Ú½º¸¦ °¡Áö°í ÀÖ°í, À¯´Ð½º¿Í PC Çϵå¿þ¾î¿¡ ´ëÇÑ ±âº»ÀûÀÎ °ÍµéÀ» ÀÌÇØÇϰí ÀÖ´Ù°í °¡Á¤ÇϰڽÀ´Ù. ¸¸¾à ±×·¸Áö ¾Ê´Ù¸é, Eric S. RaymondÀÇ
The Unix and Internet Fundamentals HOWTOºÎÅÍ ¹è¿ì½Ã´Â °ÍÀÌ °ÍÀÌ ¸Å¿ì ¹Ù¶÷Á÷ÇÕ´Ï´Ù. ÀÌ ±ÛÀº ª°í, ¸Å¿ì Àб⠽¬¿ì¸ç, ¸ðµç ±âÃʸ¦ ´Ù·ç°í ÀÖ½À´Ï´Ù.
¸®´ª½º ½Ã½ºÅÛÀÌ ½ÃÀ۵Ǵ °úÁ¤ÀÌ ÀÌ ¹®¼ÀÇ ÁÖÁ¦ÀÔ´Ï´Ù. ±×·¸Áö¸¸ Á» ´õ Æ÷°ýÀûÀÎ ÇнÀ ÀÚ·á·Îµµ ¾²ÀÏ ¼ö ÀÖµµ·Ï ³ë·ÂÇÏ¿´½À´Ï´Ù. °¢ Àý(section)¸¶´Ù ¿¬½À ¹®Á¦µéÀ» Æ÷ÇÔÇÏ¿´½À´Ï´Ù. ¸¸¾à ¿©·¯ºÐµéÀÌ ±×°ÍµéÀ» ½ÇÁ¦·Î ÇØ º»´Ù¸é, ´Ü¼øÈ÷ ÀÐÀ¸¼ÌÀ» ¶§ ¹è¿ï ¼ö ÀÖ´Â °Íº¸´Ù ¸¹Àº °ÍÀ» ¹è¿ì½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.
Á¦°¡ ¾Æ´Â ÇÑ ¸®´ª½º¸¦ ¹è¿ï ¶§ ÇÒ ¼ö ÀÖ´Â °¡Àå ÁÁÀº ¿¬½ÀÀº ¼Ò½º ÄÚµå·ÎºÎÅÍ ¸®´ª½º ½Ã½ºÅÛÀ» ±¸ÃàÇÏ´Â °ÍÀ̸ç, Àú´Â µ¶ÀںеéÀÌ ±×°ÍÀ» ÇØ º¸¼ÌÀ¸¸é ÇÕ´Ï´Ù. ÀÌÅ»¸®¾ÆÀÇ Ã¶ÇÐÀÚÀÎ Giambattista Vico (1668-1744)´Â "ÀÌÇØ´Â ¸¸µê¿¡¼ ±â¿øÇÑ´Ù(understanding arises through making)"´Â ¶æÀÎ "verum ipsum factum"À̶ó´Â ¸»À» ³²°å½À´Ï´Ù. ÀÌ ±¸ÀýÀ» °¡¸£ÃÄÁØ Alex(°¨»ç¸¦ º¸½Ê½Ã¿À.)¿¡°Ô °¨»çÇÕ´Ï´Ù.
¸¸¾à ¿©·¯ºÐÀÌ ¼Ò½º ÄÚµå·ÎºÎÅÍ ¸®´ª½º ½Ã½ºÅÛÀ» ¼³Ä¡ÇÏ¿© "¿©·¯ºÐÀÇ °ÍÀ» µ¹¸®°íÀÚ(roll your own)" ÇÑ´Ù¸é, Gerard BeekmansÀÇ
Linux From Scratch HOWTO (LFS)¸¦ º¸¾Æ¾ß ÇÒ °ÍÀÔ´Ï´Ù. LFS¿¡´Â ¼Ò½º ÄÚµå·ÎºÎÅÍ ¿ÏÀüÈ÷ »ç¿ë°¡´ÉÇÑ ½Ã½ºÅÛÀ» ±¸ÃàÇÏ´Â °Í¿¡ °üÇÑ ÀÚ¼¼ÇÑ Áö½Ã»çÇ×µéÀÌ ÀÖ½À´Ï´Ù. ¿©·¯ºÐÀº LFS À¥»çÀÌÆ®¿¡¼ ½Ã½ºÅÛÀ» ÀÌ·¯ÇÑ ¹æ¹ýÀ¸·Î ±¸ÃàÇϰíÀÚ ÇÏ´Â »ç¶÷µéÀ» À§ÇÑ ¸ÞÀϸµ ¸®½ºÆ®µµ ãÀ» ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. LFSÀÇ ÀϺΠÁö½Ã »çÇ×µéÀº Áö±Ý µ¶¸³µÈ ¹®¼ÀÎ "How To Build a Minimal Linux System from Source Code"°¡ µÇ¾úÀ¸¸ç, ¿©·¯ºÐÀº À̰ÍÀ» From PowerUp to Bash Prompt home page¿¡¼ ãÀ» ¼ö ÀÖ½À´Ï´Ù. ±×°ÍµéÀº ¼ø¼öÇÏ°Ô ¹è¿ì±â À§ÇÑ ¿¬½ÀÀ¸·Î¼ "Àå³°¨(toy)" ½Ã½ºÅÛÀ» ±¸ÃàÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇϰí ÀÖ´Ù.
²Ù·¯¹Ì(package)µéÀº ½Ã½ºÅÛÀÌ ½ÃÀÛÇÏ´Â °úÁ¤¿¡¼ ³ªÅ¸³ª´Â ¼ø¼´ë·Î ¼Ò°³µÇ¾î ÀÖ½À´Ï´Ù. À̰ÍÀº ¿©·¯ºÐÀÌ ²Ù·¯¹ÌµéÀ» ¹®¼¿¡ ³ª¿Â ¼ø¼´ë·Î ¼³Ä¡Çϸé, °¢°¢ÀÇ ¼³Ä¡°¡ ³¡³¯ ¶§¸¶´Ù ÀçºÎÆÃÀ» ÇÒ ¼ö ÀÖ°í, ±× ¶§¸¶´Ù ½Ã½ºÅÛÀº ¹è½Ã ÇÁ·ÒÇÁÆ®¸¦ º¸¿©ÁÖ´Â »óÅ¿¡ Á» ´õ °¡±î¿öÁø´Ù´Â °ÍÀ» ¶æÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ¸éÀ» ÅëÇØ¼ »óȲÀÌ ÁøÀüµÇ°í ÀÖ´Ù´Â È®½ÅÀ» ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù.
Àú´Â ¿©·¯ºÐÀÌ Ã³À½ ÀÐÀ» ¶§¿¡´Â ¿¬½À ¹®Á¦³ª Âü°í ÀÚ·áµéÀ» °Ç³Ê¶Ù¸é¼ °¢ Àý(section)ÀÇ º»¹®À» Àб⸦ ±ÇÇÕ´Ï´Ù. ±× ´ÙÀ½¿¡ ¾ó¸¶³ª ±í°Ô ÀÌÇØÇÏ°í ½ÍÀºÁö, ¾ó¸¶³ª ¸¹ÀÌ ³ë·ÂÇÒ Áغñ°¡ µÇ¾ú´ÂÁö °áÁ¤ÇϽʽÿÀ. ±× ´ÙÀ½¿¡ ´Ù½Ã óÀ½À¸·Î µ¹¾Æ¿Í¼, ¿¬½À ¹®Á¦¸¦ Ǫ½Ã°í, Âü°í ÀÚ·áµéµµ ÀÐÀ¸½Ã¸é¼ ´Ù½Ã ½ÃÀÛÇϽʽÿÀ.
2. Çϵå¿þ¾î ¶¿©·¯ºÐÀÌ Ã³À½À¸·Î ÄÄÇ»Å͸¦ ÄÑ°Ô µÇ¸é ÄÄÇ»ÅÍ´Â ÀÚ±â ÀÚ½ÅÀ» Å×½ºÆ®Çؼ ¸ðµç °ÍµéÀÌ Àß ÀÛµ¿ÇÏ´ÂÁö È®ÀÎÇÕ´Ï´Ù. ÀÌ °úÁ¤Àº "Power on self test"¶ó°í ºÒ¸³´Ï´Ù. ±× ´ÙÀ½¿¡ ROM BIOS¿¡ ÀÖ´Â "ºÎÆ®½ºÆ®·¦ ·Î´õ(bootstrap loader)"¶ó´Â ÇÁ·Î±×·¥ÀÌ È£ÃâµÇ¾î ºÎÆ® ¼½Å͸¦ ã½À´Ï´Ù. ºÎÆ® ¼½ÅÍ´Â µð½ºÅ©ÀÇ Ã¹¹øÂ° ¼½Åͷμ ¿î¿µÃ¼Á¦¸¦ ÀÐÀ» ¼ö ÀÖ´Â ÀÛÀº ÇÁ·Î±×·¥ÀÌ ÀúÀåµÇ¾î ÀÖ½À´Ï´Ù. ºÎÆ® ¼½ÅÍ´Â 0x1FE = 510 ¹ÙÀÌÆ® À§Ä¡¿¡ ¸ÅÁ÷ ³Ñ¹ö(magic number) 0xAA55 = 43603 ÀÌ ÀÖ´Â °ÍÀ¸·Î ±¸ºÐµË´Ï´Ù. À̰ÍÀº ¼½ÅÍÀÇ ¸¶Áö¸· µÎ ¹ÙÀÌÆ® ÀÔ´Ï´Ù. À̸¦ ÅëÇØ¼ Çϵå¿þ¾î´Â ¾î¶² ¼½ÅͰ¡ ºÎÆ® ¼½ÅÍÀÎÁö ¾Æ´ÑÁö¸¦ ¾Ë ¼ö ÀÖ½À´Ï´Ù.
ºÎÆ®½ºÆ®·¦ ·Î´õ´Â ºÎÆ® ¼½Å͸¦ ãÀ» Àå¼ÒµéÀÇ ¸ñ·ÏÀ» °¡Áö°í ÀÖ½À´Ï´Ù. Á¦ ¿À·¡µÈ ±â°è´Â ù¹øÂ°(primary) Ç÷ÎÇÇ µå¶óÀ̺ê¿Í ù¹øÂ°(primary) ÇÏµå µð½ºÅ©¸¦ ã¾Ò½À´Ï´Ù. ÃÖ±ÙÀÇ ±â°èµéÀº CD ROM¿¡¼µµ ºÎÆ® ¼½Å͸¦ ãÀ» ¼ö ÀÖ½À´Ï´Ù. ºÎÆ®½ºÆ®·¦ ·Î´õ°¡ ºÎÆ® ¼½Å͸¦ ãÀ¸¸é, ºÎÆ® ¼½Å͸¦ ¸Þ¸ð¸®·Î ÀÐÀº µÚ ¿î¿µÃ¼Á¦¸¦ Àд ÇÁ·Î±×·¥¿¡°Ô Á¦¾î±ÇÀ» ³Ñ±é´Ï´Ù. ÀϹÝÀûÀÎ ¸®´ª½º ½Ã½ºÅÛ¿¡¼ ÀÌ ÇÁ·Î±×·¥Àº LILOÀÇ Àϴܰè (first stage) ºÎÆ® ·Î´õ(boot loader)ÀÏ °ÍÀÔ´Ï´Ù. »ç½Ç ¿©·¯ºÐÀÇ ½Ã½ºÅÛÀÌ ºÎÆÃÇÏ´Â °úÁ¤Àº ´Ù¾çÇÏ°Ô ¼³Á¤µÉ ¼ö ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº "LILO User's Guide"¸¦ º¸½Ê½Ã¿À. URLÀº LILO ¼½¼Ç¿¡¼ ãÀ¸½Ê½Ã¿À.
PC Çϵå¿þ¾î°¡ ¹«½¼ ÀÏÀ» ÇÏ´Â Áö¿¡ ´ëÇØ ¾ð±ÞÇÒ °ÍÀº ´ç¿¬È÷ ¸¹ÀÌ ³²¾Æ ÀÖÁö¸¸, ÀÌ ¹®¼´Â ±×°ÍÀ» ´Ù·çÁö ¾Ê½À´Ï´Ù. PC Çϵå¿þ¾î¸¦ ´Ù·é ¸¹Àº ÁÁÀº Ã¥µéÀÌ ÀÖÀ¸´Ï Âü°íÇϽʽÿÀ.
2.1. ¼³Á¤ ¶ÄÄÇ»ÅÍ´Â ÀÚ±â Àڽſ¡ ´ëÇÑ Á¤º¸¸¦ CMOS¿¡ ÀúÀåÇÕ´Ï´Ù. ½Ã½ºÅÛ¿¡ ¾î¶² µð½ºÅ©¿Í ·¥ÀÌ Àִ°¡¿Í °°Àº Á¤º¸µµ ÀúÀåµÇ¾î ÀÖ½À´Ï´Ù. ÄÄÇ»ÅÍÀÇ BIOS´Â ¿©·¯ºÐÀÌ ÀÌ·¯ÇÑ ¼³Á¤µéÀ» °íÄ¥ ¼ö ÀÖµµ·Ï ÇÏ´Â ÇÁ·Î±×·¥À» Æ÷ÇÔÇϰí ÀÖ½À´Ï´Ù. ÄÄÇ»ÅͰ¡ ÄÑÁú ¶§ ȸ鿡 ³ª¿À´Â ¸Þ½ÃÁöµéÀ» È®ÀÎÇÏ¿© ¾î¶»°Ô ±× ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¼ö ÀÖ´ÂÁö º¸½Ê½Ã¿À. Á¦ ÄÄÇ»ÅÍ¿¡¼´Â ¿î¿µÃ¼Á¦°¡ ÀÐÈ÷±â Àü¿¡ µô¸®Æ®(delete)۸¦ ´©¸£¸é µÇ¾ú½À´Ï´Ù.
2.2. ¿¬½À ¹®Á¦ ¶PC Çϵå¿þ¾î¿¡ ´ëÇØ ¹è¿ï ¼ö ÀÖ´Â ÁÁÀº ¹æ¹ýÀº Áß°í ºÎǰµéÀ» ¸ð¾Æ¼ »õ·Î¿î ÄÄÇ»Å͸¦ Á¶¸³ÇØ º¸´Â °ÍÀÔ´Ï´Ù. ¸®´ª½º¸¦ ½±°Ô ½ÇÇà½Ãų ¼ö ÀÖµµ·Ï Àû¾îµµ 386À» ¸¸µéµµ·Ï ÇϽʽÿÀ. ÁÖº¯¿¡ ¹°¾îº¸¸é, ´ç½ÅÀÌ ÇÊ¿äÇÑ ºÎºÐÀ» ´©±º°¡°¡ ÁÙ ¼öµµ ÀÖ½À´Ï´Ù.
Unios¿¡ ´ëÇØ È®ÀÎÇϰí, ´Ù¿î·ÎµåÇÑ µÚ ÄÄÆÄÀÏ ÇÏ¿© ºÎÆ® µð½ºÅ©¸¦ ¸¸µé¾îº¸½Ê½Ã¿À. (±×µéÀÇ È¨ÆäÀÌÁö°¡ http://www.unios.org¿¡ ÀÖ¾úÁö¸¸, »ç¶óÁ³½À´Ï´Ù.) À̰ÍÀº 100ÁÙ Á¤µµÀÇ ¾î¼Àºí·¯ ÄÚµå·Î ±¸¼ºµÈ ´Ü¼øÇÑ ºÎÆÃÇÒ ¼ö ÀÖ´Â "Hello World!" ÇÁ·Î±×·¥ÀÔ´Ï´Ù. ¾î¼Àºí·¯ Äڵ带 GNU ¾î¼Àºí·¯ as°¡ ÀÌÇØÇÒ ¼ö ÀÖ´Â ÇüÅ·Πº¯È¯ÇÏ¿© ÀÐ¾î º¸½Ã´Â °Íµµ ÁÁÀ» °ÍÀÔ´Ï´Ù.
¿©·¯ºÐÀÇ ¿î¿µÃ¼Á¦¸¦ ¸¸µé¾î "¿©·¯ºÐÀÇ °ÍÀ» µ¹¸®´Â(roll your own)" °Í¿¡ ´ëÇÑ Áö½Ã »çÇ×ÀÌ
Roll Your Own¿¡ ÀÖ½À´Ï´Ù. ¿©·¯ºÐÀÌ ÁøÁ¤ÇÑ µµÀüÀ» ã°í ÀÖÀ¸½Ã´Ù¸é ÀÐ¾î º¸½Ã±â ¹Ù¶ø´Ï´Ù.
Çí½º ¿¡µðÅÍ(hex editor)·Î ºÎÆ® µð½ºÅ© À̹ÌÁö¸¦ ¿¾î º¸½Ê½Ã¿À. ÀÌ À̹ÌÁöÀÇ ±æÀÌ´Â Á¤È®È÷ ÇÑ ¼½ÅͰ¡ µÇ´Â 512¹ÙÀÌÆ®ÀÔ´Ï´Ù. ¸ÅÁ÷ ³Ñ¹ö(magic number) 0xAA55¸¦ ã¾Æ º¸½Ê½Ã¿À. ´Ù¸¥ ºÎÆÃ °¡´ÉÇÑ Ç÷ÎÇÇ µð½ºÅ©³ª ¿©·¯ºÐÀÇ ÄÄÇ»ÅÍÀÇ ºÎÆ® ¼½ÅÍ¿¡ ´ëÇØ¼µµ °°Àº ÀÏÀ» ÇØ º¸½Ê½Ã¿À. ¿©·¯ºÐÀº
dd if=/dev/fd0 of=boot.sector¿Í °°ÀÌ dd¸í·ÉÀ» »ç¿ëÇØ¼ ±×°ÍÀ» ÆÄÀÏ·Î º¹»çÇÒ ¼ö ÀÖ½À´Ï´Ù.
if
(input file, ÀÔ·Â ÆÄÀÏ)¿Í
of
(out file, Ãâ·Â ÆÄÀÏ)¸¦ Á¤È®È÷ ÀÔ·ÂÇÏ¿´´ÂÁö ¸Å¿ì Á¶½É½º·´°Ô È®ÀÎÇϽʽÿÀ.
¸®·ÎÀÇ ºÎÆ® ·Î´õÀÇ ¼Ò½º Äڵ带 ÀÐ¾î º¸½Ê½Ã¿À.
2.3. Ãß°¡ Á¤º¸ ¶
3. ¸®·Î(Lilo) ¶ÄÄÇ»ÅͰ¡ º¸Åë ¸®´ª½º ½Ã½ºÅÛÀÇ ºÎÆ® ¼½Å͸¦ ÀÐÀ» ¶§, ½ÇÁ¦·Î Àд °ÍÀº liloÀÇ ÀϺκÐÀÎ "ÀÏ´Ü°è ºÎÆ® ·Î´õ(first stage boot loader)"ÀÔ´Ï´Ù. À̰ÍÀº "ÀÌ´Ü°è ºÎÆ® ·Î´õ(first stage boot loader)"¸¦ ºÒ·¯µéÀÌ´Â Àϸ¸À» ÇÏ´Â ÀÛÀº ÇÁ·Î±×·¥ÀÔ´Ï´Ù.
ÀÌ´Ü°è ºÎÆ® ·Î´õ´Â (±×·¸°Ô Çϵµ·Ï ¼³Ä¡ÇÏ¿´´Ù¸é) ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÏ°í ¿©·¯ºÐÀÌ ¼±ÅÃÇÑ ¿î¿µ üÁ¦¸¦ ÀоîµéÀÔ´Ï´Ù.
¿©·¯ºÐÀÇ ½Ã½ºÅÛÀÌ ½ÃÀÛµÇ°í µ¿ÀÛÇÏ´Â »óÅ¿¡¼ ¿©·¯ºÐÀÌ
lilo¸¦ ½ÇÇàÇÑ´Ù¸é, ¿©·¯ºÐÀÌ ½ÇÁ¦·Î ½ÇÇàÇÏ´Â °ÍÀº "map installer"ÀÔ´Ï´Ù. À̰ÍÀº ¼³Á¤ ÆÄÀÏÀÎ /etc/lilo.conf¸¦ ÀÐ°í ºÎÆ® ·Î´õ¿Í ºÎÆ®·Î´õ°¡ ÀÐÀ» ¼ö ÀÖ´Â ¿î¿µ üÁ¦¿¡ ´ëÇÑ Á¤º¸¸¦ ÇÏµå µð½ºÅ©¿¡ ¾¹´Ï´Ù.
¿©·¯ºÐÀÇ ½Ã½ºÅÛÀ» ºÎÆ®ÇÏ´Â µ¥¿¡´Â ¸Å¿ì ´Ù¾çÇÑ ¹æ¹ýµéÀÌ ÀÖ½À´Ï´Ù. Á¦°¡ ¼³¸íÇÒ °ÍÀº Àû¾îµµ ÁÖ ¿î¿µ üÁ¦°¡ ¸®´ª½ºÀÎ ½Ã½ºÅÛ¿¡¼´Â °¡Àå ´Ü¼øÇϰí "ÀϹÝÀûÀÎ" ¹æ¹ýÀÔ´Ï´Ù. Lilo »ç¿ëÀÚ °¡À̵å(Lilo Users' Guide)´Â "ºÎÆ® °³³ä(boot concept)"ÀÇ ¸î¸î ¿¹µéÀ» ¼³¸íÇÕ´Ï´Ù. À̰ÍÀº Àо¸¸ÇÑ ±ÛÀ̸ç, ±× ÁßÀÇ ÀϺθ¦ ¼Ò°³ÇϰڽÀ´Ï´Ù.
3.1. ¼³Á¤ ¶LiloÀÇ ¼³Á¤ÆÄÀÏÀº
/etc/lilo.confÀÔ´Ï´Ù. ±×°ÍÀ» À§ÇÑ ¸Ç ÆäÀÌÁö°¡ ÀÖ½À´Ï´Ù. ¼Ð¿¡¼ man lilo.conf¶ó°í Ä¡½Ã¸é º¸½Ç ¼ö ÀÖ½À´Ï´Ù. lilo.confÀÇ ÇÙ½ÉÀº ¸®·Î°¡ ºÎÆ®Çϵµ·Ï µÇ¾î ÀÖ´Â °Íµé¸¶´Ù Çϳª¾¿ ÀÖ´Â ¼³Á¤ Ç׸ñÀÔ´Ï´Ù. ¸®´ª½º Ç׸ñ¿¡´Â Ä¿³ÎÀÌ ¾îµð¿¡ ÀÖ´ÂÁö¿Í ·çÆ® ÆÄÀϽýºÅÛÀ¸·Î ¾î´À µð½ºÅ© ÆÄƼ¼ÇÀ» ¸¶¿îÆ®ÇÒÁö¸¦ Æ÷ÇÔÇϰí ÀÖ½À´Ï´Ù. ´Ù¸¥ ¿î¿µ üÁ¦¿¡ ´ëÇÑ Ç׸ñ¿¡´Â ÁÖ·Î ¾î´À ÆÄƼ¼ÇÀ¸·ÎºÎÅÍ ºÎÆ®ÇÒ °ÍÀÎÁö¿¡ ´ëÇÑ Á¤º¸°¡ ÀÖ½À´Ï´Ù.
3.2. ¿¬½À ¹®Á¦ ¶À§Çè: ÀÌ ¿¬½À ¹®Á¦¸¦ ÇØ°á ÇÏ½Ç ¶§ ÁÖÀÇÇϽʽÿÀ. ¹«¾ð°¡ À߸øÇÏ¿© ¿©·¯ºÐÀÇ ¸¶½ºÅÍ ºÎÆ® ·¹ÄÚµå(your master boot record)¸¦ ³¯¸®°Ô µÇ¾î ¿©·¯ºÐÀÇ ½Ã½ºÅÛÀ» »ç¿ëÇÒ ¼ö ¾ø°Ô ¸¸µé±â ½±½À´Ï´Ù. ¿©·¯ºÐÀº ÀÀ±Þ µð½ºÅ©(rescue disk)¸¦ °¡Áö°í ÀÖ¾î¾ß Çϰí, ¾î¶»°Ô ´Ù½Ã º¹±¸ÇÒ ¼ö ÀÖ´ÂÁö¸¦ ¾Ë¾Æ¾ß ÇÕ´Ï´Ù. Á¦°¡ »ç¿ëÇß°í ±ÇÀåÇÏ´Â ÀÀ±Þ µð½ºÅ©ÀÎ tomsrtbtÀÇ ¸µÅ©´Â ¾Æ·¡¿¡ ÀÖ½À´Ï´Ù. °¡Àå ÁÁÀº ¹æ¹ýÀº »ç¿ëÇÒ ¼ö ¾ø°Ô µÇ¾îµµ ±¦ÂúÀº ÄÄÇ»Å͸¦ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù.
¸®·Î¸¦ Ç÷ÎÇÇ µð½ºÅ©¿¡ ¼³Ä¡ÇϽʽÿÀ. Ç÷ÎÇÇ¿¡ Ä¿³Î¹Û¿¡ ¾ø¾îµµ µË´Ï´Ù. ¿©·¯ºÐÀº Ä¿³ÎÀÌ init¸¦ ºÎ¸£·Á°í ÇÒ ¶§ "Ä¿³Î ÆÐ´Ò(kernel panic)"À» °æÇèÇϽðÚÁö¸¸, ÃÖ¼ÒÇÑ lilo°¡ µ¿ÀÛÇÑ´Ù´Â °ÍÀº ¾Æ½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.
¿©·¯ºÐÀÌ ¹Ù¶ó½Å´Ù¸é Ç÷ÎÇÇ À§¿¡¼ ½Ã½ºÅÛÀÌ ¾îµð±îÁö ÁøÇàµÉ ¼ö ÀÖ´ÂÁö ½ÇÇèÇØ º¸½Ç ¼öµµ ÀÖÀ» °ÍÀÔ´Ï´Ù. À̰ÍÀº ¾Æ¸¶µµ µÎ¹øÂ°·Î ÁÁÀº ¸®´ª½º¸¦ ¹è¿ì´Â Ȱµ¿ÀÏ °ÍÀÔ´Ï´Ù. ´Ü¼¸¦ À§Çؼ Bootdisk HOWTO(URLÀº ¾Æ·¡¿¡ ÀÖ½À´Ï´Ù.)¿Í tomsrtbt (URLÀº ¾Æ·¡¿¡ ÀÖ½À´Ï´Ù.)À» º¸½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.
¸®·Î·Î unios (Çϵå¿þ¾î ¿¬½À¿¡¼ URLÀ» ãÀ¸½Ê½Ã¿À)¸¦ ºÎÆÃÇØ º¸½Ê½Ã¿À. Ãß°¡·Î, À̰ÍÀ» Ç÷ÎÇÇ µð½ºÅ©¿¡¼ ÇÏ½Ç ¼ö ÀÖ´ÂÁö È®ÀÎÇØ º¸½Ê½Ã¿À.
ºÎÆ® ·çÇÁ(boot-loop)¸¦ ¸¸µé¾î º¸½Ê½Ã¿À. ¸®·Î¸¦ ¸¶½ºÅÍ ºÎÆ® ·¹Äڵ忡 ¼³Ä¡ÇÏ¿© ÇÁ¶óÀ̸Ӹ® ÆÄƼ¼Ç ºÎÆ® ¼½ÅÍÁßÀÇ Çϳª¿¡ ÀÖ´Â ¸®·Î¸¦ ºÎÆÃÇϰí, ±× ¸®·Î°¡ ¸¶½ºÅÍ ºÎÆ® ·¹ÄÚµåÀÇ ¸®·Î¸¦ ºÎÆ®Çϰí, À̰ÍÀÌ ¹Ýº¹µÇ°Ô ÇϽʽÿÀ. ¿©·¯ºÐÀº ¸¶½ÃÅÍ ºÎÆ® ·¹ÄÚµå¿Í ³×°³ÀÇ ÇÁ¶óÀ̸Ӹ® ÆÄƼ¼Ç ¸ðµÎ¸¦ »ç¿ëÇÏ¿© 5´Ü°è ·çÇÁ¸¦ ¸¸µé ¼öµµ ÀÖÀ» °ÍÀÔ´Ï´Ù. Áñ±â¼¼¿ä!
3.3. Ãß°¡ Á¤º¸ ¶
4. ¸®´ª½º Ä¿³Î ¶¸®´ª½º Ä¿³ÎÀº Á¤¸»·Î ¸¹Àº ÀÏÀ» ÇÕ´Ï´Ù. Àß Á¤¸®Çϸé, ¸®´ª½º Ä¿³ÎÀº Çϵå¿þ¾îµéÀÌ °øÁ¤ÇÏ°í ´É·üÀûÀ¸·Î ÇÁ·Î±×·¥ÀÌ ¹Ù¶ó´Â ÀÏÀ» Çϵµ·Ï ÇÕ´Ï´Ù.
ÇÁ·Î¼¼¼´Â µ¿½Ã¿¡ ÇѰ¡Áö ¸í·É¹Û¿¡ ¼öÇàÇÏÁö ¸øÇÏÁö¸¸, ¸®´ª½º ½Ã½ºÅÛÀº µ¿½Ã¿¡ ¸¹Àº ÀÏÀ» ¼öÇàÇÏ´Â °Í ó·³ º¸ÀÔ´Ï´Ù. (¿ªÁÖ - ÃֽŠÇÁ·Î¼¼¼µéÀº µ¿½Ã¿¡ ¿©·¯ ¸í·ÉÀ» ¼öÇàÇÒ ¼ö ÀÖÁö¸¸, ¿©ÀüÈ÷ ¸ðµç ÀÏÀ» µ¿½Ã¿¡ ó¸®ÇÏÁö´Â ¸øÇÕ´Ï´Ù.) Ä¿³ÎÀº ÀÛ¾÷°ú ÀÛ¾÷ »çÀ̸¦ ¸Å¿ì ºü¸£°Ô ÀüȯÇÔÀ¸·Î¼ À̰ÍÀ» °¡´ÉÇÏ°Ô ÇÕ´Ï´Ù. Ä¿³ÎÀº ¾î¶² ÇÁ·Î·¹½º°¡ ½ÇÇàµÉ Áغñ°¡ µÇ¾ú°í, ¾î¶² ÇÁ·Î¼¼½º°¡ Çϵåµð½ºÅ© ÆÄÀÏÀÇ ·¹Äڵ峪 Űº¸µå ÀԷ°ú °°Àº °ÍÀ» ±â´Ù¸®°í ÀÖ´ÂÁö¸¦ ÃßÀûÇÏ¿© ÇÁ·Î¼¼¼¸¦ °¡Àå È¿À²ÀûÀ¸·Î »ç¿ëµÇ°Ô ÇÕ´Ï´Ù. À̰ÍÀÌ ½ºÄÉÁ층(scheduling)À̶ó°í ºÒ¸®´Â ÀÛ¾÷ÀÔ´Ï´Ù.
¾î¶² ÇÁ·Î±×·¥ÀÌ ¾Æ¹« Àϵµ ÇÏÁö ¾Ê´Â´Ù¸é, ±×°ÍÀº RAM¿¡ ÀÖÀ» Çʿ䰡 ¾ø½À´Ï´Ù. ¹«¾ð°¡¸¦ Çϰí ÀÖ´Â ÇÁ·Î±×·¥À̶ó°í ÇÒÁö¶óµµ, ±× ÇÁ·Î±×·¥ÀÇ ÀϺκÐÀº ¾Æ¹«°Íµµ ÇÏÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. °¢ ÇÁ·Î¼¼½ºÀÇ ÁÖ¼Ò °ø°£Àº ÆäÀÌÁö·Î ³ª´µ¾îÁý´Ï´Ù. Ä¿³ÎÀº ¾î´À ÇÁ·Î¼¼½ºÀÇ ¾î´À ÆäÀÌÁö°¡ °¡Àå ¸¹ÀÌ ¾²ÀÌ´ÂÁö¸¦ ÃßÀûÇÕ´Ï´Ù. ±×´ÙÁö ¸¹ÀÌ ¾²ÀÌÁö ¾Ê´Â ÆäÀÌÁöµéÀº ½º¿Ò ÆÄƼ¼ÇÀ¸·Î ¿Å°ÜÁý´Ï´Ù. ±×µéÀÌ ´Ù½Ã ÇÊ¿äÇØÁö¸é, ´Ù¸¥ ¾²ÀÌÁö ¾Ê´Â ÆäÀÌÁöµéÀÌ ÆäÀÌÁö ¾Æ¿ô(paged out)µÇ¾î °ø°£À» ¸¸µì´Ï´Ù. À̰ÍÀÌ °¡»ó ¸Þ¸ð¸® °ü¸®ÀÔ´Ï´Ù.
¿©·¯ºÐÀÌ Ä¿³ÎÀ» ÄÄÆÄÀÏÇØ º¸½Å ÀûÀÌ ÀÖÀ¸½Ã´Ù¸é, ƯÁ¤ÇÑ ÀåÄ¡µé¿¡ ´ëÇØ¼ ¸¹°í ¸¹Àº ¿É¼ÇµéÀÌ ÀÖ´Ù´Â °ÍÀ» ´À³¢¼ÌÀ» °ÍÀÔ´Ï´Ù. Ä¿³ÎÀº ´Ù¾çÇÑ Á¾·ùÀÇ Çϵå¿þ¾îµé°ú ´ëÈÇϱâ À§ÇÑ ¸¹Àº Ưº° ÄÚµåµéÀ» °¡Áö°í ÀÖ¾î¼, ¾îÇø®ÄÉÀÌ¼Ç ÇÁ·Î±×·¥µéÀÌ ¸ðµç Çϵå¿þ¾îµéÀ» ´ÜÀÏÇϰí ÁÁÀº ¹æ¹ýÀ¸·Î Á¢±ÙÇÒ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù.
Ä¿³ÎÀº ÆÄÀϽýºÅÛ, ÇÁ·Î¼¼½º°£ Åë½Å, ³×Æ®¿öÅ·°ú °ü·ÃµÈ ¸¹Àº °Íµéµµ °ü¸®ÇÕ´Ï´Ù.
ÀÏ´Ü Ä¿³ÎÀÌ ºÒ·ÁÁö¸é, °¡Àå ¸ÕÀú ÇÏ´Â ÀÏÀº ½ÇÇàÇÒ
init ÇÁ·Î±×·¥À» ã´Â °ÍÀÔ´Ï´Ù.
4.1. ¼³Á¤ ¶¿©·¯ºÐÀÌ
/usr/src/linux/ (³ª ¿©·¯ºÐÀÇ Ä¿³Î ¼Ò½º°¡ ÀÖ´Â °÷)¿¡¼ make menuconfig³ª make xconfig¸¦ »ç¿ëÇÏ¿© ¼³Á¤Çϰí Ä¿³ÎÀ» ¸¸µé ¶§, ´ëºÎºÐÀÇ Ä¿³Î ¼³Á¤ÀÌ ÀÌ·ç¾îÁý´Ï´Ù. ¿©·¯ºÐÀº ±âº» ºñµð¿À ¸ðµå, ·çÆ® ÆÄÀϽýºÅÛ, ½º¿Ò µð¹ÙÀ̽º, ·¥ µð½ºÅ© »çÀÌÁî µîÀ» rdev¸¦ ÅëÇØ ´Ù½Ã ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ÆÄ¶ó¸ÞÅ͵é°ú ´Ù¸¥ °ÍµéÀº ¸®·Î·ÎºÎÅÍ Ä¿³Î·Î Àü´ÞµÉ ¼ö ÀÖ½À´Ï´Ù. ¿©·¯ºÐÀº lilo.conf ¾È¿¡¼³ª ¸®·Î ÇÁ·ÒÇÁÆ®¿¡¼ Ä¿³Î¿¡°Ô ³Ñ°ÜÁú ¸®·Î ÆÄ¶ó¸ÞÅ͵éÀ» Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ¿©·¯ºÐÀÌ hda3À» hda2´ë½Å¿¡ ·çÆ® ÆÄÀϽýºÅÛÀ¸·Î ÀÌ¿ëÇÏ·Á°í ÇÏ½Å´Ù¸é ¾Æ·¡¿Í °°ÀÌ ÀÔ·ÂÇÏ½Ç °ÍÀÔ´Ï´Ù.
LILO: linux root=/dev/hda3 ¿©·¯ºÐÀÌ ¼Ò½º·ÎºÎÅÍ ½Ã½ºÅÛÀ» ¸¸µé°í °è½Å´Ù¸é, ¿©·¯ºÐÀº "¸ð³î¸®Æ½(monolithic)" Ä¿³ÎÀ» ¸¸µé¾î¼ ÀÏÀ» ´Ü¼øÇÏ°Ô ÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù. ¸ð³î¸®Æ½ Ä¿³ÎÀº ¸ðµâÀÌ ¾ø´Â Ä¿³ÎÀÔ´Ï´Ù. ¿©·¯ºÐÀº Ä¿³Î ¸ðµâÀ» ´ë»ó ½Ã½ºÅÛÀ¸·Î º¹»çÇÒ Çʿ䰡 ¾øÀ» °ÍÀÔ´Ï´Ù.
(ADD--¸ð³ë¸®µñ Ä¿³ÎÀº ¸ðµâÀÌ ÀÖ´Â Ä¿³ÎÀÔ´Ï´Ù. ¸ðµâÀÌ ¾ø´Â Ä¿³ÎÀº ¸¶ÀÌÅ©·ÎÄ¿³Î¾Æ´Ñ°¡¿ä?)
ÁÖÀÇ:
System.map ÆÄÀÏÀº ¸Þ½ÃÁö¸¦ ¸¸µé¾î³»´Â ¸ðµâµéÀÇ À̸§À» Á¤Çϱâ À§Çؼ Ä¿³Î ·Î°Å(kernel logger)¿¡ ÀÇÇØ »ç¿ëµË´Ï´Ù. top ÇÁ·Î±×·¥µµ ÀÌ Á¤º¸¸¦ »ç¿ëÇÕ´Ï´Ù. ¿©·¯ºÐÀÌ Ä¿³ÎÀ» ´ë»ó ½Ã½ºÅÛ¿¡ º¹»çÇÒ ¶§, System.mapµµ º¹»çÇϼ¼¿ä.
4.2. ¿¬½À ¹®Á¦ ¶/dev/hda3´Â ÇÏµå µð½ºÅ© ÆÄƼ¼ÇÀ» ¼³¸íÇϴ Ưº°ÇÑ Á¾·ùÀÇ ÆÄÀÏÀÔ´Ï´Ù. ÇÏÁö¸¸ À̰ÍÀº ´Ù¸¥ ÆÄÀϵé°ú °°ÀÌ ÆÄÀÏ ½Ã½ºÅÛ ¾È¿¡ ÀÖ½À´Ï´Ù. Ä¿³ÎÀº ¾î´À ÆÄƼ¼ÇÀ» ·çÆ® ÆÄƼ¼ÇÀ¸·Î ¸¶¿îÆ®ÇÒÁö¸¦ ¾Ë°íÀÚ ÇÕ´Ï´Ù. ÇÏÁö¸¸, ÆÄÀÏ ½Ã½ºÅÛÀº ¾ÆÁ÷ ¾ø´Â »óÅÂÀÔ´Ï´Ù. Ä¿³ÎÀÌ ¾î¶»°Ô /dev/hda3À» ÀÐ¾î¼ ¾î´À ÆÄƼ¼ÇÀ» ¸¶¿îÆ® ÇÒÁö¸¦ ¾Ë±î¿ä? »ý°¢ÇØ º¸½Ê½Ã¿À.
¿©·¯ºÐÀÌ ¾ÆÁ÷ ÇØº¸Áö ¾ÊÀ¸¼Ì´Ù¸é, ¿©·¯ºÐ¸¸ÀÇ Ä¿³ÎÀ» ¸¸µé¾î º¸½Ê½Ã¿À. °¢ ¿É¼Ç¸¶´Ù ÀÖ´Â µµ¿ò¸»À» ¸ðµÎ ÀÐ¾î º¸½Ê½Ã¿À.
ÀÛµ¿ÇÏ´Â Ä¿³ÎÀ» ¾ó¸¶³ª ÀÛ°Ô ¸¸µé ¼ö ÀÖ´ÂÁö º¸½Ê½Ã¿À. ²À ÇÊ¿äÇÑ °ÍÀ» »°À» ¶§ ¿©·¯ºÐÀº ¸¹Àº °ÍÀ» ¹è¿ï ¼ö ÀÖ½À´Ï´Ù.
"The Linux Kernel" (URLÀº ¾Æ·¡¿¡ ÀÖ½À´Ï´Ù.) À» Àо°í ÂüÁ¶ÇÏ´Â ¼Ò½º ÄÚµåµéÀ» ã¾Æ º¸½Ê½Ã¿À. (Á¦°¡ ÀÌ ±ÛÀ» ¾µ ¶§) ÀÌ Ã¥Àº Ä¿³Î 2.0.33À» ÂüÁ¶Çϰí ÀÖ¾úÀ¸¸ç, À̰ÍÀº ²Ï Áö³ ¹èÆ÷ÆÇÀÔ´Ï´Ù. ¿©·¯ºÐÀÌ ±¸½ÄÀÎ Ä¿³ÎÀ» ´Ù¿î·Îµå ¹Þ¾Æ Âü°íÇÏ´Â °ÍÀÌ ´õ ÆíÇÒÁöµµ ¸ð¸£°Ú½À´Ï´Ù. "ÇÁ·Î¼¼½º"¿Í "ÆäÀÌÁö"¶ó°í ºÒ¸®´Â C Äڵ带 ã´Â °ÍÀº ³î¶ó¿î ÀÏÀÔ´Ï´Ù.
ÇØÅ·ÇϽʽÿÀ! ¿©·¯ºÐÀÌ Ãß°¡ÀûÀÎ ¸Þ½ÃÁö³ª ´Ù¸¥ °ÍµéÀ» Ãâ·ÂÇÏ°Ô ¸¸µé¼ö ÀÖ´ÂÁö ½ÃÇèÇØ º¸½Ê½Ã¿À.
4.3. Ãß°¡ Á¤º¸ ¶
5. ±×´© C ¶óÀ̺귯¸® (The GNU C Library) ¶¿©·¯ºÐÀÇ ÄÄÇ»ÅͰ¡ ½ÃÀÛµÉ ¶§ ´ÙÀ½À¸·Î ÀϾ ÀÏÀº init°¡ ºÒ·ÁÁ®¼ ½ÇÇàµÇ´Â °ÍÀÔ´Ï´Ù. ÇÏÁö¸¸, ´Ù¸¥ °ÅÀÇ ¸ðµç ÇÁ·Î±×·¥µé°ú °°ÀÌ initµµ ¶óÀ̺귯¸® ÇÔ¼öµéÀ» »ç¿ëÇÕ´Ï´Ù.
¿©·¯ºÐÀº ¾Æ¸¶µµ ¾Æ·¡¿Í °°Àº ¿¹Á¦ C Äڵ带 º¸½Å ÀûÀÌ ÀÖÀ» °ÍÀÔ´Ï´Ù.
main() {
printf("Hello World!\n");
}
ÀÌ ÇÁ·Î±×·¥¿¡´Â
printfÀÇ Á¤Àǰ¡ ¾ø´Âµ¥, ±×·¸´Ù¸é printf´Â ¾îµð¿¡¼ ³ªÅ¸³ °ÍÀϱî¿ä? ±×´©/¸®´ª½º ½Ã½ºÅÛÀÇ Ç¥ÁØ C ¶óÀ̺귯¸®ÀÎ glibc¿¡¼ ¿Â °ÍÀÔ´Ï´Ù. ¿©·¯ºÐÀÌ À̰ÍÀ» Visual C++¿¡¼ ÄÄÆÄÀÏÀ» ÇϽŴٸé, printf´Â °°Àº Ç¥ÁØ ÇÔ¼ö¸¦ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿¡¼ ±¸ÇöÇÑ °Í¿¡¼ ¿À°Ô µÉ °ÍÀÔ´Ï´Ù. ¼öÇÐÀ̳ª ¹®ÀÚ¿, ³¯Â¥/½Ã°£, ¸Þ¸ð¸® ÇÒ´ç°ú °°Àº ÀϵéÀ» À§ÇÑ ¼ö¸¹Àº Ç¥ÁØ ÇÔ¼öµéÀÌ ÀÖ½À´Ï´Ù. (¸®´ª½º¸¦ Æ÷ÇÔÇÑ) À¯´Ð½ºÀÇ ¸ðµç °ÍµéÀº C·Î ½è°Å³ª C·Î ½áÁø °Íó·³ º¸ÀÌ·Á°í ³ë·ÂÇϱ⠶§¹®¿¡, ¸ðµç°ÍµéÀÌ ÀÌ·¯ÇÑ ÇÔ¼ö¸¦ »ç¿ëÇÕ´Ï´Ù.
¿©·¯ºÐÀÌ ½Ã½ºÅÛÀÇ
/lib ¾Æ·¡¸¦ º»´Ù¸é libsomething.so³ª libsomething.a¿Í °°Àº ¸¹Àº ÆÄÀϵéÀ» º¼ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. À̵éÀº À§¿Í°°Àº ÇÔ¼öµéÀÇ ¶óÀ̺귯¸® ÆÄÀÏÀÔ´Ï´Ù. Glibc´Â ´Ü¼øÈ÷ GNU¿¡¼ ±×·¯ÇÑ ÇÔ¼ö¸¦ ±¸ÇöÇØ ³õÀº °ÍÀÔ´Ù.
ÇÁ·Î±×·¥ÀÌ ÀÌ·¯ÇÑ ¶óÀ̺귯¸® ÇÔ¼öµéÀ» »ç¿ëÇÏ´Â µ¥¿¡´Â µÎ °¡Áö ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. ¸¸¾à ¿©·¯ºÐÀÌ ÇÁ·Î±×·¥À»
Á¤Àû(statically)À¸·Î ¸µÅ©ÇÑ´Ù¸é, ÀÌ ¶óÀ̺귯¸® ÇÔ¼öµéÀº ¸¸µé¾îÁö´Â ½ÇÇà °¡´ÉÇÑ ÆÄÀÏ¿¡ º¹»çµÉ °ÍÀÔ´Ï´Ù. libsomething.a¿Í °°Àº ÆÄÀÏÀº ÀÌ·¯ÇÑ ÀÏÀ» À§ÇÑ °ÍÀÔ´Ï´Ù. ¿©·¯ºÐÀÌ µ¿Àû(dynamically)À¸·Î ÇÁ·Î±×·¥À» ¸µÅ©ÇÑ´Ù¸é(À̰ÍÀº ±âº»°ªÀÔ´Ï´Ù.), ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ¾î ¶óÀ̺귯¸® Äڵ尡 ÇÊ¿äÇÒ ¶§ libsomething.so¿¡¼ ºÎ¸£°Ô µÉ °ÍÀÔ´Ï´Ù.
¿©·¯ºÐÀÌ Æ¯Á¤ÇÑ ÇÁ·Î±×·¥¿¡¼ ¾î¶°ÇÑ ¶óÀ̺귯¸®°¡ ÇÊ¿äÇÑÁö ¾Ë·Á°í ÇϽŴٸé
ldd¸í·ÉÀ» ¾²½Ç ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î bash°¡ ¾î¶°ÇÑ ¶óÀ̺귯¸®µéÀ» ¾²´ÂÁö ¾Æ½Ã·Á¸é ¾Æ·¡¿Í °°ÀÌ ÀÔ·ÂÇϽʽÿÀ.
[greg@Curry power2bash]$ ldd /bin/bash
libtermcap.so.2 => /lib/libtermcap.so.2 (0x40019000)
libc.so.6 => /lib/libc.so.6 (0x4001d000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
5.1. ¼³Á¤ ¶¶óÀ̺귯¸®ÀÇ ¸î¸î ÇÔ¼öµéÀº ¿©·¯ºÐÀÌ ¾îµð¿¡ »ç½Ã´ÂÁö¿¡ µû¶ó ´Ù¸¥ ÀÏÀ» ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, È£ÁÖ¿¡¼´Â ³¯ÀÚ¸¦ ÀÏ/¿ù/³â°ú °°ÀÌ ¾²Áö¸¸, ¹Ì±¹¿¡¼´Â ¿ù/ÀÏ/³â°ú °°ÀÌ ¾¹´Ï´Ù.
glibc ¹èÆ÷ÆÇ¿¡ ÇÔ²² ÀÖ´Â localedef¶ó´Â ÇÁ·Î±×·¥Àº ¿©·¯ºÐÀÌ À̰ÍÀ» ¼³Á¤ÇÒ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù.
5.2. ¿¬½À ¹®Á¦ ¶¿©·¯ºÐÀÌ °¡Àå ÁÁ¾ÆÇÏ´Â ¾îÇø®ÄÉÀ̼ÇÀÌ ¾î¶°ÇÑ ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ´ÂÁö
ldd·Î ¾Ë¾Æº¸½Ê½Ã¿À.
ldd·Î init°¡ ¾î¶² ¶ó¸®ºê·¯¸®¸¦ »ç¿ëÇÏ´ÂÁö ¾Ë¾Æº¸½Ê½Ã¿À.
ÇѰ³³ª µÎ°³ÀÇ ÇÔ¼ö¸¸À» Æ÷ÇÔÇÏ´Â Àå³°¨ ¶óÀ̺귯¸®¸¦ ¸¸µé¾î º¸½Ê½Ã¿À. ±×·¯ÇÑ ¶óÀ̺귯¸®´Â
ar ÇÁ·Î±×·¥À¸·Î ¸¸µé ¼ö ÀÖÀ¸¸ç, arÀÇ ¸Ç ÆäÀÌÁö´Â ¾î¶»°Ô À̰ÍÀÌ ÀÌ·ç¾îÁö´ÂÁö Á¶»çÇϱâ À§ÇØ ¸ÕÀú º¸¾Æ¾ß ÇÒ ÀÚ·áÀÔ´Ï´Ù. ÀÌ ¶óÀ̺귯¸®¸¦ ¾²´Â ÇÁ·Î±×·¥À» ¾²°í ÄÄÆÄÀÏ ÇÑ µÚ ¸µÅ©ÇØ º¸½Ê½Ã¿À.
6. Init ¶Àú´Â ¸®´ª½º ½Ã½ºÅÛµéÀÌ °¡Àå ¸¹ÀÌ »ç¿ëÇÏ´Â "System V" ½ºÅ¸ÀÏÀÇ init¸¸À» ¾ð±ÞÇϰڽÀ´Ï´Ù. ´Ù¸¥ ´ë¾Èµéµµ ÀÖ½À´Ï´Ù. »ç½Ç, ¿©·¯ºÐÀº ¾î¶² ÇÁ·Î±×·¥À̶óµµ
/sbin/init¿¡ ³ÖÀ» ¼ö ÀÖ°í, Ä¿³ÎÀº ÀÚ½ÅÀÌ ¿ÏÀüÈ÷ ºÒ¸° ´ÙÀ½¿¡ ±×°ÍÀ» ½ÇÇàÇÒ °ÍÀÔ´Ï´Ù.
initÀÌ ÇÏ´Â ÀÏÀº ¸ðµç °ÍµéÀÌ ¹Ù¶ó´Â ´ë·Î ½ÇÇàµÇ°Ô ÇÏ´Â °ÍÀÔ´Ï´Ù. ÆÄÀÏ ½Ã½ºÅÛÀÌ ±¦ÂúÀºÁö È®ÀÎÇÏ°í ¸¶¿îÆ®ÇÕ´Ï´Ù. "µ¥¸ó"µéÀÌ ½ÃÀÛÇØ¼ ½Ã½ºÅÛ ¸Þ½ÃÁöµéÀ» ·Î±×ÇÏ°Ô Çϰí, ³×Æ®¿öÅ·À» Çϰí, À¥ ÆäÀÌÁö¸¦ º¸³»°í, ¸¶¿ì½º°¡ ¹«½¼ ÀÏÀ» ÇÏ´ÂÁö º¸´Â °Í°ú °°Àº ÀÏÀ» ÇÕ´Ï´Ù. À̰ÍÀº ¿©·¯ºÐÀÇ °¡»ó Å͹̳ο¡ ·Î±×ÀÎ ÇÁ·ÒÇÁÆ®¸¦ Ãâ·ÂÇÏ´Â getty ÇÁ·Î¼¼½º¸¦ ½ÃÀÛÇÕ´Ï´Ù.
"·±·¹º§(run-levels)"À» ÀüȯÇÏ´Â °Í¿¡ ´ëÇØ ´Ù À̾߱â ÇÏ·Á¸é º¹ÀâÇϰÚÁö¸¸, ¿©±â¼´Â ´ëºÎºÐÀ» °Ç³Ê¶Ù°í ½Ã½ºÅÛ ½ÃÀÛ¿¡ °ü·ÃµÈ ºÎºÐ¸¸ À̾߱âÇÒ °ÍÀÔ´Ï´Ù.
Init´Â ¹«¾ùÀ» ÇÒÁö ±â·ÏµÇ¾î ÀÖ´Â
/etc/inittabÀ̶ó´Â ÆÄÀÏÀ» ÀнÀ´Ï´Ù. ÀüÇüÀûÀ¸·Î, Á¦ÀÏ ¸ÕÀú ÇÏ´Â ÀÏÀº ÃʱâÈ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ ½ºÅ©¸³Æ®¸¦ ½ÇÇà(¶Ç´Â ÇØ¼®)Çϴ°ÍÀº ¿©·¯ºÐ¿¡°Ô ¸í·É ÇÁ·ÒÇÁÆ®¸¦ ÁÖ´Â ÇÁ·Î±×·¥À̱⵵ ÇÑ bashÀÔ´Ï´Ù. µ¥ºñ¾È ½Ã½ºÅÛ¿¡¼´Â, ½ÃÀÛ ½ºÅ©¸³Æ®´Â /etc/init.d/rcSÀ̰í, ·¹µåÇÞ¿¡¼´Â /etc/rc.d/rc.sysinitÀÔ´Ï´Ù. ¿©±â¼ ÆÄÀϽýºÅÛÀÌ Ã¼Å©µÇ¸ç ¸¶¿îÆ®µÇ°í, ½Ã°è°¡ ¼³Á¤µÇ°í, ½º¿Ò °ø°£ÀÌ ÄÑÁö°í, È£½ºÆ® À̸§ÀÌ ¼³Á¤µÇ´Â °Í°ú °°Àº ÀÏÀÌ ÀϾ´Ï´Ù.
´ÙÀ½À¸·Î, ¶Ç ´Ù¸¥ ½ºÅ©¸³Æ®°¡ ºÒ·ÁÁ®¼ ¿ì¸®¸¦ ±âº» ·±·¹º§·Î µ¥·Á°©´Ï´Ù. ±âº» ·±·¹º§Àº ½ÇÇàÇÒ ¼ö ÀÖ´Â ¼ºê½Ã½ºÅÛµéÀÇ ¸ðÀÓÀÔ´Ï´Ù. °¢°¢ÀÇ ·±·¹º§µé¿¡ ´ëÇÏ¿© ·¹µåÇÞ¿¡¼´Â
/etc/rc.d/rc0.d, /etc/rc.d/rc1.d, ..., /etc/rc.d/rc6.d¿Í °°Àº µð·ºÅ丮°¡ ÀÖ°í, µ¥ºñ¾È¿¡´Â /etc/rc0.d, /etc/rc1.d, ..., /etc/rc6.d¿Í °°Àº µð·ºÅ丮µéÀÌ ÀÖ½À´Ï´Ù. µ¥ºñ¾È¿¡¼ ¿ì¸®´Â ·±·¹º§ 3À¸·Î °¡¼ /etc/rc3.d¾È¿¡ ÀÖ´Â `S' (½ÃÀÛ, start¸¦ ÀǹÌ)·Î ½ÃÀÛÇÏ´Â ½ºÅ©¸³Æ®µéÀ» ½ÇÇàÇÕ´Ï´Ù. »ç½Ç ÀÌ ½ºÅ©¸³Æ®µéÀº init.d¶ó´Â ´Ù¸¥ µð·ºÅ丮¿¡ ÀÖ´Â ½ºÅ©¸³Æ®¿¡ ´ëÇÑ ¸µÅ©ÀÔ´Ï´Ù.
±×·¡¼ ¿ì¸®ÀÇ ·±·¹º§ ½ºÅ©¸³Æ®´Â
init¿¡ ÀÇÇØ ºÒ·ÁÁö°í, µð·ºÅ丮 ¾È¿¡¼ S·Î ½ÃÀÛÇÏ´Â ½ºÅ©¸³Æ®µéÀ» ã½À´Ï´Ù. S10syslog¸¦ ¸ÕÀú ãÀ» ¼öµµ ÀÖ½À´Ï´Ù. ¼ýÀÚ´Â ½ºÅ©¸³Æ®µéÀ» ½ÇÇà½ÃŰ´Â ¼ø¼¸¦ ¾Ë·ÁÁÝ´Ï´Ù. ±×·¡¼ ÀÌ °æ¿ì S00 ... S09·Î ½ÃÀÛÇÏ´Â ½ºÅ©¸³Æ®µéÀÌ ¾ø¾ú±â ¶§¹®¿¡ S10syslog°¡ ¸ÕÀú ½ÇÇàµË´Ï´Ù. ÇÏÁö¸¸ ½ÇÁ¦·Î S10syslog´Â ½Ã½ºÅÛ ·Î°Å¸¦ ½ÃÀÛÇÏ°í ³¡³»´Â ½ºÅ©¸³Æ®ÀÎ /etc/init.d/syslog·ÎÀÇ ¸µÅ©ÀÔ´Ï´Ù. ¸µÅ©°¡ S·Î ½ÃÀÛÇϱ⠶§¹®¿¡, ·±·¹º§ ½ºÅ©¸³Æ®´Â syslog ½ºÅ©¸³Æ®¸¦ "start" ÆÄ¶ó¸ÞÅÍ·Î ½ÇÇàÇÕ´Ï´Ù. ¿©±â¿¡ ´ëÀÀµÇ´Â ·±·¹º§À» ¶°³¯ ¶§ ¹«¾ùÀ» ¹«½¼ ¼ø¼·Î ²¨¾ß ÇÏ´ÂÁö¸¦ Áö½ÃÇÏ´Â ¸µÅ©´Â `K' (Á×À̱â, killÀ» ÀǹÌ)·Î ½ÃÀÛÇÕ´Ï´Ù.
±âº»À¸·Î ½ÃÀ۵Ǵ ¼ºê½Ã½ºÅÛµéÀ» ¹Ù²Ù·Á¸é, ¿©·¯ºÐÀº
rcN.d µð·ºÅ丮 ¾È¿¡ ÀÖ´Â ÀÌ·¯ÇÑ ¸µÅ©µéÀ» ¼³Á¤ÇØ¾ß ÇÒ °ÍÀÔ´Ï´Ù. ¿©±â¼ NÀº inittab¿¡ ¼³Á¤µÈ ±âº» ·±·¹º§ÀÔ´Ï´Ù.
Init°¡ ¸¶Áö¸·À¸·Î ÇÏ´Â Áß¿äÇÑ ÀÏÀº
gettyµéÀ» ½ÃÀÛÇÏ´Â °ÍÀÔ´Ï´Ù. ±×µéÀº "¸î ¹øÀÌ¶óµµ ¼Ò»ýÇÏ´Â(respawned)" Ư¡À» °¡Áö°í ÀÖ½À´Ï´Ù. ÀÌ´Â ±×µéÀÌ Á¤ÁöµÇ¾úÀ» ¶§, init°¡ ±×µéÀ» ´Ù½Ã ½ÃÀÛÇÏ°Ô ÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. ´ëºÎºÐÀÇ ¹èÆ÷ÆÇµéÀº ¿©¼¸°³ÀÇ °¡»ó Å͹̳ÎÀÌ ÀÖ½À´Ï´Ù. ¿©·¯ºÐÀº ¸Þ¸ð¸®¸¦ Àý¾àÇϱâ À§Çؼ ¼ö¸¦ ÁÙÀÏ ¼öµµ ÀÖ°í, ¸¹Àº °ÍµéÀ» µ¿½Ã¿¡ ½ÇÇàÇÏ¸é¼ ÇÊ¿äÇÒ ¶§¸¶´Ù ÀüȯÇÒ ¼ö ÀÖµµ·Ï ´Ã¸± ¼öµµ ÀÖÀ» °ÍÀÔ´Ï´Ù. ¿©·¯ºÐÀº getty¸¦ ÅØ½ºÆ® Å͹̳ÎÀ̳ª ¸ðµ© ¿¬°áÀ» À§ÇØ ½ÇÇàÇÏ°í ½ÍÀ¸½Ç ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ·± °æ¿ì¿¡´Â ¿©·¯ºÐÀÌ inittab ÆÄÀÏÀ» ÆíÁýÇÒ Çʿ䰡 ÀÖÀ» °ÍÀÔ´Ï´Ù.
6.1. ¼³Á¤ ¶/etc/inittab Àº init¸¦ À§ÇÑ ÃÖ°í ¼öÁØÀÇ ¼³Á¤ ÆÄÀÏÀÔ´Ï´Ù.
N = 0, 1, ..., 6ÀÎ
rcN.d µð·ºÅ丮µéÀº ¾î¶² ¼ºê½Ã½ºÅÛÀÌ ½ÃÀ۵ǴÂÁö¸¦ °áÁ¤ÇÕ´Ï´Ù.
init¿¡ ÀÇÇØ ºÒ·ÁÁö´Â ½ºÅ©¸³Æ® ÁßÀÇ ÇϳªÀÇ ¾îµð¿¡¼±°¡
mount -a ¸í·ÉÀÌ ½ÇÇàµÉ °ÍÀÔ´Ï´Ù. À̰ÍÀº ¸¶¿îÆ®Çϱâ·Î ¿¹Á¤µÈ ¸ðµç ÆÄÀϽýºÅÛµéÀÌ ¸¶¿îÆ®ÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. ÆÄÀÏ /etc/fstabÀÌ ¹«¾ùÀÌ ¸¶¿îÆ®µÉ ¿¹Á¤ÀÎÁö¸¦ Á¤ÀÇÇÕ´Ï´Ù. ¿©·¯ºÐÀÌ ½Ã½ºÅÛÀÌ ½ÃÀÛµÉ ¶§ ¹«¾ùÀÌ ¾îµð¿¡ ¸¶¿îÆ® µÇ´ÂÁö¸¦ ¹Ù²Ù°í ½ÍÀ¸½Ã´Ù¸é ÀÌ ÆÄÀÏÀ» ÆíÁýÇϽʽÿÀ. fstab¿¡ ´ëÇÑ ¸Ç ÆäÀÌÁö°¡ ÀÖ½À´Ï´Ù.
6.2. ¿¬½À ¹®Á¦ ¶¿©·¯ºÐÀÇ ½Ã½ºÅÛÀÇ ±âº» ·±·¹º§À» À§ÇÑ
rcN.dµð·ºÅ丮¸¦ ã¾Æ ÆÄÀϵéÀÌ ¾îµð·Î ¸µÅ©µÇ¾î ÀÖ´ÂÁö ls -l·Î º¸½Ê½Ã¿À.
¿©·¯ºÐÀÇ ½Ã½ºÅÛ¿¡¼ ½ÇÇàµÇ´Â gettyµéÀÇ ¼ö¸¦ ¹Ù²Ù¾î º¸½Ê½Ã¿À.
¿©·¯ºÐÀÇ ±âº» ·±·¹º§¿¡¼ ÇÊ¿ä·Î ÇÏÁö ¾Ê´Â ¼ºê½Ã½ºÅÛÀ» ¾ø¾Ö½Ê½Ã¿À.
¾ó¸¶³ª ÀûÀº ÇÁ·Î±×·¥À» ½ÇÇàÇÏ¸ç ½Ã½ºÅÛÀ» ½ÃÀÛÇÒ ¼ö ÀÖ´ÂÁö º¸½Ê½Ã¿À.
¿©·¯ºÐÀÇ Ç÷ÎÇÇ µð½ºÅ©¿¡ ¸®·Î¿Í Ä¿³Î, ±×¸®°í Á¤ÀûÀ¸·Î ¸µÅ©µÈ "hello world" ÇÁ·Î±×·¥ÀÎ
/sbin/init¸¦ ³Ö°í ºÎÆ®ÇÑ µÚ ÀλçÇÏ´Â °ÍÀ» º¸½Ê½Ã¿À.
¿©·¯ºÐÀÇ ½Ã½ºÅÛÀÌ ½ÃÀ۵Ǵ °ÍÀ» ÁÖÀDZí°Ô º¸½Ã¸é¼ ¹«¾ùÀÌ ÀϾ°í ÀÖ´Ù°í ¸»ÇÏ´ÂÁö ±â·ÏÇϽʽÿÀ. ¶Ç´Â
/var/log/messagesÀÇ ½ÃÀÛÇÒ ¶§ºÎÅÍ ÀϺκÐÀ» Ãâ·ÂÇØ º¸½Ê½Ã¿À. ±× ´ÙÀ½¿¡ inittab¿¡¼ºÎÅÍ ¸ðµç ½ºÅ©¸³Æ®¸¦ º¸½Ã¸é¼ ¹«½¼ Äڵ尡 ¹«¾ùÀ» ÇÏ´ÂÁö º¸½Ê½Ã¿À. ¿©·¯ºÐÀº ¾Æ·¡¿Í °°Àº ½ÃÀÛ ¸Þ½ÃÁö¸¦ Ãß°¡ÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.
echo "Hello, I am rc.sysinit" ¹è½Ã ¼Ð ½ºÅ©¸³Æ®¿¡ ¹è¿ì´Â °Íµµ ¾ÆÁÖ ÁÁÀº ¿¬½ÀÀÔ´Ï´Ù. ¸î¸îÀº ¾ÆÁÖ º¹ÀâÇÕ´Ï´Ù. ÁÁÀº ¹è½Ã Âü°í¼¿Í ÇÔ²² ÇϽʽÿÀ.
6.3. Ãß°¡ Á¤º¸ ¶
7. ÆÄÀÏ ½Ã½ºÅÛ ¶ÀÌ Àý¿¡¼ Àú´Â "ÆÄÀϽýºÅÛ"À̶ó´Â ´Ü¾î¸¦ µÎ °¡ÁöÀÇ ´Ù¸¥ Àǹ̷Π»ç¿ëÇÒ °ÍÀÔ´Ï´Ù. µð½ºÅ© ÆÄƼ¼ÇÀ̳ª ´Ù¸¥ µð¹ÙÀ̽º¿¡ ÀÖ´Â ÆÄÀϽýºÅÛÀÌ ÀÖ°í, µ¿ÀÛÇÏ´Â ¸®´ª½º ½Ã½ºÅÛ¿¡ ÀÇÇØ ¿©·¯ºÐ¿¡°Ô´Â ÀÖ´Â °Íó·³ º¸ÀÌ´Â ÆÄÀϽýºÅÛÀÌ ÀÖ½À´Ï´Ù.
Àü Àý¿¡¼ Àú´Â init ½ºÅ©¸³Æ®°¡ ÆÄÀϽýºÅÛÀ» üũÇÏ°í ¸¶¿îÆ® ÇÑ´Ù´Â »ç½ÇÀ» ¾ð±ÞÇÏ¿´½À´Ï´Ù. ±×°ÍÀ» ÇÏ´Â ¸í·É¾î´Â °¢°¢
fsck¿Í mountÀÔ´Ï´Ù.
Çϵåµð½ºÅ©´Â ´ÜÁö ¿©·¯ºÐÀÌ 0°ú 1À» ¾µ ¼ö ÀÖ´Â Å« °ø°£¿¡ ºÒ°úÇÕ´Ï´Ù. ÆÄÀϽýºÅÛÀº ±×°Í¿¡ ±¸Á¶¸¦ ÁÖ¾î µð·ºÅ丮 ¾ÈÀÇ µð·ºÅ丮 ¾ÈÀÇ ... ÆÄÀÏó·³ º¸ÀÌ°Ô ÇÕ´Ï´Ù. °¢°¢ÀÇ ÆÄÀÏÀº ±× ÆÄÀÏÀÌ ´©±¸ÀÇ °ÍÀÌ¸ç ¾ðÁ¦ ¸¸µé¾îÁ³°í ³»¿ëÀº ¾îµð¼ º¼ ¼ö ÀÖ´ÂÁö¸¦ ÀúÀåÇÑ inode¿¡ ÀÇÇØ ³ªÅ¸³»Áý´Ï´Ù. µð·ºÅ丮µéµµ inodeµé¿¡ ÀÇÇØ ³ªÅ¸³»¾îÁö°Ô µÇ´Âµ¥, ÀÌ inode´Â µð·ºÅ丮ÀÇ ÆÄÀÏÀÇ inodeµéÀ» ¾îµð¿¡¼ ãÀ» ¼ö ÀÖ´ÂÁö ¾Ë·ÁÁÝ´Ï´Ù. ¸¸¾à ½Ã½ºÅÛÀÌ
/home/greg/bigboobs.jpeg¸¦ ÀÐÀ¸·Á°í ÇÑ´Ù¸é, ¸ÕÀú "superblock (½´ÆÛºí·Ï)"ÀÇ ·çÆ® µð·ºÅ丮 /ÀÇ inode¸¦ ã°í, /ÀÇ ³»¿ë Áß¿¡¼ µð·ºÅ丮 homeÀÇ inode¸¦ ãÀº µÚ, /homeÀÇ ³»¿ë Áß¿¡¼ µð·ºÅ丮 gregÀÇ inode¸¦ ã½À´Ï´Ù. °°Àº ¹æ¹ýÀ¸·Î bigboobs.jpegÀÇ inode¸¦ ã¾Æ¼ ¾î´À µð½ºÅ© ºí·ÏÀ» Àоî¾ß ÇÒÁö¸¦ ¾Ë°Ô µË´Ï´Ù.
¿ì¸®°¡ ÆÄÀÏÀÇ ³¡¿¡ µ¥ÀÌÅ͸¦ Ãß°¡ÇϰíÀÚ ÇÒ ¶§, inode°¡ ¾÷µ¥ÀÌÆ®µÇ¾î »õ·Î¿î ºí·ÏÀÌ ÆÄÀÏ¿¡ ¼ÓÇÏ°Ô µÇ¾ú´Ù´Â °ÍÀ» ¹Ý¿µÇϱâ Àü¿¡ µ¥ÀÌÅͰ¡ ¾º¿©Áú ¼ö ÀÖ°í, ±× ¹Ý´ëÀÇ °æ¿ìµµ °¡´ÉÇÕ´Ï´Ù. ¸¸¾à Àü¿ø °ø±ÞÀÌ ÁߴܵǾî ÀÌ·¯ÇÑ °ÍÀÌ ²÷±ä´Ù¸é, ÆÄÀϽýºÅÛÀÌ °íÀ峯 ¼öµµ ÀÖ½À´Ï´Ù.
fsck´Â ÀÌ·¯ÇѰÍÀ» ã¾Æ¼ °íÄ¡·Á°í ÇÕ´Ï´Ù.
¸¶¿îÆ® ¸í·É¾î´Â ÀåÄ¡¿¡ ÀÖ´Â ÆÄÀϽýºÅÛÀ» °¡Á®¿Í¼ ¿©·¯ºÐÀÌ ½Ã½ºÅÛÀ» »ç¿ëÇÒ ¶§ º¼ ¼ö ÀÖ´Â °èÃþ¿¡ Ãß°¡ÇÕ´Ï´Ù. º¸Åë Ä¿³ÎÀº ·çÆ® ÆÄÀϽýºÅÛÀ» Àбâ Àü¿ëÀ¸·Î ¸¶¿îÆ®ÇÕ´Ï´Ù.
fsck°¡ ·çÆ® ÆÄÀϽýºÅÛÀÌ Á¤»óÀÎÁö È®ÀÎÇÑ µÚ ¸¶¿îÆ® ¸í·É¾î·Î ´Ù½Ã ¸¶¿îÆ®ÇÕ´Ï´Ù.
¸®´ª½º´Â msdos, vfat, minix¿Í °°Àº ´Ù¸¥ Á¾·ùÀÇ ÆÄÀϽýºÅÛµµ Áö¿øÇÕ´Ï´Ù. ƯÁ¤ÇÑ Á¾·ùÀÇ ÆÄÀϽýºÅÛ¿¡ ´ëÇÑ »ó¼¼ÇÑ Á¤º¸´Â °¡»ó ÆÄÀÏ ½Ã½ºÅÛ (virtual file system, VFS)¿¡ ÀÇÇØ Ãß»óÈµÇ¾î °¡·ÁÁý´Ï´Ù. Áö±ÝÀº ´õ ÀÌ»ó ±íÀÌ µé¾î°¡Áö´Â ¾Ê°Ú½À´Ï´Ù. À̰Ϳ¡ ´ëÇÑ ³íÀÇ´Â "¸®´ª½º Ä¿³Î(The Linux KernelÀ» º¸½Ê½Ã¿À.)"¿¡ ÀÖ½À´Ï´Ù.
¿ÏÀüÈ÷ ´Ù¸¥ Á¾·ùÀÇ ÆÄÀϽýºÅÛÀÌ
/proc¿¡ ¸¶¿îÆ®µË´Ï´Ù. »ç½Ç À̰ÍÀº Ä¿³Î ¾È¿¡ ÀÖ´Â °ÍµéÀ» Ç¥ÇöÇÑ °Í¿¡ ºÒ°úÇÕ´Ï´Ù. ¿©±â¿¡´Â ½Ã½ºÅÛ¿¡¼ µ¹¾Æ°¡°í ÀÖ´Â °¢ ÇÁ·Î¼¼½º¸¶´Ù µð·ºÅ丮°¡ ÀÖÀ¸¸ç, µð·ºÅ丮ÀÇ À̸§Àº ÇÁ·Î¼¼½º ¹øÈ£ÀÔ´Ï´Ù. ¶ÇÇÑ ÀÎÅÍ·´Æ®(interrupts), meminfo¿Í °°ÀÌ ¾î¶»°Ô Çϵå¿þ¾î°¡ »ç¿ëµÇ°í ÀÖ´ÂÁö¸¦ ¾Ë·ÁÁÖ´Â °Íµéµµ ÀÖ½À´Ï´Ù. ¿©·¯ºÐÀº /procÀ» µÑ·¯º½À¸·Î½á ¸¹Àº °ÍÀ» ¹è¿ï ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.
7.1. ¼³Á¤ ¶Ext2 ÆÄÀϽýºÅÛÀ» ¸¸µå´Â
mke2fs ¸í·É¾î¿¡´Â ÆÄ¶ó¸ÞÅ͵éÀÌ ÀÖ½À´Ï´Ù. ÆÄ¶ó¸ÞÅ͵éÀº ºí·ÏµéÀÇ Å©±â, inodeµéÀÇ ¼ö¿Í °°Àº °ÍÀ» Á¶ÀýÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº mke2fsÀÇ ¸Ç ÆäÀÌÁö¸¦ º¸½Ê½Ã¿À.
¿©·¯ºÐÀÇ ÆÄÀϽýºÅÛ¿¡ ¹«¾ùÀÌ ¾îµð¿¡ ¸¶¿îÆ®µÇ´ÂÁö´Â
/etc/fstab ÆÄÀÏ¿¡ ÀÇÇØ Á¶ÀýµË´Ï´Ù. ÀÌ ÆÄÀÏ¿¡ ´ëÇÑ ¸Ç ÆäÀÌÁö°¡ ÀÖ½À´Ï´Ù.
7.2. ¿¬½À ¹®Á¦ ¶¸Å¿ì ÀÛÀº ÆÄÀϽýºÅÛÀ» ¸¸µé°í Çí½º ºä¾î(hex viewer)·Î º¸½Ê½Ã¿À. inodeµé, ½´ÆÛºí·Ïµé(superblocks)°ú ÆÄÀÏ ³»¿ëµéÀ» ±¸ºÐÇØ º¸½Ê½Ã¿À.
Àú´Â ÆÄÀÏ ½Ã½ºÅÛÀ» ±×·¡ÇÈÀ¸·Î º¸¿©ÁÖ´Â µµ±¸µéÀÌ ÀÖÀ» °ÍÀ̶ó°í ¹Ï½À´Ï´Ù. ã¾Æ¼ ½á º¸½Å µÚ URL°ú ¸®ºä¸¦ Àú¿¡°Ô ¸ÞÀϺ¸³» ÁֽʽÿÀ!
Ä¿³ÎÀÇ ext2 ÆÄÀϽýºÅÛ Äڵ带 º¸½Ê½Ã¿À.
7.3. Ãß°¡ Á¤º¸ ¶
8. Ä¿³Î µ¥¸óµé ¶¿©·¯ºÐÀÌ
ps aux ¸í·ÉÀ» ÀÔ·ÂÇÏ¸é ¾Æ·¡¿Í °°Àº °ÍÀ» º¼ °ÍÀÔ´Ï´Ù.
USER PID %CPU %MEM SIZE RSS TTY STAT START TIME COMMAND root 1 0.1 8.0 1284 536 ? S 07:37 0:04 init [2] root 2 0.0 0.0 0 0 ? SW 07:37 0:00 (kflushd) root 3 0.0 0.0 0 0 ? SW 07:37 0:00 (kupdate) root 4 0.0 0.0 0 0 ? SW 07:37 0:00 (kpiod) root 5 0.0 0.0 0 0 ? SW 07:37 0:00 (kswapd) root 52 0.0 10.7 1552 716 ? S 07:38 0:01 syslogd -m 0 root 54 0.0 7.1 1276 480 ? S 07:38 0:00 klogd root 56 0.3 17.3 2232 1156 1 S 07:38 0:13 -bash root 57 0.0 7.1 1272 480 2 S 07:38 0:01 /sbin/agetty 38400 tt root 64 0.1 7.2 1272 484 S1 S 08:16 0:01 /sbin/agetty -L ttyS1 root 70 0.0 10.6 1472 708 1 R Sep 11 0:01 ps aux À̰ÍÀº ½Ã½ºÅÛ¿¡¼ ½ÇÇàµÇ°í ÀÖ´Â ÇÁ·Î¼¼½ºµéÀÇ ¸ñ·ÏÀÔ´Ï´Ù. ÀÌ Á¤º¸´Â Á¦°¡ Àü Àý¿¡¼ ¾ð±ÞÇß´ø
/proc ÆÄÀϽýºÅÛ¿¡¼ ¿Â °ÍÀÔ´Ï´Ù. initÀÌ ÇÁ·Î¼¼½º ¹øÈ£ 1¹øÀ̶ó´Â Á¡¿¡ ÁÖÀÇÇϽʽÿÀ. ÇÁ·Î¼¼½º 2, 3, 4, 5´Â kflushd, kupdate, kpiod, kswapdÀÔ´Ï´Ù. ¿©±â¼ ¹«¾ùÀΰ¡ ÀÌ»óÇÑ °ÍÀÌ ÀÖ½À´Ï´Ù. °¡»ó ÀúÀå Å©±â (virtual storage size ,SIZE)¿Í ½ÇÁ¦ ÀúÀå Å©±â (Real Storage Size, RSS) ¸¦ »ìÆìº¸¸é, ÀÌ ÇÁ·Î¼¼½ºµéÀº ¸ðµÎ 0À» ³ªÅ¸³»°í ÀÖ½À´Ï´Ù. ¾î¶»°Ô ÇÁ·Î¼¼½º°¡ ¸Þ¸ð¸®¸¦ ¾²Áö ¾ÊÀ» ¼ö ÀÖÀ»±î¿ä?
ÀÌ ÇÁ·Î¼¼½ºµéÀº Ä¿³Î µ¥¸óµéÀÔ´Ï´Ù. ´ëºÎºÐÀÇ Ä¿³ÎÀº ÇÁ·Î¼¼½º ¸ñ·ÏÀ» ÀüÇô º¸¿©ÁÖÁö ¾Ê±â ¶§¹®¿¡, ¾ó¸¶³ª ¸¹Àº ¸Þ¸ð¸®°¡ »ç¿ëµÇ´ÂÁö¸¦ °è»êÇÏ´Â ¹æ¹ýÀº ½Ã½ºÅÛÀÇ »ç¿ë °¡´ÉÇÑ ¸Þ¸ð¸®ÀÇ ¾çÀ» »©´Â ¹æ¹ý¹Û¿¡ ¾ø½À´Ï´Ù. Ä¿³Î µ¥¸óµéÀº init µÚ¿¡ ½ÃÀÛÇϱ⠶§¹®¿¡, ÀϹÝÀûÀÎ ÇÁ·Î¼¼½ºµé°ú °°Àº ÇÁ·Î¼¼½º ¹øÈ£¸¦ ¹Þ½À´Ï´Ù. ÇÏÁö¸¸ ±×µéÀÇ ÄÚµå¿Í µ¥ÀÌÅÍ´Â ¸Þ¸ð¸®ÀÇ Ä¿³Î ºÎºÐ¿¡ ÀÖ½À´Ï´Ù.
ÀÌ ¸í·É¾îµéÀº COMMAND¸¦ »ìÆìº¸¸é °ýÈ£°¡ ÃÄÁ® Àִµ¥, ÀÌ´Â
/proc ÆÄÀϽýºÅÛ¿¡ ÀÌ ÇÁ·Î¼¼½ºµéÀÇ Á¤º¸°¡ ¾ø±â ¶§¹®ÀÔ´Ï´Ù.
±×·¯¸é ÀÌ·¯ÇÑ Ä¿³Î µ¥¸óµéÀº ¹«¾ùÀ» À§ÇØ ÀÖ´Â °ÍÀϱî¿ä? ÀÌ ¹®¼ÀÇ ÀÌÀü ¹öÀü¿¡¼ Àú´Â Ä¿³Î µ¥¸ó¿¡ ´ëÇØ Àß ¸ô¶ú±â ¶§¹®¿¡ µµ¿òÀ» ¿äûÇß½À´Ï´Ù. ¾Æ·¡ÀÇ À̾߱âÀÇ ÀϺδ ÀÌ ¿äû¿¡ ´ëÇÑ °í¸¶¿î ´äÀåµéÀ» ¸ð¾Æ¼ ¸¸µç °ÍÀÔ´Ï´Ù. ´õ ¸¹Àº ´Ü¼³ª Âü°í Àڷᳪ ¼öÁ¤¿¡´ëÇÑ Á¶¾ðÀº ¾ðÁ¦³ª ȯ¿µÇÕ´Ï´Ù!
ÀÔÃâ·ÂÀº ¸Þ¸ð¸®ÀÇ ¹öÆÛ¸¦ ÅëÇØ¼ ÀÌ·ç¾îÁý´Ï´Ù. À̸¦ ÅëÇØ ¼Óµµ¸¦ ³ôÀÏ ¼ö ÀÖ½À´Ï´Ù. ÇÁ·Î±×·¥ÀÌ ¹«¾ùÀΰ¡¸¦ ¾²´Â °ÍÀ» ¸Þ¸ð¸® ¾ÈÀÇ ¹öÆÛ¿¡ ¸ð¾Ò´Ù°¡ ´õ Å©°í È¿À²ÀûÀÎ ¹À½À¸·Î ¾¹´Ï´Ù.
kflushd¿Í kupdate µ¥¸óµéÀº ÀÌ·¯ÇÑ ÀϵéÀ» °ü¸®ÇÕ´Ï´Ù. kupdate´Â (5 ÃÊ Á¤µµÀÇ?) °£°ÝÀ» µÎ°í Á¤±âÀûÀ¸·Î ¹öÆÛ¿¡ ¹«¾ùÀΰ¡°¡ ¸¹ÀÌ ÀÖ´ÂÁö¸¦ È®ÀÎÇÕ´Ï´Ù. ¹«¾ùÀΰ¡°¡ ÀÖ´Ù¸é, kflushd¸¦ ºÒ·¯¼ ±×µéÀ» µð½ºÅ©¿¡ ¾²°Ô(flush) ÇÕ´Ï´Ù.
ÇÁ·Î¼¼½ºµéÀº ¾Æ¹« Àϵµ ÇÏÁö ¾ÊÀ» ¶§°¡ Á¾Á¾ ÀÖÀ¸¸ç, ½ÇÇàÁßÀÎ °Íµµ ±×µéÀÇ ÄÚµå¿Í µ¥ÀÌÅÍ ¸ðµÎ°¡ ¸Þ¸ð¸®¿¡ ÀÖÀ» ÇÊ¿ä´Â ¾ø½À´Ï´Ù. À̰ÍÀº ½ÇÇàÁßÀÎ ÇÁ·Î±×·¥ÀÇ »ç¿ëÇÏÁö ¾Ê´Â ºÎºÐµéÀ» Çϵåµð½ºÅ©ÀÇ ½º¿Ò ÆÄƼ¼ÇÀ¸·Î º¹»çÇÔÀ¸·Î½á ¸Þ¸ð¸®¸¦ ´õ Àß ¾µ ¼ö ÀÖ´Ù´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. ÀÌ µ¥ÀÌÅ͸¦ ÀǵµÇÑ ´ë·Î ¸Þ¸ð¸® ¾ÈÆÆÀ¸·Î ¿òÁ÷ÀÌ´Â °ÍÀº
kpiod¿Í kswapd¿¡ ÀÇÇØ ÀÌ·ç¾îÁý´Ï´Ù. ¸î ÃÊ Á¤µµÀÇ °£°ÝÀ» µÎ°í, kswapd°¡ ÀϾ¼ ¸Þ¸ð¸® »óȲÀ» È®ÀÎÇÑ µÚ, µð½ºÅ©¿¡ ÀÖ´Â °ÍÀÌ ¸Þ¸ð¸®¿¡ ÇÊ¿äÇϰųª, ÃæºÐÇÑ ¸Þ¸ð¸®°¡ ¾ø¾î¼ µð½ºÅ©·Î ¿Å°Ü¾ß ÇÒ ¶§ kpiod¸¦ ºÎ¸¨´Ï´Ù.
¿©·¯ºÐÀÌ ÀÚµ¿ Àü¿ø °ü¸®(automatic power management)¸¦ Ä¿³Î¿¡ Æ÷ÇÔÇϵµ·Ï ¼³Á¤Çß´Ù¸é
kapmd µ¥¸óÀÌ ¿©·¯ºÐÀÇ ½Ã½ºÅÛ¿¡ ÀÖÀ» °ÍÀÔ´Ï´Ù.
8.1. ¼³Á¤ ¶updateÇÁ·Î±×·¥Àº ¿©·¯ºÐÀÌ kflushd¿Í kswapd¸¦ ¼³Á¤Çϵµ·Ï ÇÕ´Ï´Ù. Á¤º¸¸¦ º¸½Ã·Á¸é update -h ¸¦ ÇØ º¸½Ê½Ã¿À.
½º¿Ò °ø°£Àº
swapon¿¡ ÀÇÇØ ÄÑÁö°í swapoff¿¡ ÀÇÇØ ²¨Áý´Ï´Ù. init ½ºÅ©¸³Æ®(/etc/rc.sysinit³ª /etc/rc.d/rc.sysinit)´Â ½Ã½ºÅÛÀÌ ½ÃÀÛµÉ ¶§ ´ë°³ swaponÀ» ºÎ¸¨´Ï´Ù. Àú´Â swapoff°¡ ³ëÆ®ºÏ¿¡¼ Àü·ÂÀ» Àý¾àÇÏ´Â °£´ÜÇÑ ¹æ¹ýÀ̶ó°í µé¾ú½À´Ï´Ù.
8.2. ¿¬½À ¹®Á¦ ¶update -d ÇØ º¸½Ã°í, "¹öÆÛ ³»ºÐ¿¡ ´ëÇÑ ¹®Åΰª(threshold for buffer fratricide)"¿¡ °üÇÑ ¸¶Áö¸· ÁÙÀ» º¸½Ê½Ã¿À. Àç¹ÌÀÖ´Â °³³äÀÌ´Ï Á¶»çÇØ º¸½Ê½Ã¿À!
/proc/sys/vm·Î µð·ºÅ丮¸¦ ¿Å°Ü¼ ±×°÷ÀÇ ÆÄÀϵéÀ» cat ÇØ º¸½Ê½Ã¿À. ¿©·¯ºÐÀÌ ¹«¾ùÀ» ÇÒ ¼ö ÀÖ´ÂÁö º¸½Ê½Ã¿À.
8.3. Ãß°¡ Á¤º¸ ¶¸®´ª½º ¹®¼È ÇÁ·ÎÁ§Æ®(The Linux Documentation Project)ÀÇ "¸®´ª½º Ä¿³Î(The Linux Kernel)" (The Linux Kernel¿¡¼ URLÀ» º¸½Ê½Ã¿À.)
¿©·¯ºÐÀÌ ÃæºÐÈ÷ ¿ë°¨ÇÏ´Ù¸é, ¸®´ª½º Ä¿³Î ¼Ò½º Äڵ带 º¸½Ê½Ã¿À!
kswapd ÄÚµå´Â linux/mm/vmscan.c¿¡, kflushd¿Í kupdate´Â linux/fs/buffer.c¿¡ ÀÖ½À´Ï´Ù.
9. ½Ã½ºÅÛ ·Î°Å(System Logger) ¶InitÀº
syslogd¿Í klogd µ¥¸óµéÀ» ½ÃÀÛÇÕ´Ï´Ù. À̵éÀº ¸Þ½ÃÁöµéÀ» ·Î±×¿¡ ±â·ÏÇÕ´Ï´Ù. Ä¿³ÎÀÇ ¸Þ½ÃÁöµéÀº klogdÀÌ °ü¸®Çϸç, syslogd´Â ´Ù¸¥ ÇÁ·Î¼¼½ºµéÀÇ ·Î±× ¸Þ½ÃÁöµéÀ» °ü¸®ÇÕ´Ï´Ù. Á᫐ ·Î±×´Â /var/log/messagesÀÔ´Ï´Ù. ¿©·¯ºÐÀÇ ½Ã½ºÅÛÀÌ ÀÌ»óÇØÁ³´Ù¸é ¿©±â¼ºÎÅÍ ½ÃÀÛÇÏ´Â °ÍÀÌ ÁÁÀ» °ÍÀÔ´Ï´Ù.
9.1. ¼³Á¤ ¶/etc/syslog.conf´Â ·Î°Å¿¡°Ô ¹«½¼ ¸Þ½ÃÁö¸¦ ¾îµð¿¡ ¾µÁö¸¦ ¾Ë·ÁÁÝ´Ï´Ù. ¸Þ½ÃÁöµéÀº ±×µéÀÌ ¾î´À ¼ºñ½º¿¡¼ ¿Ô´ÂÁö, ±×µéÀÇ Á߿䵵(priority)°¡ ¾î´À Á¤µµÀÎÁö¿¡ µû¶ó ±¸º°µË´Ï´Ù. ¼³Á¤ ÆÄÀÏÀº ¼ºñ½º xÀÇ Á߿䵵 yÀÎ ¸Þ½ÃÁö´Â z·Î °¡¾ß ÇÑ´Ù´Â °ÍÀ» ³ªÅ¸³»´Â ÁÙµé·Î ÀÌ·ç¾îÁ® ÀÖ½À´Ï´Ù. ¿©±â¼ z´Â ÆÄÀÏÀ̰ųª ttyÀ̰ųª, ÇÁ¸°ÅÍÀ̰ųª, ¸®¸ðÆ® È£½ºÆ®°Å³ª, ¹«¾ùÀÌµç µÉ ¼ö ÀÖ½À´Ï´Ù.
ÁÖÀÇ: Syslog´Â
/etc/services ÆÄÀÏÀÌ Àֱ⸦ ¿ä±¸ÇÕ´Ï´Ù. ÀÌ services ÆÄÀÏÀº Æ÷Æ®µéÀ» ÇÒ´çÇÕ´Ï´Ù. Àú´Â ¾ÆÁ÷ syslog°¡ ¸®¸ðÆ® ·Î±ë(remote logging)À» ÇÒ ¶§¸¸ Æ÷Æ®¸¦ ÇÒ´çÇϱ⸦ ¹Ù¶ó´ÂÁö, ¾Æ´Ï¸é ´ÜÁö ¿©·¯ºÐÀÌ /etc/syslog.conf¿¡ ÀÔ·ÂÇÑ ¼ºñ½º À̸§µéÀ» Æ÷Æ® ¹øÈ£·Î ¹Ù²Ù±â À§Çؼ /etc/servicesÀ» ÀÌ¿ëÇÏ´ÂÁö Àß ¸ð¸¨´Ï´Ù.
9.2. ¿¬½À ¹®Á¦ ¶¿©·¯ºÐÀÇ ½Ã½ºÅÛ ·Î±×¸¦ º¸½Ê½Ã¿À. ¿©·¯ºÐÀÌ ÀÌÇØÇÏÁö ¸øÇÑ ¸Þ½ÃÁö¸¦ ã°í, ¹«½¼ Àǹ̸¦ °¡Á³´ÂÁö ¾Ë¾Æ³» º¸½Ê½Ã¿À.
¿©·¯ºÐÀÇ ¸ðµç ·Î±× ¸Þ½ÃÁöµéÀ» tty·Î º¸³» º¸½Ê½Ã¿À. (ÇØ º¸½Å µÚ¿¡´Â ½Ã½ºÅÛÀ» Á¤»óÀ¸·Î µ¹·Á ³õÀ¸½Ê½Ã¿À.)
10. Getty¿Í Login ¶Getty´Â ¿©·¯ºÐÀÌ °¡»ó Å͹̳ÎÀ̳ª ÅØ½ºÆ® Å͹̳Π¶Ç´Â ¸ðµ©°ú °°Àº Á÷·Ä ÀåÄ¡(serial device)¸¦ ÅëÇØ¼ ·Î±×ÀÎ ÇÒ ¼ö ÀÖµµ·Ï µµ¿ÍÁÝ´Ï´Ù. À̰ÍÀº ·Î±×ÀÎ ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÕ´Ï´Ù. ¿©·¯ºÐÀÌ »ç¿ëÀÚ À̸§À» ÀÔ·ÂÇϸé, getty´Â
login¿¡°Ô ³Ñ±é´Ï´Ù. loginÀº ¿©·¯ºÐ¿¡°Ô ºñ¹Ð¹øÈ£¸¦ ¹°¾îº¸°í È®ÀÎÇÑ µÚ ¼ÐÀ» ÁÝ´Ï´Ù.
¸¹Àº gettyµéÀÌ »ç¿ë °¡´ÉÇÕ´Ï´Ù. ·¡µåÇÞÀ» ºñ·ÔÇÑ ¸î¸î ¹èÆ÷ÆÇµéÀº °¡»ó Å͹̳ηθ¸ µ¿ÀÛÇÏ´Â ¾ÆÁÖ ÀÛÀº gettyÀÎ
mingetty¸¦ »ç¿ëÇÕ´Ï´Ù.
login ÇÁ·Î±×·¥Àº util-linux ²Ù·¯¹ÌÀÇ ÀϺκÐÀÔ´Ï´Ù. ÀÌ ²Ù·¯¹Ì´Â ¶Ç ´Ù¸¥ Àß µ¿ÀÛÇÏ´Â gettyÀÎ agetty¸¦ Æ÷ÇÔÇϰí ÀÖ½À´Ï´Ù. ÀÌ ²Ù·¯¹Ì´Â mkswap, fdisk, passwd, kill, setterm, mount, swapon, rdev, renice, more (ÇÁ·Î±×·¥)¿Í ´õ ¸¹Àº ÇÁ·Î±×·¥ (more)À» Æ÷ÇÔÇϰí ÀÖ½À´Ï´Ù.
10.1. ¼³Á¤ ¶·Î±×ÀÎ ÇÁ·ÒÇÁÆ®¿Í ÇÔ²² ȸé À§¿¡ ³ªÅ¸³ª´Â ¸Þ½ÃÁöµéÀº
/etc/issue¿¡ ÀÖ½À´Ï´Ù. GettysµéÀº /etc/inittab¿¡¼ ½ÃÀ۵˴ϴÙ. LoginÀº »ç¿ëÀÚÀÇ »ó¼¼ÇÑ Á¤º¸¸¦ /etc/passwd¿¡¼ ã°í, ¿©·¯ºÐÀÌ ÆÐ½º¿öµå ¼ÎµµÀ×(password shadowing)À» ÇÑ´Ù¸é, /etc/shadow¿¡¼ ã½À´Ï´Ù.
10.2. ¿¬½À ¹®Á¦ ¶/etc/passwd¸¦ Á÷Á¢ ¸¸µå½Ê½Ã¿À. ÆÐ½º¿öµå´Â ¾øÀ» ¼öµµ ÀÖ°í, ÀÏ´Ü ¿©·¯ºÐÀÌ ·Î±×ÀÎ Çϸé passwd ÇÁ·Î±×·¥À¸·Î ¹Ù²Ü ¼öµµ ÀÖ½À´Ï´Ù. man 5 passwd¸¦ »ç¿ëÇÏ¿© ÇÁ·Î±×·¥¿¡ ´ëÇÑ µµ¿ò¸» ´ë½Å ÀÌ ÆÄÀÏ¿¡ ´ëÇÑ µµ¿ò¸»À» º¸½Ê½Ã¿À.
11. ¹è½Ã (Bash) ¶¿©·¯ºÐÀÌ
login¿¡ ¸Â´Â »ç¿ëÀÚ À̸§°ú ÆÐ½º¿öµåÀÇ Á¶ÇÕÀ» ÀÔ·ÂÇß´Ù¸é, loginÀº ¾î¶°ÇÑ ¼ÐÀ» ¿©·¯ºÐ¿¡°Ô ÁÙÁö /etc/passwd¿¡¼ ãÀ» °ÍÀÔ´Ï´Ù. ´ëºÎºÐÀÇ ¸®´ª½º ½Ã½ºÅÛ¿¡¼´Â bash¸¦ ÁÙ °ÍÀÔ´Ï´Ù. bash´Â ¿©·¯ºÐÀÇ ¸í·ÉµéÀ» ÀÐ°í ¹«½¼ÀÏÀ» ÇÏ·Á°í ÇÏ´ÂÁö ¾Ë¾Æ³À´Ï´Ù. µ¿½Ã¿¡ À̰ÍÀº »ç¿ëÀÚ ÀÎÅÍÆäÀ̽ºÀ̸ç, ÇÁ·Î±×·¡¹Ö ¾ð¾î ÀÎÅÍÇÁ¸°ÅÍÀÔ´Ï´Ù.
»ç¿ëÀÚ ÀÎÅÍÆäÀ̽º·Î¼ ¹è½Ã´Â ¿©·¯ºÐÀÇ ¸í·ÉµéÀ» Àоî¼
cd¿Í °°Àº "³»ºÎ" ¸í·É¾îµéÀº ½º½º·Î ½ÇÇàÇϰí, cp³ª startx¿Í °°Àº "¿ÜºÎ" ¸í·É¾îµéÀº ÇÁ·Î±×·¥À» ã¾Æ¼ ½ÇÇàÇÕ´Ï´Ù. »ç¿ëµÈ ¸í·É¾îµéÀÇ ¸ñ·ÏÀ» À¯ÁöÇϸç, ÆÄÀÏ ³×ÀÓÀ» ÀÚµ¿À¸·Î ¿Ï¼ºÇÏ´Â °Í°ú °°Àº ¸ÅȤÀûÀÎ Àϵ鵵 ÇÕ´Ï´Ù.
¿ì¸®´Â
bashÀÇ ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î¼ÀÇ ±â´ÉÀ» ÀÌ¹Ì º¸¾Ò½À´Ï´Ù. init°¡ ½Ã½ºÅÛÀ» ½ÃÀÛÇϱâ À§ÇØ ½ÇÇàÇÏ´Â ½ºÅ©¸³Æ®µéÀº ´ë°³ ¼Ð ½ºÅ©¸³Æ® µéÀ̸ç bash¿¡ ÀÇÇØ ½ÇÇàµË´Ï´Ù. ¿©·¯ºÐÀÌ ¹«¾ùÀ» ÇϰíÀÚ ÇÏ´ÂÁö ¾È´Ù¸é, ÀûÀýÇÑ ÇÁ·Î±×·¡¹Ö ¾ð¾î¿Í Ä¿¸Çµå ¶óÀÎ(command line)¿¡¼ ¾µ ¼ö ÀÖ´Â ÀÏ»óÀûÀÎ ½Ã½ºÅÛ À¯Æ¿¸®Æ¼µéÀº °·ÂÇÑ Á¶ÇÕÀ» ¸¸µì´Ï´Ù. Àú´Â ¾î´À ³¯ ¹«´õ±âÀÇ "ÆÐÄ¡µé(patches)"À» ¼Ò½º ÄÚµåÀÇ µð·ºÅ丮¿¡ Àû¿ëÇÒ Çʿ䰡 ÀÖ¾ú½À´Ï´Ù. Àú´Â ¾Æ·¡¿Í °°Àº ÇÑ ÁÙÀÇ ¸í·ÉÀ¸·Î À̰ÍÀ» ÇÒ ¼ö ÀÖ¾ú½À´Ï´Ù.
for f in /home/greg/sh-utils-1.16*.patch; do patch -p0 < $f; done; À̰ÍÀº ÀúÀÇ È¨ µð·ºÅ丮ÀÇ
sh-utils-1.16·Î ½ÃÀÛÇϰí .patch·Î ³¡³ª´Â ¸ðµç ÆÄÀϵéÀ» ã¾Æº¾´Ï´Ù. ±×µéÀ» Çϳª¾¿ Â÷·Ê´ë·Î °¡Á®¿Í¼, º¯¼ö f¸¦ ¼³Á¤Çϰí do¿Í done»çÀÌÀÇ ¸í·ÉÀ» ¼öÇàÇÕ´Ï´Ù. ÀÌ °æ¿ì¿¡ Àú´Â 11°³ÀÇ ÆÐÄ¡ ÆÄÀϵéÀÌ ÀÖ¾úÁö¸¸, 3000°³¿´´õ¶óµµ ¶È°°ÀÌ ½±°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù.
11.1. ¼³Á¤ ¶/etc/profileÀº ½Ã½ºÅÛ Àüü¿¡¼ ¹è½Ã°¡ ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö Á¶Á¤ÇÕ´Ï´Ù. ¿©·¯ºÐÀÌ ¿©±â¿¡ Áý¾î³Ö´Â °ÍÀº ¿©·¯ºÐÀÇ ½Ã½ºÅÛ¿¡¼ ¹è½Ã¸¦ ¾²´Â »ç¶÷ ¸ðµÎ¿¡°Ô ¿µÇâÀ» ¹ÌÄ¥ °ÍÀÔ´Ï´Ù. À̰ÍÀº PATH¿¡ µð·ºÅ丮¸¦ Ãß°¡Çϰí MAIL µð·ºÅ丮 º¯¼ö¸¦ ¼³Á¤ÇÏ´Â °Í°ú °°Àº ÀÏÀ» ÇÒ °ÍÀÔ´Ï´Ù.
Űº¸µåÀÇ ±âº»ÀûÀÎ µ¿ÀÛÀº »ç¶÷µéÀÌ ÀϹÝÀûÀ¸·Î ¹Ù¶ó´Â °Í°ú °Å¸®°¡ ¸Ù´Ï´Ù. À̰ÍÀ» ¿ì¸®°¡ ¹Ù¶ó´Â ´ë·Î ½ÇÁ¦·Î °ü¸®ÇÏ´Â °ÍÀº readlineÀÔ´Ï´Ù. ReadlineÀº Ä¿¸Çµå ¶óÀÎ ÀÎÅÍÆäÀ̽º(command line interfaces)¸¦ °ü¸®Çϰí, »ç¿ëÇÑ ¸í·É¾îµéÀ» Á¦°øÇÏ°í ÆÄÀÏ À̸§À» ÀÚµ¿À¸·Î ¿Ï¼ºÇϸç, °í±Þ Çà ´ÜÀ§ ÆíÁý(advanced line editing)À» ÇÒ ¼ö ÀÖ°Ô ÇÏ´Â µ¶¸³µÈ ²Ù·¯¹ÌÀÔ´Ï´Ù. À̰ÍÀº ¹è½Ã ¾ÈÀ¸·Î ÄÄÆÄÀϵ˴ϴÙ. ReadlineÀº ±âº»À¸·Î ¿©·¯ºÐÀÇ È¨ µð·ºÅ丮¿¡ ÀÖ´Â
.inputrcÀ» »ç¿ëÇϵµ·Ï ¼³Á¤µÇ¾ú½À´Ï´Ù. ¹è½Ã º¯¼ö INPUTRC¸¦ ½á¼ À̰ÍÀ» ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ·¡µåÇÞ 6¿¡¼´Â, INPUTRC´Â /etc/profile¿¡¼ /etc/inputrc·Î ¼³Á¤µÇ¾î ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇØ¼ ¸ðµÎ°¡ ¹é½ºÆäÀ̽º, µô¸®Æ®, Ȩ, ¿£µå ۸¦ Àß ¾µ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù.
¹è½Ã°¡ ½Ã½ºÅÛ Àüü¿¡ ¿µÇâÀ» ¹ÌÄ¡´Â ¼³Á¤ ÆÄÀϵéÀ» ÀÐÀº µÚ¿¡´Â °³ÀÎÀûÀÎ ¼³Á¤ ÆÄÀϵéÀ» ÀнÀ´Ï´Ù. ¿©·¯ºÐÀÇ È¨ µð·ºÅ丮¿¡
.bash_profile, .bash_login°ú .profileÀÌ ÀÖ´ÂÁö È®ÀÎÇÕ´Ï´Ù. À̵é Áß¿¡ °¡Àå ¸ÕÀú ãÀº °ÍÀ» ½ÇÇàÇÕ´Ï´Ù. ¿©·¯ºÐÀÌ ´Ù¸¥ »ç¶÷µé¿¡°Ô´Â ¿µÇâÀÌ ¾øÀÌ ¿©·¯ºÐÀ» À§Çؼ ¹è½Ã°¡ µ¿ÀÛÇÏ´Â ¹æ½ÄÀ» ¹Ù²Ù°íÀÚ ÇÑ´Ù¸é, ÀÌ ÆÄÀϵéÀ» °íÄ¡½Ê½Ã¿À. ¿¹¸¦ µé¾î¼, ¸¹Àº ¾îÇø®ÄÉÀ̼ǵéÀº ±×µéÀÌ ¾î¶»°Ô µ¿ÀÛÇÒÁö Á¶ÀýÇϴ ȯ°æ º¯¼öµéÀ» »ç¿ëÇÕ´Ï´Ù. Àú´Â EDITOR º¯¼ö¸¦ vi·Î ¼³Á¤ÇÏ¿© Á¦°¡ ¹Ìµå³ªÀÕ Ä¿¸à´õ(Midnight Commander, ¾ÆÁÖ ÁÁÀº Äֿܼ¡ ±â¹ÝÇÑ ÆÄÀÏ °ü¸®ÀÚ) ¿¡¼ vi¸¦ ¾µ ¼ö ÀÖµµ·Ï ÇÏ¿´½À´Ï´Ù.
11.2. ¿¬½À ¹®Á¦ ¶¹è½ÃÀÇ ±âº»Àº ¹è¿ì±â ½±½À´Ï´Ù. ÇÏÁö¸¸ °Å±â¼ ¸ØÃßÁö ¸¶½Ê½Ã¿À. ¹è½Ã´Â ¹Ï±â ¾î·Á¿ï ¸¸Å ±í½À´Ï´Ù. ¹«¾ð°¡¸¦ ÇÒ ¶§ ´õ ³ªÀº ¹æ¹ýÀ» ã´Â ¹ö¸©À» µéÀ̽ʽÿÀ.
¼Ð ½ºÅ©¸³Æ®µéÀ» Àаí, ¿©·¯ºÐÀÌ ÀÌÇØÇÏÁö ¸øÇÑ ºÎºÐ¿¡ ´ëÇØ¼ ã¾Æ º¸½Ê½Ã¿À.
11.3. Ãß°¡ Á¤º¸ ¶
12. ¸í·É¾îµé ¶¿©·¯ºÐÀº ¹è½Ã¿¡¼
cp¿Í °°Àº ¸í·É¾î¸¦ ÀÔ·ÂÇØ¼ ´ëºÎºÐÀÇ ÀÏÀ» ÇÏ°Ô µÉ °ÍÀÔ´Ï´Ù. cd¿Í °°ÀÌ ¸î¸î ¸í·É¾î´Â ¼Ð¿¡ ºÙ¾î ÀÖÁö¸¸, ´ëºÎºÐÀÇ ¸í·ÉµéÀº ÀÛÀº ÇÁ·Î±×·¥ÀÔ´Ï´Ù.
¸í·ÉµéÀº ²Ù·¯¹Ì¿¡ Æ÷ÇԵǾî ÀÖÀ¸¸ç, ±×µéÀÇ ´ëºÎºÐÀº ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î Àç´Ü (¶Ç´Â ±×´©)¿¡¼ °³¹ßµÈ °ÍÀÔ´Ï´Ù. À̵éÀ» ¿°ÅÇÏ´Â ´ë½Å, Àú´Â ¿©·¯ºÐ¿¡°Ô
Linux From Scratch HOWTO¿¡ °¡ º¸±â¸¦ ±ÇÇÕ´Ï´Ù. ¸®´ª½º¿¡ µé¾î°¥ ¼ö ÀÖ´Â ÆÐŰÁöµéÀÇ ¿ÏÀüÇÑ ÃֽЏñ·ÏÀÌ ÀÖÀ¸¸ç, ±×µéÀ» ¼³Ä¡ÇÏ´Â ¹æ¹ýµµ ÀÖ½À´Ï´Ù.
13. °á·Ð ¶Á¦ ºÎÁ·ÇÑ ÀǰßÀ¸·Î´Â, ¸®´ª½ºÀÇ °¡Àå ÁÁÀº Á¡ ÁßÀÇ Çϳª´Â ¿©·¯ºÐÀÌ ¾ÈÀ¸·Î µé¾î¿Í ¸ðµç °ÍµéÀÌ ¾î¶»°Ô ¿òÁ÷ÀÌ´ÂÁö ÁøÁ¤À¸·Î ¾Ë ¼ö ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. Àú´Â ¿©·¯ºÐÀÌ ÀÌ ÀÏÀ» Àú¸¸Å Áñ±â¼ÌÀ¸¸é ÇÕ´Ï´Ù. ¶ÇÇÑ ÀÌ ÂªÀº ±â·ÏÀÌ ¿©·¯ºÐ²²¼ ±×°ÍÀ» ÇϽô µ¥ µµ¿òÀÌ µÇ¾ú±â¸¦ ¹Ù¶ø´Ï´Ù.
14.1. ÀúÀÛ±Ç ¶This document is copyright (c) 1999, 2000 Greg O'Keefe. You are welcome to use, copy, distribute or modify it, without charge, under the terms of the
GNU General Public Licence. Please acknowledge me if you use all or part of this in another document.
14.2. ȨÆäÀÌÁö ¶ÀÌ ¹®¼ÀÇ ÃֽůÇÀº
From Powerup To Bash Prompt¿¡ "Building a Minimal Linux System from Source Code"ÀÇ º¸Á¶ ¹®¼·Î¼ ÀÖ½À´Ï´Ù.
From Powerup To Bash Prompt¿¡ ºÒ¾î ¹ø¿ªÆÇÀÌ ÀÖ½À´Ï´Ù. Dominique van den Broeck ´Ô²² °¨»çµå¸³´Ï´Ù. Yuji Senda ´Ô²²¼ ÀÛ¾÷ÇϽŠÀϺ»¾îÆÇÀº Japanese Documentation and FAQ Project¿¡ ÀÖÀ» ¿¹Á¤À̸ç, ÀÌ¹Ì ÀÖÀ» ¼öµµ ÀÖ½À´Ï´Ù. (¿ªÁÖ - ÀϺ»¾î ¹ø¿ªµµ ¿Ï·áµÇ¾ú½À´Ï´Ù.)
14.3. Çǵå¹é ¶Àú´Â ¿©·¯ºÐÀÇ ¾î¶°ÇÑ Á¶¾ðÀ̳ª ºñÆò, °³¼±À» À§ÇÑ Á¦¾Èµµ µè°í ½Í½À´Ï´Ù. ±×°ÍµéÀ» Àú,
Greg O'Keefe¿¡°Ô º¸³»½Ê½Ã¿À.
14.4. °¨»ç ¶Á¦Ç° À̸§µéÀº °¢°¢ÀÇ ¼ÒÀ¯ÀÚÀÇ »óÇ¥À̸ç, ¿©±â¿¡¼ °¨»ç¸¦ µå¸³´Ï´Ù.
ÀÌ ¹®¼¸¦ ¾µ ¼ö ÀÖµµ·Ï µµ¿ÍÁֽе¥ ´ëÇØ ¾Æ·¡ÀÇ ºÐµé²² °¨»ç¸¦ µå¸®°í ½Í½À´Ï´Ù.
Michael Emery
Unios¸¦ ¾Ë·Á Áּ̽À´Ï´Ù.
Tim Little
/etc/passwd¿¡ ´ëÇØ µµ¿òÀ» Áּ̽À´Ï´Ù.
syslogd´Â
Alex Aitkin
/etc/services¸¦ ÇÊ¿ä·Î ÇÑ´Ù´Â °ÍÀ» ¾Ë·ÁÁּ̰í, ½Ã½ºÅÛÀ» ¼Ò½º ÄÚµå·Î ¼³Ä¡ÇÏ´Â °ÍÀ» ¹¦»çÇϱâ À§ÇÑ "¿©·¯ºÐÀÇ °ÍÀ» µ¹¸°´Ù(rolling your own)"´Â Ç¥ÇöÀ» ¼Ò°³ÇØ Áּ̽À´Ï´Ù.
Àú¿¡°Ô Vico¿Í ±×ÀÇ "verum ipsum factum"(understanding arises through making, ÀÌÇØ´Â ¸¸µê¿¡¼ ±â¿øÇÑ´Ù)À» Àú¿¡°Ô ¼Ò°³ÇØ Áּ̽À´Ï´Ù.
Dennis Scott
ÀúÀÇ 16Áø¼ö °è»êÀ» °íÃÄ Áּ̽À´Ï´Ù.
jdd
¿ÀÀÚµéÀ» ÁöÀûÇØ Áּ̽À´Ï´Ù.
David Leadbeater
Ä¿³Î µ¥¸ó¿¡ °üÇÑ "º¹ÀâÇÑ(ramblings)"³»¿ëµéÀ» Á¦°øÇØ Áּ̽À´Ï´Ù.
Dominique van den Broeck
ÀÌ ¹®¼¸¦ ºÒ¾î·Î ¹ø¿ªÇØ Áּ̽À´Ï´Ù.
Matthieu Peeters
Ä¿³Î µ¥¸ó¿¡ °üÇÑ ÁÁÀº Á¤º¸¸¦ Áּ̽À´Ï´Ù.
John Fremlin
Ä¿³Î µ¥¸ó¿¡ °üÇÑ ÁÁÀº Á¤º¸¸¦ Áּ̽À´Ï´Ù.
Yuji Senda
ÀÌ ¹®¼¸¦ ÀϾî·Î ¹ø¿ªÇØ Áּ̽À´Ï´Ù.
Antonius de Rozari
UNIOSÀÇ GNU ¾î¼Àºí·¯ ÆÇÀ¸·Î ±â¿©ÇØ Áּ̽À´Ï´Ù. (Ȩ ÆäÀÌÁöÀÇ ¸®¼Ò½º(resources) Àý(section)À» º¸½Ê½Ã¿À.)
Botp Peña
"¿©·¯ºÐ¸¸ÀÇ OS µ¹¸®±â(roll your own os)" ¸µÅ©¸¦ ¿î¿µÇϽʴϴÙ.
Kees J. Bot
¹Ì´Ð½º ¸Ç ÆäÀÌÁöÀÇ ÀúÀڽʴϴÙ. ƯÈ÷, "boot - from power on to the login prompt"¶ó´Â ºÎÁ¦°¡ ºÙÀº
Scott Hankin
boot ¸Ç ÆäÀÌÁö¸¦ ¾²¼Ì½À´Ï´Ù. Àú´Â ÀÌ ¹®¼¸¦ LDP¿¡ Á¦ÃâÇÑ ´ÙÀ½¿¡¼¾ß ÀÌ ÀÛÀº º¸¼®À» ã¾Æ³Â½À´Ï´Ù.
¿ÀÀÚ¸¦ ¾Ë·Á Áּ̽À´Ï´Ù.
14.5.2. 0.8 -> 0.9 (2000³â 11¿ù) ¶
14.5.3. 0.7 -> 0.8 (2000³â 9¿ù) ¶
14.5.4. 0.6 -> 0.7 ¶
14.6. ÇÒ ÀÏ ¶
|
If it pours before seven, it has rained by eleven. |











![[http]](/imgs/http.png)
![[ftp]](/imgs/ftp.png)
