#title How To Build a Minimal Linux System from Source Code Greg O'Keefe, gcokeefe@postoffice.utas.edu.au v0.9, November 2000 ---- ȲÁØÇü, envia@kaist.ac.kr ¹ø¿ªÀ» ÇÏ´Â Áß°£¿¡ ô¶Ó©ë®ÞÉ´ÔÀÇ ÀϺ»¾î ¹ø¿ªÆÇÀ» Âü°íÇÏ¿´½À´Ï´Ù. ¿À·ù°¡ ÀÖ´Ù¸é Àú¿¡°Ô ¿¬¶ôÇϽðųª À§Å°ÀÇ Æ¯Â¡À» ÀÌ¿ëÇÏ¿© [¸»¾øÀÌ°íÄ¡±â]¸¦ ÀÌ¿ëÇØ Áֽñ⠹ٶø´Ï´Ù. ---- ÀÌ ¹®¼­´Â ¼Ò½º ÄÚµå·ÎºÎÅÍ ÃÖ¼ÒÇÑÀÇ ¸®´ª½º ½Ã½ºÅÛÀ» ¸¸µé±â À§ÇÑ Áö½Ã »çÇ×µéÀ» ´ã°í ÀÖ½À´Ï´Ù. ÀÌ ¹®¼­´Â [http://www.linuxdoc.org/HOWTO/From-PowerUp-To-Bash-Prompt-HOWTO.html From PowerUp to Bash Prompt]ÀÇ ÀϺκÐÀ̾úÁö¸¸, Àú´Â ¹®¼­µéÀÌ Âª°í ÁýÁßµÈ »óŸ¦ À¯ÁöÇϵµ·Ï Çϱâ À§ÇØ, ¿ø·¡ÀÇ ¹®¼­¸¦ ºÐ¸®ÇÏ¿´½À´Ï´Ù. ¿ì¸®°¡ ¿©±â¼­ ¸¸µå´Â ½Ã½ºÅÛÀº ''¸Å¿ì'' ÀÛÀ¸¸ç, ½ÇÁ¦·Î ÀÛ¾÷À» Çϱ⿡ ÀûÇÕÇÏÁö ¾Ê½À´Ï´Ù. ¸¸¾à ¿©·¯ºÐÀÌ ½Ç¿ëÀûÀÎ ½Ã½ºÅÛÀ» ¿ÏÀüÈ÷ »õ·Î ¸¸µé°í ½ÍÀ¸½Ã´Ù¸é Gerard BeekmansÀÇ[http://www.linuxfromscratch.org Linux From Scratch HOWTO]¸¦ ´ë½Å º¸½Ê½Ã¿À. [[TableOfContents]] = Áغñ¹° = ¿ì¸®´Â ·¡µåÇÞ°ú °°Àº ¹èÆ÷ÆÇÀ» ÇÑ ÆÄƼ¼Ç¿¡ ¼³Ä¡ÇÏ°í, À̸¦ ÀÌ¿ëÇؼ­ ´Ù¸¥ ÆÄƼ¼Ç¿¡ »õ·Î¿î ¸®´ª½º ½Ã½ºÅÛÀ» ¸¸µé °ÍÀÔ´Ï´Ù. ³ª´Â ¿ì¸®°¡ ¸¸µå´Â ½Ã½ºÅÛÀ» "´ë»ó(target)"À̶ó°í ºÎ¸£°í, ±×°ÍÀ» ¸¸µé±â À§ÇØ »ç¿ëÇÏ´Â ½Ã½ºÅÛÀ» "¹ÙÅÁ(source)"À̶ó°í ºÎ¸¦ °ÍÀÌ´Ù. µû¶ó¼­ ¿©·¯ºÐÀº µÎ °³ÀÇ ¿©À¯ ÆÄƼ¼ÇÀ» °¡Áø ±â°è°¡ ÇÊ¿äÇÒ °ÍÀÔ´Ï´Ù. °¡´ÉÇÏ´Ù¸é Áß¿äÇÑ Á¤º¸°¡ ÀúÀåµÇÁö ¾ÊÀº ±â°è¸¦ »ç¿ëÇϽʽÿÀ. ¿©·¯ºÐÀº ÀÌ¹Ì ¼³Ä¡µÇ¾î ÀÖ´Â ¸®´ª½º¸¦ ¹ÙÅÁ ½Ã½ºÅÛÀ¸·Î ¾µ ¼ö ÀÖ°ÚÁö¸¸, Àú´Â ±×°ÍÀ» ±ÇÀåÇÏÁö ¾Ê½À´Ï´Ù. ½Ç¼ö·Î ¿©·¯ºÐÀÌ ¿ì¸®°¡ ´Ù·ç´Â ¸í·É¾îÀÇ ÀÎÀÚ Çϳª¸¦ À߸ø ³²±ä´Ù¸é, ÇÁ·Î±×·¥µéÀ» ¹ÙÅÁ ½Ã½ºÅÛ¿¡ ¼³Ä¡ÇÏ°Ô µÉ ¼öµµ ÀÖ½À´Ï´Ù. ±×·¯¸é ȣȯµÇÁö ¾Ê°Å³ª Ãæµ¹ÀÌ ÀϾ°Ô µÉ °ÍÀÔ´Ï´Ù. 486À̳ª ±×ÀüÀÇ °Í°ú °°ÀÌ ¿À·¡µÈ PC Çϵå¿þ¾îÀÇ ¹ÙÀÌ¿À½º¿¡´Â ¿ì¸®¸¦ ±ÍÂú°Ô ÇÏ´Â ÇÑ°è°¡ ÀÖ½À´Ï´Ù. ±× ¹ÙÀÌ¿À½ºµéÀº ù 512¸Þ°¡¹ÙÀÌÆ® µÚÀÇ ÇÏµå µð½ºÅ©¸¦ Àб⠸øÇÕ´Ï´Ù. ÀÌ°ÍÀº ÀÏ´Ü ¸®´ª½º°¡ ½ÃÀÛµÇ¸é ¹ÙÀÌ¿À½º¸¦ °Ç³Ê¶Ù°í ÀڽŸ¸ÀÇ µð½ºÅ© ÀÔÃâ·ÂÀ» ¼öÇàÇϱ⠶§¹®¿¡ Å« ¹®Á¦°¡ µÇÁö´Â ¾Ê½À´Ï´Ù. ÇÏÁö¸¸ ¿À·¡µÈ ±â°è¿¡¼­ ¸®´ª½º¸¦ Àбâ À§Çؼ­´Â Ä¿³ÎÀÌ 512¸Þ°¡¹ÙÀÌÆ® ¾ÕÀÇ ¿µ¿ª¿¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù. ¸¸¾à ¿©·¯ºÐÀÌ ÀÌ¿Í °°Àº ±â°è¸¦ °¡Áö°í ÀÖ´Ù¸é, ¿©·¯ºÐÀº ¿ÏÀüÈ÷ 512¸Þ°¡¹ÙÀÌÆ® °æ°è ¾Æ·¡¿¡ ÀÖ´Â µ¶¸³µÈ ÆÄƼ¼ÇÀÌ ÇÊ¿äÇÒ °ÍÀÔ´Ï´Ù. ÀÌ ÆÄƼ¼ÇÀº `/boot`·Î ¸¶¿îÆ®µÇ¾î 512¸Þ°¡¹ÙÀÌÆ® °æ°è À§¿¡ ÀÖ´Â ÆÄƼ¼ÇµéÀ» ÀнÀ´Ï´Ù. Á¦°¡ ÃÖ±Ù¿¡ ÀÌ°ÍÀ» ÇßÀ» ¶§, Àú´Â ·¡µåÇÞ 6.1À» ¹ÙÅÁ ½Ã½ºÅÛÀ¸·Î »ç¿ëÇÏ¿´½À´Ï´Ù. Àú´Â º£À̽º ½Ã½ºÅÛ°ú * cpp * egcs * egcs-c++ * patch * make * dev86 * ncurses-devel * glibc-devel * kernel-headers À» ¼³Ä¡ÇÏ¿´½À´Ï´Ù. Àú´Â ¹®¼­µéÀ» ½±°Ô Àбâ À§Çؼ­ X À©µµ¿ì¿Í ¸ðÁú¶óµµ ¼³Ä¡ÇÏ¿´Áö¸¸, ÀÌ°ÍÀº ²À ÇÊ¿äÇÑ °ÍÀº ¾Æ´Õ´Ï´Ù. Á¦°¡ ÀÛ¾÷À» ¸¶ÃÆÀ» ¶§, µð½ºÅ© °ø°£À» 350M Á¤µµ »ç¿ëÇÏ¿´½À´Ï´Ù. (Ä¿ º¸À̴±º¿ä. ¿Ö ±×·²±î¿ä?) ¿Ï¼ºµÈ ´ë»ó ½Ã½ºÅÛÀº 650¸Þ°¡¹ÙÀÌÆ®¸¦ »ç¿ëÇÏ¿´Áö¸¸, ÀÌ°ÍÀº ¸ðµç ¼Ò½º ÄÚµåµé°ú Áß°£ °úÁ¤ÀÇ ÆÄÀϵéÀ» Æ÷ÇÔÇÑ Å©±âÀÔ´Ï´Ù. °ø°£ÀÌ ºÎÁ·ÇÏ´Ù¸é ¿©·¯ºÐÀº °¢ ²Ù·¯¹Ì¸¦ ¼³Ä¡ÇÑ µÚ `make clean`À» ½ÇÇàÇØ ÁÖ¾î¾ß ÇÒ °ÍÀÔ´Ï´Ù. ±×·¡µµ, ÀÌ ´çȲ½º·´°Ô ´Ã¾î³­ Å©±â´Â Á¶±Ý °ÆÁ¤µË´Ï´Ù. ¾î·µç, ¿©·¯ºÐÀº ¿ì¸®°¡ ¸¸µå·Á°í ÇÏ´Â ½Ã½ºÅÛÀ» À§ÇÑ ¼Ò½º ÄÚµåµéÀÌ ÇÊ¿äÇÒ °ÍÀÔ´Ï´Ù. Á¦°¡ ÀÌ ¹®¼­¿¡¼­ "²Ù·¯¹Ì"¶ó°í ºÎ¸¥ °ÍµéÀÔ´Ï´Ù. ²Ù·¯¹ÌµéÀº ¼Ò½º CD³ª ÀÎÅͳÝÀ¸·ÎºÎÅÍ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. Àú´Â ¹Ì±¹°ú È£ÁÖ ¹Ì·¯µéÀÇ URLÀ» Á¦½ÃÇϵµ·Ï ÇÏ°Ú½À´Ï´Ù. [[Anchor(downloads)]] * MAKEDEV [ftp://tsx-11.mit.edu/pub/linux/sources/sbin ¹Ì±¹ ¹Ì·¯] [ftp://sunsite.unc.edu/pub/Linux/system/admin ´Ù¸¥ ¹Ì±¹ ¹Ì·¯] * Lilo [ftp://brun.dyndns.org/pub/linux//lilo/ ¹Ì±¹ ¹Ì·¯] [ftp://mirror.aarnet.edu.au/pub/metalab/system/boot/lilo/ È£ÁÖ ¹Ì·¯] * Linux Kernel ¾ðÁ¦³ª ¹Ù»Û [ftp://ftp.kernel.org/pub/linux/kernel ¹Ì±¹ ¹Ì·¯]³ª [ftp://kernel.mirror.aarnet.edu.au/pub/linux/kernel/ È£ÁÖ ¹Ì·¯]¸¦ ¾²½Ã±â º¸´Ù´Â [http://www.kernel.org Ä¿³Î Ȩ ÆäÀÌÁö]¿¡ ³ª¿ÍÀÖ´Â ´Ù¸¥ ¹Ì·¯µé Áß¿¡¼­ Çϳª¸¦ »ç¿ëÇϼ¼¿ä. * GNU libc ¿Í linuxthreads addonÀº [ftp://ftp.gnu.org/pub/gnu/glibc ¹Ì±¹ ¹Ì·¯]³ª [ftp://mirror.aarnet.edu.au/pub/gnu/glibc È£ÁÖ ¹Ì·¯]¿¡¼­ ±¸Çϼ¼¿ä. * GNU libc addons ¿©·¯ºÐÀº linuxthreads¿Í libcrypt addonsµµ ÇÊ¿ä·Î ÇÒ °ÍÀÔ´Ï´Ù. ¸¸¾à libcrypt°¡ À§ÀÇ »çÀÌÆ®¿¡ ¾ø´Ù¸é ¾ÏÈ£¿Í °ü·ÃµÈ ±â¼úÀÇ ¼öÃâÀ» ±ÝÁöÇÏ´Â ¹Ì±¹ÀÇ ¹ý ¶§¹®ÀÏ °ÍÀÔ´Ï´Ù. ¿©·¯ºÐÀº ±×°ÍÀ» [ftp://ftp.gwdg.de/pub/linux/glibc libcrypt]¿¡¼­ ±¸ÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. linuxthreads addonÀº libc ÀÚ½ÅÀÌ ÀÖ´Â °÷°ú °°Àº °÷¿¡ ÀÖ½À´Ï´Ù. * GNU ncurses [ftp://ftp.gnu.org/gnu/ncurses ¹Ì±¹ ¹Ì·¯] [ftp://mirror.aarnet.edu.au/pub/gnu/ncurses È£ÁÖ ¹Ì·¯] * SysVinit [ftp://sunsite.unc.edu/pub/Linux/system/daemons/init ¹Ì±¹ ¹Ì·¯] [ftp://mirror.aarnet.edu.au/pub/linux/metalab/system/daemons/init È£ÁÖ ¹Ì·¯] * GNU Bash [ftp://ftp.gnu.org/gnu/bash ¹Ì±¹ ¹Ì·¯] [ftp://mirror.aarnet.edu.au/pub/gnu/bash È£ÁÖ ¹Ì·¯] * GNU sh-utils [ftp://ftp.gnu.org/gnu/sh-utils ¹Ì±¹ ¹Ì·¯] [ftp://mirror.aarnet.edu.au/pub/gnu/sh-utils È£ÁÖ ¹Ì·¯] * util-linux [ftp://ftp.win.tue.nl/pub/linux/utils/util-linux/ ´Ù¸¥ °÷ÀÇ ¹Ì·¯] [ftp://mirror.aarnet.edu.au/pub/linux/metalab/system/misc È£ÁÖ ¹Ì·¯] ÀÌ ²Ù·¯¹Ì´Â `agetty`¿Í `login`À» Æ÷ÇÔÇÕ´Ï´Ù. Á¤¸®Çϸé, ¿©·¯ºÐÀº ´ÙÀ½ Áغñ¹°ÀÌ ÇÊ¿äÇÒ °ÍÀÔ´Ï´Ù: * ¾Æ¸¶ ´õ Àû¾îµµ °¡´ÉÇÏ°ÚÁö¸¸, °¢°¢ 400¸Þ°¡¹ÙÀÌÆ®¿Í 700¸Þ°¡¹ÙÀÌÆ® Á¤µµ µÇ´Â µÎ °³ÀÇ ¿©À¯ ÆÄƼ¼ÇÀ» °¡Áø ÆÄƼ¼Ç * ¸®´ª½º ¹èÆ÷ÆÇ(¿¹¸¦ µé¾î ·¡µåÇÞ CD)°ú ¼³Ä¡ µµ±¸(¿¹¸¦ µé¾î CD ROM µå¶óÀ̺ê) * À§¿¡ ³ª¿Í ÀÖ´Â ¼Ò½º ÄÚµåµé Àú´Â ¿©·¯ºÐÀÌ ¹ÙÅÁ ½Ã½ºÅÛÀ» ÀúÀÇ µµ¿òÀÌ ÀüÇô ¾øÀÌ ½º½º·Î ¼³Ä¡ÇÏ½Ç ¼ö ÀÖ´Ù°í »ý°¢ÇÕ´Ï´Ù. ¿©±â¼­ºÎÅÍ, Àú´Â ¿©·¯ºÐÀÌ ¹ÙÅÁ ½Ã½ºÅÛÀÇ ¼³Ä¡¸¦ ³¡³Â´Ù°í °¡Á¤ÇÏ°Ú½À´Ï´Ù. ÀÌ ÀÛÀº ÇÁ·ÎÁ§Æ®ÀÇ Ã¹¹ø° ´Ü°èÀÇ ¸ñÇ¥´Â Ä¿³ÎÀÌ ½ÃÀÛ µÈ µÚ `init`¸¦ ãÀ» ¼ö ¾ø¾î¼­ ÆдÐÀ» ÀÏÀ¸Å°´Â °ÍÀ» º¸±â À§ÇØ Ä¿³ÎÀ» ¾ò´Â °ÍÀÔ´Ï´Ù. ÀÌ°ÍÀº ¿ì¸®°¡ Ä¿³Î°ú lilo¸¦ ¼³Ä¡ÇØ¾ß ÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. ¾î·µç lilo¸¦ Àß ¼³Ä¡ÇÏ·Á¸é ¿ì¸®´Â `/dev`µð·ºÅ丮¿¡ ÀÖ´Â µð¹ÙÀ̽º ÆÄÀϵéÀÌ ÇÊ¿äÇÕ´Ï´Ù. ºÎÆ® ¼½Å͸¦ ¾²±â À§ÇÑ Àú¼öÁØÀÇ µð½ºÅ© ¾×¼¼½º¸¦ À§Çؼ­ lilo´Â µð¹ÙÀ̽º ÆÄÀϵéÀ» ÇÊ¿ä·Î ÇÕ´Ï´Ù. MAKEDEV´Â ÀÌ·¯ÇÑ µð¹ÙÀ̽º ÆÄÀϵéÀ» ¸¸µå´Â ½ºÅ©¸³Æ®ÀÔ´Ï´Ù. (¹°·Ð ¹ÙÅÁ ½Ã½ºÅÛ¿¡¼­ µð¹ÙÀ̽º ÆÄÀϵéÀ» º¹»çÇصµ µÇÁö¸¸, ±×°Ç ¹ÝÄ¢ÀÔ´Ï´Ù!) ÇÏÁö¸¸ ¹«¾ùº¸´Ùµµ ¿ì¸®´Â ÀÌ ¸ðµç °ÍÀ» Áý¾î³Ö±â À§ÇÑ ÆÄÀÏ ½Ã½ºÅÛÀ» ÇÊ¿ä·Î ÇÕ´Ï´Ù. = ÆÄÀÏ ½Ã½ºÅÛ = ¿ì¸®ÀÇ »õ ½Ã½ºÅÛÀ» ÆÄÀÏ ½Ã½ºÅÛ ¾È¿¡ ÀÚ¸®Àâ°Ô µÉ °ÍÀÔ´Ï´Ù. ±×·¡¼­ ¸ÕÀú ¿ì¸®´Â `mke2fs`¸¦ ÀÌ¿ëÇؼ­ ÆÄÀÏ ½Ã½ºÅÛÀ» ¸¸µé¾î¾ß ÇÕ´Ï´Ù. ±×¸®°í ¾îµò°¡¿¡ ¸¶¿îÆ®ÇØ¾ß ÇÕ´Ï´Ù. Àú´Â `/mnt/target`À» Á¦¾ÈÇÕ´Ï´Ù. ÀÌÁ¦ºÎÅÍ Àú´Â »õ ÆÄÀÏ ½Ã½ºÅÛÀÌ ±×°÷¿¡ ÀÖ´Ù°í °¡Á¤ÇÒ °ÍÀÔ´Ï´Ù. ¿©·¯ºÐÀº ¹ÙÅÁ ½Ã½ºÅÛÀÌ ½ÃÀÛµÉ ¶§¸¶´Ù ÀÚµ¿À¸·Î »õ ÆÄÀÏ ½Ã½ºÅÛÀÌ ¸¶¿îÆ® ÇÒ ¼ö ÀÖµµ·Ï `/etc/fstab`¿¡ Ç׸ñÀ» Ãß°¡ÇÏ¿© Á»´õ ÆíÇÏ°Ô ÀÛ¾÷ÇÒ ¼öµµ ÀÖÀ» °ÍÀÔ´Ï´Ù. ¿ì¸®°¡ ´ë»ó ½Ã½ºÅÛÀ» ºÎÆÃÇÏ°Ô µÇ¸é `/mnt/target`¿¡ ÀÖ´ø ³»¿ëµéÀº `/`¿¡ ÀÖ°Ô µÉ °ÍÀÔ´Ï´Ù. ´ë»ó ½Ã½ºÅÛ¿¡´Â µð·ºÅ丮 ±¸Á¶°¡ ÀÖ¾î¾ß ÇÒ °ÍÀÔ´Ï´Ù. ÀÌ°ÍÀÌ ¾î¶°ÇØ¾ß ÇÏ´ÂÁö ¾Ë±â À§ÇØ ÆÄÀÏ °èÃþ Ç¥ÁØ(File Heirarchy Standard)À» È®ÀÎÇϽðųª([#FHS ÆÄÀϽýºÅÛ]À» º¸½Ê½Ã¿À.), ±×³É ´ë»óÀÌ ¸¶¿îÆ® µÈ °÷À¸·Î `cd` ÇϽŠµÚ¿¡ ¾Æ·¡ÀÇ ¸í·ÉµéÀ» ÀÔ·ÂÇϽʽÿÀ. {{{ mkdir bin boot dev etc home lib mnt root sbin tmp usr var cd var; mkdir lock log run spool cd ../usr; mkdir bin include lib local sbin share src cd share/; mkdir man; cd man mkdir man1 man2 man3 ... man9 }}} FHS¿Í ´ëºÎºÐÀÇ ²Ù·¯¹ÌµéÀº man ÆÐÀÌÁöµéÀÇ À§Ä¡¿¡¼­ Â÷À̸¦ º¸À̱⠶§¹®¿¡, ¾Æ·¡ÀÇ ½Éº¼¸¯ ¸µÅ©°¡ ÇÊ¿äÇÒ °ÍÀÔ´Ï´Ù. {{{ cd ../..; ln -s share/man man }}} = MAKEDEV = ¿ì¸®´Â ¼Ò½º ÄÚµåµéÀ» ´ë»óÀÇ `/usr/src` µð·ºÅ丮¿¡ ³ÖÀ» °ÍÀÔ´Ï´Ù. ±×·¯¹Ç·Î ¿¹¸¦ µé¾î ¿©·¯ºÐÀÇ ´ë»ó ½Ã½ºÅÛÀÌ `/mnt/target`¿¡ ¸¶¿îÆ®µÇ¾î ÀÖ°í ¿©·¯ºÐÀÇ Å¸¸£º¼(tarball)µéÀº `/root`¿¡ ÀÖ´Ù¸é ¿©·¯ºÐÀº ¾Æ·¡¿Í °°ÀÌ ÀÔ·ÂÇØ¾ß ÇÒ °ÍÀÔ´Ï´Ù. {{{ cd /mnt/target/usr/src tar -xzvf /root/MAKEDEV-2.5.tar.gz }}} ´Ü¼øÈ÷ Ÿ¸£º¼À» º¹»çÇÏÁö ¸¶¼¼¿ä. ±×°ÍÀº ¼­Åõ¸¥ ÀÏÀÔ´Ï´Ù . ;) º¸Åë ¿©·¯ºÐÀÌ ¼ÒÇÁÆ®¿þ¾î¸¦ ¼³Ä¡ÇÒ ¶§, ¿©·¯ºÐÀº ±×°ÍÀ» ÇöÀç µ¿ÀÛÇÏ°í ÀÖ´Â ½Ã½ºÅÛ À§·Î ¼³Ä¡ÇÕ´Ï´Ù. ÇÏÁö¸¸ ¿ì¸®´Â ¸¶Ä¡ `/mnt/target`ÀÌ ·çÆ® ÆÄÀϽýºÅÛÀÎ °Íó·³ ¼³Ä¡ÇÏ°íÀÚ Çϱ⠶§¹®¿¡ ±×·¸°Ô Çؼ­´Â ¾ÈµË´Ï´Ù. ÀÌ·± ÀÏÀ» ÇÏ´Â ¹æ¹ýÀº ²Ù·¯¹Ìµé¿¡ µû¶ó ´Ù¸¨´Ï´Ù. MAKEDEV¸¦ À§Çؼ­´Â ¿©·¯ºÐÀº ¾Æ·¡¿Í °°ÀÌ ÀÔ·ÂÇÏ¿©¾ß ÇÕ´Ï´Ù. {{{ ROOT=/mnt/target make install }}} ¿©·¯ºÐÀº README³ª INSTALL ÆÄÀϵéÀ» º¸½Ã°Å³ª `./configure --help`¸¦ ÀÔ·ÂÇϼż­ ¿É¼ÇµéÀ» ã¾Æº¸¼Å¾ß ÇÒ °ÍÀÔ´Ï´Ù. MAKEDEVÀÇ `Makefile`À» º¸½Ã°í ¿ì¸®°¡ À§ÀÇ ¸í·É¾î·Î ¼³Á¤ÇÑ `ROOT` º¯¼ö·Î ¹«¾ùÀ» ÇÏ´ÂÁö ¾Ë¾Æº¸½Ê½Ã¿À. ±× ´ÙÀ½¿¡ `man ./MAKEDEV.man`À¸·Î ¸Å´º¾óÀ» º¸½Ã°í ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö ¾Ë¾Æº¸½Ê½Ã¿À. ¿©·¯ºÐÀº ¿ì¸®ÀÇ µð¹ÙÀ̽º ÆÄÀϵéÀ» ¸¸µå´Â ¹æ¹ýÀÌ `cd /mnt/target/dev`¸¦ ÇÑ µÚ, `./MAKEDEV generic`À» ÇÏ´Â °Å¶ó´Â °ÍÀ» ¾Æ½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. `ls`¸¦ Çϼż­ MAKEDEV°¡ ¸¸µç ¸ðµç µð¹ÙÀ̽ºµéÀ» º¸½Ê½Ã¿À. = Ä¿³Î = ´ÙÀ½À¸·Î ¿ì¸®´Â Ä¿³ÎÀ» ¸¸µé °ÍÀÔ´Ï´Ù. Àú´Â ¿©·¯ºÐÀÌ ÀÌ°ÍÀ» Àü¿¡ ÇØ ºÃ´Ù°í »ý°¢Çϱ⠶§¹®¿¡, °£´ÜÈ÷¸¸ ´Ù·ê °ÍÀÔ´Ï´Ù. ºÎÆ®ÇÒ ¼ö ÀÖ´Â Ä¿³ÎÀÌ ÀÖÀ¸¸é lilo¸¦ ¼³Ä¡ÇϱⰡ ½¬¿öÁý´Ï´Ù. ´ë»óÀÇ `usr/src` µð·ºÅ丮·Î µ¹¾Æ°¡¼­ ¸®´ª½º Ä¿³ÎÀÇ ¼Ò½º¸¦ ±×°÷¿¡ Ǫ½Ê½Ã¿À. ¸®´ª½º ¼Ò½º Æ®¸®·Î µé¾î°¡¼­ (`cd linux`) ¿©·¯ºÐÀÌ ÁÁ¾ÆÇÏ´Â ¹æ¹ý, ¿¹¸¦ µé¾î `make menuconfig`·Î Ä¿³ÎÀ» ¼³Á¤ÇϽʽÿÀ. ¿©·¯ºÐÀº ¸ðµâÀÌ ¾øµµ·Ï Ä¿³ÎÀ» ¼³Á¤Çؼ­ ¼³Ä¡ °úÁ¤À» Á¶±Ý ´õ ½±°Ô ÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ¸¸¾à ¿©·¯ºÐÀÌ ¸ðµâÀ» »ç¿ëÇϵµ·Ï ¼³Á¤Çϼ̴ٸé, ¿©·¯ºÐÀº `Makefile`¿¡¼­ `INSTALL_MOD_PATH`¸¦ ã¾Æ `/mnt/target`·Î ¼³Á¤ÇØ¾ß ÇÒ °ÍÀÔ´Ï´Ù. ÀÌÁ¦ ¿©·¯ºÐÀº `make dep`, `make bzImage`À» ÇÏ½Ç ¼ö ÀÖ°í, ¿©·¯ºÐÀÌ ¸ðµâÀ» ¼³Á¤Çß´Ù¸é `make modules`, `make modules_install`µµ ÇØ¾ß ÇÒ °ÍÀÔ´Ï´Ù. Ä¿³Î `arch/i386/boot/bzImage`¿Í system map `System.map`À» ´ë»ó ½Ã½ºÅÛÀÇ ºÎÆ® µð·ºÅ丮ÀÎ `/mnt/target/boot`·Î º¹»çÇϽʽÿÀ. ÀÌÁ¦ ¿ì¸®´Â lilo¸¦ ¼³Ä¡ÇÒ Áغñ°¡ µÇ¾ú½À´Ï´Ù. = Lilo = Lilo¿¡´Â `QuickInst`¶ó°í ºÒ¸®´Â ±ò²ûÇÑ ½ºÅ©¸³Æ®°¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. lilo ¼Ò½º¸¦ ´ë»óÀÇ ¼Ò½º µð·ºÅ丮¿¡ Ç®°í, `ROOT=/mnt/target ./QuickInst`¿Í °°ÀÌ ½ÇÇàÇϼ¼¿ä. ½ºÅ©¸³Æ®´Â ¿©·¯ºÐ¿¡°Ô ¾î¶»°Ô lilo°¡ ¼³Ä¡µÉÁö¿¡ ´ëÇÑ Áú¹®À» ÇÕ´Ï´Ù. ¿ì¸®°¡ `ROOT`¸¦ ´ë»ó ÆÄƼ¼ÇÀ¸·Î ¼³Á¤Ç߱⠶§¹®¿¡, ÆÄÀÏ À̸§µéÀ» ´ë»ó ÆÄƼ¼ÇÀ» ±âÁØÀ¸·Î ÇÑ »ó´ëÀûÀÎ À§Ä¡·Î ¾Ë·Á ÁÖ¾î¾ß ÇÕ´Ï´Ù. ±×·¡¼­ ±âº»À¸·Î ºÎÆ®ÇÒ Ä¿³ÎÀÇ À§Ä¡¿¡ ´ëÇØ ¹°¾îº¼ ¶§ `/mnt/target/boot/bzImage` °¡ ¾Æ´Ñ `/boot/bzImage`¶ó°í ´äÇØ¾ß ÇÕ´Ï´Ù. ½ºÅ©¸³Æ®¿¡ ÀÛÀº ¹ö±×°¡ Àֱ⠶§¹®¿¡ {{{ ./QuickInst: /boot/bzImage: no such file }}} ¶ó°í ³ª¿Ã °ÍÀÔ´Ï´Ù. ÇÏÁö¸¸ ¹«½ÃÇÏ½Ã¸é µË´Ï´Ù. `QuickInst`°¡ ¾îµð¿¡ ºÎÆ® ¼½Å͸¦ ¼³Ä¡ÇÏ°Ô ÇØ¾ß ÇÒ±î¿ä? ¿ì¸®´Â ÀçºÎÆà ÇßÀ» ¶§ ¹ÙÅÁ ½Ã½ºÅÛÀ̳ª ´ë»ó ½Ã½ºÅÛ, ¶Ç´Â ÄÄÇ»ÅÍ¿¡ ÀÖ´Â ´Ù¸¥ ½Ã½ºÅÛÀ¸·Î ºÎÆÃÇÒ ¼ö ÀÖµµ·Ï ¼±ÅÃÇÒ ¼ö Àֱ⸦ ¹Ù¶ø´Ï´Ù. ¶ÇÇÑ ¿ì¸®°¡ Áö±Ý ¸¸µå´Â ¸®·Î°¡ »õ·Î¿î ½Ã½ºÅÛÀÇ Ä¿³ÎÀ» Àеµ·Ï ÇÏ°í ½Í¾îÇÕ´Ï´Ù. ¾î¶»°Ô ¿ì¸®°¡ ÀÌ µÎ °¡Áö ¸ñÇ¥¸¦ ´Ù ´Þ¼ºÇÒ ¼ö ÀÖÀ»±î¿ä? ¾à°£ ÁÖÁ¦¿¡¼­ ¹þ¾î³ª°ÚÁö¸¸ ÀÌÁß ºÎÆ® ¸®´ª½º ½Ã½ºÅÛ¿¡¼­ lilo°¡ ¾î¶»°Ô DOS¸¦ ºÎÆ®ÇÏ´ÂÁö ¾Ë¾Æº¸µµ·Ï ÇսôÙ. ÀÌ·¯ÇÑ ÆÄÀϽýºÅÛÀ» À§ÇÑ `lilo.conf`´Â ¾Æ¸¶µµ ¾Æ·¡¿Í °°À» °ÍÀÔ´Ï´Ù. {{{ prompt timeout = 50 default = linux image = /boot/bzImage label = linux root = /dev/hda1 read-only other = /dev/hda2 label = dos }}} ÀÌ¿Í °°ÀÌ ¼³Ä¡µÇ¸é, ¸¶½ºÅÍ ºÎÆ® ·¹ÄÚµå(master boot record)´Â ¹ÙÀÌ¿À½º¿¡ ÀÇÇØ ÀÐÇôÁö°í ½ÇÇàµÈ µÚ, ÇÁ·ÒÇÁÆ®¸¦ ÁÖ´Â lilo ºÎÆ®·Î´õ¸¦ ºÎ¸£°Ô µË´Ï´Ù. ¸¸¾à ±× ÇÁ·ÒÇÁÆ®¿¡¼­ ¿©·¯ºÐÀÌ `dos`¶ó°í Ä¡½Ã¸é lilo´Â hda2ÀÇ ºÎÆ® ¼½Å͸¦ ºÎ¸£°Ô µÇ°í, DOS°¡ ºÒ¸®°Ô µË´Ï´Ù. ¿ì¸®°¡ ÇÏ·Á°í ÇÏ´Â °Íµµ hda2 ´ë½Å¿¡ `QuickInst`°¡ ¼³Ä¡ÇÏ·Á°í ÇÏ´Â ´Ù¸¥ lilo ºÎÆ® ¼½Å͸¦ ÀÌ¿ëÇÏ´Â °ÍÀ» Á¦¿ÜÇÏ¸é µ¿ÀÏÇÕ´Ï´Ù. ±×·¡¼­ ¸®´ª½º ¹èÆ÷ÆÇÀÇ lilo´Â ¿ì¸®°¡ ¸¸µç lilo¸¦ ºÎ¸£°í, ºÒ·ÁÁø lilo´Â ¿ì¸®°¡ ¸¸µç Ä¿³ÎÀ» ºÎ¸£°Ô µÉ °ÍÀÔ´Ï´Ù. ÀçºÎÆÃÀ» ÇÒ ¶§ ¿©·¯ºÐÀº µÎ °³ÀÇ lilo ÇÁ·ÒÇÁÆ®¸¦ º¼ °ÍÀÔ´Ï´Ù. °£´ÜÈ÷ Á¤¸®Çϸé, `QuickInst`°¡ ¿©·¯ºÐ²² ¾îµð¿¡ ºÎÆ® ¼½Å͸¦ À§Ä¡ÇÒ °ÍÀÎÁö ¹°¾îº¸¸é, ¿©·¯ºÐÀÇ `/dev/hda2`¿Í °°ÀÌ ´ë»ó ÆÄÀϽýºÅÛÀÌ ÀÖ´Â µð¹ÙÀ̽º¸¦ ÁöÁ¤ÇϽʽÿÀ. ÀÌÁ¦ ¿©·¯ºÐÀÇ ½Ã½ºÅÛÀÇ `lilo.conf`¸¦ ¾Æ·¡¿Í °°Àº ÁÙÀ» °¡Áöµµ·Ï °íÄ¡½Ê½Ã¿À. {{{ other = /dev/hda2 label = target }}} Lilo¸¦ ½ÇÇàÇÏ¸é ¿ì¸®´Â ´ë»ó ½Ã½ºÅÛÀ¸·Î ù ºÎÆ®¸¦ ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. = Glibc = ´ÙÀ½À¸·Î ¿ì¸®´Â `init`¸¦ ¼³Ä¡ÇØ¾ß ÇÏ°ÚÁö¸¸, ¸®´ª½º¿¡¼­ ½ÇÇàµÇ´Â °ÅÀÇ ¸ðµç ´Ù¸¥ ÇÁ·Î±×·¥°ú °°ÀÌ, `init`´Â GNU C ¶óÀ̺귯¸®ÀÎ glibc¿¡¼­ Á¦°øÇÏ´Â ¶óÀ̺귯¸® ÇÔ¼öµéÀ» »ç¿ëÇÕ´Ï´Ù. ±×·¯´Ï ¿ì¸®´Â glibc¸¦ ¸ÕÀú ¼³Ä¡Çϵµ·Ï ÇսôÙ. Glibc´Â ¸Å¿ì Å©°í º¹ÀâÇÑ ²Ù·¯¹ÌÀÔ´Ï´Ù. 8¸Þ°¡ ¹ÙÀÌÆ®ÀÇ ·¥ÀÌ ÀåÂøµÈ ÀúÀÇ ¿À·¡µÈ 386sx/16 ÄÄÇ»Åͷδ ¼³Ä¡ÇÏ´Â µ¥ 90½Ã°£ Á¤µµ°¡ °É·È½À´Ï´Ù. ÇÏÁö¸¸ 64¸Þ°¡¹ÙÀÌÆ®ÀÇ ¸Þ¸ð¸®°¡ ÀÖ´Â ÀúÀÇ ¼¿·¯·Ð 433 ÄÄÇ»Åͷδ 33ºÐ¹Û¿¡ °É¸®Áö ¾Ê¾Ò½À´Ï´Ù. Á¦ »ý°¢¿¡´Â ¾ó¸¶³ª ½Ã°£ÀÌ °É¸®´ÂÁö´Â ¸Þ¸ð¸®°¡ ÁÖ·Î °áÁ¤ÇÏ´Â °Í °°½À´Ï´Ù. ¸¸¾à ¿©·¯ºÐÀÌ 8¸Þ°¡¹ÙÀÌÆ®(³ª, °øÆ÷½º·´°Ôµµ ´õ ÀÛÀº Å©±â)ÀÇ ¸Þ¸ð¸®¸¦ °¡Áö°í ÀÖ¾ú´Ù¸é ´õ ¸¹Àº ¼³Ä¡ ½Ã°£ °É¸± Å×´Ï Áغñ¸¦ ÇϽñ⠹ٶø´Ï´Ù. Glibc ¼³Ä¡ ¹®¼­´Â glibc¸¦ µ¶¸³µÈ µð·ºÅ丮¿¡ ¼³Ä¡ÇÒ °ÍÀ» ±ÇÇÏ°í ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ¿©·¯ºÐÀº ´ÜÁö ±× µð·ºÅ丮¸¦ Áö¿ì´Â °Í¸¸À¸·Î, ½±°Ô Àç½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ ÀÌ·¸°Ô Çϸé 265¸Þ°¡¹ÙÀÌÆ® Á¤µµÀÇ ¸Þ¸ð¸®°¡ Àý¾àµË´Ï´Ù. Æò¼Òó·³ `glibc-2.1.3.tar.gz` (³ª ´Ù¸¥ ¹öÀüÀÇ) Ÿ¸£º¼À» `/mnt/target/usr/src`¿¡ DZ´Ï´Ù. ÀÌÁ¦, ¿ì¸®´Â glibcÀÇ µð·ºÅ丮¿¡¼­ "¾Öµå¿Âµé(add-ons)"ÀÇ ¾ÐÃ൵ Ç® °ÍÀÔ´Ï´Ù. ±×·¯´Ï `cd glibc-2.1.3`ÇϽðí, `glibc-crypt-2.1.3.tar.gz`¿Í `glibc-linuxthreads-2.1.3.tar.gz` Ÿ¸£º¼À» ±×°÷¿¡ Ǫ½Ê½Ã¿À. ÀÌÁ¦ ¿ì¸®´Â ¼³Ä¡ µð·ºÅ丮¸¦ ¸¸µé°í, ¼³Á¤ÇÑ µÚ, glibc¸¦ ¸¸µé°í(make) ¼³Ä¡(install)ÇÒ °ÍÀÔ´Ï´Ù. Àú´Â ¾Æ·¡¿Í °°ÀÌ ÀÔ·ÂÇßÁö¸¸, ¹®¼­µéÀ» ½º½º·Î ÀÐÀ¸½Ã°í ¿©·¯ºÐÀÇ »óȲ¿¡ °¡Àå ÀûÇÕÇÏ°Ô ÀÔ·ÂÇϽʽÿÀ. ÇÑÆí, ¿©·¯ºÐÀº glibc¸¦ ¼³Ä¡Çϱâ Àü¿¡ `df`¸í·É¾î¸¦ ÅëÇؼ­ ¿©À¯ °ø°£ÀÌ ¾ó¸¶³ª ÀÖ³ª¸¦ º¼ ¼ö ÀÖ½À´Ï´Ù. Glibc¸¦ ¼³Ä¡ÇÑ µÚ, ¾îµð¿¡¼­ ¿ë·®ÀÌ ³¶ºñµÇ¾ú´ÂÁö º¸±â À§Çؼ­ `df`¸¦ ´Ù½Ã ÇÏ½Ç ¼öµµ ÀÖ½À´Ï´Ù. {{{ cd .. mkdir glibc-build ../glibc-2.1.3/configure --enable-add-ons --prefix=/usr make make install_root=/mnt/target install }}} ¿ì¸®°¡ ²Ù·¯¹Ì¸¦ ¾îµð¿¡ ¼³Ä¡ÇÒÁö ¼³Á¤ÇÏ´Â ¶Ç ´Ù¸¥ ¹æ¹ýÀÌ ÀÖ´Ù´Â Á¡¿¡ ÁÖÀÇÇϽʽÿÀ. = SysVinit = SysVinit ¹ÙÀ̳ʸ®¸¦ ¸¸µé°í ¼³Ä¡ÇÏ´Â °ÍÀº ¸Å¿ì ´Ü¼øÇÕ´Ï´Ù. `src/` ¼­ºê µð·ºÅ丮ÀÇ `Makefile`À» Á¶±Ý ÇØÅ·ÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù. ¸¶Áö¸· ³× ÁÙ¿¡¼­, ¿©·¯ºÐÀº `/dev/initctl` ¹Ù·Î ¾Õ¿¡ `$(ROOT)`¸¦ Ãß°¡ÇØ ÁÖ¼Å¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î {{{ @ if [ ! -p /dev/initctl ]; then \ }}} Àº {{{ @ if [ ! -p $(ROOT)/dev/initctl ]; then \ }}} ÀÌ µË´Ï´Ù. ÀÌ `initctl` µð¹ÙÀ̽º ÆÄÀÏÀº init¿ÍÀÇ Åë½Å ¼ö´Ü ÁßÀÇ ÇϳªÀÔ´Ï´Ù. ¿¹¸¦ µé¾î `init` ¸Ç ÆÐÀÌÁö¸¦ º¸¸é, ÁÖ Àü¿øÀÌ ²÷±â·Á°í ÇÏ¿© UPS Àü¿ø¿¡¼­ µ¿ÀÛÇÏ°í ÀÖÀ» ¶§ SIGPWR ´ë½Å ÀÌ ÆÄÀÏÀ» ½á¼­ init¸¦ Á¾·áÇϵµ·Ï ÇÏ°í ÀÖ´Ù. ¹æ±Ý ¿ì¸®°¡ ÇÑ ÇØÅ·Àº ´ë»ó ½Ã½ºÅÛÀ» À§ÇÑ °ÍÀ̸ç, ¹ÙÅÁ ½Ã½ºÅÛÀº ¿µÇâÀ» ÁÖÁö ¾Ê½À´Ï´Ù. ÀÌ°ÍÀÌ ³¡³µÀ¸¸é, `src` ¼­ºêµð·ºÅ丮¿¡¼­ ´ÙÀ½ ¸í·ÉµéÀ» ÀÔ·ÂÇϽʽÿÀ. {{{ make ROOT=/mnt/target make install }}} `init`¿Í °ü·ÃµÈ ½ºÅ©¸³Æ®µéÀº ¸Å¿ì ¸¹½À´Ï´Ù. SysVinit ²Ù·¯¹Ì ¾È¿¡ Àß µ¿ÀÛÇÏ´Â ¿¹Á¦ ½ºÅ©¸³Æ®µéÀÌ ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ¿©·¯ºÐÀº ½ºÅ©¸³Æ®µéÀ» ¼öµ¿À¸·Î ¼³Ä¡ÇØ¾ß ÇÒ °ÍÀÔ´Ï´Ù. ±×°ÍµéÀº SysVinit ¼Ò½º Æ®¸® ¾ÈÀÇ `debian/etc` ¾Æ·¡ÀÇ °èÃþ¿¡ ÀÖ½À´Ï´Ù. ¿©·¯ºÐÀº `cd ../debian/etc; cp -r * /mnt/target/etc`¿Í °°Àº ¹æ¹ýÀ¸·Î ½ºÅ©¸³Æ®µéÀ» ´ë»óÀÇ `etc` µð·ºÅ丮·Î Á÷Á¢ º¹»çÇÏ½Ã¸é µË´Ï´Ù. ¿©·¯ºÐÀº º¹»çÇϽñâ Àü¿¡ ½ºÅ©¸³Æ®µéÀÇ ³»¿ëÀ» º¸°í ½ÍÀ¸½Ç °ÍÀÔ´Ï´Ù! ÀçºÎÆÃÀ» ÇÒ ¶§ `init`À» ÀоîµéÀ̱â À§ÇÑ À§ÇÑ Áغñ°¡ ´ë»ó Ä¿³Î¿¡ ´ëÇؼ­ ¿ÏÀüÈ÷ ³¡³µ½À´Ï´Ù. Áö±Ý ¹®Á¦´Â `bash`°¡ ¾ø±â ¶§¹®¿¡ ½ºÅ©¸³Æ®°¡ ½ÇÇàµÇÁö ¾ÊÀ» °ÍÀ̶ó´Â °ÍÀÔ´Ï´Ù. ¶ÇÇÑ, `init`´Â `getty`¸¦ ½ÇÇà½ÃÅ°·Á°í ÇÏÁö¸¸, ½ÇÇà½Ãų `getty`°¡ ¾ø½À´Ï´Ù. ÀçºÎÆÃÀ» ÇØ º¸½Ã°í À߸øµÈ °ÍÀÌ ¾ø´Ù´Â °ÍÀ» È®ÀÎÇϼ¼¿ä. = Ncurses = ¿ì¸®°¡ ´ÙÀ½À¸·Î Çʿ並 ÇÏ´Â °ÍÀº BashÀÌÁö¸¸, bash´Â ncurses¸¦ ÇÊ¿ä·Î Çϱ⠶§¹®¿¡ ÀÌ°ÍÀ» ¸ÕÀú ¼³Ä¡ÇÕ´Ï´Ù. Ncurses´Â ÅؽºÆ® ½ºÅ©¸°À» ´Ù·ç´Â ¼ö´ÜÀ¸·Î¼­ termcapÀ» ´ëüÇÏ¿´Áö¸¸, tercapÀÇ ÄÝ(call)µéÀ» Áö¿øÇÔÀ¸·Î½á ¿À·¡µÈ ÇÁ·Î±×·¥°úÀÇ È£È¯¼º(backwards compatibility)À» Áö¿øÇÕ´Ï´Ù. ±ú²ýÇÏ°í ´Ü¼øÇÑ Çö´ëÀûÀÎ ½Ã½ºÅÛÀ» ¸¸µé±â À§Çؼ­´Â, ±¸½ÄÀÎ termcap ¸Þ¼Òµå(method)¸¦ ²ô´Â °ÍÀÌ °¡Àå ÁÁÀ» °ÍÀ̶ó°í »ý°¢ÇÕ´Ï´Ù. ¿©·¯ºÐÀº ³ªÁß¿¡ termcapÀ» ¾²´Â ±¸½ÄÀÎ ¾îÇø®ÄÉÀ̼ÇÀ» ÄÄÆÄÀÏÇÒ ¶§ ¹®Á¦¿¡ Á÷¸éÇÏ°Ô µÉÁöµµ ¸ð¸¨´Ï´Ù. ÇÏÁö¸¸ ÃÖ¼ÒÇÑ ¿©·¯ºÐÀº ¹«¾ùÀÌ ¹«¾ùÀ» ¾²´ÂÁö´Â ¾Ë °ÍÀÔ´Ï´Ù. ¸¸¾à ÇÊ¿äÇÏ´Ù¸é termcapÀ» Áö¿øÇϵµ·Ï ncurses¸¦ ´Ù½Ã ÄÄÆÄÀÏ ÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. Á¦°¡ »ç¿ëÇÑ ¸í·É¾î´Â ¾Æ·¡¿Í °°½À´Ï´Ù. {{{ ./configure --prefix=/usr --with-install-prefix=/mnt/target --with-shared --disable-termcap make make install }}} = Bash = Bash¸¦ ¼³Ä¡ÇÏ´Â µ¥¿¡´Â Á¦°¡ »ý°¢Çß´ø °Íº¸´Ù ´õ ¸¹Àº Àбâ¿Í »ý°¢°ú ½ÃÇàÂø¿À°¡ ÇÊ¿äÇß½À´Ï´Ù. Á¦°¡ »ç¿ëÇÑ ¼³Á¤ ¿É¼ÇµéÀº ¾Æ·¡¿Í °°½À´Ï´Ù. {{{ ./configure --prefix=/mnt/target/usr/local --exec-prefix=/mnt/target --with-curses }}} ÀÏ´Ü ¿©·¯ºÐÀÌ Bash¸¦ ¸¸µé°í ¼³Ä¡Çϼ̴ٸé, `cd /mnt/target/bin; ln -s bash sh`¿Í °°Àº ¹æ¹ýÀ¸·Î ½Éº¼¸¯ ¸µÅ©¸¦ ¸¸µå½Ê½Ã¿À. ¸¹Àº ½ºÅ©¸³Æ®µéÀÌ ¾Æ·¡¿Í °°Àº ÁÙ·Î ½ÃÀÛÇϱ⠶§¹®ÀÔ´Ï´Ù. {{{ #!/bin/sh }}} ½Éº¼¸¯ ¸µÅ©°¡ ¾ø´Ù¸é ÀÌ·¯ÇÑ ½ºÅ©¸³Æ®µéÀº `/bin/bash`°¡ ¾Æ´Ñ`/bin/sh`¸¦ ã±â ¶§¹®¿¡ ½ÇÇàµÉ ¼ö ¾øÀ» °ÍÀÔ´Ï´Ù. ¿©·¯ºÐÀÌ ÀçºÎÆÃÀ» ÇÏ½Ã°í ½Í´Ù¸é Áö±Ý ÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù. ÀÌÁ¦´Â ½ºÅ©¸³Æ®°¡ ½ÇÁ¦·Î ½ÇÇàµÇÁö¸¸, `getty`³ª `login` ÇÁ·Î±×·¥ÀÌ ¾ø±â ¶§¹®¿¡ ·Î±×ÀÎÀº ÇÏ½Ç ¼ö ¾ø´Ù´Â °Í¿¡ ÁÖÀÇÇϽʽÿÀ. = Util-linux (getty¿Ílogin) = Util-linux²Ù·¯¹Ì´Â `agetty`¿Í `login`À» Æ÷ÇÔÇÕ´Ï´Ù. ¿ì¸®°¡ ·Î±×ÀÎ ÇÏ°í ¹è½Ã ÇÁ·ÒÇÁÆ®¸¦ ¹Þ±â À§Çؼ­´Â µÑ ´Ù°¡ ÇÊ¿äÇÕ´Ï´Ù. ÀÌ°ÍÀÌ ¼³Ä¡µÈ µÚ¿¡´Â ´ë»óÀÇ `/sbin` µð·ºÅ丮¿¡¼­ `agetty`¿¡¼­ `getty`·ÎÀÇ ½Éº¼¸¯ ¸µÅ©¸¦ ¸¸µå½Ê½Ã¿À. ¸ðµç À¯´Ð½º °è¿­ÀÇ ½Ã½ºÅÛ¿¡´Â`getty`°¡ ¼³Ä¡µÇ¾ú´Ù°í °¡Á¤µÇ±â ¶§¹®¿¡, `agetty`¸¦ ½ÇÇà½ÃÅ°±â À§ÇØ `inittab`À» ÇØÅ·ÇÏ´Â °Íº¸´Ù ½Éº¼¸µ ¸µÅ©¸¦ ¸¸µå´Â °ÍÀÌ ´õ ³´½À´Ï´Ù. Util-linux¸¦ ÄÄÆÄÀÏÇÏ´Â µ¥ ÀÖ¾î ¹®Á¦°¡ Çϳª ³²¾Ò½À´Ï´Ù. ÀÌ ²Ù·¯¹Ì´Â `more`À» Æ÷ÇÔÇÏÁö¸¸, Àú´Â `make` °úÁ¤¿¡¼­ `more`¸¦ ¹ÙÅÁ ½Ã½ºÅÛÀÇ ncurses 4 ´ë½Å ncurses 5·Î ¸µÅ©Çϵµ·Ï ÇÒ ¼ö ¾ø¾ú½À´Ï´Ù. Àú´Â ±×°Í¿¡ ´ëÇØ ´õ ÀÚ¼¼È÷ ¾Ë¾Æ º¼ °ÍÀÔ´Ï´Ù. ´ë»ó ½Ã½ºÅÛ¿¡´Â `/etc/passwd`ÆÄÀÏÀÌ ÀÖ¾î¾ß ÇÒ °ÍÀÔ´Ï´Ù. `login` ÇÁ·Î±×·¥Àº ÀÌ ÆÄÀÏÀ» ÀÌ¿ëÇÏ¿© ¿©·¯ºÐÀÌ Çã¿ëµÈ »ç¿ëÀÚÀÎÁö¸¦ È®ÀÎÇÒ °ÍÀÔ´Ï´Ù. Çö ´Ü°è¿¡¼­ ½Ã½ºÅÛÀº Àå³­°¨ »óÅÂÀ̱⠶§¹®¿¡ ¿ì¸®´Â Æнº¿öµå ¾øÀÌ ·çÆ® À¯Àú¸¸À» ¼³Ä¡ÇÏ´Â ¾öû³­ ÀÏÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù!! ´ë»óÀÇ `/etc/passwd`¿¡ ¾Æ·¡¸¦ ÀÔ·ÂÇϼ¼¿ä. {{{ root::0:0:root:/root:/bin/bash }}} Ç׸ñµéÀº Äݷеé·Î ±¸ºÐµÇ¾î ÀÖÀ¸¸ç, ¿ÞÂʺÎÅÍ Â÷·Ê´ë·Î »ç¿ëÀÚ ID, (¾ÏȣȭµÈ)ºñ¹Ð¹øÈ£, »ç¿ëÀÚ ¹øÈ£, ±×·ì ¹øÈ£, »ç¿ëÀÚÀÇ À̸§, Ȩ µð·ºÅ丮, ±âº» ¼ÐÀÔ´Ï´Ù. = Sh-utils = ¿ì¸®°¡ ÇÊ¿ä·Î ÇÏ´Â ¸¶Áö¸· ²Ù·¯¹Ì´Â GNU sh-utilsÀÔ´Ï´Ù. ¿©±â¼­ ¿ì¸®°¡ ÇÊ¿äÇÑ °ÍÀº `/etc/init.d/rc`¿¡¼­ ¾²ÀÌ´Â `stty` »ÓÀÔ´Ï´Ù. `/etc/init.d/rc`´Â ·±·¹º§µé(runlevels)À» º¯°æÇÏ°í, Ãʱ⠷±·¹º§·Î ÁøÀÔÇÏ´Â µ¥ ¾²ÀÔ´Ï´Ù. »ç½Ç Àú´Â `stty` ¸¸À» Æ÷ÇÔÇÏ°í ÀÖ´Â ²Ù·¯¹Ì¸¦ °¡Áö°í¼­ »ç¿ëÇÏ¿´Áö¸¸, ¾îµð¿¡¼­ ±¸Çß´ÂÁö ±â¾ïÇÒ ¼ö ¾ø¾ú½À´Ï´Ù. ¿©·¯ºÐÀÌ ½Ã½ºÅÛÀ» ÆíÇÏ°Ô »ç¿ëÇϽñâ À§ÇØ ÇÊ¿ä·Î ÇÒ ´Ù¸¥ ÇÁ·Î±×·¥µéµµ Æ÷ÇԵǾî Àֱ⠶§¹®¿¡, GNU ²Ù·¯¹Ì¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÕ´Ï´Ù. ÀÚ ³¡³µ½À´Ï´Ù. ¿©·¯ºÐÀº ÀÌÁ¦ ºÎÆÃÇÏ°í ·Î±×ÀÎÀ» À§ÇÑ ÇÁ·ÒÇÁÆ®¸¦ ¿©·¯ºÐ¿¡°Ô Ãâ·ÂÇØ ÁÙ ½Ã½ºÅÛÀ» °¡Áö°Ô µÇ¾ú½À´Ï´Ù. ¿©·¯ºÐÀº ÀÌ°ÍÀ» °¡Áö°í ¸¹Àº ÀÏÀº ÇÏÁö ¸øÇÒ °ÍÀÔ´Ï´Ù. ¿©±â¿¡´Â ¿©·¯ºÐÀÇ °á°ú¹°À» º¸¿©ÁÙ `ls` ¸í·É¾îÁ¶Â÷ ¾ø½À´Ï´Ù. ÅÇ(tab)Å°¸¦ µÎ¹ø ´©¸£½Ã¸é °¡´ÉÇÑ ¸í·É¾îµéÀ» º¼ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ÀÌ°ÍÀÌ Á¦°¡ Çغ» °Í Áß¿¡¼­´Â °¡Àå ¸¸Á·½º·¯¿î °ÍÀÔ´Ï´Ù. = Æí¸®ÇÑ »ç¿ëÀ» À§Çؼ­ = ¿ì¸®°¡ °ÅÀÇ ¾µ¸ð¾ø´Â ½Ã½ºÅÛÀ» ¸¸µé¾ú´Ù°í »ý°¢µÉ ¼öµµ ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ½ÇÁ¦·Î´Â ÀÌ ½Ã½ºÅÛÀÌ ¹«¾ð°¡ Çϵµ·Ï Çϱâ À§ÇØ ÇØ¾ß ÇÒ ÀÏÀÌ ¸¹Áö´Â ¾Ê½À´Ï´Ù. ¿©·¯ºÐÀÌ °¡Àå ¸ÕÀú ÇØ¾ß ÇÒ ÀÏ ÁßÀÇ Çϳª´Â ·çÆ® ÆÄÀÏ ½Ã½ºÅÛÀ» Àбâ-¾²±â·Î ¸¶¿îÆ®ÇÏ´Â °ÍÀÔ´Ï´Ù. SysVinit ²Ù·¯¹Ì ¾È¿¡´Â ÀÌ¿Í °°Àº ÀÏÀ» ÇÏ°í `mount -a`¸¦ ½ÇÇàÇÏ¿© ¿©·¯ºÐÀÌ `/etc/fstab`¿¡ ½á ³õÀº ´ë·Î ÆÄÀϽýºÅÛÀ» ¸¶¿îÆ®ÇÏ´Â `/etc/init.d/mountall.sh`¶ó´Â ½ºÅ©¸³Æ®°¡ ÀÖ½À´Ï´Ù. `etc/rc2.d`¾È¿¡ `S05mountall`°ú °°Àº ½Éº¼¸¯ ¸µÅ©¸¦ ³ÖÀ¸½Ê½Ã¿À. ÀÌ ½ºÅ©¸³Æ®´Â ¿©·¯ºÐÀÌ ¾ÆÁ÷ ¼³Ä¡ÇÏÁö ¾ÊÀº ¸í·ÉµéÀ» »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ±×·¸´Ù¸é ±× ¸í·ÉÀ» Æ÷ÇÔÇÏ´Â ²Ù·¯¹Ì¸¦ ã¾Æ¼­ ¼³Ä¡ÇϽʽÿÀ. [#finding Àâ´ÙÇÑ ÆÁµé]¿¡ ¾î¶»°Ô ²Ù·¯¹ÌµéÀ» ã´ÂÁö¿¡ °üÇÑ µµ¿ò¸»ÀÌ ÀÖ½À´Ï´Ù. `/etc/init.d`ÀÇ ´Ù¸¥ ½ºÅ©¸³Æ®µéµµ º¸½Ê½Ã¿À. ±×µé ´ëºÎºÐÀº ´ëºÎºÐÀÇ ÁøÂ¥ ½Ã½ºÅÛ¿¡´Â Æ÷ÇԵǾî ÀÖ¾î¾ß ÇÕ´Ï´Ù. ±×µéÀ» Çϳª¾¿ ¼³Ä¡ÇØ º¸½Ê½Ã¿À. °¢°¢À» ¼³Ä¡Çϱ⠸ðµç °ÍÀÌ Àß µ¹¾Æ°£´Ù´Â °ÍÀ» È®ÀÎÇϽʽÿÀ. ÆÄÀÏ °èÃþ Ç¥ÁØ¿¡ ´ëÇØ ¾Ë¾Æº¸½Ê½Ã¿À. ([#FHS ÆÄÀϽýºÅÛ]À» º¸½Ê½Ã¿À.) ÀÌ°ÍÀº `/bin`°ú `/sbin`¿¡ ÀÖ¾î¾ß ÇÒ ¸í·É¾îµéÀÇ ¸ñ·ÏÀ» Á¦°øÇÕ´Ï´Ù. ¸ðµç ¸í·É¾îµéÀÌ ¼³Ä¡µÇ¾ú´ÂÁö È®ÀÎÇϽʽÿÀ. ÀÌ°ÍÀ» ±ÔÁ¤ÇÑ POSIX ¹®¼­¸¦ ã¾Æ º¸½Ã¸é ´õ ÁÁÀ» °ÍÀÔ´Ï´Ù. ¿©±â¼­ºÎÅÍ´Â ¿©·¯ºÐÀÌ ÇÊ¿äÇÑ °ÍÀÌ ÀÖ´Â ²Ù·¯¹Ì¸¦ °è¼Ó ¼³Ä¡ÇÏ½Ã¸é µË´Ï´Ù. `gcc`¿Í `make` °°Àº ¼³Ä¡ µµ±¸µéÀ» ¼³Ä¡ÇÏ´Â °ÍÀº ºü¸¦¼ö·Ï ÁÁ½À´Ï´Ù. À̵éÀÌ ¼³Ä¡µÇ¸é, ¿©·¯ºÐÀº ´ë»ó ½Ã½ºÅÛ¿¡¼­ ½º½º·Î¸¦ ¼³Ä¡ÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ÀÌ´Â ¹ÙÅÁ ½Ã½ºÅÛ¿¡¼­ ÇÏ´Â °Íº¸´Ù ´ú º¹ÀâÇÕ´Ï´Ù. = Ãß°¡ Á¤º¸ = == Àâ´ÙÇÑ ÆÁµé == [[Anchor(finding)]] ¸¸¾à ¿©·¯ºÐÀÌ RPMÀ» Áö¿øÇÏ´Â ¸®´ª½º ½Ã½ºÅÛ¿¡¼­ `thingy`¶ó´Â ¸í·ÉÀÌ ÀÖ°í, ÀÌ ¸í·ÉÀ» ¾òÀ» ¼ö ÀÖ´Â ¼Ò½º¸¦ ¾Ë°í ½ÍÀ¸½Ã´Ù¸é ¾Æ·¡ÀÇ ¸í·ÉÀ» ¾²½Ã±â ¹Ù¶ø´Ï´Ù. {{{ rpm -qif `which thingy` }}} ¿©·¯ºÐÀÌ ·¡µåÇÞ CD¸¦ °¡Áö°í ÀÖ´Ù¸é, ¿©·¯ºÐÀº ¾Æ·¡ÀÇ Äڵ带 ÀÌ¿ëÇÏ¿© ¼Ò½º Äڵ带 ¼³Ä¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. {{{ rpm -i /mnt/cdrom/SRPMS/what.it.just.said-1.2.srpm }}} ÀÌ°ÍÀº Ÿ¸£º¼°ú ·¡µåÇÞÀÇ ÆÐÄ¡µéÀ» `/usr/src/redhat/SOURCES`¿¡ Ç®¾î ³õÀ» °ÍÀÔ´Ï´Ù. == ¸µÅ© == * [http://www.linuxdoc.org/HOWTO/Software-Building.html Software Building mini-HOWTO]´Â ¼ÒÇÁÆ®¿þ¾î¸¦ ¼Ò½º·ÎºÎÅÍ ¼³Ä¡ÇÏ´Â °Í¿¡ ´ëÇÑ ÁÁÀº ¹Ì´Ï ÇÏ¿ìÅõÀÔ´Ï´Ù. * [http://www.linuxfromscratch.org The Linux From Scratch HOWTO]´Â ¸®´ª½º ½Ã½ºÅÛÀ» ¼Ò½º·ÎºÎÅÍ ¼³Ä¡ÇÏ´Â °Í¿¡ ´ëÇÑ ÇÏ¿ìÅõÀÔ´Ï´Ù. ÀÌ°ÍÀº ¹è¿ì±â À§ÇÑ ¿¬½ÀÀ¸·Î¼­ ¼³Ä¡ÇÏ´Â °Í º¸´Ù ½ÇÁ¦·Î »ç¿ëÇϱâ À§ÇØ ¼³Ä¡ÇÏ´Â °Í¿¡ ´õ ÁýÁßÇÕ´Ï´Ù. * [[Anchor(FHS)]][ftp://tsx-11.mit.edu/pub/linux/docs/linux-standards/fsstnd/ À¯´Ð½º ÆÄÀÏ ½Ã½ºÅÛ Ç¥ÁØ(Unix File System Standard)] [http://www.pathname.com/fhs/ À¯´Ð½º ÆÄÀÏ ½Ã½ºÅÛ Ç¥ÁØ¿¡ ´ëÇÑ ¶Ç ´Ù¸¥ ¸µÅ©] ÀÌ ¹®¼­´Â À¯´Ð½º ÆÄÀÏ ½Ã½ºÅÛ¿¡¼­ ¹«¾ùÀÌ ¾îµð¿¡ ÀÖ¾î¾ß Çϸç, ±× ÀÌÀ¯´Â ¹«¾ùÀÎÁö ¼³¸íÇÕ´Ï´Ù. ¶ÇÇÑ, `/bin`, `/sbin` µî¿¡ ÃÖ¼ÒÇÑ ¹«¾ùÀÌ ÀÖ¾î¾ß ÇÏ´ÂÁö¸¦ ¼³¸íÇÕ´Ï´Ù. ¿©·¯ºÐÀÌ ¿ÏÀüÇÏÁö¸¸ °¡´ÉÇÑ ÇÑ ÀÛÀº ½Ã½ºÅÛÀ» ¸¸µå·Á°í ÇϽŴٸé ÁÁÀº Âü°í ÀÚ·áÀÔ´Ï´Ù. = ÀÌ ¹®¼­¿¡ ´ëÇؼ­ = == ÀúÀÛ±Ç == 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 [http://www.gnu.org/copyleft/gpl.html GNU General Public Licence]. Please acknowledge me if you use all or part of this in another document. == ȨÆäÀÌÁö == ÀÌ ¹®¼­ÀÇ ÃÖ½ÅÆÇÀº [http://learning.taslug.org.au/power2bash From Powerup To Bash Prompt]¿¡ ÀÖ½À´Ï´Ù. == Çǵå¹é == Àú´Â ¿©·¯ºÐÀÇ ¾î¶°ÇÑ Á¶¾ðÀ̳ª ºñÆò, °³¼±À» À§ÇÑ Á¦¾Èµµ µè°í ½Í½À´Ï´Ù. ±×°ÍµéÀ» Àú, [mailto:gcokeefe@postoffice.utas.edu.au Greg O'Keefe]¿¡°Ô º¸³»½Ê½Ã¿À. == °¨»ç == [[Anchor(acknowledge)]] Á¦Ç° À̸§µéÀº °¢°¢ÀÇ ¼ÒÀ¯ÀÚÀÇ »óÇ¥À̸ç, ¿©±â¿¡¼­ °¨»ç¸¦ µå¸³´Ï´Ù. ÀÌ ¹®¼­¸¦ ¾µ ¼ö ÀÖµµ·Ï µµ¿ÍÁֽŠµ¥ ´ëÇØ ¾Æ·¡ÀÇ ºÐµé²² °¨»ç¸¦ µå¸®°í ½Í½À´Ï´Ù. Michael Emery Unios¸¦ ¾Ë·Á Áּ̽À´Ï´Ù. Tim Little `/etc/passwd`¿¡ ´ëÇØ µµ¿òÀ» Áּ̽À´Ï´Ù. efnetÀÇ #linux¿¡ °è½Å sPaKr syslogd´Â `/etc/services`¸¦ ÇÊ¿ä·Î ÇÑ´Ù´Â °ÍÀ» ¾Ë·ÁÁּ̰í, ½Ã½ºÅÛÀ» ¼Ò½º ÄÚµå·Î ¼³Ä¡ÇÏ´Â °ÍÀ» ¹¦»çÇϱâ À§ÇÑ "¿©·¯ºÐÀÇ °ÍÀ» µ¹¸°´Ù(rolling your own)"´Â Ç¥ÇöÀ» ¼Ò°³ÇØ Áּ̽À´Ï´Ù. Alex Aitkin Àú¿¡°Ô Vico¿Í ±×ÀÇ "verum ipsum factum"(understanding arises through making, ÀÌÇØ´Â ¸¸µê¿¡¼­ ±â¿øÇÑ´Ù)À» Àú¿¡°Ô ¼Ò°³ÇØ Áּ̽À´Ï´Ù. Dennis Scott ÀúÀÇ 16Áø¼ö °è»êÀ» °íÃÄ Áּ̽À´Ï´Ù. jdd ¿ÀÀÚµéÀ» ÁöÀûÇØ Áּ̽À´Ï´Ù. == º¯°æ ±â·Ï == === 0.8 -> 0.9 === * Added hack to sysvinit makefile. This info is due to Gerard Beekmans of "Linux From Scratch" fame. === 0.8 === * ù¹ø° ÆÇ. "From PowerUp to Bash Prompt"¿¡¼­ ºÐ¸®ÇÔ. == ÇÒ ÀÏ == * ´ÚºÏÀ¸·Î º¯È¯Çϱâ.