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

You are not allowed to 'diff'


Ãʱâ RAM µð½ºÅ© »ç¿ëÇϱâ (initrd)

Ãʱâ RAM µð½ºÅ© »ç¿ëÇϱâ (initrd)

Werner Almesberger werner.almesberger@epfl.ch & Hans Lermen lermen@fgan.de

1996, 2000 ¼­¼º¿ë pooh@kldp.org 2000³â 12¿ù 29ÀÏ
½Ã½ºÅÛ ¼³Ä¡½Ã ¸ðµâ½ÄÀÇ Ä¿³Î ¼³Á¤À» °¡´ÉÇÏ°Ô ÇÏ´Â initrd ÀÇ ¼Ò°³¿Í »ç¿ë¹ýÀ» ´ã°í ÀÖ´Ù.

1. ¼Ò°³

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

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

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

2. ÀÛµ¿

initrd ¸¦ »ç¿ëÇÒ¶§, ½Ã½ºÅÛÀº ´ÙÀ½°ú °°ÀÌ ºÎÆõȴÙ:

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

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

3. ºÎÆ® ¸í·ÉÇà ¿É¼Ç

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

initrd=<path> (¿¹, LOADLIN)

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

noinitrd

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

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

root=/dev/ram0 (devfs¸¦ »ç¿ëÇÏÁö ¾ÊÀ»¶§)

root=/dev/rd/0 (devfs »ç¿ëÇÒ ¶§)

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

4. ¼³Ä¡

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

# mkdir /initrd

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

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

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

# mknod /dev/initrd b 1 250

# chmod 400 /dev/initrd

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

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

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

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

  1. ·çÇÁ¹é ºí·° ÀåÄ¡°¡ Ä¿³Î ¾È¿¡ ¼³Á¤µÇ¾ú´ÂÁö È®ÀÎÇÑ´Ù.
  2. ÀûÀýÇÑ Å©±âÀÇ ºó ÆÄÀÏ ½Ã½ºÅÛÀ» »ý¼ºÇÑ´Ù. ¿¹¸¦ µé¸é,

    # dd if=/dev/zero of=initrd bs=300k count=1

    # mke2fs -F -m0 initrd

    (¸¸¾à °ø°£ÀÌ Áß¿äÇÏ´Ù¸é, Ext2 ´ë½Å¿¡ Minix FS ¸¦ »ç¿ëÇÒ¼öµµ ÀÖ´Ù.)

  3. ÆÄÀÏ ½Ã½ºÅÛÀ» ¸¶¿îÆ®ÇÑ´Ù. ¿¹¸¦ µé¸é,

    # mount -t ext2 -o loop initrd /mnt

  4. ÄÜ¼Ö ÀåÄ¡¸¦ »ý¼ºÇÑ´Ù(devfs¸¦ »ç¿ëÇÑ´Ù¸é ²À ÇÊ¿äÇÏÁö´Â ¾ÊÀ¸³ª, ¾î·µç ¹®Á¦ ¸¦ ¹®Á¦¸¦ ÀÏÀ¸Å°Áö´Â ¾Ê´Â´Ù) :

    # mkdir /mnt/dev

    # mknod /mnt/dev/console c 5 1

  5. initdrd ȯ°æÀ» ÀûÀýÇÏ°Ô »ç¿ëÇϱâ À§ÇØ ÇÊ¿äÇÑÆÄÀϵéÀ» º¹»çÇÑ´Ù. °¡Àå Áß¿äÇÑ ÆÄÀÏÀÎ /linuxrc ¸¦ ÀØÁö ¸»¶ó. /linuxrc ÀÇ Æ۹̼ÇÀº x (½ÇÇà) À» Æ÷ÇÔÇØ¾ß ÇÔ¿¡ ÁÖÀÇÇ϶ó.
  6. initrd ȯ°æÀÌ ÇÒ ¼ö ÀÖ´Â Á¤È®ÇÑ ÀÛµ¿Àº ¸®ºÎÆà ÇÏÁö ¾Ê°íµµ ´ÙÀ½ÀÇ ¸í·ÉÀ» ÀÌ¿ëÇÏ¿© ÀÚÁÖ Å×½ºÆ® ÇÒ ¼ö ÀÖ´Ù.

    # chroot /mnt /linuxrc

    ¹°·Ð ÀÌ°ÍÀº ÀϹÝÀûÀÎ ½Ã½ºÅÛ »óŸ¦ ¹æÇØÇÏÁö ¾Ê´Â initrd¿¡¸¸ ÇÑÁ¤µÈ´Ù (¿¹, ³×Æ®¿÷ ÀÎÅÍÆäÀ̽º¸¦ Àç¼³Á¤, ¸¶¿îÆ®µÈ µð¹ÙÀ̽º¿¡ µ¤¾î¾²±â, ÀÌ¹Ì ½ÇÇàÁßÀÎ µ¥¸óÀ» ´Ù½Ã ¶ç¿ì±â µî¿¡ ÀÇÇؼ­. ±×·¯³ª ±×·¯ÇÑ chroot µÈ initrd ȯ°æ¿¡¼­µµ pivot_root ¸¦ »ç¿ëÇÏ´Ù´Â °Í¿¡ ÁÖ¸ñÇ϶ó.)

  7. ÆÄÀÏ ½Ã½ºÅÛÀ» ¾ð¸¶¿îÆ®ÇÑ´Ù.

    # umount /mnt

  8. ÀÌÁ¦ initrd ´Â ÆÄÀÏ "initrd" ¾È¿¡ ÀÖ´Ù. ÇÊ¿äÇÏ´Ù¸é ¾ÐÃàÇÒ¼öµµ ÀÖ´Ù.

    # gzip -9 initrd

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

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

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

    root=/dev/ram0 init=/linuxrc rw

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

    root=/dev/rd/0 init=/linuxrc rw

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

    LOADLIN < kernel > initrd= <disk_image>

    ¿¹) LOADLIN C:\LINUX\BZIMAGE initrd=C:\LINUX\INITRD.GZ root=/dev/ram0

    init=/linuxrc rw

    LILO ÀÇ °æ¿ì, /etc/lilo.conf ¾È¿¡ Àüü ¼½¼Ç À̳ª ȤÀº ÇØ´çÇÏ´Â ¼½¼Ç¿¡ INITRD=<path> ¿É¼ÇÀ» Ãß°¡ÇÑ´Ù. ±×¸®°í APPEND ¸¦ ÀÌ¿ëÇÏ¿© ¿É¼ÇÀ» ³Ñ°ÜÁØ´Ù. ¿¹¸¦ µé¸é,

    image = /bzImage

    initrd = /boot/initrd.gz

    append = "root=/dev/ram0 init=/linuxrc rw"

    ±×¸®°í /sbin/lilo ¸¦ ½ÇÇà½ÃŲ´Ù.

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

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

5. ·çÆ® ÀåÄ¡ ¹Ù²Ù±â

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

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

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

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

# mkdir /new-root

# mount -o ro /dev/hda1 /new-root

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

# cd /new-root

# mkdir initrd

# pivot_root . initrd

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

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

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

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

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

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

# umount /initrd

# blockdev --flushbufs /dev/ram0 # devfs ¸¦ »ç¿ëÇÒ °æ¿ì

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

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

6. »ç¿ë ½Ã³ª¸®¿À

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

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

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

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

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

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

7. ±¸½Ä ·çÆ® º¯°æ ¸ÞÄ¿´ÏÁò

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

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

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

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

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

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

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

8. Âü°íÀÚ·á

[1] Almesberger, Werner; "Booting Linux: The History and the Future"

[2] newlib package (experimental), with initrd example

[3] Brouwer, Andries; "util-linux: Miscellaneous utilities for Linux"


ID
Password
Join
You like to form new friendships and make new acquaintances.


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.0014 sec