¿©·¯ °¡Áö Ä¿³Î ÆÁ #2

±Û¾´ÀÌ: Dave Jones (dave@ext2.net)
¿Å±äÀÌ: ÀÓÁ¾±Õ (hermes44@secsm.org)
¿ø¹®: http://ext2.linuxberg.com/99/07/kernel/070699-kernel1.shtml

³»°¡ ¹ÞÀº ÆíÁö·Î ÆÇ´ÜÇØ º¼ ¶§, System.map ÆÄÀÏÀº ¿©ÀüÈ÷ »ç¶÷µé¿¡°Ô´Â ¾î·Á¿î °Í °°´Ù. ±×·¡¼­ Ä¿³Î ¸ÞÀϸµ ¸®½ºÆ®¿¡¼­ ±× ÆÄÀÏ¿¡ ´ëÇÑ ±ä³ª±ä Åä·ÐµéÀ» Àо¾Ò´Ù.

¶Ç ¸î¸î »ç¶÷µéÀº ¸í·ÉÇà¿¡ '-j n'À» Ãß°¡ÇÏ´Â °Í¿¡ (Áï `make -j 32 bzImage`) ´ëÇÑ ¸Þ¼¼Áö¸¦ º¸°í ÆíÁö¸¦ º¸³Â´Ù. ¾î¶² »ç¶÷µéÀº ´ÜÀÏ ÇÁ·Î¼¼¼­ ½Ã½ºÅÛ¿¡¼­ ±×°ÍÀÇ À¯È¿¼º¿¡ ´ëÇØ Áú¹®Çß´Ù.

³­ 64MB RAMÀÇ K6-233 ½Ã½ºÅÛ¿¡¼­ Å×½ºÆ®¸¦ Çß´Ù. ÀÛ¾÷ÀÇ ¼ö¸¦ ¹Ù²ã°¡¸é¼­ Ä¿³ÎÀ» ÄÄÆÄÀÏÀ» ÇÏ¿´´Ù. µ¿½Ã ºôµåÀÇ ¼ö¸¦ ´Ã¸®¸é Ä¿³Î ºôµå´Â ´õ »¡¶óÁø´Ù. ÇÑ°è´Â -j 32·Î º¸ÀδÙ. (ºôµå ½Ã°£À» °ÅÀÇ 1ºÐ Á¤µµ ÁÙ¿´´Ù.) ÀÌ ÀÌ»óÀº °ÅÀÇ Çâ»óÀÌ ¾ø´Â °Í °°´Ù. SMP ½Ã½ºÅÛ¿¡¼­ ´õ ¸¹Àº À̵æÀ» º¼ ¼ö ÀÖ´Â °ÍÀÌ ¸ÂÁö¸¸, Å×½ºÆ®´Â ´ÜÀÏ ÇÁ·Î¼¼¼­ ½Ã½ºÅÛ¿¡¼­µµ ¿ª½Ã -j´Â À¯È¿ÇÑ ÆÁÀ̶õ °ÍÀ» º¸¿©ÁØ´Ù.

Liviu SasÀº 'nice --20 make bzImage' ¶ÇÇÑ ÄÄÆÄÀÏ ¼Óµµ¸¦ ³ôÀÌ´Â À¯¿ëÇÑ ÆÁÀ̶ó´Â Á¦¾ÈÀ» º¸³»ÁÖ¾ú´Ù.

John Slee´Â lilo.conf ÀÚµ¿ »ý¼º±â¸¦ º¸³»ÁÖ¾ú´Ù. ÀÌ ÀÛÀº ½ºÅ©¸³Æ®´Â /boot¿¡¼­ ¸ðµç ¾ÈÁ¤ Ä¿³ÎÀ» ã¾Æ¼­ lilo.conf¸¦ ¸¸µç´Ù. °¡Àå ³ôÀº ¹öÀüÀÇ Ä¿³ÎÀ» ±âº»°ªÀ¸·Î Àâ´Â´Ù.

±âº»À¸·Î ÇÊ¿äÇÑ ÀÛ¾÷Àº ¸ðµç lilo.conf¿¡ Æ÷Ç﵃ ¿É¼ÇµéÀ» °¡Áö°í ÀÖ´Â /etc/lilo.conf.static ÆÄÀÏÀ» ¸¸µå´Â °ÍÀÌ´Ù. ±× ÈÄ, ¾Æ¹« ÀÎÀÚ¾øÀÌ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇϱ⸸ ÇÏ¸é µÈ´Ù. lilo.conf¸¦ ¸¸µé°í »õ ºÎÆ®·Î´õ¸¦ ¼³Ä¡ÇÑ´Ù.

³»°¡ º¸±â¿¡ ÇÑ °¡Áö ´ÜÁ¡Àº ºÎÆ® Ç׸ñº°·Î ¿É¼ÇÀ» ³ÖÀ» ¼ö ¾ø´Ù´Â °ÍÀÌ´Ù.

#!/bin/bash

umask 772
kernel_dir=/boot

# lilo assumes the default image is the first one in lilo.conf, so
# we sort the kernel images backwards, hence the highest-version'd kernel
# will be the default.
images=`cd $kernel_dir && ls -1 vmlinuz-* \
  | egrep "vmlinuz-([0-9]+).([0-9]+).([0-9]+)[^-]*$" \
  | sort -rn`
  
cp -f /etc/lilo.conf.static /tmp/lilo.conf

# three lines per entry, 3 x 19 images = 57
( for img in $images ; do
  label=`echo $img | sed 's/vmlinuz/linux/ ; s/-//g ; s/\.//g'`
  echo "image=$kernel_dir/$img"
  echo "label=$label"
  echo ""
done ) | head -57 >> /tmp/lilo.conf

if /sbin/lilo -C /tmp/lilo.conf ; then
  mv -f /etc/lilo.conf /etc/lilo.conf.last
  cp -f /tmp/lilo.conf /etc/lilo.conf
  echo successfully installed new bootloader.
  rm -f /tmp/lilo.conf
  exit 0
else
  echo eek, lilo barfed
  rm -f /tmp/lilo.conf
  exit 1
fi

³»°¡ ¹Þ¾Ò´ø ÆíÁö¿¡¼­ ¶Ç ´Ù¸¥ ÈçÇÑ ÁÖÁ¦´Â Ä¿³Î ÆÐÄ¡¿¡ ´ëÇÑ ±â»ç¿¡ °ü·ÃµÈ °ÍÀÌ´Ù. ƯÈ÷, ¸¹Àº »ç¶÷µéÀÌ ¿¾³¯ Ä¿³ÎÀ» À§ÇØ ÀÛ¼ºµÈ ÆÐÄ¡¸¦ »õ Ä¿³Î¿¡ Àû¿ëÇÏ·Á´Â µ¥¼­ ¹®Á¦¸¦ °Þ°í ÀÖ´Ù. ´ëºÎºÐÀÇ °æ¿ì, ÆÐÄ¡ °úÁ¤Áß¿¡ ¾î¶² °æ°í ¸Þ¼¼Áö¸¦ ¹Þ¾Ò°í ÆÐÄ¡°¡ ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö ¿ÏÀüÈ÷ ÀÌÇØÇÏÁö ¸ø ÇÑ´Ù¸é, ±× ÆÐÄ¡ÀÇ °ü¸®ÀÚ¿¡°Ô ¿¬¶ôÀ» Çؼ­, ¹®Á¦Á¡¿¡ ´ëÇØ ¸»ÇØÁÖ¾î¾ß ÇÑ´Ù.
¸¸¾à 'offset 31 lines'³ª ÀÌ ºñ½ÁÇÑ ¸Þ¼¼Áö°¡ ³ª¿Ô´Ù¸é, ÀÌ´Â ¹®Á¦°¡ ¾Æ´Ï´Ù. ÆÄÀÏ¿¡¼­ ÆÐÄ¡ÇÏ·ÁÇÏ´Â ·çƾÀÇ Äڵ尡 ¾à°£ º¯°æµÇ¾îÁö¸¸, ¸ñÇ¥ ·çƾÀº ¹ß°ßµÇ¾î ÆÐÄ¡µÇ¾ú´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù.