· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Linuxdoc Sgml/Initrd-TRANS

<!doctype linuxdoc system>
<article>
<title> Ãʱâ RAM µð½ºÅ© »ç¿ëÇϱâ (initrd)
<author> Werner Almesberger <htmlurl url="mailto:werner.almesberger@epfl.ch" name="werner.almesberger@epfl.ch"> & Hans Lermen <htmlurl url="mailto:lermen@fgan.de" name="lermen@fgan.de">
<date> 1996, 2000
<trans> ¼­¼º¿ë <htmlurl url="mailto:pooh@kldp.org" name="pooh@kldp.org">
<tdate> 2000³â 12¿ù 29ÀÏ 

<abstract>
½Ã½ºÅÛ ¼³Ä¡½Ã ¸ðµâ½ÄÀÇ Ä¿³Î ¼³Á¤À» °¡´ÉÇÏ°Ô ÇÏ´Â initrd ÀÇ ¼Ò°³¿Í »ç¿ë¹ýÀ» ´ã°í ÀÖ´Ù.
</abstract>


<toc>


<sect>¼Ò°³

<p>
initrd ´Â ºÎÆ® ·Î´õ¿¡ ÀÇÇØ RAM µð½ºÅ©¸¦ ÀÐ¾î µéÀÌ´Â ´É·ÂÀ» Á¦°øÇÑ´Ù.
ÀÌ RAM µð½ºÅ©´Â ±× ÈÄ¿¡ ·çÆ® ÆÄÀϽýºÅÛÀ¸·Î ¸¶¿îÆ®µÇ¾î ÇÁ·Î±×·¥µéÀÌ
±×°ÍÀ¸·ÎºÎÅÍ ½ÇÇàµÉ ¼ö ÀÖ´Ù. ±× ÈÄ¿¡, »õ·Î¿î ·çÆ® ÆÄÀÏ ½Ã½ºÅÛÀÌ ´Ù¸¥
ÀåÄ¡·ÎºÎÅÍ ¸¶¿îÆ® µÉ ¼ö ÀÖ´Ù. ±× ÈÄ ÀÌÀüÀÇ ·çÆ® (initrd ·ÎºÎÅÍ) ´Â
µð·ºÅ丮·Î ¿Å°ÜÁö°í °á±¹ ¾ð¸¶¿îÆ® µÉ ¼ö ÀÖ´Ù.

<p>
initrd ´Â Å©°Ô ½Ã½ºÅÛÀÇ ½ÃÀÛÀ» µÎ ´Ü°è·Î ÀϾ´Â °ÍÀ» °¡´ÉÇÏ°Ô Çϱâ
À§ÇØ ¼³°èµÇ¾ú´Ù. ÀÌ µÎ ´Ü°è´Â Ä¿³ÎÀÌ ÄÄÆÄÀÏµÇ¾î ³»ÀåµÈ ÃÖ¼Ò ÁýÇÕÀÇ
µå¶óÀ̹ö¿Í ÇÔ²² ¿Ã¶ó¿À°í, Ãß°¡ÀÇ ¸ðµâµéÀÌ initrd ¿¡¼­ Àоîµé¿©Áö´Â
°ÍÀÌ´Ù.

<p>
ÀÌ ¹®¼­´Â initrd »ç¿ë¿¡ ´ëÇØ °£´ÜÇÑ °³°üÀ» Á¦°øÇÑ´Ù. ºÎÆ® °úÁ¤¿¡ ´ëÇÑ
º¸´Ù ÀÚ¼¼ÇÑ ³íÀÇ´Â [1] ¿¡¼­ ã¾Æº¼ ¼ö ÀÖ´Ù.


<sect>ÀÛµ¿

<p>
initrd ¸¦ »ç¿ëÇÒ¶§, ½Ã½ºÅÛÀº ´ÙÀ½°ú °°ÀÌ ºÎÆÃµÈ´Ù:

<enum>
<item>ºÎÆ® ·Î´õ´Â Ä¿³Î°ú ÃʱâÀÇ RAM µð½ºÅ©¸¦ ÀоîµéÀδÙ.
<item>Ä¿³ÎÀº initrd ¸¦ "º¸ÅëÀÇ" RAM µð½ºÅ©·Î º¯È¯Çϰí,
     initrd ¿¡ ÀÇÇØ »ç¿ëµÈ ¸Þ¸ð¸®¸¦ Ç®¾î³õ´Â´Ù.
<item>initrd ´Â ·çÆ®¿¡ Àаí-¾²±â ¸ðµå·Î ¸¶¿îÆ®µÈ´Ù.
<item>/linuxrc °¡ ½ÇÇàµÈ´Ù (À̰ÍÀº ¾î¶² À¯È¿ÇÑ ½ÇÇàÆÄÀϵµ µÉ ¼ö ÀÖ´Ù,
     ½© ½ºÅ©¸³Æ®µµ Æ÷ÇÔÇÏ¿©; ±×°ÍÀº uid 0 À¸·Î ½ÇÇàµÇ°í ±âº»ÀûÀ¸·Î
     init °¡ ÇÒ ¼ö ÀÖ´Â °ÍÀº ¸ðµÎ ÇÒ ¼ö ÀÖ´Ù)
<item>linuxrc °¡ "ÁøÂ¥" ·çÆ® ÆÄÀÏ ½Ã½ºÅÛÀ» ¸¶¿îÆ®ÇÑ´Ù
<item>linuxrc °¡ pivot_root ½Ã½ºÅÛ ÄÝÀ» »ç¿ëÇÏ¿© ·çÆ® ÆÄÀÏ ½Ã½ºÅÛÀ»
     ·çÆ® µð·ºÅ丮¿¡ ¸¶¿îÆ®ÇÑ´Ù.
<item>º¸ÅëÀÇ ºÎÆ® °úÁ¤ (¿¹¸¦ µé¸é, /sbin/init ¸¦ ºÎ¸£´Â °Í) ÀÌ ·çÆ® ÆÄÀÏ
     ½Ã½ºÅÛ¿¡¼­ ¼öÇàµÈ´Ù
<item>initrd ÆÄÀÏ ½Ã½ºÅÛÀÌ Á¦°ÅµÈ´Ù
</enum>

<p>
·çÆ® µð·ºÅ丮¸¦ º¯°æÇÏ´Â °ÍÀÌ ±×°ÍÀ» ¾ð¸¶¿îÆ® ÇÏ´Â °ÍÀ» Æ÷ÇÔÇÏÁö ¾ÊÀ½¿¡
ÁÖÀÇÇ϶ó. µû¶ó¼­ initrd ¿¡¼­ µ¹¾Æ°¡´Â ÇÁ·Î¼¼½º¸¦ ÀÌ °úÁ¤µ¿¾È ³²°Ü³õÀ»
¼ö ÀÖ´Ù. ¶ÇÇÑ initrd ¾Æ·¡¿¡ ¸¶¿îÆ®µÈ ÆÄÀÏ ½Ã½ºÅÛµµ °è¼ÓÇØ¼­ Á¢±Ù°¡´ÉÇÔ¿¡
ÁÖÀÇÇ϶ó.


<sect>ºÎÆ® ¸í·ÉÇà ¿É¼Ç

<p>
initrd ´Â ´ÙÀ½ÀÇ »õ·Î¿î ¿É¼ÇÀ» Ãß°¡ÇÑ´Ù:

<p>
  initrd=<path> (¿¹, LOADLIN)

<p>
    ÁöÁ¤µÈ ÆÄÀÏÀ» Ãʱâ RAM disk ·Î ÀоîµéÀδÙ. LILO ¸¦ »ç¿ëÇÒ ¶§,
    RAM µð½ºÅ© À̹ÌÁö¸¦ /etc/lilo.conf ¾È¿¡ ÁöÁ¤ÇØ¾ß Çϸç, INITRD ¼³Á¤
    º¯¼ö¸¦ ÀÌ¿ëÇÑ´Ù.

<p>
  noinitrd

<p>
    initrd ÀÚ·á´Â º¸Á¸µÇ³ª RAM µð½ºÅ©·Î ÀüȯµÇ¾î "º¸ÅëÀÇ" ·çÆ® ÆÄÀÏ ½Ã½ºÅÛ
    ÀÌ ¸¶¿îÆ®µÇÁö´Â ¾Ê´Â´Ù. initrd ÀÚ·á´Â /dev/initrd ¿¡¼­ ÀÐÀ» ¼ö ÀÖ´Ù.
    initrd ÀÌ ÀÖ´Â ÀÚ·á°¡ ÀÌ °æ¿ì¿¡´Â ¾î¶°ÇÑ ±¸Á¶µçÁö °¡Áú ¼ö ÀÖ°í,
    ¹Ýµå½Ã ÆÄÀÏ ½Ã½ºÅÛ À̹ÌÁöÀÏ ÇÊ¿ä´Â ¾ø´Ù.
    ÀÌ ¿É¼ÇÀº ÁÖ·Î µð¹ö±ë¿¡ ¾²ÀδÙ.

<p>
    ÁÖÀÇ: /dev/initrd ´Â Àбâ Àü¿ëÀ̰í Çѹø¸¸ »ç¿ëµÉ ¼ö ÀÖ´Ù. ¸¶Áö¸·
    ÇÁ·Î¼¼½º°¡ ±×°ÍÀ» ´ÝÀÚ¸¶ÀÚ, ¸ðµç ÀÚ·á´Â Ç®·ÁÁö°í(freed) /dev/initrd
    ´Â ´õÀÌ»ó ¿­¸± ¼ö ¾ø´Ù.

<p>    
  root=/dev/ram0   (devfs¸¦ »ç¿ëÇÏÁö ¾ÊÀ»¶§)
<p>    
  root=/dev/rd/0   (devfs »ç¿ëÇÒ ¶§)

<p>
    initrd ´Â ·çÆ®·Î ¸¶¿îÆ®µÇ°í, RAM µð½ºÅ©°¡ ¿©ÀüÈ÷ ·çÆ®¿¡ ¸¶¿îÆ®µÈ ä,
    º¸ÅëÀÇ ºÎÆ® °úÁ¤ÀÌ °è¼ÓµÈ´Ù.


<sect>¼³Ä¡

<p>
ù°, initrd ÆÄÀÏ ½Ã½ºÅÛÀ» À§ÇÑ µð·ºÅ丮°¡ "º¸ÅëÀÇ" ·çÆ® ÆÄÀÏ ½Ã½ºÅÛ¿¡
»ý¼ºµÇ¾î¾ß ÇÑ´Ù. ¿¹¸¦ µé¸é

<p>
# mkdir /initrd

<p>
À̸§Àº »ó°ü¾ø´Ù. º¸´Ù ÀÚ¼¼ÇÑ °ÍÀº pivot_root(2) ¸Ç ÆäÀÌÁö¿¡¼­ ã¾Æº¼ ¼ö
ÀÖ´Ù.

<p>
¸¸¾à ·çÆ® ÆÄÀÏ ½Ã½ºÅÛÀÌ ºÎÆ® °úÁ¤¿¡¼­ »ý¼ºµÈ´Ù¸é (Áï, ¸¸¾à ¼³Ä¡ Ç÷ÎÇǸ¦
Á¦ÀÛÇϰí ÀÖ´Ù¸é), ·çÆ® ÆÄÀÏ ½Ã½ºÅÛ »ý¼º °úÁ¤Àº /initrd µð·ºÅ丮¸¦
»ý¼ºÇØ¾ß ÇÑ´Ù.

<p>
¸¸¾à initrd °¡ ¾î¶² °æ¿ì¿¡ ¸¶¿îÆ®µÇÁö ¾Ê´Â´Ù¸é, ±×°ÍÀÇ ³»¿ëÀº ´ÙÀ½ÀÇ
ÀåÄ¡°¡ ¸¸µé¾îÁ³À» °æ¿ì¿£ °è¼ÓÇØ¼­ Á¢±Ù °¡´ÉÇÏ´Ù (À̰ÍÀÌ devfs ¸¦
»ç¿ëÁßÀÏ °æ¿ì¿£ ÀÛµ¿ÇÏÁö ¾ÊÀ½¿¡ À¯ÀÇ):

<p>
# mknod /dev/initrd b 1 250 

<p>
# chmod 400 /dev/initrd

<p>
µÑ°, Ä¿³ÎÀº RAM µð½ºÅ© Áö¿ø°ú Ãʱâ RAM µð½ºÅ© Áö¿øÀÌ È°¼ºÈ­µÇ¾î
ÄÄÆÄÀÏ µÇ¾î¾ß ÇÑ´Ù. ¶ÇÇÑ, Àû¾îµµ initrd ·ÎºÎÅÍ ÇÁ·Î±×·¥À» ½ÇÇàÇϱâ À§ÇÑ
¸ðµç ¿ä¼Òµé(¿¹, ½ÇÇà °¡´ÉÇÑ Çü½Ä°ú ÆÄÀÏ ½Ã½ºÅÛ) ÀÌ ÄÄÆÄÀÏ µÇ¾î
Ä¿³Î ¾ÈÀ¸·Î µé¾î°¡¾ß ÇÑ´Ù.

<p>
¼Â°, ·¥ µð½ºÅ© À̹ÌÁö¸¦ ¸¸µé¾î¾ß ÇÑ´Ù. À̰ÍÀº ºí·° ÀåÄ¡¿¡ ÆÄÀÏ ½Ã½ºÅÛÀ»
¸¸µé°í, ¿©±â¿¡ ÇÊ¿äÇÑ ¸¸Å­ ÆÄÀÏÀ» º¹»çÇÑ ÈÄ, ºí·° ÀåÄ¡ÀÇ ³»¿ëÀ» initrd ÆÄÀÏ
¿¡ Ãß°¡ÇÏ¸é µÈ´Ù. ÃÖ±ÙÀÇ Ä¿³Î¿¡¼­´Â, ÃÖ¼ÒÇÑ ¼¼ Á¾·ùÀÇ ÀåÄ¡°¡ ´ÙÀ½¿¡ ÀûÀûÇÒ´Ù.

<itemize>
<item>Ç÷ÎÇÇ µð½ºÅ© (¾î´À°÷¿¡¼­³ª ÀÛµ¿ÇÏÁö¸¸ ±«·Î¿ïÁ¤µµ·Î ´À¸®´Ù)
<item>·¥ µð½ºÅ© (ºü¸£Áö¸¸, ¹°¸®Àû ¸Þ¸ð¸®¸¦ ÇÒ´çÇÑ´Ù)
<item>·çÇÁ¹é ÀåÄ¡ (°¡Àå ÈǸ¢ÇÑ ¹æ¹ý)
</itemize>

<p>
·çÇÁ¹é ÀåÄ¡¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇϵµ·Ï ÇϰڴÙ.

<enum>
<item>·çÇÁ¹é ºí·° ÀåÄ¡°¡ Ä¿³Î ¾È¿¡ ¼³Á¤µÇ¾ú´ÂÁö È®ÀÎÇÑ´Ù.
<p>
<item>ÀûÀýÇÑ Å©±âÀÇ ºó ÆÄÀÏ ½Ã½ºÅÛÀ» »ý¼ºÇÑ´Ù. ¿¹¸¦ µé¸é,
<p>
    # dd if=/dev/zero of=initrd bs=300k count=1
<p>
    # mke2fs -F -m0 initrd
<p>
    (¸¸¾à °ø°£ÀÌ Áß¿äÇÏ´Ù¸é, Ext2 ´ë½Å¿¡ Minix FS ¸¦ »ç¿ëÇÒ¼öµµ ÀÖ´Ù.)
<p>
<item>ÆÄÀÏ ½Ã½ºÅÛÀ» ¸¶¿îÆ®ÇÑ´Ù. ¿¹¸¦ µé¸é,
<p>
    # mount -t ext2 -o loop initrd /mnt
<p>
<item>ÄÜ¼Ö ÀåÄ¡¸¦ »ý¼ºÇÑ´Ù(devfs¸¦ »ç¿ëÇÑ´Ù¸é ²À ÇÊ¿äÇÏÁö´Â ¾ÊÀ¸³ª, ¾î·µç ¹®Á¦
    ¸¦ ¹®Á¦¸¦ ÀÏÀ¸Å°Áö´Â ¾Ê´Â´Ù) :
<p>
    # mkdir /mnt/dev
<p>
    # mknod /mnt/dev/console c 5 1
<p>
<item>initdrd ȯ°æÀ» ÀûÀýÇÏ°Ô »ç¿ëÇϱâ À§ÇØ ÇÊ¿äÇÑÆÄÀϵéÀ» º¹»çÇÑ´Ù. °¡Àå Áß¿äÇÑ
    ÆÄÀÏÀÎ /linuxrc ¸¦ ÀØÁö ¸»¶ó. /linuxrc ÀÇ ÆÛ¹Ì¼ÇÀº x (½ÇÇà) À» Æ÷ÇÔÇØ¾ß
    ÇÔ¿¡ ÁÖÀÇÇ϶ó.
<p>
<item>initrd ȯ°æÀÌ ÇÒ ¼ö ÀÖ´Â Á¤È®ÇÑ ÀÛµ¿Àº ¸®ºÎÆÃ ÇÏÁö ¾Ê°íµµ ´ÙÀ½ÀÇ ¸í·ÉÀ» ÀÌ¿ëÇÏ¿© ÀÚÁÖ Å×½ºÆ® ÇÒ ¼ö ÀÖ´Ù. 
<p>
    # chroot /mnt /linuxrc
<p>
¹°·Ð À̰ÍÀº ÀϹÝÀûÀÎ ½Ã½ºÅÛ »óŸ¦ ¹æÇØÇÏÁö ¾Ê´Â initrd¿¡¸¸ ÇÑÁ¤µÈ´Ù
(¿¹, ³×Æ®¿÷ ÀÎÅÍÆäÀ̽º¸¦ Àç¼³Á¤, ¸¶¿îÆ®µÈ µð¹ÙÀ̽º¿¡ µ¤¾î¾²±â, À̹Ì
½ÇÇàÁßÀÎ µ¥¸óÀ» ´Ù½Ã ¶ç¿ì±â µî¿¡ ÀÇÇØ¼­. ±×·¯³ª ±×·¯ÇÑ chroot µÈ initrd
ȯ°æ¿¡¼­µµ pivot_root ¸¦ »ç¿ëÇÏ´Ù´Â °Í¿¡ ÁÖ¸ñÇ϶ó.)
<p>
<item>ÆÄÀÏ ½Ã½ºÅÛÀ» ¾ð¸¶¿îÆ®ÇÑ´Ù.
<p>
    # umount /mnt
<p>
<item>ÀÌÁ¦ initrd ´Â ÆÄÀÏ "initrd" ¾È¿¡ ÀÖ´Ù. ÇÊ¿äÇÏ´Ù¸é ¾ÐÃàÇÒ¼öµµ ÀÖ´Ù.
<p>
    # gzip -9 initrd

<p>
initrd ¸¦ ½ÇÇèÇϱâ À§Çؼ­, º¹±¸¿ë Ç÷ÎÇÇ µð½ºÄϰú /linuxrc ¿¡¼­ /bin/sh ·Î
½Éº¼¸¯ ¸µÅ©¸¸ Ãß°¡ÇÏ¸é µÈ´Ù. ÀÌ ´ë½Å¿¡, ÀÛÀº initrd ¸¦ »ý¼ºÇϱâ À§Çؼ­,
½ÇÇèÀûÀÎ newlib ȯ°æ [2] ¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ´Ù.

<p>
<item>¸¶Áö¸·À¸·Î, Ä¿³ÎÀ» ºÎÆ®Çϰí initrd ¸¦ ÀоîµéÀδÙ. ´ëºÎºÐ ¸ðµç ¸®´ª½º ºÎÆ®
·Î´õ´Â initrd ¸¦ Áö¿øÇÑ´Ù. ºÎÆ® °úÁ¤ÀÌ ±¸½ÄÀÇ ¸ÞÄ¿´ÏÁò°ú ¿©ÀüÈ÷ ȣȯµÇ¹Ç·Î,
´ÙÀ½ÀÇ ºÎÆ® ¸í·ÉÇà ÆÄ¶ó¹ÌÅ͵éÀÌ ÁÖ¾îÁ®¾ß¸¸ ÇÑ´Ù:

<p>
  ¸¸¾à devfs ¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é,

<p>
  root=/dev/ram0 init=/linuxrc rw

<p>
  »ç¿ëÇÑ´Ù¸é(rw ´Â initrd ÆÄÀÏ ½Ã½ºÅÛ¿¡ ¾²±â¸¦ ÇÒ¶§¸¸ ÇÊ¿äÇÏ´Ù)

<p>
  root=/dev/rd/0 init=/linuxrc rw

<p>
LOADLIN ÀÇ °æ¿ì¿¡´Â, ´ÜÁö À̰͸¸ ½ÇÇàÇÏ¸é µÈ´Ù.

<p>
     LOADLIN < kernel > initrd= <disk_image>
<p>
¿¹)  LOADLIN C:\LINUX\BZIMAGE initrd=C:\LINUX\INITRD.GZ root=/dev/ram0
<p>
       init=/linuxrc rw
<p>
LILO ÀÇ °æ¿ì, /etc/lilo.conf ¾È¿¡ Àüü ¼½¼Ç À̳ª ȤÀº ÇØ´çÇÏ´Â ¼½¼Ç¿¡
INITRD=<path> ¿É¼ÇÀ» Ãß°¡ÇÑ´Ù. ±×¸®°í APPEND ¸¦ ÀÌ¿ëÇÏ¿© ¿É¼ÇÀ» ³Ñ°ÜÁØ´Ù.
¿¹¸¦ µé¸é,

<p>
  image = /bzImage
<p>
    initrd = /boot/initrd.gz
<p>
    append = "root=/dev/ram0 init=/linuxrc rw"
<p>
±×¸®°í /sbin/lilo ¸¦ ½ÇÇà½ÃŲ´Ù.

<p>
´Ù¸¥ ºÎÆ® ·Î´õ´Â ÇØ´çÇÏ´Â ¹®¼­¸¦ ÂüÁ¶Ç϶ó.

<p>
ÀÌÁ¦ ºÎÆÃÀ» ÇÒ ¼ö ÀÖ°í initrd ¸¦ »ç¿ëÇÏ´Â °ÍÀ» Áñ±æ ¼ö ÀÖ´Ù.

</enum>


<sect>·çÆ® ÀåÄ¡ ¹Ù²Ù±â

<p>
linuxrc °¡ ÀÚ½ÅÀÇ ÇÒÀÏÀ» ³¡³»¸é, ·çÆ® ÀåÄ¡¸¦¸¦ º¯°æÇÏ¿©, "ÁøÂ¥" ·çÆ® ÀåÄ¡¿¡¼­
¸®´ª½º ½Ã½ºÅÛÀ» ½ÃÀÛÇÔÀ¸·Î½á °è¼Ó ÁøÇà½ÃŲ´Ù.

<p>
±× °úÁ¤Àº ´ÙÀ½ÀÇ °úÁ¤À» Æ÷ÇÔÇÑ´Ù.

<itemize>
<item>»õ·Î¿î ·çÆ® ÆÄÀÏ ½Ã½ºÅÛ ¸¶¿îÆ®Çϱâ
<item>±×°ÍÀ» ·çÆ® ÆÄÀÏ ½Ã½ºÅÛÀ¸·Î ¹Ù²Ù°í
<item>ÀÌÀüÀÇ (initrd) ·çÆ® ÆÄÀÏ ½Ã½ºÅÛÀ¸·ÎÀÇ ¸ðµç ¾ï¼¼½º¸¦ Á¦°ÅÇϰí
<item>initrd ÆÄÀÏ ½Ã½ºÅÛÀ» ¾ð¸¶¿îÆ®Çϰí RAM µð½ºÅ©¸¦ ÇØÁ¦ÇÑ´Ù.(de-allocate)
</itemize>

<p>
»õ·Î¿î ·çÆ® ÆÄÀÏ ½Ã½ºÅÛÀ» ¸¶¿îÆ® ÇÏ´Â °ÍÀº ½±´Ù: ´ÜÁö ÇöÀçÀÇ ·çÆ® ¾Æ·¡ÀÇ
µð·ºÅ丮¿¡ ¸¶¿îÆ®¸¸ µÇ¸é µÈ´Ù. ¿¹¸¦ µé¸é:

<p>
# mkdir /new-root
<p>
# mount -o ro /dev/hda1 /new-root

<p>
·çÆ® º¯°æÀº pivot_root ½Ã½ºÅÛ ÄÝÀ» ÀÌ¿ëÇÏ¿© ÀÌ·ïÁø´Ù. ÀÌ ½Ã½ºÅÛ ÄÝÀº
pivot_root À¯Æ¿¸®Æ¼ ( pivot_root(8) ¸Ç ÆäÀÌÁö¸¦ ÂüÁ¶; pivot_root ´Â util-linux
¹öÀü 2.10h ÀÌ»óÀ¸·Î ¹èÆ÷µÈ´Ù [3]) ¸¦ ÅëÇØ¼­µµ »ç¿ëÇÒ ¼ö ÀÖ´Ù. pivot_root ´Â
ÇöÀçÀÇ ·çÆ®¸¦ »õ·Î¿î ·çÆ® ¾Æ·¡ÀÇ µð·ºÅ丮·Î º¯°æÇϰí, »õ·Î¿î ·çÆ®¸¦ ±× ÀÚ¸®¿¡
À§Ä¡½ÃŲ´Ù. ÀÌÀüÀÇ ·çÆ®¸¦ À§ÇÑ µð·ºÅ丮´Â pivot_root ¸¦ È£ÃâÇϱâ Àü¿¡
Á¸ÀçÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¸é:

<p>
# cd /new-root
<p>
# mkdir initrd
<p>
# pivot_root . initrd

<p>
ÀÌÁ¦ linuxrc ÇÁ·Î¼¼½º´Â ¿©ÀüÈ÷ ÀÌÀüÀÇ ·çÆ®¸¦ Á¢±ÙÇÒ Áöµµ ¸ð¸£´Âµ¥,
ÀÌ °æ·Î´Â ½ÇÇà ÆÄÀÏ, °øÀ¯ ¶óÀ̺귯¸®, Ç¥ÁØ ÀÔ·Â/Ãâ·Â/¿¡·¯, ±×¸®°í
±×°ÍÀÇ ÇöÀç ·çÆ® µð·ºÅ丮ÀÌ´Ù. 
ÀÌ·¯ÇÑ ¸ðµç ÂüÁ¶´Â ´ÙÀ½ÀÇ ¸í·ÉÀ» ÀÌ¿ëÇØ Á¦°ÅµÈ´Ù.

<p>
# exec chroot . what-follows <dev/console >dev/console 2>&1

<p>
what-follow ´Â »õ·Î¿î ·çÆ® ¾Æ·¡¿¡ ÀÖ´Â ÇÁ·Î±×·¥ÀÌ´Ù. ¿¹¸¦ µé¸é /sbin/init
¸¸¾à »õ·Î¿î ·çÆ® ÆÄÀÏ ½Ã½ºÅÛÀÌ devfs ¿Í ÇÔ²² ÀÌ¿ëµÉ °ÍÀ̰í À¯È¿ÇÑ
/dev µð·ºÅ丮¸¦ °®°í ÀÖÁö ¾Ê´Ù¸é, devfs ´Â /dev/console À» Á¦°øÇϱâ À§ÇØ
chroot °¡ ºÒ·ÁÁö±â Àü¿¡ ¸¶¿îÆ® µÇ¾î¾ß ÇÑ´Ù.

<p>
ÁÖÀÇ: pivot_root ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ±¸Çö ³»¿ëÀº ½Ã°£¿¡ µû¶ó ¹Ù²ð¼ö ÀÖ´Ù.
ȣȯ¼ºÀ» È®½ÇÇÏ°Ô Çϱâ À§ÇØ, ´ÙÀ½ÀÇ ¿ä¼ÒµéÀÌ °üÂûµÇ¾î¾ß ÇÑ´Ù.

<itemize>
<item>pivot_root ¸¦ È£ÃâÇϱâ Àü¿¡, È£ÃâÇÏ´Â ÇÁ·Î¼¼½ºÀÇ ÇöÀç µð·ºÅ丮°¡
   »õ·Î¿î ·çÆ® µð·ºÅ丮¸¦ °¡¸®ÄÑ¾ß ÇÑ´Ù
<item>ù° ÀÎÀÚ·Î . À» »ç¿ëÇϰí, ÀÌÀüÀÇ ·çÆ®¸¦ À§ÇÑ _»ó´ëÀûÀÎ_ °æ·Î¸¦
   µÎ¹øÂ° ÀÎÀÚ·Î »ç¿ëÇÑ´Ù
<item>chroot ÇÁ·Î±×·¥Àº ÀÌÀü°ú »õ·Î¿î ·çÆ®¿¡¼­ »ç¿ë °¡´ÉÇØ¾ß ÇÑ´Ù
<item>°á±¹ »õ·Î¿î ·çÆ®·Î chroot ÇÑ´Ù
<item>exec ¸í·É¿¡¼­ dev/consoleÀ» À§ÇØ »ó´ëÀû °æ·Î¸¦ »ç¿ëÇÑ´Ù
</itemize>

<p>
ÀÌÁ¦, initrd ´Â ¾ð¸¶¿îÆ®µÇ¾î RAM µð½ºÅ©¿¡ ÇÒ´çµÈ ¸Þ¸ð¸®°¡ ÇØÁ¦µÉ ¼ö
ÀÖ´Ù.

<p>
# umount /initrd
<p>
# blockdev --flushbufs /dev/ram0    # devfs ¸¦ »ç¿ëÇÒ °æ¿ì 

<p>
NFS ¸¶¿îÆ®µÈ ·çÆ®¿¡ initrd ¸¦ »ç¿ëÇÒ ¼öµµ ÀÖÀ¸¸ç, ÀÚ¼¼ÇÑ »çÇ×Àº
pivot_root(8) ¸Ç ÆäÀÌÁö¸¦ ÂüÁ¶Ç϶ó.

<p>
ÁÖÀÇ: ¸¸¾à linuxrc ³ª ±×·ÎºÎÅÍ exec µÇ´Â ¾î¶² ÇÁ·Î±×·¥À̵çÁö ¾î¶²
ÀÌÀ¯¿¡¼­ Á¾·áµÇ¸é, ±¸½ÄÀÇ change_root ¸ÞÄ¿´ÏÁòÀÌ ºÒ·ÁÁø´Ù("±¸½Ä
±¸Æ® º¯°æ ¸ÞÄ¿´ÏÁò" Ç׸ñÀ» ÂüÁ¶).


<sect>»ç¿ë ½Ã³ª¸®¿À

<p>
initrd ±¸Çö¿¡ ´ëÇÑ ÁÖ¿ä µ¿±â´Â ½Ã½ºÅÛ ¼³Ä¡½Ã¿¡ ¸ðµâ½ÄÀÇ Ä¿³Î ¼³Á¤À»
°¡´ÉÇÏ°Ô Çϱâ À§Çؼ­¿´´Ù. ±× °úÁ¤Àº ´ÙÀ½°ú °°ÀÌ µ¿ÀÛÇÑ´Ù.

<enum>
<item>½Ã½ºÅÛÀº Ç÷ÎÇdzª ´Ù¸¥ ¸Åü¿¡¼­ ÃÖ¼ÒÈ­µÈ Ä¿³Î·Î ºÎÆÃÇÑ´Ù(¿¹,
     RAM µð½ºÅ©, initrd, a.out, Ext2 FS Áö¿ø) ±×¸®°í initrd ¸¦
     ·ÎµåÇÑ´Ù
<item>/linurc ´Â (1) "ÁøÂ¥" ·çÆ® FS (Áï, µð¹ÙÀ̽º Á¾·ù, µð¹ÙÀ̽º µå¶óÀ̹ö,
     ÆÄÀÏ ½Ã½ºÅÛ) ¸¦ ¸¶¿îÆ® Çϴµ¥, (2) ¹èÆ÷ ¸Åü(Áï, CD-ROM, ³×Æ®¿÷,
     Å×ÀÙ µî) ¿¡ ÇÊ¿äÇÑ °ÍÀÌ ¹«¾ùÀÎÁö °áÁ¤ÇÑ´Ù. À̰ÍÀº »ç¿ëÀÚ¿¡°Ô ¹¯°Å³ª,
     ÀÚµ¿À¸·Î Á¶»çÇϰųª, µÑÀ» ÇÕÄ£ ¹æ¹ý¿¡ ÀÇÇØ ¼öÇàµÈ´Ù.
<item>linuxrc ´Â ÇÊ¿äÇÑ Ä¿³Î ¸ðµâÀ» ·ÎµåÇÑ´Ù
<item>linuxrc ´Â ·çÆ® ÆÄÀÏ ½Ã½ºÅÛÀ» »ý¼ºÇϰí Á¤Âø½ÃŲ´Ù (À̰ÍÀº
     ¾ÆÁ÷±îÁö´Â ÃÖÀûÀÇ »ç¿ëÇÒ¸¸ÇÑ ½Ã½ºÅÛÀÏ ÇÊ¿ä´Â ¾ø´Ù)
<item>linuxrc ´Â pivot_root ¸¦ È£ÃâÇÏ¿© ·çÆ® ÆÄÀÏ ½Ã½ºÅÛÀ» ¹Ù²Ù°í
     chroot ¸¦ ÀÌ¿ëÇØ ¼³Ä¡¸¦ °è¼ÓÇÒ ÇÁ·Î±×·¥À» exec ÇÑ´Ù
<item>ºÎÆ® ·Î´õ°¡ ¼³Ä¡µÈ´Ù
<item>ºÎÆ® ·Î´õ´Â ½Ã½ºÅÛÀ» °¡µ¿Çϱâ À§ÇØ »ç¿ëµÈ ¸ðµâÀÇ ÁýÇÕÀ» °¡Áø
     initrd ¸¦ ·ÎµåÇϵµ·Ï ¼³Á¤µÈ´Ù(¿¹, /initrd ´Â ¼öÁ¤µÇ°í, ³ªÁß¿£
     ¾ð¸¶¿îÆ®µÇ°í, ¸¶Áö¸·À¸·Î À̹ÌÁö´Â /dev/ram0 ³ª /dev/rd/0 ¿¡¼­
     ÆÄÀÏ·Î ¾²¿©Áú ¼ö ÀÖ´Ù)
<item>ÀÌÁ¦ ½Ã½ºÅÛÀº ºÎÆ® °¡´ÉÇϰí Ãß°¡ÀûÀÎ ¼³Ä¡ ÀÛ¾÷ÀÌ ¼öÇàµÈ´Ù
</enum>

<p>
¿©±â¼­ initrd ÀÇ ÁÖ ¿ªÇÒÀº (¾µµ¥¾øÀÌ) ºÎÇ®·ÁÁø "¹ü¿ë" Ä¿³ÎÀ» »ç¿ëÇÏÁö
¾Ê°í Ä¿³ÎÀ» ´Ù½Ã ÄÄÆÄÀÏÇϰųª ¸µÅ©ÇÏÁö ¾Ê°íµµ º¸ÅëÀÇ ½Ã½ºÅÛ ÀÛ¾÷ µ¿¾È
¼³Á¤ ÀڷḦ Àç»ç¿ëÇϱâ À§ÇÔÀÌ´Ù.

<p>
µÎ¹øÂ° ½Ã³ª¸®¿À´Â ´ÜÀÏ °ü¸®ÀûÀÎ ¹üÀ§¾È¿¡ ÀÖ´Â ¼­·Î ´Ù¸¥ Çϵå¿þ¾î ¼³Á¤À» °¡Áø
½Ã½ºÅÛ¿¡ ¸®´ª½º¸¦ µ¹¸®´Â °æ¿ìÀÇ ¼³Ä¡ÀÌ´Ù. ±×·¯ÇÑ °æ¿ì¿¡, Ä¿³ÎÀÇ ÃÖ¼Ò
ÁýÇÕ (ÀÌ»óÀûÀ¸·Î´Â ¿ÀÁ÷ Çϳª) ¸¸À» ¸¸µé°í ¼³Á¤ Á¤º¸ÀÇ ½Ã½ºÅÛ Æ¯Á¤ ºÎºÐÀº
°¡´ÉÇÑ ÀÛ°Ô À¯ÁöÇÏ´Â °ÍÀÌ ÀÌ»óÀûÀÌ´Ù. ÀÌ °æ¿ì, °øÅëÀÇ initrd ¸ðµâÀÌ
¸ðµç ÇÊ¿äÇÑ ¸ðµâÀ» °¡Áö°í »ý¼ºµÉ ¼ö ÀÖ´Ù. ±×ÈÄ, ¿ÀÁ÷ ±×°Í¿¡ ÀÇÇØ ÀÐÇôÁö´Â
/linuxrc ³ª ÆÄÀϸ¸ÀÌ ´Ù¸£°Ô µÉ °ÍÀÌ´Ù.

<p>
¼¼¹øÂ° ½Ã³ª¸®¿À´Â º¸´Ù Æí¸®ÇÑ º¹±¸ µð½ºÅ©ÀÌ´Ù. ¿Ö³ÄÇÏ¸é ºÎÆÃ½Ã¿¡ ·çÆ®
FS ÆÄƼ¼ÇÀÇ À§Ä¡°°Àº Á¤º¸µéÀÌ Á¦°øµÉ Çʿ䰡 ¾ø±â ¶§¹®ÀÌ´Ù. ±×·¯³ª initrd
¿¡¼­ ·ÎµåµÈ ½Ã½ºÅÛÀº »ç¿ëÀÚ Ä£È­ÀûÀÎ ´ëȭâÀ» ÅëÇØ ¸î¸îÀÇ Á¤È®µµ °Ë»ç¸¦
¼öÇàÇÒ ¼ö ÀÖ´Ù(ȤÀº ÀÚµ¿ ŽÁöÀÇ ¾î¶² ÇüÅ·μ­µµ)

<p>
¸¶Áö¸·À¸·Î, CD-ROM ¹èÆ÷ÀÚµéÀº º¸´Ù ³ªÀº CD ¿¡¼­ÀÇ ¼³Ä¡¸¦ À§ÇØ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ±× ¿¹·Î ºÎÆ® Ç÷ÎÇǸ¦ »ç¿ëÇÏ°í º¸´Ù Å« RAM µð½ºÅ©¸¦ CD·ÎºÎÅÍ initrd¸¦ ÅëÇØ ºÎÆ®½ºÆ®·¡ÇÎ Çϰųª, LOADLIN °°Àº ·Î´õ¸¦ ÅëÇØ¼­³ª Á÷Á¢ CD-ROM ¿¡¼­ ºÎÆÃÇϰí, Ç÷ÎÇǰ¡ ÇÊ¿ä ¾øÀÌ CD ¿¡¼­ RAM µð½ºÅ©¸¦ ÀоîµéÀÌ´Â °ÍÀÌ´Ù.


<sect>±¸½Ä ·çÆ® º¯°æ ¸ÞÄ¿´ÏÁò

<p>
´ÙÀ½ÀÇ ¸ÞÄ¿´ÏÁòÀº pivot_root °¡ µµÀԵDZâ Àü¿¡ »ç¿ëµÇ¾ú´Ù.
ÇöÀçÀÇ Ä¿³ÎÀº ¿©ÀüÈ÷ ±×°ÍÀ» Áö¿øÇÏÁö¸¸ ±×°ÍÀÇ Áö¼ÓÀûÀÎ »ç¿ë°¡´É¼º¿¡ ´ëÇØ¼­
ÀÇÁ¸Çؼ­´Â _¾È_µÈ´Ù.

<p>
±×°ÍÀº "ÁøÂ¥" ·çÆ® ÀåÄ¡ (Áï, Ä¿³Î À̹ÌÁö ¾È¿¡ rdev ·Î ¼³Á¤µÇ°Å³ª ºÎÆ®
¸í·ÉÇà¿¡¼­ root=... ·Î ¼³Á¤µÈ °Í) ¸¦ linuxrc °¡ Á¾·áÇÒ¶§ ·çÆ® ÆÄÀÏ
½Ã½ºÅÛÀ¸·Î ¸¶¿îÆ®ÇÔÀ¸·Î¼­ µ¿ÀÛÇÑ´Ù. initrd ÆÄÀÏ ½Ã½ºÅÛÀº ±×¸®°í ³ª¼­,
¾ð¸¶¿îÆ®µÇ´ø°¡, ¿©ÀüÈ÷ »ç¿ëÁßÀ̶ó¸é »õ·Î¿î ·çÆ® ÆÄÀÏ ½Ã½ºÅÛ¿¡ /initrd
°°Àº µð·ºÅ丮°¡ Á¸ÀçÇÒ °æ¿ì ¿©±â·Î ¿Å°ÜÁø´Ù.

<p>
ÀÌ ¸ÞÄ¿´ÏÁòÀº »ç¿ëÇϱâ À§ÇØ, ºÎÆ® ¸í·É ¿É¼ÇÀÎ root, init, rw ¸¦ ÁöÁ¤ÇÒ
ÇÊ¿ä´Â ¾ø´Ù. (¸¸¾à ÁöÁ¤µÇ¾ú´Ù¸é, initrd ȯ°æÀÌ ¾Æ´Ñ ½ÇÁ¦ ·çÆ® ÆÄÀÏ
½Ã½ºÅÛ¿¡ ¿µÇâÀ» ¹ÌÄ¥ °ÍÀÌ´Ù.)

<p>  
¸¸¾à /proc °¡ ¸¶¿îÆ®µÈ´Ù¸é, "ÁøÂ¥" ·çÆ® ÀåÄ¡´Â linuxrc ¾È¿¡¼­ »õ·Î¿î
·çÆ® FS ÀåÄ¡ÀÇ ¹øÈ£¸¦ Ư¼ö ÆÄÀÏÀÎ /proc/sys/kernel/real-root-dev¿¡
±â·ÏÇÔÀ¸·Î½á ¹Ù²ð ¼ö ÀÖ´Ù. ¿¹¸¦ µé¸é

<p>
  # echo 0x301 >/proc/sys/kernel/real-root-dev

<p>
ÀÌ ¸ÞÄ¿´ÏÁòÀº NFS ¿Í ÀÌ¿Í À¯»çÇÑ ÆÄÀÏ ½Ã½ºÅÛ°ú ȣȯµÇÁö ¾ÊÀ½¿¡ ÁÖÀÇÇ϶ó.

<p>
ÀÌ ±¸½ÄÀÇ ºñ³­¹Þ´Â ¸ÞÄ¿´ÏÁòÀº º¸Åë "change_root" ¶ó°í ºÒ¸®´Â ¹Ý¸é,
 »õ·Ó°í ÁöÁö¹Þ´Â ¸ÞÄ¿´ÏÁòÀº "pivot_root" ¶ó°í ºÒ¸°´Ù.


<sect>Âü°íÀÚ·á

<p>
[1] <url url="ftp://icaftp.epfl.ch/pub/people/almesber/booting/bootinglinux-current.ps.g" name="Almesberger, Werner; "Booting Linux: The History and the Future"">

<p>
[2] <url url="ftp://icaftp.epfl.ch/pub/people/almesber/misc/newlib-linux/" name="newlib package (experimental), with initrd example">
    
<p>
[3] <url url="ftp://ftp.win.tue.nl/pub/linux-local/utils/util-linux/" name="Brouwer, Andries; "util-linux: Miscellaneous utilities for Linux"">

</article>




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2004-12-23 09:12:24
Processing time 0.0073 sec