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>
|
A well-known friend is a treasure. |











