¸®´ª½º¿¡¼­ ·¥µð½ºÅ© ºí·° µð¹ÙÀ̽º »ç¿ëÇϱâ ------------------------------------------ Paul Gortmaker 95³â 12¿ù ¿Å±äÀÌ: Â÷ÇöÁø(xunil@linuxfan.com) 99³â 6¿ù 28ÀÏ ¼ø¼­: 1) °³¿ä 2) Ä¿³Î ¸í·É¾î ¶óÀÎ ÆĶó¹ÌÅÍ 3) »õ·Î¿î Ä¿³Î¿¡ "rdev -r" ¸í·É¾î »ç¿ëÇϱâ 4) ¾ÐÃà ·¥µð½ºÅ© ¸¸µå´Â ¿¹Á¦ 1) °³¿ä ------- Ä¿³Î ¹öÀü 1.3.48ÀÌÈÄ·Î ·¥µð½ºÅ© µå¶óÀ̹ö´Â ¸¹Àº ºÎºÐÀÌ ¹Ù²î¾ú´Ù. ¿¹Àü ¹öÀüÀº ºÎÆýà Ŀ³ÎÀÌ ¸Þ¸ð¸®¸¦ °ü¸®Çϱâ Àü¿¡ ¸Þ¸ð¸®¸¦ ¶¼¾î³» »ç¿ëÇ߱⠶§¹®¿¡ "ramdisk=1440 À̳ª rdev -r /dev/fd0 1440"°°Àº Å©±â ÆĶó¹ÌÅ͸¦ ÁöÁ¤Çؼ­ ¾ó¸¶¸¸Å­ÀÇ ¸Þ¸ð¸®¸¦ ÀâÀ» °ÍÀÎÁö¸¦ Ä¿³Î¿¡°Ô ¾Ë·ÁÁà¾ß Çß´Ù. ÇÏÁö¸¸ Áö±ÝÀÇ ·¥µð½ºÅ©´Â °ø°£ÀÌ ÇÊ¿äÇÒ ¶§¸¶´Ù µ¿ÀûÀ¸·Î ÀÚ¶ó³ª°Ô µÈ´Ù. ÀÌ´Â ·¥À» ¹öÆÛ Ä³½¬¸¦ ÀÌ¿ëÇؼ­ ¾²±â ¶§¹®ÀÌ´Ù. µå¶óÀ̹ö´Â ÀÚ½ÅÀÌ ¾²´Â ¹öÆÛ¸¦ Ä¿³ÎÀÌ ³ªÁß¿¡ »ç¿ëÇÏÁö ¸øÇÏ°Ô ÇÏ·Á°í "BH_Protected" Ç÷¡±×¸¦ Ç¥½ÃÇØ ³õ´Â´Ù. µû¶ó¼­ ¿¹Àü¿¡ ¾²´ø Å©±â ÆĶó¹ÌÅÍ´Â ´õ ÀÌ»ó ÇÊ¿ä°¡ ¾ø°Ô µÆ°í »õ·Î¿î ¸í·É¾î ¶óÀÎ ÆĶó¹ÌÅÍ°¡ »ý°å´Ù. ¶ÇÇÑ "rdev -r" À̳ª "ramsize"(º¸Åë rdev·Î ½Éº¼¸¯ ¸µÅ©°¡ µÇ¾î ÀÖ´Ù.) ¸í·É¾îµµ ¹Ù²î¾ú´Ù. »õ·Î¿î ·¥µð½ºÅ©´Â 16°³ÀÇ ·¥µð½ºÅ©±îÁö Áö¿øÀ» ÇÏÁö¸¸ rd.c¸¦ ¾à°£ °íÃÄÁÖ¸é 255°³±îÁö Áö¿øÇÒ ¼ö°¡ ÀÖ´Ù. 1°³ ÀÌ»óÀÇ ·¥µð½ºÅ©¸¦ ¾²·Á¸é 'mknod /dev/ramX b 1 X'(X=¼ýÀÚ)¸¦ ÇÏ°í 'chmod'¸¦ ½á¼­ Æ۹̼ÇÀ» ¹Ù²ãÁà¶ó. ±âº» /dev/ram(disk)´Â ¸¶ÀÌ³Ê ³Ñ¹ö 1À» ¾²´Ï±î ram2ºÎÅÍ ½ÃÀÛÇؼ­ ÇÊ¿äÇÑ ¸¸Å­ ¸¸µé¸é µÈ´Ù. Á» ´õ È®½ÇÈ÷ Çϱâ À§Çؼ­ ¿¹ÀüÀÇ "ramdisk="´Â "ramdisk_size="·Î ¹Ù²î¾ú´Ù. ¿ø·¡ÀÇ "ramdisk="´Â ȣȯ¼ºÀ» À§ÇØ ¾ÆÁ÷ ³²¾Æ ÀÖÁö¸¸ Ä¿³Î ¹öÀü 2.1.X Á¤µµ Âë¿¡¼­ ¾ø¾îÁú °ÍÀÌ´Ù. »õ·Î¿î ·¥µð½ºÅ©´Â ¾ÐÃàµÈ ·¥µð½ºÅ© À̹ÌÁö¸¦ ·ÎµåÇÒ ¼ö°¡ ÀÖ´Ù. ÀÌ·Î½á ¼³Ä¡ µð½ºÄϳª º¹±¸ µð½ºÄÏ¿¡ Á» ´õ ¸¹Àº ÇÁ·Î±×·¥ÀÌ ¾ÐÃàµÇ¾î µé¾î°¥ ¼ö°¡ ÀÖ´Ù. ÁÖÀÇ: ´ç½ÅÀÇ ½Ã½ºÅÛ¿¡ "/dev/ram"À̳ª "/dev/ramdisk", ȤÀº µÑ ´Ù ÀÖÀ» ¼ö ÀÖ´Ù. ÀÌ ¹®¼­¿¡¼­´Â À̵éÀ» ¶È°°ÀÌ Ãë±ÞÇÑ´Ù. ¶Ç, »õ·Î¿î ·¥µð½ºÅ©´Â config ¿É¼ÇÀÌ µÇ¾ú´Ù. "make config"¸¦ ÇÒ ¶§ ·¥µð½ºÅ©¸¦ ³ÖÀ»Áö »¬Áö¸¦ °áÁ¤ÇÒ ¼ö°¡ ÀÖ´Ù. 2) Ä¿³Î ¸í·É¾î ¶óÀÎ ÆĶó¹ÌÅÍ ---------------------------- ramdisk_start=NNN ================= Ç÷ÎÇÇ µð½ºÄÏ¿¡ Ä¿³ÎÀÌ ¾ÐÃàµÈ ·¥µð½ºÅ© À̹ÌÁö¿Í °°ÀÌ ÀÖÀ» °æ¿ì¸¦ À§ÇØ "ramdisk_start=" ¸í·É¾î°¡ Ãß°¡µÇ¾ú´Ù. ÇÏÁö¸¸ Ä¿³ÎÀº ¾ÐÃàµÈ ·¥µð½ºÅ© ÆÄÀÏ ½Ã½ºÅÛ À̹ÌÁö¿¡ Æ÷Ç﵃ ¼ö°¡ ¾ø´Ù. ¿Ö³ÄÇϸé Ä¿³ÎÀÌ 0¹ø° ºí·°ºÎÅÍ ÀÖ¾î¾ß ¹ÙÀÌ¿À½º°¡ ºÎÆ® ¼½Å͸¦ ÀÐÀ» ¼ö ÀÖ°í ±× ´ÙÀ½¿¡ Ä¿³ÎÀÌ ÀÚ±â ÀÚ½ÅÀ» °è¼ÓÇؼ­ ºÎÆÃÇØ ³ª°¡±â ¶§¹®ÀÌ´Ù. ÁÖÀÇ: ¸¸¾à ¾ÐÃàµÇÁö ¾ÊÀº ·¥µð½ºÅ© À̹ÌÁö¸¦ ¾´´Ù¸é Ä¿³ÎÀº ·¥µð½ºÅ©·Î ·ÎµåµÉ ÆÄÀÏ ½Ã½ºÅÛÀÇ ÀϺκÐÀÌ µÉ ¼ö°¡ ÀÖ°í, ¸®·Î·Î µð½ºÄÏÀ» ºÎÆà ½Ãų ¼ö ÀÖ´Ù. ȤÀº ÀÌ µÎ°¡Áö´Â ¾ÐÃà À̹ÌÁö¿¡¼­Ã³·³ µÎ ÀåÀ¸·Î ³ª´©¾î Áú ¼ö°¡ ÀÖ´Ù. µð½ºÄÏ µÎ ÀåÀ¸·Î ºÎÆ®/·çÆ® ½Ã½ºÅÛ(Ä¿³ÎÀº 1¹ø µð½ºÄÏ, ·¥µð½ºÅ© À̹ÌÁö´Â 2¹ø µð½ºÄÏ)À» ¾´´Ù¸é ·¥µð½ºÅ©´Â 0¹ø ºí·°¿¡¼­ ½ÃÀÛÇÒ °ÍÀÌ°í ¿É¼ÂÀº ´ç¿¬È÷ 0ÀÌ µÉ °ÍÀÌ´Ù. ÀÌ ¶§ÀÇ 0Àº ±âº»°ªÀ̱⠶§¹®¿¡ "ramdisk_start" ¿É¼ÇÀº ÁÖÁö ¾Ê¾Æµµ µÈ´Ù. µð½ºÄÏ ÇÑ Àå¿¡ 350 kb Á¤µµÀÇ "zImage"(Ä¿³Î)¿Í 1 Mb Á¤µµÀÇ "fs_image.gz"(¾ÐÃàµÈ ÆÄÀÏ ½Ã½ºÅÛ)À» ³Ö´Â´Ù¸é ÀÌ ¶§´Â ¿É¼ÂÀ» Á¤ÇØ Áà¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î "fs_image.gz" ¸¦ µð½ºÄÏÀÇ 400 kb À§Ä¡¿¡ ÀúÀåÇß´Ù¸é, "ramdisk_start=400" À̶ó°í ½á¾ß µÉ °ÍÀÌ´Ù. load_ramdisk=N ============== ÀÌ ÆĶó¹ÌÅÍ´Â ·¥µð½ºÅ© À̹ÌÁö¸¦ ÀÐÀ» °ÍÀÎÁö ¾Æ´ÑÁö¸¦ ÁöÁ¤ÇÑ´Ù. "load_ramdisk=1"À̶ó°í Çϸé Ç÷ÎÇÇ¿¡¼­ ·¥µð½ºÅ©·Î ÀÐÀ» °ÍÀÌ´Ù. ±âº»°ªÀº 0ÀÌ´Ù. prompt_ramdisk=N ================ ÀÌ ÆĶó¹ÌÅÍ´Â ·¥µð½ºÅ© À̹ÌÁö¸¦ °®°í ÀÖ´Â µð½ºÄÏÀ» ³ÖÀ» ¼ö ÀÖ°Ô Àá½Ã ¸ØÃâ ¼ö ÀÖ´ÂÁö ¾ø´ÂÁö¸¦ °áÁ¤ÇÑ´Ù. µð½ºÄÏ ÇÑ Àå¿¡ Ä¿³Î°ú ·¥µð½ºÅ© À̹ÌÁö°¡ °°ÀÌ µé¾î ÀÖ´Ù¸é Àá½Ã ¸ØÃâ ÇÊ¿ä°¡ ¾øÀ¸¹Ç·Î "prompt_ramdisk=0"À̶ó°í ÇÏ¸é µÈ´Ù. ÇÏÁö¸¸ µÎ ÀåÀ¸·Î ³ª´²Á® ÀÖ´Ù¸é µð½ºÄÏÀ» ¹Ù²Ü ½Ã°£ÀÌ ÇÊ¿äÇϹǷΠ"prompt_ramdisk=1"À̶ó°í ÇÏ¸é µÈ´Ù. ±âº»°ªÀº 1ÀÌ´Ù. ramdisk_size=N ============== ·¥µð½ºÅ© µå¶óÀ̹ö°¡ ·¥µð½ºÅ©¸¦ N k Å©±â·Î Àâ°Ô ÇÑ´Ù. ±âº»°ªÀº 4096 (4 MB)ÀÌ´Ù. 3) »õ·Î¿î Ä¿³Î¿¡ "rdev -r" ¸í·É¾î »ç¿ëÇϱâ ------------------------------------------ "rdev -r" ¸í·É¾î°¡ ¼¼Æ®ÇÏ´Â Ä¿³Î À̹ÌÁö¿¡ ÀÖ´Â ¿öµå(2 ¹ÙÀÌÆ®)ÀÇ »ç¿ë¹ýÀÌ ¹Ù²î¾ú´Ù. ÇÏÀ§ 11ºñÆ®(0-10)´Â ·¥µð½ºÅ©¸¦ 2 Mb(2^11)±îÁöÁß ¾îµð¼­ ãÀ» °ÍÀÎÁö¸¦ ÁöÁ¤ÇØÁØ´Ù(¿¡Àü¿£ Å©±â¸¦ ³ªÅ¸³Â´Ù.). 14 ºñÆ®´Â ·¥µð½ºÅ©°¡ ·ÎµåµÉÁö ¾È µÉÁö¸¦ ³ªÅ¸³»°í, 15 ºñÆ®´Â ·¥µð½ºÅ©¸¦ ÀбâÀü¿¡ ¸ØÃâÁö ¾È ¸ØÃâÁö¸¦ ³ªÅ¸³½´Ù. ·¥µð½ºÅ©°¡ µ¿ÀûÀ¸·Î ÀÚ¶ö ¼ö Àֱ⠶§¹®¿¡ Å©±â Çʵå´Â ÇÊ¿ä°¡ ¾ø¾îÁ³´Ù. 11 ºñÆ®ºÎÅÍ 13 ºñÆ® ±îÁö´Â ÇöÀç ¾²ÀÌÁö ¾Ê°í 0À¸·Î ä¿öÁ® ÀÖ´Ù. ¾Æ·¡ ¼ýÀÚµéÀº º¸±â¿Í´Â ´Ù¸£°Ô ¹«½¼ ½Åºñ½º·¯¿î ºñ¹ÐÀÌ ¾Æ´Ï´Ù. ./arch/i386/kernel/setup.c:#define RAMDISK_IMAGE_START_MASK 0x07FF ./arch/i386/kernel/setup.c:#define RAMDISK_PROMPT_FLAG 0x8000 ./arch/i386/kernel/setup.c:#define RAMDISK_LOAD_FLAG 0x4000 ÀüÇüÀûÀÎ µð½ºÄÏ µÎ ÀåÂ¥¸® »óȲÀ» »ý°¢ÇØ º¸ÀÚ. ù ¹ø° µð½ºÄÏ¿¡´Â Ä¿³ÎÀÌ µé¾î ÀÖÀ» °ÍÀÌ°í, µÎ ¹ø° µð½ºÄÏ¿¡´Â ·¥µð½ºÅ© À̹ÌÁö°¡ ÀÖÀ» °ÍÀÌ´Ù. ·¥µð½ºÅ©´Â µð½ºÄÏÀÇ Ã³À½¿¡¼­ 0 kb ¶³¾îÁø °÷¿¡¼­ ½ÃÀÛÀ» ÇϹǷΠ0¹ø ºñÆ®¿¡¼­ 13¹ø ºñÆ®´Â 0À¸·Î ¼¼Æ®¸¦ ÇØ¾ß ÇÒ °ÍÀÌ´Ù. "ramdisk_start=0" ·¥µð½ºÅ©°¡ ·ÎµåµÉ °ÍÀ̹ǷΠ14¹ø ºñÆ®´Â ¼¼Æ®°¡ µÇ¾î¾ß ÇÒ °ÍÀÌ´Ù. "load_ramdisk=1" µð½ºÄÏÀ» °¥¾Æ ³¢¿ö¾ß ÇϹǷΠ15¹ø ºñÆ® ¿ª½Ã ¼¼Æ®°¡ µÇ¾î¾ß ÇÑ´Ù. "prompt_ramdisk=1" À̰͵éÀ» ´Ù ÇÕÄ¡¸é rdev ¿öµå¿¡ µé¾î°¥ °ªÀº 2^15 + 2^14 + 0 = 49152°¡ µÈ´Ù. Ä¿³ÎÀÌ µé¾î°¥ µð½ºÄÏÀº ´ÙÀ½°ú °°ÀÌ ¸¸µé¸é µÇ°Ú´Ù. /usr/src/linux# cat arch/i386/boot/zImage > /dev/fd0 /usr/src/linux# rdev /dev/fd0 /dev/fd0 /usr/src/linux# rdev -r /dev/fd0 49152 ºÎÆ® µð½ºÄÏÀÌ ¸®·Î·Î ºÎÆÃÀÌ µÈ´Ù¸é À§ÀÇ ÀÛ¾÷Àº ´ÙÀ½Ã³·³ °£´ÜÇØÁø´Ù. append = "ramdisk_start=0 load_ramdisk=1 prompt_ramdisk=1" ramdisk_start = 0 °ú prompt_ramdisk = 1 ÀÌ ±âº»°ªÀ̹ǷΠÀÌ·¸°Ô ¾µ ¼öµµ ÀÖ´Ù. append = "load_ramdisk=1" 4) ¾ÐÃà ·¥µð½ºÅ© ¸¸µå´Â ¿¹Á¦ ·¥µð½ºÅ© À̹ÌÁö¸¦ ¸¸µé·Á¸é ¿©ºÐÀÇ ºí·° µð¹ÙÀ̽º°¡ ÀÖ¾î¾ß ÇÑ´Ù. ·¥µð½ºÅ© ÀÚü ¿¡¼­ ¸¸µé¼öµµ ÀÖ°í »ç¿ëÇÏÁö ¾Ê´Â µð½ºÅ© ÆÄƼ¼Ç(¾ð¸¶¿îÆ®µÈ ½º¿Ò ÆÄƼ¼Ç °°Àº)¿¡¼­ ÇÒ ¼öµµ ÀÖ´Ù. ÀÌ ¿¹Á¦¿¡¼­´Â ·¥µð½ºÅ© µð¹ÙÀ̽º, "/dev/ram"¸¦ »ç¿ëÇÒ °ÍÀÌ´Ù. ÁÖÀÇ: ÀÌ ¹æ¹ýÀº 8 MbÀÌÇÏÀÇ ·¥À» °¡Áø ½Ã½ºÅÛ¿¡¼­ Çؼ­´Â ¾È µÈ´Ù. /dev/ram ´ë½Å¿¡ ¿©ºÐÀÇ µð½ºÅ© ÆÄƼ¼ÇÀ» ¾´´Ù¸é ÀÌ Á¦ÇÑ »çÇ×Àº Àû¿ëµÇÁö ¾Ê´Â´Ù. °¡) ¾ó¸¶¸¸Å­À» ·¥µð½ºÅ©·Î ¾µ °ÍÀÎÁö °áÁ¤Ç϶ó. ¿©±â¼­´Â 2 Mb ¸¦ ¾²°Ú´Ù. ·¥µð½ºÅ© µð¹ÙÀ̽º¸¦ 2 Mb ·Î ¸¸µé¾î¶ó.(ÀÌ ´Ü°è´Â Áö±ÝÀº ºÒÇÊ¿äÇÏÁö¸¸ ³ªÁß¿¡ ¾²ÀÏÁöµµ ¸ð¸¥´Ù.) ¿©±â¸¦ 0À¸·Î ä¿ì´Â °ÍÀÌ ÁÁ´Ù.(ÀÏ¹Ý µð½ºÅ© °°Àº °æ¿ì´Â Ưº°È÷ ´õ ±×·¸´Ù.) ¿Ö³ÄÇÏ¸é ´ç½ÅÀÌ ¸¸µç À̹ÌÁö°¡ Â÷ÁöÇÏ°í ³²Àº °ø°£Àº ÀÌ ¶§ ÃÖ°í·Î ¾ÐÃàµÇ±â ¶§¹®ÀÌ´Ù. dd if=/dev/zero of=/dev/ram bs=1k count=2048 ³ª) °Å±â´Ù°¡ ÆÄÀÏ ½Ã½ºÅÛÀ» ¸¸µé¾î¶ó. ¿ì¸®´Â ext2fs¸¦ ¸¸µéÀÚ. mke2fs -vm0 /dev/ram 2048 ´Ù) ¸¶¿îÆ®¸¦ ÇÏ°í ÇÊ¿äÇÑ ÆÄÀϵé(/etc/* /dev/* ...)À» º¹»çÇÑ µÚ, ¾ð¸¶¿îÆ®¸¦ Çضó. ¶ó) ·¥µð½ºÅ©¸¦ ¾ÐÃàÇضó. ÆÄÀÏÀÌ Â÷ÁöÇÏ°í ÀÖ´Â °ø°£ÀÇ 50%Á¤µµ°¡ ¾ÐÃàÀÌ µÉ °ÍÀÌ´Ù. ¾È ¾²°í ³²Àº ºÎºÐÀº ¾ÐÃà¿¡¼­ Á¦¿ÜµÉ °ÍÀÌ´Ù. dd if=/dev/ram bs=1k count=2048 | gzip -v9 > /tmp/ram_image.gz ¸¶) Ä¿³ÎÀ» µð½ºÄÏ¿¡´Ù Áý¾î³Ö¾î¶ó. dd if=zImage of=/dev/fd0 bs=1k ¹Ù) ·¥µð½ºÅ© À̹ÌÁö¸¦ Ä¿³Î µÚÂÊ¿¡ Áý¾î³Ö¾î¶ó. ÀÌ ¶§ ½ÇÁ¦ Ä¿³Îº¸´Ù ¾à°£ Å« °ªÀ» ¿É¼ÂÀ¸·Î ¾²¸é ³ªÁß¿¡ (´õ Å«) ´Ù¸¥ Ä¿³ÎÀ» ³ÖÀ» ¶§, ·¥µð½ºÅ© À̹ÌÁö¸¦ µ¤¾î ¾²Áö ¾Ê´Â´Ù. 350 kb Â¥¸® Ä¿³ÎÀ̶ó¸é ¿É¼ÂÀ» 400 kb Á¤µµ ÁÖ´Â °ÍÀÌ Àû´çÇÒ °ÍÀÌ´Ù. ÁÖÀÇÇÒ Á¡Àº ¿É¼Â + ram_image.gz ÀÇ Å©±â°¡ µð½ºÄÏ ¿ë·®º¸´Ù Å©¸é ¾È µÈ´Ù´Â °ÍÀÌ´Ù.(º¸Åë 1440 kb) dd if=/tmp/ram_image.gz of=/dev/fd0 bs=1k seek=400 »ç) "rdev" ¸í·É¾î¸¦ ½á¼­ ºÎÆ® µð¹ÙÀ̽º³ª ·¥µð½ºÅ© ¿É¼Â, ÇÁ·ÒÇÁÆ® Ç÷¡±× µîÀ» ¼¼Æ®Çضó. ÀÌ ¿¹Á¦¿¡¼­ ¾µ °ªÀº prompt_ramdisk=1, load_ramdisk=1, ramdisk_start=400 À̹ǷΠ2^15 + 2^14 + 400 = 49552 °¡ µÉ °ÍÀÌ´Ù. rdev /dev/fd0 /dev/fd0 rdev -r /dev/fd0 49552 ¿©±â±îÁö! ÀÌÁ¦ ¾ÐÃàµÈ ºÎÆ®/·çÆ® ·¥µð½ºÅ© µð½ºÄÏÀÌ »ý°å´Ù. ¶ó)¿¡¼­ ¹Ù)±îÁö´Â ÆÄÀÌÇÁ¸¦ ½á¼­ ÇÒ ¼öµµ ÀÖÀ» °ÍÀÌ´Ù. ----------------------------------------------------------------------------- Paul Gortmaker 95³â 12¿ù ----------------------------------------------------------------------------- Çؼ®: Â÷ÇöÁø(xunil@linuxfan.com) 99³â 6¿ù 28ÀÏ