Linux Devfs (Device File System) FAQ Richard Gooch
rgooch (at) atnf dot csiro dot au
Á¾ÇÊ ÃÖ
viatoris (at) nownuri dot net
¿µÈÖ ±è
lachesis (at) kldp dot org
2-FEB-2002 2002. 2. 2 R.Gooch ¿øº» ¹®¼­ ¾÷µ¥ÀÌÆ® 4-FEB-2002 2002. 2. 4 viatoris ¹ø¿ª ¿Ï·á 18-FEB-2002 2002. 3. 2 ¶óÅ°½Ã½º DocBook À¸·Î º¯È¯ 158-MAR-2002 2002. 3. 15 ÃÖÁ¾ÇÊ XFree86 ºÎºÐÀÇ ¿À¿ª ¼öÁ¤ ÀÌ ¹®¼­ÀÇ ¿øº»Àº http://www.atnf.csiro.au/~rgooch/linux/docs/devfs.html ¿¡¼­ ãÀ»¼ö ÀÖ°í, Ä¿³Î¼Ò½º¿Í ÇÔ²² Á¦°øµÇ´Â ÅؽºÆ® ¹®¼­º¸´Ù º¸±â¿¡ ´õ ÆíÇÏ´Ù. ¹Ì·¯»çÀÌÆ®´Â http://www.ras.ucalgary.ca/~rgooch/linux/docs/devfs.html ¿¡ ÀÖ´Ù. ¶ÇÇÑ devfs¿Í °°ÀÌ »ç¿ëµÇ´Â µ¥¸óÀÌ Àִµ¥, http://www.atnf.csiro.au/~rgooch/linux/ ¿¡¼­ ´õ ¸¹Àº Á¤º¸¸¦ ¾òÀ»¼ö ÀÖ´Ù. ´ç½ÅÀÌ ½ÅûÇÒ °æ¿ì ¸ÞÀϸµ ¸®½ºÆ®ÀÇ »ç¿ëÀÌ °¡´ÉÇÏ´Ù. mailto:majordomo (at) oss.sgi.com ·Î ¸ÞÀÏ º»¹®¿¡ subscribe devfs °ú °°Àº ³»¿ëÀ» Æ÷ÇÔÇÏ¿© ¸ÞÀÏÀ» º¸³»¶ó. ½ÅûÃë¼Ò´Â unsubscribe devfs À» Æ÷ÇÔÇÑ ¸ÞÀÏÀ» º¸³»¸é µÈ´Ù. ÀÌ ¸®½ºÆ®´Â http://oss.sgi.com/projects/devfs/archive/ ¿¡ º¸°üµÈ´Ù. http://your.destiny.pe.kr/l ¿¡¼­ ÃֽŠ¼öÁ¤º»À» º¸½Ç ¼ö ÀÖ½À´Ï´Ù.
ÀÌ°ÍÀº ¹«¾ùÀΰ¡? Devfs´Â ·çÆ® ÆÄÀϽýºÅÛ¿¡¼­ "½ÇÁ¦" ij¸¯ÅÍ ¹× Ư¼ö ºí·°µð¹ÙÀ̽º¸¦ Ãë±ÞÇÏ´Â °Í¿¡ ´ëÇÑ ´Ù¸¥ ¹æ¹ýÀÌ´Ù. Ä¿³Î µð¹ÙÀ̽º µå¶óÀ̹ö´Â ¸ÞÀÌÀú/¸¶ÀÌ³Ê ¹øÈ£¿¡ ÀÇÇØ µî·ÏµÇ´Â °Íº¸´Ù ´õ ³ªÀº À̸§À¸·Î µð¹ÙÀ̽º¸¦ µî·ÏÇÒ¼ö ÀÖ´Ù. ÀÌ µð¹ÙÀ̽ºµéÀº ±× µå¶óÀ̹ö¿¡ ÁöÁ¤µÈ ¼ÒÀ¯±Ç°ú º¸È£±ÇÇÑÀ» °¡Áø »óÅ·ΠÀÚµ¿ÀûÀ¸·Î devfs¿¡ ³ªÅ¸³¯ °ÍÀÌ´Ù. µ¥¸ó(devfsd)Àº ÀÌ·¯ÇÑ ±âº»°ªÀ» µ¤¾î½á¼­ »ç¿ëÇÒ ¼ö ÀÖ´Ù. Devfs´Â Ä¿³Î 2.3.46 ÀÌÈÄ ¹öÀüºÎÅÍ »ç¿ëÇÒ¼ö ÀÖ´Ù. devfs´Â ¿É¼ÇÀ̶ó´Â °ÍÀ» ¸í½ÉÇÏÀÚ. ¸¸¾à ¿¹Àü¹æ½ÄÀÇ disc-based µð¹ÙÀ̽º ³ëµå¸¦ ¼±È£ÇÑ´Ù¸é, °£´ÜÇÏ°Ô CONFIG_DEVFS_FS=n (±âº»°ª)¶ó°í µÎ¸é µÈ´Ù. ÀÌ °æ¿ì¿¡, ¾Æ¹«°Íµµ ¹Ù²îÁö ¾Ê´Â´Ù. ¶ÇÇÑ devfs¸¦ È°¼ºÈ­½ÃÄ×´Ù¸é ±âº»°ªÀº ¿¹ÀüÀÇ µð¹ÙÀ̽º À̸§°ú ¿Ïº®ÇÏ°Ô È£È¯µÇµµ·Ï °ü¸®µÈ´Ù´Â °ÍÀ» ±â¾ïÇ϶ó. devfs¸¦ ¹Ù¶óº¸´Âµ¥¿¡ µÎ°¡Áö °üÁ¡ÀÌ ÀÖ´Ù : Çϳª´Â µð¹ÙÀ̽º ³×ÀÓ½ºÆäÀ̽º°¡ ´ÜÁö ¸¶¿îÆ®µÈ ÆÄÀϽýºÅÛó·³ ³×ÀÓ½ºÆäÀ̽º¶ó´Â °Í¿¡ ±âÃÊÇÑ °ÍÀÌ´Ù. ´Ù¸¥ Çϳª´Â ±× µð¹ÙÀ̽º ³×ÀÓ½ºÆäÀ̽ºÀÇ °üÁ¡À» Á¦°øÇÏ´Â ÆÄÀϽýºÅÛÀÇ Äڵ忡 ´ëÇÑ °üÁ¡ÀÌ´Ù. ³»(¿øÀúÀÚ)°¡ ÀÌ·± ±¸ºÐÀ» ¸¸µç ÀÌÀ¯´Â devfs´Â °¢ ¸¶¿îÆ®¸¶´Ù °°Àº µð¹ÙÀ̽º ³×ÀÓ½ºÆäÀ̽º¸¦ º¸¿©Áָ鼭 ¿©·¯¹ø ¸¶¿îÆ® µÉ¼ö Àֱ⠶§¹®ÀÌ´Ù. devfs¿¡ ´ëÇÑ ´ñ°¡´Â Ä¿³ÎÄÚµåÀÇ Å©±â¿Í ¸Þ¸ð¸® »ç¿ë·®ÀÌ ¼Ò·® Áõ°¡ÇÏ´Â °ÍÀÌ´Ù. ¾à 7ÆäÀÌÁöÀÇ ÄÚµå(__init ¼½¼Ç¿¡¼­)¿Í ±× ³×ÀÓ½ºÆäÀ̽º¿¡¼­ °¢ °³Ã¼¿¡ ´ëÇÏ¿© 72¹ÙÀÌÆ®ÀÇ ¸Þ¸ð¸®°¡ ÇÊ¿äÇÏ´Ù. º¸ÅëÀÇ ½Ã½ºÅÛÀº ¼ö¹é°³ÀÇ µð¹ÙÀ̽º °³Ã¼¸¦ °¡Áö¸ç, ÀÌ°ÍÀº Á»´õ ¸¹Àº ÆäÀÌÁö¸¦ ÇÊ¿ä·Î ÇÑ´Ù. ramdisc ¿¡ /dev ¸¦ ³Ö´Â ¹æ¹ý°ú ÀÌ°ÍÀ» ºñ±³ÇØ º¸¶ó. ÀϹÝÀûÀÎ ¸Ó½Å¿¡¼­, ±× ´ñ°¡´Â 0.2 ÆÛ¼¾Æ® ÀÌÇÏÀÌ´Ù. 64¸Þ°¡ÀÇ ·¥À» °¡Áö´Â º¸ÅëÀÇ ½Ã½ºÅÛ¿¡¼­´Â 0.1 ÆÛ¼¾Æ® ÀÌÇÏÀÌ´Ù. devfs ¿¡ ´ëÇØ "bloatware"¶ó´Â ºñ³­Àº Á¤´ç¼ºÀÌ ¾ø´Ù. devfs ¸¦ »ç¿ëÇÒ ÀÌÀ¯ devfs¸¦ ÇÊ¿ä·Î ÇÏ´Â ¿©·¯ ¹®Á¦Á¡ÀÌ ÀÖ´Ù. ÀÌµé ¹®Á¦µé Áß¿¡ ¾î¶² °ÍµéÀº (´ç½ÅÀÇ °üÁ¡¿¡ µû¶ó¼­) ¸Å¿ì ½É°¢ÇÏ°í, ¾î¶² °ÍµéÀº devfs ¾øÀÌ ÇØ°áÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª, ÀüüÀûÀÎ ¸é¿¡¼­ º¸¸é ÀÌ ¹®Á¦µéÀº devfs¸¦ ÇÊ¿ä·Î ÇÑ´Ù. ¼±ÅÃÇÒ ¼ö ÀÖ´Â °ÍÀº º¹ÀâÇÏ°í ÇêÁ¡Åõ¼ºÀÌÀÎ ÇÊ¿ä¾ø´Â userspace ¿¡¼­ÀÇ ÇØ°á ÆÐÄ¡¸¦ ³»³õ´Â °Í°ú, °£´ÜÇÏ°í °ß°íÇϸç È¿°úÀûÀÎ devfs¸¦ »ç¿ëÇÏ´Â °ÍÀÇ µÑ Áß ÇϳªÀÌ´Ù. devfs¿¡ ´ëÇÑ ¸¹Àº ¹Ý·ÐÀÌ ÀÖ°í, ¸ðµÎ´Ù devfs¸¦ ±¸ÇöÇÏÁö ¾ÊÀ¸¸é ¾ò¾îÁö´Â ÀÌÀ͵éÀ» Æ÷ÇÔÇÏ°í ÀÖ´Ù. ÇÏÁö¸¸, Áö±Ý±îÁö´Â Äڵ尡 ¾ø°Å³ª, devfs°¡ Á¦°øÇÏ´Â ¸ðµç ±â´ÉµéÀ» Á¦°øÇÒ¼ö ÀÖ´Â ¾î¶² ´ë¾Èµµ ¾ø´Ù. °Ô´Ù°¡, Á¦¾ÈµÈ ´ë¾ÈµéÀº »ç¿ëÀÚ °ø°£¿¡¼­ ´õ º¹ÀâÇÏ´Ù. (±×¸®°í devfsº¸´Ù ´õ ÀûÀº ±â´ÉÀ» °¡Áø »óÅ·ΠÁ¦°øµÈ´Ù) ¾î¶² »ç¶÷µéÀº "Ä¿³Î Å©±â"ÀÇ Ãà¼Ò¸¦ ¸ñÇ¥·Î »ïÁö¸¸, ±×µéÀº userspace ¿¡ ¹ÌÄ¡´Â ¿µÇâÀº °í·ÁÇÏÁö ¾Ê´Â´Ù. Ä¿³Î°ø°£°ú »ç¿ëÀÚ °ø°£ÀÇ ÀüüÀûÀÎ º¹ÀâÇÔÀÇ Á¤µµ¸¦ Á¦ÇÑÇÑ (º¹À⼺ÀÌ ´úÇÑ) ¹æ¹ýÀÌ ÁÁÀº ¼Ö·ç¼ÇÀÌ´Ù. ¸ÞÀÌÀú ¹øÈ£¿Í ¸¶ÀÌ³Ê ¹øÈ£ÀÇ ÇÒ´ç ÇöÁ¸ÇÏ´Â ½ºÅ°¸¶´Â °¢°¢ÀÇ µð¹ÙÀ̽º ¸¶´Ù ¸ÞÀÌÀú/¸¶ÀÌ³Ê µð¹ÙÀ̽º ¹øÈ£ÀÇ ÇÒ´çÀ» ¿ä±¸ÇÑ´Ù. ÀÌ°ÍÀº °¢ µð¹ÙÀ̽º¸¶´Ù °íÀ¯ÇÑ ¹øÈ£¸¦ °¡Áú ¼ö ÀÖ°Ô Çϱâ À§ÇÏ¿© (´ç½ÅÀÌ "°³ÀÎÀû"ÀÎ µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ °³¹ßÇÏÁö ¾Ê´ÂÇÑ) ÀÌµé µð¹ÙÀ̽º ¹øÈ£µéÀ» ó¸®Çϱâ À§ÇÏ¿© Áß¾ÓÁýÁßÀûÀÎ ±ÇÇÑÀÌ ¿ä±¸µÈ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. Devfs´Â ³×ÀÓ½ºÆäÀ̽º¿¡ ´ëÇÑ ºÎÇϸ¦ ´ú¾îÁØ´Ù. ÀÌ°ÍÀº Å©°Ô ºÎÇϸ¦ ´ú¾îÁÖ´Â °Íó·³ º¸ÀÌÁö ¾ÊÁö¸¸, ½ÇÁ¦·Î´Â ¾öû³­ È¿°ú¸¦ ³½´Ù. µå¶óÀ̹ö °ü¸®ÀÚµéÀº ÀÚ¿¬ÀûÀ¸·Î ±× µð¹ÙÀ̽ºÀÇ ±â´ÉÀ» ¹Ý¿µÇÏ´Â µð¹ÙÀ̽º À̸§À» ¼±ÅÃÇϹǷÎ, ³×ÀÓ½ºÆäÀ̽ºÀÇ Ãæµ¹¿¡ ´ëÇÑ ÀáÀçÀû À§ÇèÀº Àû´Ù. ÀÌ°ÍÀ» ÇØ°áÇϱâ À§Çؼ­´Â Ä¿³ÎÀÇ º¯°æÀÌ ÇÊ¿äÇÏ´Ù. /dev °ü¸® ÇöÀçÀÇ µð¹ÙÀ̽º Á¢±Ù ¹æ½ÄÀº µð¹ÙÀ̽º ³ëµå¸¦ ÅëÇؼ­ ÇàÇØÁö´Â ¹æ½ÄÀ̱⠶§¹®¿¡, ½Ã½ºÅÛ °ü¸®ÀÚ¿¡ ÀÇÇؼ­¸¸ µð¹ÙÀ̽º ³ëµå°¡ ¸¸µé¾îÁ®¾ß¸¸ ÇÑ´Ù. Ç¥ÁØ µð¹ÙÀ̽º¿¡ ´ëÇÏ¿© ´ç½ÅÀº ¸ðµç (¼ö¹é°³ÀÇ!)³ëµå¸¦ ¸¸µé¾î³»´Â MAKEDEV¶ó´Â ÇÁ·Î±×·¥À» ãÀ» ¼ö ÀÖ´Ù. ÀÌ°ÍÀº Ä¿³Î¿¡¼­ÀÇ º¯È­´Â MAKEDEV ÇÁ·Î±×·¥¿¡¼­ ¹Ý¿µµÇ¾î¾ß Çϰųª, ½Ã½ºÅÛ °ü¸®ÀÚ°¡ ¼öµ¿À¸·Î µð¹ÙÀ̽º ³ëµå¸¦ ¸¸µé¾î¾ß ÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ±âº»ÀûÀÎ ¹®Á¦´Â ¸ÞÀÌÀú ¹øÈ£¿Í ¸¶ÀÌ³Ê ¹øÈ£¸¦ ±¸ºÐÇÏ´Â µÎ°³ÀÇ µ¥ÀÌÅͺ£À̽º°¡ Á¸ÀçÇÑ´Ù´Â °ÍÀÌ´Ù. Çϳª´Â Ä¿³Î¿¡ ÀÖ°í, ³ª¸ÓÁö´Â /dev¿¡ ÀÖ´Ù (¶Ç´Â ¸¸¾à ´ç½ÅÀÌ ±×·± ¹æ¹ýÀ¸·Î º¸±â ¿øÇÑ´Ù¸é MAKEDEV ÇÁ·Î±×·¥¿¡ ÀÖ´Ù.). ÀÌ°ÍÀº ½Ç¿ëÀûÀÌÁö ¸øÇÑ Á¤º¸ÀÇ Áߺ¹ÀÌ´Ù. ÀÌ ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ­´Â Ä¿³ÎÀÇ º¯°æÀÌ ÇÊ¿äÇÏ´Ù. /dev µð·ºÅ丮ÀÇ Áõ°¡ ÀüÇüÀûÀÎ /dev µð·ºÅ丮¿¡´Â 1200°³ ÀÌ»óÀdzëµå°¡ ÀÖ´Ù! ÀÌ µð¹ÙÀ̽ºµéÀÇ ´ëºÎºÐÀº Çϵå¿þ¾î°¡ ¾ø±â ¶§¹®¿¡ Á¸ÀçÇÏÁö ¾Ê´Â´Ù. ÀÌ °Å´ëÇÑ /dev ´Â µð¹ÙÀ̽º Á¢±Ù ½Ã°£À» Áõ°¡½ÃŲ´Ù (³ª´Â ´ÜÁö dentry Ž»ö ½Ã°£°ú Á¸ÀçÇÏÁö ¾Ê´Â µð½ºÅ©ÀÇ inode¸¦ Àдµ¥ °É¸®´Â ½Ã°£¸¸À» °è»êÇÑ °ÍÀÌ´Ù : ´ÙÀ½ Ç׸ñ¿¡¼­´Â Á»´õ ²ûÂïÇÑ ¿¹¸¦ º¸¿©ÁØ´Ù) ´ÙÀ½ÀÇ ¿¹´Â SCSI µð¹ÙÀ̽º¸¦ °í·ÁÇÑ´Ù¸é /dev µð·ºÅ丮°¡ ¾ó¸¶³ª Ä¿Áú¼ö ÀÖ´Â °¡¸¦ º¸¿©ÁØ´Ù. host 6 bits (say up to 64 hosts on a really big machine) channel 4 bits (say up to 16 SCSI buses per host) id 4 bits lun 3 bits partition 6 bits TOTAL 23 bits °¡´ÉÇÑ ¸ðµç µð¹ÙÀ̽º ³ëµå¸¦ ÀúÁ¤Çϱ⠿øÇÑ´Ù¸é 8¸Þ°¡(1024*1024)ÀÇ inode¸¦ ÇÊ¿ä·Î ÇÑ´Ù. ¸¸¾à id, partition À» Á¦¿ÜÇÏ°í SCSI Ÿ°Ù(id)´ç ÇϳªÀÇ SCSI ¹ö½º¿Í ÇϳªÀÇ ³í¸®Àû À¯´ÖÀ» °¡Áö´Â È£½ºÆ® ¾îµªÅÍ·Î °¡Á¤ÇÑ´Ù ÇÒÁö¶óµµ, ¿©ÀüÈ÷ 10bits ¶Ç´Â 1024°³ÀÇ ³ëµå°¡ ³²´Â´Ù. °¢ VFS inode´Â ´ë·« 256 bytes¸¦ Â÷ÁöÇϹǷΠ(kernel 2.1.78), (½ÇÁ¦ inode ¿ª½Ã VFS inode¿Í À¯»çÇÑ ¾çÀÇ °ø°£À» Â÷ÁöÇÑ´Ù°í °¡Á¤Çϸé) µð½ºÅ©»ó¿¡ 256kBytesÀÇ inode ÀúÀå°ø°£ÀÌ ÇÊ¿äÇÏ´Ù. ¿À´Ã³¯ µð½ºÅ©´Â Àú·ÅÇϹǷÎ, ³ª»ÚÁö´Â ¾Ê´Ù. ÀÓº£µðµå ½Ã½ºÅÛÀº /dev inodeÀÇ 256kBytes¿¡ ´ëÇØ ÁÖÀÇÇØ¾ß ÇÏÁö¸¸ ÀÓº£µðµå ½Ã½ºÅÛÀº /dev µð·ºÅ丮¸¦ ¼öµ¿À¸·Î Á¶Á¤ÇÒ ¼ö ÀÖ´Ù. ³ª ÀÚ½ÅÀÇ ÀÓº£µðµå ½Ã½ºÅÛ¿¡¼­´Â ±×·¸°Ô Çؾ߰ÚÁö¸¸, devfs¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀ» ÅÃÇÒ °ÍÀÌ´Ù. ´Ù¸¥ ¹®Á¦´Â ÃÖÃÊ·Î ÂüÁ¶µÉ¶§ inode ¸¦ Ž»öÇϴµ¥ °É¸®´Â ½Ã°£ÀÌ´Ù. ¸Þ¸ð¸®»óÀÇ ¸®½ºÆ®¸¦ ÅëÇÏ¿© Ž»öÇϴµ¥ °É¸®´Â ½Ã°£ »Ó¸¸ ¾Æ´Ï¶ó, µð½ºÅ©¿¡¼­ inode¸¦ Àдµ¥ °É¸®´Â ½Ã°£µµ ÀÖ´Ù. ÀÌ ¹®Á¦´Â Ä¿³Î·Î±×¸¦ ºÐ¼®ÇÏ¿© ÇÊ¿äÇÏÁö ¾ÊÀ¸¸é /dev °³Ã¼¸¦ »èÁ¦ÇÏ°í ÇÊ¿äÇÒ¶§ »ý¼ºÇÏ´Â ÇÁ·Î±×·¥À» »ç¿ëÇÏ¿© »ç¿ëÀÚ °ø°£»ó¿¡¼­ ÇØ°áÇÒ ¼ö ÀÖ´Ù. ÀÌ ÇÁ·Î±×·¥Àº »õ·Î¿î ¸ðµâÀÌ ·ÎµåµÉ¶§¸¶´Ù ½ÇÇàµÉ °ÍÀÌ°í, ¸¹Àº ºÎºÐ ´À·ÁÁö°Ô µÉ °ÍÀÌ´Ù. SCSI µð¹ÙÀ̽º¿¡ ´ëÇÏ¿© µð¹ÙÀ̽º ³ëµå¸¦ ÀÚµ¿À¸·Î ¸¸µå´Â scsidev ¶ó ºÒ¸®´Â ÇÁ·Î±×·¥ÀÌ ÀÖ´Ù. ÀÌ ÇÁ·Î±×·¥Àº /proc/scsi¿¡¼­ ÆÄÀÏÀ» Ž»öÇÏ´Â ¹æ¹ýÀ¸·Î ÀÛµ¿ÇÑ´Ù. ºÒÇàÈ÷µµ, ´Ù¸¥ µð¹ÙÀ̽º ³ëµå¿¡ ´ëÇØ ÀÌ °³³äÀ» È®ÀåÇϱâ À§Çؼ­´Â ÇöÁ¸ÇÏ´Â µå¶óÀ̹öµéÀ» ¸¹Àº ºÎºÐ ¼öÁ¤ÇÏ´Â °ÍÀÌ ÇÊ¿äÇÏ´Ù (/proc ÆÄÀÏ ½Ã½ºÅÛ¿¡ Á¤º¸¸¦ Á¦°øÇØ¾ß Çϱ⠶§¹®¿¡). ÀÌ°ÍÀº °£´ÜÇÑ º¯°æÀÌ ¾Æ´Ï´Ù (³ª´Â devfs°¡ À¯»çÇÑ ÀÏÀ» ÇÑ´Ù´Â °ÍÀ» ¾Ë°í ÀÖ´Ù). ´ç½ÅÀÌ ÀÌ·¯ÇÑ ¸ðµç ³ë·ÂÀ» ÇÏ´õ¶óµµ, (ÀÌ Á¤º¸¸¦ Á¦°øÇÏ°í ÀÖ´Â) devfs¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ³ªÀ» °ÍÀÌ´Ù. °Ô´Ù°¡, ¿©·¯°³ÀÇ ¼­·Î ´Ù¸¥ µð¹ÙÀ̽º µå¶óÀ̹öµéÀÌ ¼­·Î ´Ù¸¥ ¹æ¹ýÀ¸·Î °¢°¢ÀÇ Á¤º¸¸¦ Á¦°øÇÏ´Â °Íó·³, ±×·¯ÇÑ ½Ã½ºÅÛÀº Ư¼öÇÑ ¸ñÀûÀ» À§ÇØ ¸¸µé¾îÁö´Â ½Ã½ºÅÛµé°ú ¸¶Âù°¡Áö·Î, °¢°¢ÀÇ Æ¯¼º¿¡ ¸Â°Ô ±¸¼ºµÇ¾î¾ß ÇÑ´Ù. Devfs´Â µð¹ÙÀ̽º ³ëµå ½º½º·Î ÀÚ¿¬½º·´°Ô Á¤º¸¸¦ Á¦°øÇÏ°Ô²û ÇÏ´Â ÀÏÁ¤ÇÑ ¸ÞÄ¿´ÏÁòÀ» °¡Áö°í ÀÖÀ¸¹Ç·Î ½Ã½ºÅÛÀÇ ±¸¼ºÀÌ º¸´Ù ´õ ¸íÈ®ÇØÁø´Ù!! µð¹ÙÀ̽º µå¶óÀ̹öÀÇ struct file_operations ±¸Á¶Ã¼¿¡ ´ëÇÑ ³ëµå µð¹ÙÀ̽º ³Ñ¹ö¸¦ °¡Áö°í (disc-based) /dev µð·ºÅ丮 ¾Æ·¡ÀÇ ¹®ÀÚ / ºí·° ÀåÄ¡ ³ëµåµé°ú ½ÇÁ¦ µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ ¿¬°áÇÏ´Â ¹æ¹ý°ú, devfs ¿¡¼­ µî·ÏµÈ °³Ã¼µéÀÌ ½ÇÁ¦ µð¹ÙÀ̽º µå¶óÀ̹ö¿¡ ¿¬°áµÇ´Â ¹æ¹ý »çÀÌ¿¡´Â ¸Å¿ì Áß¿äÇÑ Â÷ÀÌÁ¡ÀÌ ÀÖ´Ù. 8ºñÆ®ÀÇ ¸ÞÀÌÀú/¸¶ÀÌ³Ê ¹øÈ£¸¦ °¡Áö°í disc-based c&b ³ëµåµé°ú ÇØ´ç ¸ÞÀÌÀú ³Ñº£ÀÇ µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ ¿¬°áÇÏ´Â °ÍÀº °íÁ¤µÈ 128 °³ÀÇ ¿£Æ®¸® Å×À̺íÀ» ÅëÇÏ¿© ÀÌ·ç¾îÁø´Ù. ÆÄÀϽýºÅÛµéÀº ¹®ÀÚ/ºí·Ï ÀåÄ¡ÆÄÀÏ¿¡ ´ëÇÑ inode operation À» {chr,blk}dev_inode_operations ·Î ¼³Á¤ÇØ µÐ´Ù. µû¶ó¼­, µð¹ÙÀ̽º°¡ open µÇ¾úÀ» ¶§, ¾à°£ÀÇ indirect call ¸¸À¸·Î ºü¸£°Ô file_operation ±¸Á¶Ã¼ÀÇ ÇÔ¼ö Æ÷ÀÎÅ͵éÀ» ÂüÁ¶ÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ´Ù¸¥ ±âŸÀÇ(miscellaneous) ¹®ÀÚ µð¹ÙÀ̽ºµé -- (¿ªÀÚÁÖ : ¸¶ÀÌ³Ê ³Ñ¹öµé¿¡ µû¶ó ÀüÇô ´Ù¸¥ ÀåÄ¡°¡ µÉ ¼öµµ ÀÖ´Â ÀåÄ¡µé, ¿¹:tty (major number 3,4)) -- ¶§¹®¿¡ µÎ¹ø° ´Ü°è°¡ ÇÊ¿äÇÏ´Ù : ±× ÆÄÀÏÀÌ ¿­·ÈÀ»¶§ °°Àº ¸¶ÀÌ³Ê ¹øÈ£¸¦ °¡Áø µå¶óÀ̹ö ¿£Æ®¸®¸¦ Ž»öÇÏ°í, Àû´çÇÑ ¸¶ÀÌ³Ê ¿ÀÇ ¸Þ½îµå¸¦ È£ÃâÇÑ´Ù. ÀÌ ÅÆ»öÀº µð¹ÙÀ̽º ³ëµå¸¦ ¿­¶§ Ç×»ó ¼öÇàµÈ´Ù. ¾î¼¸é, ¿ÀÇ ¸Þ½îµå¸¦ ã±â Àü¿¡ ¼ö½Ê°³ÀÇ miscellaneous °³Ã¼¸¦ Ž»öÇÒ °ÍÀÌ´Ù. ¸¹Àº ¿À¹öÇìµå¸¦ ÀÏÀ¸Å°Áö´Â ¾Ê´Â´Ù ÇÏ´õ¶óµµ, ÇÊ¿ä¾ø´Â ÀÛ¾÷À¸·Î º¸ÀδÙ. ¸®´ª½º´Â ¶§¶§·Î 8ºñÆ®ÀÇ ¸ÞÀÌÀú/¸¶ÀÌ³Ê °æ°è¸¦ ³Ñ¾î¼­¾ß¸¸ ÇÏ´Â °æ¿ìµµ ÀÖ´Ù. ¸¸¾à 16ºñÆ®·Î °¢°¢ÀÇ ¹øÈ£ÀÇ Å©±â¸¦ Áõ°¡½ÃŲ´Ù¸é, ¸ÞÀÌÀú Å×À̺íÀº(ij¸¯ÅÍ ¹× ºí·° µð¹ÙÀ̽º¿¡ ´ëÇØ ÇϳªÀÇ) 64k ¿£Æ®¸®°¡ ÇÊ¿äÇϱ⠶§¹®¿¡ (x86 ¿¡¼­´Â 512kBytes, 64 ºñÆ® ½Ã½ºÅÛ¿¡¼­´Â1 ¸Þ°¡¹ÙÀÌÆ®), ±× ¸ÞÀÌÀú µå¶óÀ̹ö¸¦ »ç¿ëÇÏ´Â Àε¦½Ì ½ºÅ°¸¶´Â »ç¿ëÇÒ ¼ö ¾ø°Ô µÈ´Ù. µû¶ó¼­ miscellaneous ij¸¯ÅÍ µð¹ÙÀ̽º¸¦ »ç¿ëÇÏ´Â °Í°ú ºñ½ÁÇÑ ½ºÅ°¸¶¸¦ »ç¿ëÇؾ߸¸ ÇÑ´Ù. ÀÌ°ÍÀº Ž»ö½Ã°£ÀÌ ´ç½ÅÀÇ ½Ã½ºÅÛ¿¡¼­ ¸ÞÀÌÀú µð¹ÙÀ̽º µå¶óÀ̹öÀÇ Æò±Õ ¼ö¿¡ µû¶ó ¼±ÇüÀûÀ¸·Î Áõ°¨ÇÑ´Ù´Â °ÍÀ» ³ªÅ¸³½´Ù. ¸ðµç "µð¹ÙÀ̽º"°¡ Çϵå¿þ¾î´Â ¾Æ´Ï´Ù. ¾î¶² °ÍÀº KGIó·³ Á»´õ °í¼öÁØÀÇ µå¶óÀ̹öµéÀÌ´Ù. µû¶ó¼­ ´ç½ÅÀº Çϵå¿þ¾îÀÇ Áõ°¡ ¾øÀÌ ´õ ¸¹Àº "µð¹ÙÀ̽º"µéÀ» ¾òÀ» ¼ö ÀÖ´Ù. ´ç½ÅÀº Áú¼­Á¤¿¬ÇÑ(±ÕÇüÀâÈù:-) ¹ÙÀ̳ʸ® ±¸Á¶¸¦ »ý¼ºÇÔÀ¸·Î½á ÀÌ°ÍÀ» Çâ»ó ½Ãų¼ö ÀÖ°í, ÀÌ °æ¿ì¿¡ Ž»ö½Ã°£Àº log(N)À¸·Î µÈ´Ù. ´Ù¸¥ ¹æ¹ýÀ¸·Î´Â, Ž»ö½Ã°£À» Çâ»ó½ÃÅ°±â À§ÇØ ÇؽÌ(hashing)À» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª ²À Çؾ߸¸ ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó¸é ¿Ö ¸ðµÎ¸¦ Ž»öÇÏ·Á Çϴ°¡? ´Ù½Ã Çѹø, ÀÌ°ÍÀº ÇÊ¿ä¾ø´Â °Íó·³ º¸ÀδÙ. devfs´Â ¸ÞÀÌÀú&¸¶ÀÌ³Ê ½Ã½ºÅÛÀ» »ç¿ëÇÏÁö ¾Ê´Â ´Ù´Â °ÍÀ» ±â¾ïÇ϶ó. devfs ¿£Æ®¸®¿¡ ´ëÇÑ ¿¬°áÀº /dev °³Ã¼¸¦ Ž»öÇßÀ»¶§ ÀϾ´Ù. devfs_register() ÇÔ¼ö°¡ È£ÃâµÇ¸é, ³»ºÎÀÇ Å×À̺íÀº ±× ¿£Æ®¸® À̸§°ú file_operationsÀ» Ãß°¡ÇÑ´Ù. ±× dentry ij½Ã°¡ ¹Ì¸® /dev ¿£Æ®¸®¸¦ °¡Áö°í ÀÖÁö ¾Ê´Ù¸é, ÀÌ ³»ºÎÀÇ Å×À̺íÀº file_operations¸¦ ¾ò±â À§ÇÏ¿© Ž»öµÇ°í, inode´Â »ý¼ºµÈ´Ù. ¸¸¾à dentry ij½¬°¡ ÀÌ¹Ì ±× ¿£Æ®¸®¸¦ °¡Áö°í ÀÖ´Ù¸é, Ž»ö½Ã°£Àº ÇÊ¿ä¾ø´Ù (other than the dentry scan itself, but we can't avoid that anyway, and besides Linux dentries cream other OS's which don't have them:-). ¶ÇÇÑ, devfs¿¡ ³ëµå ¿£Æ®¸®ÀÇ ¼ö´Â »ç¿ë°¡´ÉÇÑ µð¹ÙÀ̽º ¿£Æ®¸®ÀÇ ¼ö¿Í °°´Ù. Áï, "»ó»óÇÒ ¼ö ÀÖ´Â" ¼ö°¡ ¾Æ´Ï´Ù. disc-based /dev¿¡¼­ ÇÊ¿ä¾ø´Â ¿£Æ®¸®¸¦ Áö¿î´Ù ÇÏ´õ¶óµµ, °ø°£À» Àý¾àÇϱâ À§ÇÏ¿© ½º½º·Î Á¦ÇÑÇÏ´õ¶óµµ »ó»óÇÒ ¼ö ÀÖ´Â ¿£Æ®¸®ÀÇ ¼ö´Â ¿©ÀüÈ÷ °°Àº ä·Î ³²¾ÆÀÖ´Ù. Devfs´Â VFS ³ëµå¿Í µð¹ÙÀ̽º µå¶óÀ̹ö »çÀÌÀÇ ºü¸¥ ¿¬°áÀ» Á¦°øÇÑ´Ù. ½Ã½ºÅÛ °ü¸® µµ±¸·Î¼­ÀÇ /dev /dev µð·ºÅ丮´Â ³»°¡ °¡Áö°í ÀÖÁö ¾Ê´Â ´ëºÎºÐÀÇ µð¹ÙÀ̽º¸¦ Æ÷ÇÔÇÏ¿© °¡´ÉÇÑ ¸ðµç µð¹ÙÀ̽ºÀÇ ³ëµå¸¦ Æ÷ÇÔÇÑ´Ù. Devfs´Â ´ÜÁö ½Ã½ºÅÛ¿¡¼­ »ç¿ë°¡´ÉÇÑ µð¹ÙÀ̽º¸¸ º¸¿©ÁØ´Ù. ÀÌ°ÍÀº /devÀÇ ¸ñ·ÏÀ» ¸¸µç´Ù´Â »ç¿ë°¡´ÉÇÑ µð¹ÙÀ̽º¸¦ Æí¸®ÇÑ ¹æ¹ýÀ¸·Î üũÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ¸ÞÀÌÀú&¸¶ÀÌ³Ê Å©±â ÇöÀç ¸ÞÀÌÀú/¸¶ÀÌ³Ê ¹øÈ£µéÀº °¢°¢ 8ºñÆ®·Î Á¦ÇѵǾî ÀÖ´Ù. ÀÌ°ÍÀº ÇϳªÀÇ ¸ÞÀÌÀú ³Ñ¹ö¸¦ ¼ÒºñÇÏ´Â SCSI µð½ºÅ© µå¶óÀ̹ö¿Í °°Àº µå¶óÀ̹ö¿¡¼­´Â ÇÑ°è¿äÀÎÀÌ µÈ´Ù. 16°³ÀÇ µð½ºÅ©¸¸ Áö¿øµÇ°í °¢ µð½ºÅ©´Â 15°³ÀÇ ÆÄƼ¼ÇÀ» °¡Áú ¼ö ÀÖ´Ù. ¾Æ¸¶ ÀÌ°ÍÀº ´ç½Å¿¡°Ô´Â ¹®Á¦°¡ ¾Æ´ÒÁö ¸ð¸£³ª, µð½ºÅ© ¾î·¹À̸¦ »ç¿ëÇÏ¿© Å« ¸®´ª½º ½Ã½ºÅÛÀ» ¸¸µå´Â ÀÌ¿¡°Ô´Â Å« ¹®Á¦°¡ µÈ´Ù. Devfs¿¡¼­ ÀÓÀÇÀÇ Æ÷ÀÎÅÍ´Â 32ºñÆ® µð¹ÙÀ̽º ±¸ºÐÀÚ¸¦ (i.e. 32ºñÆ® ¸¶ÀÌ³Ê ³Ñ¹ö¸¦ °¡Áö´Â °Íó·³ º¸ÀÌ´Â) »ç¿ë°¡´ÉÇÑ °¢°¢ÀÇ µð¹ÙÀ̽º ¿£Æ®¸®·Î ¿¬°á½Ãų¼ö ÀÖ´Ù. ÀÌ°ÍÀº Ä¿³Î¿¡¸¸ °ü·ÃµÈ °ÍÀ̹ǷÎ, ¸ÞÀÌÀú/¸¶ÀÌ³Ê ¹øÈ£¸¦ Å©±â¸¦ Áõ°¡½ÃÅ°´Â °Í¿¡ ´ëÇÏ¿© C ¶óÀ̺귯¸®¿ÍÀÇ È£È¯¿¡ ´ëÇÑ ³í¶õÀº ÇÊ¿ä¾ø´Ù. »ç¿ëÀÚ °ø°£¿¡¼­ ȣȯ¼ºÀ» À¯ÁöÇÏ´Â °Í¿¡ ´ëÇÑ ¼¼ºÎ»çÇ×Àº "µð¹ÙÀ̽º ¹øÈ£ÀÇ ÇÒ´ç"¿¡ ´ëÇÑ ¼½¼ÇÀ» º¸¶ó. ÀÌ ¹®Á¦¸¦ ÇØ°áÇϴµ¥´Â Ä¿³ÎÀÇ º¯°æÀÌ ÇÊ¿äÇÏ´Ù. ÀÌ°ÍÀ» ÀÛ¼ºÇÔÀ¸·Î½á, Ä¿³ÎÀº SCSI µð½ºÅ© µå¶óÀ̹ö°¡ ´õ ¸¹Àº ¸ÞÀÌÀú ¹øÈ£¸¦ ÇÒ´ç¹Þ°í, 128 µð½ºÅ© ÀÌ»óÀ» Áö¿øÇϵµ·Ï ¼öÁ¤µÇ¾ú´Ù. ÀÌµé ¸ÞÀÌÀú ¹øÈ£µéÀÌ ºñ¿¬¼ÓÀû (¹«°èȹÀûÀÎ È®ÀåÀÇ °á°ú·Î ÀÎÇØ) À̹ǷÎ, ±×°ÍÀÇ ±¸ÇöÀº óÀ½º¸´Ù ´õ ¼º°¡½Å ÀÏÀÌ µÇ¾ú´Ù. IP ÁÖ¼ÒÀÇ ºÎÁ·À» ÀϽÃÀûÀ¸·Î ±Øº¹Çϱâ À§ÇØ IPv4 ¸¦ º¯°æÇÏ´Â °Í°ú ¸¶Âù°¡Áö·Î, »ç¶÷µéÀº Á¦ÇÑ»çÇ×ÀÌ »ý±â¸é ±×°ÍÀ» µÑ·¯°¥ Æ®¸¯À» ã´Â´Ù. ±×·¯³ª IPv6 ³ª devfs ¿Í °°Àº ±Ùº»ÀûÀÎ ÇØ°áÃ¥ÀÇ µµÀÔÀº ´õÀÌ»ó ´ÊÃçÁ®¼­´Â ¾ÈµÈ´Ù. ÀбâÀü¿ë ·çÆ® ÆÄÀϽýºÅÛ ·çÆ® ÆÄÀϽýºÅÛ¿¡ µð¹ÙÀ̽º ³ëµå¸¦ °¡Áø´Ù´Â °ÍÀº, ¸¸¾à ·çÆ® ÆÄÀÏ ½Ã½ºÅÛÀÌ Àбâ Àü¿ëÀ¸·Î ¸¶¿îÆ®µÇ¾úÀ» °æ¿ì¿£ ¿©·¯ºÐÀÇ ½Ã½ºÅÛÀÌ Á¦´ë·Î ÀÛµ¿ÇÏÁö ¸øÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ±×°ÍÀº tty µð¹ÙÀ̽ºÀÇ ¼ÒÀ¯±Ç°ú º¸È£±ÇÀ» º¯°æÇØ¾ß Çϱ⠶§¹®ÀÌ´Ù. ½ÇÁ¦·Î ·çÆ® ÆÄÀϽýºÅÛ µð¹ÙÀ̽º·Î¼­ Àбâ Àü¿ë ÀåÄ¡ÀÎ CD-ROM À» »ç¿ëÇÏ´Â °ÍÀº Çã¿ëµÇÁö ¾Ê´Â´Ù. È®½ÇÈ÷, ´ç½ÅÀº CD-ROMÀ» ÀÌ¿ëÇÏ¿© ºÎÆÃÀ» ÇÒ¼ö´Â ÀÖÀ¸³ª, ttyÀÇ ¼ÒÀ¯±ÇÀ» º¯°æÇÏÁö´Â ¸øÇÑ´Ù. µû¶ó¼­ ±× ¹æ¹ýÀº ÀνºÅçÇÒ¶§³ª ÁÁÀº ¹æ¹ýÀÌ´Ù. ¶ÇÇÑ, µð½ºÅ©°¡ ¾ø´Â (discless) ¸®´ª½º ¸Ó½Å ¿¡¼­ (º¸Åë /dev ¿¡¼­ º¯°æµÈ tty ¼ÒÀ¯±ÇÀ» °¡Áö´Â °ÍÀº ÁÁÁö ¸øÇÏ´Ù) °øÀ¯µÈ NFS ·çÆ® ÆÄÀϽýºÅÛÀ» °¡Áú ¼öµµ ¾ø´Ù. ¶ÇÇÑ ROM-FS ¿¡ ´ç½ÅÀÇ ·çÆ® ÆÄÀϽýºÅÛÀ» Æ÷ÇÔ½Ãų¼öµµ ¾ø´Ù. ´ç½ÅÀº ºÎÆýÿ¡ RAMDISC ¸¦ ¸¸µé°í, ±×°Í¿¡ ext2 ÆÄÀϽýºÅÛÀ» ¸¸µçÈÄ, ±×°ÍÀ» ¾î¶² Àå¼Ò¿¡ ¸¶¿îÆ®ÇÏ°í /devÀÇ ¸ñ·ÏÀ» ±×°Í¿¡ º¹»çÇÑ ÈÄ, ¸¶¿îÆÃÀ» ÇØÁ¦ÇÏ°í /dev¿¡ ±×°ÍÀ» ´Ù½Ã ¸¶¿îÆà ÇÏ´Â ¹æ¹ýÀ» »ç¿ëÇÏ°Ô µÉ °ÍÀÌ´Ù. Devfs´Â ÀÌ ¹®Á¦¸¦ ÇØ°áÇϴµ¥ ÀÖ¾î º¸´Ù ¸íÈ®ÇÑ ¹æ¹ýÀ» Á¦°øÇÑ´Ù. Non-Unix ·çÆ® ÆÄÀϽýºÅÛ Non-Unix ÆÄÀϽýºÅÛ(NTFS¿Í °°Àº)Àº ±×°ÍµéÀÌ ´Ù¾çÇÑ Ä³¸¯ÅÍ/ºí·° ½ºÆä¼³ ÆÄÀÏ ¶Ç´Â ½Éº¼¸¯ ¸µÅ©µéÀ» Áö¿øÇÏÁö ¾Ê±â ¶§¹®¿¡ ·çÆ® ÆÄÀϽýºÅÛÀ¸·Î »ç¿ëÇÒ ¼ö ¾ø´Ù. ´ç½ÅÀº ¸¶¿îÆ® Çϱâ Àü¿¡ µð¹ÙÀ̽º ³ëµå¸¦ ÇÊ¿ä·Î Çϱ⠶§¹®¿¡ /dev ¿¡ ¸¶¿îÆ®µÈ ÆÄÀϽýºÅÛÀÌ disc-based ÀÎÁö RAMDISC-based ÀÎÁö ±¸ºÐÇÒ ¼ö ¾ø´Ù. Devfs´Â µð¹ÙÀ̽º ³ëµå ¾øÀÌ ¸¶¿îÆ® ÇÒ ¼ö ÀÖ´Ù. Devlink´Â ½Éº¼¸¯ ¸µÅ©(symlink)ÀÇ Áö¿øÀÌ ¾ÈµÇ±â ¶§¹®¿¡ ÀÛµ¿ÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. ´Ù¸¥ ÇØ°áÃ¥Àº RAMDISC Ãʱ⠷çÆ® ÆÄÀϽýºÅÛ (¼Ò¼öÀÇ ¼±ÅÃµÈ µð¹ÙÀ̽º ³ëµå¸¦ Æ÷ÇÔÇÏ´Â) À» ¸¶¿îÆ® Çϱâ À§ÇÏ¿© initrd¸¦ »ç¿ëÇÏ°í, ´Ù¸¥ RAMDISC ¿¡ »õ·Î¿î /dev¸¦ ¸¸µç ÈÄ, ¸¶Áö¸·À¸·Î non-Unix ·çÆ® ÆÄÀϽýºÅÛÀ¸·Î ¹Ù²Ù´Â °ÍÀÌ´Ù ÀÌ°ÍÀº ¿µ¸®ÇÑ ºÎÆ®½ºÅ©¸³Æ®¿Í ÇêÁ¡ÀÌ ¸¹°í º¹ÀâÇÑ ºÎÆ® °úÁ¤ÀÌ ÇÊ¿äÇÏ´Ù. Devfs´Â °ß°íÇÏ°í °³³äÀûÀ¸·Î °£´ÜÇÑ ¹æ¹ýÀ¸·Î ÀÌ °ÍÀ» ÇØ°áÇÑ´Ù. PTY º¸¾È ÇöÀçÀÇ pseudo-tty(pty)´Â ·çÆ®°¡ ¼ÒÀ¯±ÇÀÚÀÌ°í, ¸ðµç »ç¿ëÀÚ°¡ ÀÐ°í ¾²±â°¡ °¡´ÉÇÏ´Ù. pty-pairÀÇ »ç¿ëÀÚ´Â suid-root ¾øÀÌ´Â ¼ÒÀ¯±Ç/º¸È£±ÇÀ» ¹Ù²Ü¼ö ¾ø´Ù. ÀÌ ¹®Á¦´Â ·çÆ®·Î ¼öÇàµÇ°í ½ÇÁ¦ pty-pairs ¸¦ ¸¸µé¾î ³»´Â userspace ¿¡¼­ ÀÛµ¿ÇÏ´Â º¸¾È µ¥¸óÀ» »ç¿ëÇÔÀ¸·Î½á ÇØ°áµÉ ¼ö ÀÖ´Ù. ÀÌ °°Àº µ¥¸óÀº ÀÌ·± »õ·Î¿î ¸ÅÄ¿´ÏÁòÀ» »ç¿ëÇÏ°íÀÚ ÇÏ´Â "¸ðµç" ÇÁ·Î±×·¥¿¡ ¼öÁ¤À» ¿äÇÑ´Ù. ¶ÇÇÑ pty-pairs¸¦ »ý¼ºÇÏ´Â µ¥¿¡µµ ¼ÓµµÀúÇÏ°¡ ÀϾ´Ù. ´Ù¸¥ ÇØ°áÃ¥Àº »ç¿ëÀÚ°ø°£ÀÇ µ¥¸ó°ú ºñ½ÁÇÑ ÀÏÀ» ÇÏ´Â »õ·Î¿î open_pty() ½Ã½ºÅÛÄÝÀ» ¸¸µå´Â °ÍÀÌ´Ù. ´Ù½Ã Çѹø ¸»ÇÏÁö¸¸, ÀÌ°ÍÀº pty Çڵ鸵 ÇÁ·Î±×·¥µéÀÇ ¼öÁ¤À» ¿ä±¸ÇÑ´Ù. devfs ÀÇ ÇØ°áÃ¥Àº ¿­·ÁÀÖÁö ¾ÊÀº µð¹ÙÀ̽º°¡ ¿­·ÈÀ»¶§ µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ¾î¶² µð¹ÙÀ̽º ÆÄÀÏÀ» "tag"Çϵµ·Ï Çã¿ëÇÏ°í, ¼ÒÀ¯±ÇÀº ¿­¸° ÇÁ·Î¼¼½ºÀÇ ÇöÀç euid¿Í egid·Î º¯È­µÇ°í, º¸È£±ÇÀº ±× µå¶óÀ̹ö¿¡ ÀÇÇØ µî·ÏµÈ ±âº»°ªÀ¸·Î º¯°æµÈ´Ù. ±× µð¹ÙÀ̽º°¡ ´ÝÈ÷¸é, ¼ÒÀ¯±ÇÀº ·çÆ®·Î µ¹¾Æ°¡°í º¸È£±ÇÀº ¸ðµç ÀÌ¿¡°Ô ÀÐ°í¾²±â °¡´ÉÀ¸·Î ¹Ù²ï´Ù. ¾î¶² ÇÁ·Î±×·¥µµ ¼öÁ¤µÉ ÇÊ¿ä°¡ ¾ø´Ù. devpts ÆÄÀϽýºÅÛÀº Unix98 ptys ¿¡ ´ëÇÏ¿© ÀÌ·¯ÇÑ ÀÚµ¿-¼ÒÀ¯±ÇÀÇ ±â´ÉÀ» Á¦°øÇÑ´Ù. ÀÌ°ÍÀº ¿¾¹æ½ÄÀÇ pty µð¹ÙÀ̽º´Â Áö¿øÇÏÁö ¾Ê°í, devfs°¡ Á¦°øÇÏ´Â ´Ù¸¥ ±â´ÉµéÀ» ¸ðµÎ Á¦°øÇÏÁö ¾Ê´Â´Ù. Intelligent device À¯Áö Devfs´Â »ç¿ëÀÚ °ø°£¿¡¼­ ÀÛµ¿ÇÏ´Â µð¹ÙÀ̽º °ü¸® µ¥¸ó(devfsd)°úÀÇ Åë½ÅÀ» À§ÇÏ¿© °£´ÜÇÏÁö¸¸ °­·ÂÇÑ ÇÁ·ÎÅäÄÝÀ» ±¸ÇöÇÑ´Ù. ÀÌ°ÍÀº µð¹ÙÀ̽º ¿£Æ®¸®ÀÇ µî·Ï/µî·ÏÇØÁ¦, µð¹ÙÀ̽ºÀÇ open/close, inode ÀÇ Å½»ö µð·ºÅ丮¿Í ´Ù¸¥ °ÍµéÀÇ Å½»ö µî°ú °°Àº À̺¥Æ®°¡ ÀϾ¸é (µ¿±â ¶Ç´Â ºñµ¿±âÀûÀ¸·Î) devfsd ¿¡ ¸Þ¼¼Áö¸¦ º¸³»´Â °ÍÀÌ °¡´ÉÇÏ´Ù. ÀÌ°ÍÀº ¸¹Àº ÀáÀ缺À» °¡Áö°Ô µÈ´Ù. ±× ÀáÀ缺 ÁßÀÇ ¾î¶² °ÍÀº ÀÌ¹Ì ±¸ÇöµÇ¾î ÀÖ´Ù. http://www.atnf.csiro.au/~rgooch/linux/À» »ìÆ캸¶ó µð¹ÙÀ̽º ¿£Æ®¸®ÀÇ µî·Ï À̺¥Æ®´Â »õ·Ó°Ô »ý¼ºµÇ´Â µð¹ÙÀ̽º ³ëµåÀÇ Æ۹̼ÇÀ» º¯°æÇÒ¶§ devfsd¿¡ ÀÇÇØ »ç¿ëµÉ ¼ö ÀÖ´Ù. ÀÌ°ÍÀº µð¹ÙÀ̽ºÀÇ Æ۹̼ÇÀ» Á¦¾îÇϱâ À§ÇÑ ÇϳªÀÇ ¸ÅÄ¿´ÏÁòÀÌ´Ù. µð¹ÙÀ̽º ¿£Æ®¸®ÀÇ µî·Ï/µî·ÏÇØÁ¦ À̺¥Æ®´Â ÇÁ·Î±×·¥À̳ª ½ºÅ©¸³Æ®¸¦ ±¸µ¿½ÃÅ°´Âµ¥ »ç¿ëµÈ´Ù. ÀÌ°ÍÀº »õ·Î¿î ºí·° µð¹ÙÀ̽º ¹Ìµð¾î¿¡ µå¶óÀ̹ö°¡ Ãß°¡µÇ¾úÀ»¶§ ÆÄÀϽýºÅÛÀÇ ÀÚµ¿ÀûÀÎ ¸¶¿îÆ®¸¦ Á¦°øÇϴµ¥¿¡µµ »ç¿ëµÉ ¼ö ÀÖ´Ù. ºñµ¿±â µð¹ÙÀ̽ºÀÇ open/close À̺¥Æ®´Â ÆÛ¹Ì¼Ç °ü¸®¸¦ ±¸ÇöÇϴµ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, /dev/dsp¿¡ ´ëÇÑ ±âº» Æ۹̼ÇÀº ¸ðµç »ç¿ëÀÚ°¡ ±× µð¹ÙÀ̽º¸¦ Àд °ÍÀ» Çã¿ëÇÏÁö ¾Ê´Â´Ù. ÀÌ°ÍÀº ´ç½ÅÀÌ Äֿܼ¡ ¾ê±âÇÏ´Â °ÍÀ» ¿ø°Ý »ç¿ëÀÚ°¡ ³ìÀ½ÇÏ´Â °ÍÀ» ¿øÇÏÁö ¾ÊÀ» °ÍÀ̱⠶§¹®¿¡ ÇÕ´çÇÑ ÀÏÀÌ´Ù. ±×·¯³ª, ÄÜ¼Ö »ç¿ëÀÚ ¿ª½Ã ³ìÀ½ÇÏ´Â °ÍÀÌ ¸·ÇôÀÖ´Ù. ÀÌ°ÍÀº ¹Ù¶÷Á÷ÇÑ °ÍÀÌ ¾Æ´Ï´Ù. ºñµ¿±â µð¹ÙÀ̽º¿¡ open/close À̺¥Æ®¸¦ ÀÌ¿ëÇÏ¿© ´ç½ÅÀº Äֵܼð¹ÙÀ̽º°¡ ´Ù¸¥ µð¹ÙÀ̽º ³ëµå (¿¹¸¦ µé¾î /dev/dsp)¿¡ ´ëÇÑ ¼ÒÀ¯±ÇÀ» º¯°æÇϱâ À§ÇØ ¿­·ÈÀ»¶§, devfsd°¡ ¾î¶² ÇÁ·Î±×·¥À̳ª ½ºÅ©¸³Æ®¸¦ ¼öÇàÇϵµ·Ï ÇÒ ¼ö ÀÖ´Ù. ¸¶Áö¸·À¸·Î, ´ç½ÅÀº ´Ù¸¥ ½ºÅ©¸³Æ®¸¦ ÀÌ¿ëÇÏ¿© Æ۹̼ÇÀ» º¹±¸ ÇÒ ¼ö ÀÖ´Ù. C ¶óÀ̺귯¸®ÀÇ tty Çڵ鸵ÀÇ ¼öÁ¤ÀÌ ÇÊ¿ä¾ø´Â ÀÌ·± ¼³°èÀÇ À̵æÀº ´ç½ÅÀÇ ÇÁ·Î±×·¥ÀÌ Ãæµ¹ÀÌ ÀϾ´õ¶óµµ (´ç½ÅÀº Á¸ÀçÇÏÁö ¾ÊÀº ·Î±äÀ» À§ÇÏ¿© ÁöüµÇ´Â ¿£Æ®¸®¸¦ °¡Áö´Â utmp µ¥ÀÌÅÍ º£À̽º¸¦ ¼ö¾øÀÌ º¸¾Æ¿ÀÁö ¾Ê¾Ò´Â°¡?) ÀÛµ¿ÇÑ´Ù´Â °ÍÀÌ´Ù. µ¿±â µð¹ÙÀ̽ºÀÇ ¿­±â À̺¥Æ®´Â µð¹ÙÀ̽º°¡ Á¢±Ù±ÇÇÑÀ» ¼³Á¤Çϴµ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù. µð¹ÙÀ̽º µå¶óÀ̺êÀÇ open() ¸Þ¼Òµå°¡ È£ÃâµÇ±â Àü¿¡, µ¥¸óÀº ¿ÜºÎ ÇÁ·Î±×·¥À̳ª ½ºÅ©¸³Æ®¸¦ ½ÇÇà½ÃÅ´À¸·Î½á óÀ½À¸·Î ¿­±â½Ãµµ¸¦ È®ÀÎÇÒ °ÍÀÌ´Ù. ÀÌ°ÍÀº ±×¿¡ ´ëÇÑ Á¢±Ù ÀÚü°¡ UID¿Í GID ´ë½Å¿¡ ´Ù¸¥ ½Ã½ºÅÛÀÇ »óÅ¿¡ ±âÃÊÇÏ¿© °áÁ¤µÇ±â ¶§¹®¿¡ Á¢±Ù Á¦¾î ¸®½ºÆ®¸¦ »ç¿ëÇÏ´Â °Íº¸´Ù ÈξÀ ´õ À¯¿¬ÇÏ´Ù. Inode Ž»ö À̺¥Æ®´Â ¸ðµâÀÇ ÀÚµ¿·Îµå ¿äûÀ» ÀÎÁõÇϴµ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù. kmod¸¦ Á÷Á¢ÀûÀ¸·Î »ç¿ëÇÏ´Â ´ë½Å¿¡, ÀÌ À̺¥Æ®´Â ¸ðµâ ½º½º·Î°¡ ÀûÀçµÇ±â Àü¿¡ ÀÓÀÇÀûÀ¸·Î ÀÎÁõÀ» ±¸ÇöÇÒ¼ö ÀÖ´Â devfsd ¿¡ º¸³»Áø´Ù. Inode Ž»ö À̺¥Æ®´Â Á¸ÀçÇÏÁö ¾Ê´Â µð¹ÙÀ̽º¿¡ ´ëÇÏ¿© ½Éº¼¸¯ ¸µÅ©·Î devfs ¸¦ À§Ä¡½ÃÅ°±â À§ÇØ º¹±¸ÇÏÁö ¾Ê°íµµ Àӽ÷Π³×ÀÓ½ºÆäÀ̽º¸¦ ±¸¼ºÇϴµ¥ ¿ª½Ã ¾²Àϼö ÀÖ´Ù. ÀÌ·ÐÀûÀÎ µð¹ÙÀ̽º Ž»ö ¸ðµâÀÌ ¿Ã¶ó¿Í ÀÖ´ø ¾Æ´Ï´ø ½Ã½ºÅÛ¿¡ ÀÖ´Â ¸ðµç(SCSI, IDE ¹× ´Ù¸¥ ŸÀÔµé) CD-ROM µð¹ÙÀ̽º¸¦ ã±â À§ÇÑ(cdparanoia¿Í °°Àº) ¾îÇø®ÄÉÀ̼ÇÀ» °í·ÁÇغ¸ÀÚ. ÀÌ·ÐÀûÀ¸·Î ¾îÇø®ÄÉÀ̼ÇÀº ÇØ´ç ¸ðµâÀÌ ÀûÀçµÇ¾î ÀÖ´ÂÁö È®ÀÎÇϱâ À§Çؼ­´Â µð¹ÙÀ̽º ³ëµå¸¦ (SCSI CD-ROMÀÇ °æ¿ì /dev/sr0) ¿­¾î¾ß¸¸ ÇÑ´Ù. Ç¥ÁØ µð¹ÙÀ̽º ³×ÀÌ¹Ö ½ºÅ°¸¶ (ÃÖ±Ù¿¡ ·¹µåÇÞÀº ÀÌ°ÍÀ» ´Ù¸£°Ô ±¸ÇöÇÑ °ÍÀ» È®ÀÎÇß´Ù) ¸¦ µû¸£´Â ¸ðµç ¸®´ª½º ¹èÆ÷ÆÇÀº ÀÌ·¯ÇÑ ÀÛ¾÷À» ÇÊ¿ä·Î ÇÑ´Ù. Devfs´Â ±×·¯ÇÑ ³×ÀÌ¹Ö ¹®Á¦¸¦ ÇØ°áÇÑ´Ù. ±×¿Í °°Àº ¾îÇø®ÄÉÀ̼ÇÀº ¶Ç ½Ã½ºÅÛ¿¡ ½ÇÁ¦ »ç¿ë°¡´ÉÇÑ µð¹ÙÀ̽º¸¦ ã±â¸¦ ¿øÇÒ ¼öµµ ÀÖ´Ù. ÇöÁ¸ÇÏ´Â ½Ã½ºÅÛÀ¸·Î ÀÌ°°Àº ÀÏÀº /dev µð·ºÅ丮¸¦ Àаí, ±× µð¹ÙÀ̽º°¡ Á¸ÀçÇÏ´ÂÁö ¾ÈÇÏ´ÂÁö¸¦ °áÁ¤Çϱâ À§Çؼ­´Â °¢ /dev/sr* µð¹ÙÀ̽ºµéÀ» open ÇØ ºÁ¾ß ÇÑ´Ù. Å« /dev ¸¦ °¡Áö´Â ½Ã½ºÅÛ¿¡¼­, ±× ½Ã½ºÅÛÀÌ Æ¯È÷ ¸¹Àº ¼öÀÇ /dev/sr* ³ëµå¸¦ °¡Áö°í ÀÖ´Ù¸é, ÀÌ°ÍÀº ºñÈ¿À²ÀûÀÎ ÀÛ¾÷ÀÌ´Ù. scsidev¿Í °°Àº ÇØ°áÃ¥Àº /dev/sr* ¿£Æ®¸®ÀÇ ¼ö¸¦ ÁÙ¿©ÁÙ¼ö ÀÖ´Ù (±×·¯³ª ¿ª½Ã ºÒÇÊ¿äÇÑ µð·ºÅ丮 Ž»öÀ» ÇÏ°Ô µÈ´Ù). Devfs¸¦ »ç¿ëÇϸé, ±× ¾îÇø®ÄÉÀ̼ÇÀº /dev/sr µð·ºÅ丮 (ÇÊ¿äÇÏ´Ù¸é ¸ðµâÀÇ ÀÚµ¿ÀûÀ縦 À¯µµÇس»´Â)¸¦ ÀÐÀ»¼ö ÀÖ°í, /dev/sr¸¦ Àбâ À§ÇÏ¿© °è¼Ó ÁøÇàµÈ´Ù. ¿ÀÁ÷ »ç¿ë°¡´ÉÇÑ µð¹ÙÀ̽ºµé¸¸ÀÌ ¿£Æ®¸®¸¦ °¡Áö¹Ç·Î, ºÒÇÊ¿äÇÑ µð·ºÅ丮 Ž»öÀ̳ª, µð¹ÙÀ̽ºÀÇ ¿ÀÇÁ´×Àº ÇÊ¿ä¾ø´Ù. ´©°¡ ÀÌ ÀÏÀ» Çϴ°¡? FreeBSD´Â devfs¸¦ ±¸ÇöÇÑ´Ù. ¼Ö¶ó¸®½º¿Í AIX ¿ª½Ã pseudo-devfs(scsi¿Í´Â ºñ½ÁÇÏÁö¸¸ ºñ¸í½ÃÀûÀÎ Ä¿³Î Áö¿ø°ú ÇÔ²² ¸ðµç µð¹ÙÀ̽º¸¦ Áö¿øÇÏ´Â)¸¦ °¡Áö°í ÀÖ´Ù. BeOS, Plan9¿Í QNX ¿ª½Ã ÀÌ°ÍÀ» °¡Áö°í ÀÖ´Ù. SGIÀÇ IRIX 6.4 ÀÌ»óÀÇ °Í ¿ª½Ã µð¹ÙÀ̽º ÆÄÀϽýºÅÛÀ» °¡Áö°í ÀÖ´Ù. ¿ì¸®´Â ´Ù¸¥ »ç¶÷µéÀÌ Çϱ⠶§¹®¿¡ ÀÚµ¿ÀûÀ¸·Î(Àǹ«ÀûÀ¸·Î) ÀÌ°ÍÀ» ÇÒ ÇÊ¿ä´Â ¾øÁö¸¸, ´Ù¸¥ »ç¶÷ÀÇ ÀÛ¾÷À» ¹«½ÃÇؼ­µµ ¾ÈµÈ´Ù. FreeBSD ´Â ÀÌ ÀÛ¾÷À» Çϴµ¥ ÀÖ¾î ¼ö¸¹Àº °³¹ßÀÚ¸¦ ¼ÒÀ¯ÇÏ°í ÀÖ°í, µû¶ó¼­ ±×µéÀÇ ÀÇ°ßÀº °£´ÜÇÏ°Ô ¹«½ÃµÇ¾î¼­´Â ¾ÈµÈ´Ù. ¾î¶»°Ô ÀÛµ¿Çϳª? µð¹ÙÀ̽º ¿£Æ®¸®¸¦ µî·ÏÇϱâ devfs¿¡ ±âÃÊÇÑ /dev ¾È¿¡¼­ °¢ ¿£Æ®¸®(µð¹ÙÀ̽º³ëµå)¿¡ ´ëÇØ µå¶óÀ̹ö´Â devfs_register()¸¦ È£ÃâÇؾ߸¸ ÇÑ´Ù. ÀÌ°ÍÀº ³»ºÎ Å×ÀÌºí¿¡ µð¹ÙÀ̽º ¿¥Æ®¸®ÀÇ À̸§°ú file_operation ±¸Á¶Ã¼ Æ÷ÀÎÅÍ¿Í ¾à°£ÀÇ ´Ù¸¥ °ÍµéÀ» Ãß°¡ÇÑ´Ù. µð¹ÙÀ̽º ¿£Æ®¸®´Â ¾î¶² ¶§¶óµµ Ãß°¡µÇ°Å³ª Á¦°ÅµÉ ¼ö ÀÖÀ» °ÍÀÌ´Ù. µð¹ÙÀ̽º ¿£Æ®¸®°¡ µî·ÏµÇ¸é, devfs°¡ ¸¶¿îÆ®µÈ °÷¿¡ ÀÚµ¿À¸·Î ³ªÅ¸³­´Ù. Inode Ž»ö ¿£Æ®¸®¿¡ ´ëÇÑ Å½»öÀÌ ¼öÇàµÇ°í ¸¸¾à ±× ¿£Æ®¸®¿¡ ´ëÇÑ ¾î¶°ÇÑ µå¶óÀ̹ö Á¤º¸µµ ¾øÀ»¶§ devfs´Â devfsdÀÇ È£ÃâÀ» ½ÃµµÇÑ´Ù. ¸¸¾à ¾î¶°ÇÑ Á¤º¸µµ ã¾ÆÁöÁö ¾Ê´Â´Ù¸é, negative dentry°¡ ¾ò¾îÁö°í, ´ÙÀ½ ´Ü°èÀÇ ¼öÇàÀº VFS(create() ¶Ç´Â mknod() ÇÔ¼öó·³ inode ¸¦ Á¶ÀÛÇÏ´Â ¸Þ½îµå ¿Í °°Àº)¿¡ ÀÇÇØ È£ÃâµÉ °ÍÀÌ´Ù. µå¶óÀ̹öÀÇ Á¤º¸°¡ ã¾ÆÁö¸é inode´Â »ý¼ºµÉ °ÍÀÌ°í(¹Ì¸® Á¸ÀçÇÏ´Â °ÍÀÌ ¾ø´Ù¸é) ±×°ÍÀ¸·Î Àß µÉ °ÍÀÌ´Ù. Á÷Á¢ device³ëµå¸¦ ¸¸µé±â mknod() ¸Þ½îµå´Â »ç¿ëÀÚ¿¡°Ô devfs ¾È¿¡ °íÀ¯ÇÏ°Ô À̸§ºÙ¿©Áø ÆÄÀÌÇÁ¸¦ ¸¸µéµµ·Ï Çã¿ëÇϰųª, ÀÌ¹Ì Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é ºí·° ½ºÆä¼È inode¸¦ ¸¸µé¼ö ÀÖµµ·Ï Çã¿ëÇÑ´Ù. »ç¿ëÀÚ´Â »ç¿ëÀÚ ½º½º·Î Æ۹̼ǰú ¼ÒÀ¯±ÇÀ» ¼³Á¤ÇÒ ¼ö Àִ ij¸¯Åͳª ºí·° ½ºÆä¼È inode¸¦ »ý¼ºÇϱ⸦ ¿øÇÒ ¼öµµ ÀÖ´Ù. ³ªÁß¿¡, ¸¸¾à µð¹ÙÀ̽º µå¶óÀ̹ö°¡ °°Àº À̸§À¸·Î ¿£Æ®¸®¸¦ µî·ÏÇÑ´Ù¸é, ±× Æ۹̼ǰú ¼ÒÀ¯±Ç°ú ½Ã°£Àº °è¼Ó À¯ÁöµÈ´Ù. ÀÌ°ÍÀº ±× µå¶óÀ̹ö°¡ ÀûÀçµÇ±â ÀüÀÌ¶óµµ µð¹ÙÀ̽º¿¡ ´ëÇÑ º¸È£±ÇÀ» ¼³Á¤ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ÇѹøÀÌ¶óµµ inode¸¦ ¸¸µé¾ú´Ù¸é µð·ºÅ丮¿¡ ³ªÅ¸³­´Ù. ´ÙºñÀ̽º ¿£Æ®¸®ÀÇ µî·ÏÇØÁ¦ µð¹ÙÀ̽º µå¶óÀ̹ö´Â ¿£Æ®¸®¸¦ µî·ÏÇØÁ¦Çϱâ À§Çؼ­ devfs_unregister()¸¦È£ÃâÇÑ´Ù. Chroot()ÀÇ Á¦Çѵé 2.2.x´ëÀÇ Ä¿³Îµé inode »ý¼ºÀÇ Àǹ̴ devfs°¡ "Ưº°ÇÑ" ¿É¼Ç°ú ÇÔ²² ¸¶¿îÆ® µÇ¾úÀ»¶§´Â ´Ù¸£´Ù. Áö±Ý, µð¹ÙÀ̽º ¿£Æ®¸®°¡ µî·ÏµÇ¾úÀ»¶§, ±× µð¹Ù½ÃÀ¸¸¦ »ý¼ºÇϱâ À§ÇØ mknod() ¸¦ »ç¿ëÇϱâ Àü±îÁö´Â ³ªÅ¸³ªÁö ¾ÊÀ» °ÍÀÌ´Ù. mknod()°¡ devfs_register() ¸¦ »ç¿ëÇÏ¿© ±× µð¹ÙÀ̽º°¡ µÇ±â ÀüÀÌ´ø Áß¿äÇÏÁö ¾Ê´Ù. ÀÌ·± ÀÛ¾÷ÀÇ ¸ñÀûÀº ´ç½ÅÀÌ ±× Á¦ÇѾȿ¡ ÃÖ¼ÒÇÑÀÇ devfs¸¦ ¸¶¿îÆ® Çϱ⠿øÇÏ´Â °÷¿¡¼­ chroot(2)ÀÇ Á¦ÇÑÀ» Áö¿øÇÏ´Â °ÍÀÌ´Ù. ´ÜÁö ´ç½ÅÀÌ Æ¯º°È÷ »ç¿ë°¡´ÉÇϵµ·Ï ¼³Á¤ÇÏ´Â(´ç½Å¸¸ÀÇ mknod() ¼³Á¤À» ÅëÇÏ¿©) µð¹ÙÀ̽º¸¸ÀÌ Á¢±Ù °¡´ÉÇÏ°Ô µÉ °ÍÀÌ´Ù. 2.4.x ´ëÀÇ Ä¿³Îµé ÇöÀçÀÇ 2.3.99 Ä¿³ÎÀº VFS°¡ Àüü ÆÄÀϽýºÅÛÀÇ ³×ÀÓ½ºÆäÀ̽ºÀÇ ÇÑ ºÎºÐÀ» ±× ³×ÀÓ½ºÆäÀ̽ºÀÇ ´Ù¸¥ ºÎºÐÀ¸·Î ¸®¹ÙÀÎµå ½Ãų¼ö ÀÖ´Ù. ÀÌ°ÍÀº ½ÉÁö¾î leaf-node ·¹º§¿¡¼­µµ ÀÛµ¿Çϸç, °¢°¢ÀÇ ÆÄÀϵé°ú µð¹ÙÀ̽º ³ëµå°¡ ±× ³×ÀÓ½ºÆäÀ̽ºÀÇ ´Ù¸¥ ºÎºÐÀ¸·Î ¹ÙÀÎµå µÉ¼ö ÀÖ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ÀÌ°ÍÀº ¸µÅ©¸¦ ¸¸µå´Â °Í°ú À¯»çÇÏÁö¸¸, ÆÄÀϽýºÅÛ(ÇÏµå ¸µÅ©¿Í´Â ´Ù¸¥)°ú chroot() ÀÇ Á¦ÇÑ(½Éº¼¸¯ ¸µÅ©¿Í ´Ù¸¥)À» ÅëÇÏ¿© ÀÛµ¿Çϱ⠶§¹®¿¡ ´õ ³´´Ù. VFS¿¡¼­ÀÇ ÀÌ·± Çâ»ó ´öºÐ¿¡, devfs¿¡¼­ ´ÙÁß ¸¶¿îÆ®¿¡ ´ëÇÑ ±â´ÉÀº ´õÀÌ»ó ÇÊ¿äÇÏÁö ¾Ê´Ù. °ü¸®ÀÚ´Â VFS ¹ÙÀεùÀ» »ç¿ëÇÏ¿© chroot(2) Á¦ÇÑ ¾È¿¡ ÃÖ¼ÒÇÑÀÇ µð¹ÙÀ̽º Æ®¸®¸¦ ¸¸µé°Ô µÈ´Ù. ÀÌ°ÍÀº devfsÀÇ ´ÙÁ߸¶¿îÆ® ´É·ÂÀÌ °¡Áø ´ëºÎºÐÀÇ ±â´ÉÀ» Á¦°øÇϱ⠶§¹®¿¡, ³ª´Â(ÀúÀÚ´Â) ´ÙÁß ¸¶¿îÆ® Äڵ带 (RFC ¿¡¼­ÀÇ ³íÀÇ ÈÄ¿¡) »©¹ö·È´Ù. ÀÌ°ÍÀº ÄÚµåÅ©±âÀÇ °¨¼Ò¿Í °£¼ÒÇÔÀ» °¡Á®´Ù ÁÖ¾ú´Ù. ¸¸¾à ÃÖ¼ÒÇÑÀÇ chroot() Á¦ÇÑÀ» ¸¸µé±â ¿øÇÑ´Ù¸é, ´ÙÀ½ÀÇ ¸í·É¾î¸¦ Ä¡¸é µÈ´Ù :
mount --bind /dev/null /gaol/dev/null
º¸¿©Áֱ⠿øÇÏ´Â ´Ù¸¥ µð¹ÙÀ̽º ³ëµå¿¡µµ ¹Ýº¹Ç϶ó. °£´ÜÇÏ´Ù!
¿î¿µ»óÀÇ ¹®Á¦Á¡ ÂüÀ»¼º ¾ø´Â À̵éÀ» À§ÇÑ ¼Ò°³ ¹®¼­Àб⸦ ÁÁ¾ÆÇÏ´Â »ç¶÷Àº ¾ø´Ù. »ç¶÷µéÀº ¹Ù·Î ¾ò°í ¼öÇàÇϱ⸦ ¿øÇÑ´Ù. µû¶ó¼­ À̹ø ºÎºÐ¿¡¼­´Â ºü¸£°Ô /dev »ó¿¡ devfs¸¦ ¸¶¿îÆ® ÇÏ¿© ¼öÇàÇϴµ¥ ÀÖ¾î ÇÊ¿äÇÑ ´Ü°è ¸¦ ¼³¸íÇÒ °ÍÀÌ´Ù. À̹ø ´Ü°è¸¦ °Ç³Ê¶Ù¾î¶ó. ±×·¯¸é ´ç½ÅÀº °ÅÀÇ ºÎÆÃÇÒ¼ö ¾ø´Â ½Ã½ºÅÛÀ» °¡Áøä ³¡³¯ °ÍÀÌ´Ù. ¾Æ·¡ÀÇ ºÎºÐµéÀº Á»´õ ÀÚ¼¼ÇÑ ºÎºÐ¿¡ ´ëÇØ ¼³¸íÇÏ°í ÀÖ°í, ÇʼöÀûÀÌÁö ¾ÊÀº ¼³Á¤¿É¼Ç¿¡ ´ëÇØ ³íÀÇÇÒ °ÍÀÌ´Ù. Devfsd OK, ´ç½ÅÀÌ À̺κÐÀ» Àаí ÀÖ´Ù¸é, ³ª´Â ´ç½ÅÀÌ devfs¸¦ »ç¿ëÇϱ⸦ ¿øÇÑ´Ù°í »ý°¢ÇÒ °ÍÀÌ´Ù. ù¹ø°·Î ´ç½ÅÀº /usr/src/linux¿¡ ÃÖ½ÅÀÇ Ä¿³Î¼Ò½º¸¦ Æ÷ÇÔÇÏ°í ÀÖ´ÂÁö È®½ÇÇÏ°Ô ÇؾßÇÑ´Ù. ±×¸®°í µð¹ÙÀ̽º °ü¸® µ¥¸óÀÎ devfsd ¸¦ ÄÄÆÄÀÏ ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ÀÌ°ÍÀº http://www.atnf.csiro.au/~rgooch/linux/ ¿¡¼­ ¾òÀ»¼ö ÀÖ´Ù. ±× Ä¿³ÎÀº ¿¾ ¹öÀüÀÇ ³×ÀÌ¹Ö ½ºÅ°¸¶¿Í´Â »ó´çÈ÷ ´Ù¸¥ ³×ÀÌ¹Ö ½ºÅ°¸¶¸¦ °¡Áö±â ¶§¹®¿¡ ¿¹ÀüÀÇ ³×ÀÌ¹Ö ½ºÅ°¸¶°¡ ±úÁöÁö ¾Ê°í °è¼Ó »ç¿ëÇÒ ¼ö ÀÖµµ·ÏÇÏ´Â ¼ÒÇÁÆ®¿þ¾î¿Í ¼³Á¤ÆÄÀÏÀÎ devfsd¸¦ ¼³Ä¡ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. devfsd¸¦ ÄÄÆÄÀÏ ÇÏ°í ¼³Ä¡Ç϶ó. ´ç½ÅÀº ¿¹Àü ³×ÀÌ¹Ö ½ºÅ°¸¶¿¡ ´ëÇÏ¿© ȣȯ¼ºÀ» °¡Áö´Â ½É¸µÅ©¸¦ Á¦°øÇÏ´Â ±âº» ¼³Á¤ÆÄÀÏÀÎ /etc/devfsd.conf¸¦ Á¦°ø¹ÞÀ» °ÍÀÌ´Ù. ÃæºÐÇÑ Áö½ÄÀ» ¾ò±â Àü±îÁö ÀÌ ÆÄÀÏÀ» ¼öÁ¤ÇÏÁö ¸»¶ó. ÃæºÐÇÑ Áö½ÄÀ» °¡Áö°í ÀÖ´Ù°í »ý°¢ÇÑ´Ù ÇÒÁö¶óµµ, ¾Æ·¡¿¡¼­ ºÎÆÃµÈ devfs°¡ °¡´ÉÇÑ ½Ã½ºÅÛ°ú ÀÌ°ÍÀÌ Á¦´ë·Î ÀÛµ¿ÇÏ´ÂÁö¿¡ ´ëÇØ °ËÁõÀÌ ³¡³¯¶§±îÁö ¼öÁ¤ÇÏÁö ¸»¶ó. ÀÌÁ¦ devfsd°¡ °¡Àå óÀ½(ÆÄÀϽýºÅÛÀÇ Ã¼Å©°¡ ÀϾ±â Àü¿¡)¿¡ ½ÃÀ۵ǵµ·Ï ¸ÞÀÎ ½Ã½ºÅÛÀÇ ºÎÆ® ½ºÅ©¸³Æ®¸¦ ¼öÁ¤ÇØ¾ß ÇÑ´Ù. °¡±Ý /etc/rc.d/rc.sysinitÀÌ SysV Çü½ÄÀÇ ºÎÆ® ½ºÅ©¸³Æ®¿Í ÇÔ²² ½Ã½ºÅÛ¿¡¼­ ¸ÞÀÎ ºÎÆ® ½ºÅ©¸³Æ®·Î »ç¿ëµÈ´Ù. BSD Çü½ÄÀÇ ºÎÆ® ½ºÅ©¸³Æ®¸¦ °¡Áö´Â ½Ã½ºÅÛ¿¡¼­´Â /etc/rc µµ »ç¿ëµÈ´Ù. /sbin/rcµµ üũÇغ¸¶ó. ºÎÆ® ½ºÅ©¸³Æ®¿¡ ³Ö¾î¾ß µÉ ÁÙÀº Á¤È®ÇÏ°Ô ´ÙÀ½°ú °°¾Æ¾ß ÇÔÀ» ¸í½ÉÇ϶ó :
/sbin/devfsd /dev
Àý´ë·Î ¾î¶°ÇÑ µ¥¸ó ½ÇÇà ÇÁ·Î±×·¥µµ »ç¿ëÇÏÁö ¸»¶ó. ±×·¸Áö ¾ÊÀ¸¸é ºÎÆ®½ºÅ©¸³Æ®´Â devfsd°¡ ÃʱâÈ­ÇÏ´Â °ÍÀ» ±â´Ù·ÁÁÖÁö ¾Ê´Â´Ù.
½Ã½ºÅÛ ¶óÀ̺귯¸®µé À߸øµÈ ¼ÒÇÁÆ®¿þ¾î°¡ µð¹ÙÀ̽º ³×ÀÓ¿¡ ´ëÇØ °¡Á¤Çϱ⠶§¹®¿¡ ÀϾ´Â ¹®Á¦Á¡µéÀÌ ÀÖ´Ù. ÀÚ¼¼ÇÏ°Ô ¸»Çϸé, ¾î¶² ¼ÒÇÁÆ®¿þ¾î´Â ½Éº¼¸¯ ¸µÅ©·Î µÈ µð¹ÙÀ̽º¸¦ »ç¿ëÇÏÁö ¸øÇÑ´Ù. ¸¸¾à libc5 ¸¦ »ç¿ëÇÏ´Â ½Ã½ºÅÛÀ» »ç¿ëÇÏ°í ÀÖ´Ù¸é, libc5.4.44¸¦ ¼³Ä¡Çضó(¸¸¾à libc5.4.46À» »ç¿ëÇÏ°í ÀÖ´Ù¸é ¿Ã¹Ù¸£°Ô ÀÛµ¿ÇÏ´Â libc5.4.44·Î ´Ù¿î±×·¹À̵åÇ϶ó). ¸¸¾à glibc¿¡ ±âÃÊÇÑ ½Ã½ºÅÛÀ» »ç¿ëÇÑ´Ù¸é glibc 2.1.3 ÀÌ»óÀÎÁö È®ÀÎÇØ¾ß ÇÑ´Ù. /etc/securetty PAM(Pluggable Authentication Modules)Àº ´õ ³ªÀº »ç¿ëÀÚ ÀÎÁõ°ú ¼­ºñ½º¸¦ Á¦°øÇϱ⠶§¹®¿¡ À¯¿¬ÇÑ ¸ÞÄ¿´ÏÁòÀ¸·Î Æò°¡¹Þ°í ÀÖ´Ù. ºÒÇàÇÏ°Ôµµ, ±×°ÍÀº ±úÁö±â ½±°í, º¹ÀâÇÏ°í ¹®¼­È­ µÇ¾î ÀÖÁö ¾Ê´Ù(·¹µåÇÞ 6.1°ú ´Ù¸¥ ¹èÆ÷ÆÇÀ» È®ÀÎÇغ¸¶ó). PAMÀº ½Éº¼¸¯¸µÅ©¿Í´Â ¹®Á¦¸¦ ÀÏÀ¸Å²´Ù. ´ÙÀ½ÀÇ ÁÙÀ» /etc/securetty ÆÄÀÏ¿¡ Ãß°¡½ÃÄѶó :
vc/1 vc/2 vc/3 vc/4 vc/5 vc/6 vc/7 vc/8
ÀÌ°ÍÀº º¸¾ÈÀ» ¾àÈ­½ÃÅ°Áö ¾ÊÀ» °ÍÀÌ´Ù. ¸¸¾à 2.10.h ÀÌÀüÀÇ util-linux ¹öÀüÀ» »ç¿ëÇÏ°í ÀÖ´Ù¸é ±× ÀÌÈÄÀÇ ¹öÀüÀ¸·Î ¾÷±×·¹À̸¦ Çϱ⠹ٶõ´Ù. ¸¸¾à ¾÷±×·¹À̵å ÇÒ ¼ö ¾ø´Ù¸é, ´ÙÀ½ÀÇ ÁÙÀ» /etc/securetty ÆÄÀÏ¿¡ Ãß°¡Ç϶ó :
1 2 3 4 5 6 7 8
ÀÌ°ÍÀº ³×Æ®¿öÅ©¸¦ ÅëÇÑ ·çÆ®ÀÇ ·Î±×ÀÎÀ» Çã¿ëÇϱ⠶§¹®¿¡(Æнº¿öµå´Â ¿ä±¸µÈ´Ù) º¸¾ÈÀ» ¾àÈ­½ÃŲ´Ù. ±×·¯³ª, ½É¸µÅ©¸¦ Ãë±ÞÇϴµ¥ À־ ¹®Á¦°¡ Àֱ⠶§¹®¿¡, ³ª´Â ¾î¶² °æ¿ì¿¡¶óµµ Á¦°øµÇ´Â º¸¾È·¹º§¿¡ ÀǽÉÀ» °¡Áö°í ÀÖ´Ù. (¿ªÀÚ ÁÖ : PAMÀÌ ½É¸µÅ©¿¡ ¹®Á¦Á¡À» º¸À̱⠶§¹®¿¡, ¾îÂ÷ÇÇ º¸¾È¿¡´Â ¹®Á¦Á¡ÀÌ ÀÖ´Ù´Â ¸»)
Xfree86 ÇʼöÀûÀÌÁö´Â ¾ÊÁö¸¸, Á»´õ devfs¿¡ ¹ÐÁ¢Çϵµ·Ï ÇÏ´Â ÆÐÄ¡ÀÇ ÀÏȯÀ¸·Î XFree86 4.0À¸·Î ¾÷±×·¹À̵å ÇÏ´Â °ÍÀº ÁÁÀº »ý°¢ÀÌ´Ù. ¸¸¾à ±×·¸°Ô ÇÏÁö ¾Ê´Â´Ù¸é, ÀÏ¹Ý »ç¿ëÀÚ°¡ startx¸¦ ÇÒ¼ö ÀÖµµ·Ï /etc/security/console.perms¿¡ ´ÙÀ½ÀÇ ÆÐÄ¡¸¦ Àû¿ëÇØ¾ß ÇÒ °ÍÀÌ´Ù. ¸ðµç ¹èÆ÷ÆÇÀÌ ÀÌ ÆÄÀÏÀ» °¡Áö°í ÀÖ´Â °ÍÀº ¾Æ´Ï¹Ç·Î(e.g. µ¥ºñ¾È) ÀÌ°ÍÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù°í Çصµ °ÆÁ¤ÇÒ ÇÊ¿ä´Â ¾ø´Ù.
--- /etc/security/console.perms.orig Sat Apr 17 16:26:47 1999 +++ /etc/security/console.perms Fri Feb 25 23:53:55 2000 @@ -14,7 +14,7 @@ # man 5 console.perms # file classes -- ÀÌ°ÍÀº Á¤±ÔÇ¥Çö½ÄÀÌ´Ù. -<console>=tty[0-9][0-9]* :[0-9]\.[0-9] :[0-9] +<console>=tty[0-9][0-9]* vc/[0-9][0-9]* :[0-9]\.[0-9] :[0-9] # device classes -- these are shell-style globs <floppy>=/dev/fd[0-1]*
¸¸¾à ÆÐÄ¡°¡ Àû¿ëµÇÁö ¾Ê´Â´Ù¸é, ´ÙÀ½°ú °°ÀÌ º¯°æÇ϶ó.:
<console>=tty[0-9][0-9]* :[0-9]\.[0-9] :[0-9]
À»
<console>=tty[0-9][0-9]* vc/[0-9][0-9]* :[0-9]\.[0-9] :[0-9]
À¸·Î ¼öÁ¤ÇÏ¸é µÈ´Ù.
devpts¸¦ ÁßÁö½ÃÅ°±â ³ª´Â /dev/pts¿¡ ¸¶¿îÆ®µÈ devpts°¡ Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù´Â º¸°í¸¦ ¹Þ¾Ò´Ù. devfs´Â /dev/pts¸¦ °ü¸®ÇϹǷÎ, ´õ ÀÌ»ó devpts¸¦ ¸¶¿îÆ®ÇÒ ÇÊ¿ä´Â ¾ø´Ù. /etc/fstabÆÄÀÏÀ» ¼öÁ¤Çؼ­ ¸¶¿îÆ®µÇÁö ¾Êµµ·Ï Çϰųª, Ä¿³Î ¼³Á¤¿¡¼­ devpts¸¦ »ç¿ëÇÏÁö ¾Êµµ·Ï Ç϶ó. Áö¿øµÇÁö ¾Ê´Â µå¶óÀ̹ö ¸ðµç µå¶óÀ̹ö°¡ devfs¸¦ Áö¿øÇÏÁö´Â ¾Ê´Â´Ù. ¸¸¾à ÀÌ·¯ÇÑ µå¶óÀ̹ö Áß¿¡ Çϳª¸¦ °¡Áö°í ÀÖ´Ù¸é, Àû´çÇÑ ¶§¿¡ µð¹ÙÀ̽º ³ëµå¸¦ »ý¼ºÇϵµ·Ï ºÎÆýÿ¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ½ºÅ©¸³Æ®³ª tarfile¸¦ ÀÛ¼ºÇÏ´Â °ÍÀÌ ÇÊ¿äÇÒ °ÍÀÌ´Ù. Àº À̺κÐÀ» ¼³¸íÇÏ°í ÀÖ´Ù. Àº devfs¸¦ Áö¿øÇÏ´Â µå¶óÀ̹öµéÀÇ ¸ñ·ÏÀÌ´Ù. /dev/mouse ¸¹Àº ¹èÆ÷ÆǵéÀÌ XFree86°ú GPMÀÇ ¸¶¿ì½º µð¹ÙÀ̽º¸¦ /dev/mouse·Î ¼³Á¤ÇÑ´Ù. ³ª´Â ÀÌ°ÍÀ» ¿ø·¡¿Í ´Ù¸£°Ô ¿ìȸÇؼ­ Ãß°¡Çϱ⠶§¹®¿¡ ÁÁÁö ¸øÇÑ »ý°¢À̶ó°í »ý°¢ÇÑ´Ù. ¸¸¾à ´ç½ÅÀÌ ¼³Á¤ÆÄÀÏ¿¡¼­ »ìÆ캼 ¶§, /dev/mouse¸¦ º¸°Ô µÈ´Ù¸é ¸¶¿ì½º°¡ ÂüÁ¶µÈ °÷ÀÌ ¾îµðÀÎÁö ±Ã±ÝÇÏ°Ô ¿©±æ °ÍÀÌ´Ù. µû¶ó¼­ ³ª´Â /etcX11/XF86CnfigÆÄÀÏ(±×¸®°í GPM ¼³Á¤ ÆÄÀÏ)¿¡ ½ÇÁ¦ ¸¶¿ì½º µð¹ÙÀ̽º(¿¹¸¦ µé¾î,/dev/psaux ¿Í °°Àº)¸¦ ±âÀÔÇÏ´Â °ÍÀ» ÃßõÇÑ´Ù. ´Ù¸¥ ¹æ¹ýÀ¸·Î´Â À§¿¡ ¼³¸íµÈ Áö¿øµÇÁö ¾Ê´Â µå¶óÀ̹ö¸¦ À§ÇÑ Å×Å©´ÐÀ» »ç¿ëÇصµ µÈ´Ù. Ä¿³Î ¸¶Áö¸·À¸·Î, devfs°¡ Ä¿³Î¿¡¿¡¼­ ÄÄÆÄÀÏ µÇµµ·Ï ÇØ¾ß ÇÑ´Ù. °¡Àå ÁÁ¾ÆÇÏ´Â Ä¿³Î ¼³Á¤Åø(¿¹¸¦ µé¸é, make config ¶Ç´Â make xconfig)À» »ç¿ëÇÏ¿© CONFIG_EXPERIMENTAL=y, CONFIG_DEVFS_FS=y ±×¸®°í CONFIG_DEVFS_MOUNT=y ·Î ¼³Á¤ÇÏ°í make dep;make clean ÇÏ°í Ä¿³Î°ú ¸ðµâÀ» ÀçÄÄÆÄÀÏ Ç϶ó. ºÎÆýÿ¡ devfs°¡ /dev ¿¡ ¸¶¿îÆ® µÉ °ÍÀÌ´Ù. ¸¸¾à ºÎÆýÿ¡ ¹®Á¦(¿¹¸¦ µé¾î, ¼³Á¤ ´Ü°è¸¦ Àؾú´Ù´øÁö ÇÏ´Â)°¡ ¹ß»ýÇÑ´Ù¸é, Ä¿³Î ºÎÆ® Ä¿¸Çµå ¶óÀο¡ devfs=nomount¸¦ ³Ö°í Åë°úÇÒ ¼ö ÀÖ´Ù. ÀÌ°ÍÀº Ä¿³ÎÀÌ ºÎÆýÿ¡ devfs¸¦ /dev¿¡ ¸¶¿îÆà ÇÏ´Â °ÍÀ» ¸·¾ÆÁØ´Ù. /proc/partitions, irrespective of whether devfs is mounted. ÀϹÝÀûÀ¸·Î CONFIG_DEVFS_FS=y·ÎÇßÁö¸¸ /dev¿¡ ¸¶¿îÆ®µÇÁö ¾Êµµ·Ï ¸¸µé¾îÁø Ä¿³ÎÀº ¾ÈÀüÇÏ´Ù, ¶ÇÇÑ ¼³Á¤ÀÇ º¯°æµµ ÇÊ¿ä¾ø´Ù. ÁÖÀǸ¦ ±â¿ï¿©¾ß ÇÒ ÇÑ°¡Áö ¿¹¿Ü´Â LABEL= Áö½ÃÀÚ°¡ /etc/fstab¿¡ »ç¿ëµÇ¾úÀ» ¶§ÀÌ´Ù. ÀÌ·± °æ¿ì¿¡´Â Á¤»óÀûÀ¸·Î ºÎÆÃÇÒ ¼ö ¾øÀ» °ÍÀÌ´Ù. ÀÌ°ÍÀº mount(8) ÇÁ·Î±×·¥ÀÌ ±× º¼·ý ·¹À̺íÀ» ã´Â °úÁ¤ÀÇ ÀϺκÐÀ¸·Î /proc/partitions¸¦ »ç¿ëÇÏ°í, ãÀº µð¹ÙÀ̽º À̸§ÀÌ CONFIG_DEVFS_FS=y·Î ¼³Á¤ÇÏ´Â °ÍÀÌ /proc/partitions ¿¡¼­ ±× À̸§À» º¯°æ½ÃÅ°°í, devfs°¡ ¸¶¿îÆ® µÇ¾ú´ÂÁö »ó°üÇÏÁö ¾Ê±â ¶§¹®¿¡ »ç¿ëºÒ°¡´ÉÇÏ°Ô µÇ±â ¶§¹®ÀÌ´Ù. ÀÌÁ¦ ÇÊ¿äÇÑ ¸ðµç ´Ü°è¸¦ ³¡³Â´Ù. ÀÌÁ¦ ´ç½ÅÀÇ ºû³ª´Â:-) »õ·Î¿î Ä¿³ÎÀ» ºÎÆÃÇÒ Áغñ°¡ µÇ¾ú´Ù. Áñ°Üº¸¶ó. ¼³Á¤ÆÄÀÏ º¯°æÇϱâ OK, ÀÌÁ¦ devfs°¡ »ç¿ë°¡´ÉÇÑ ½Ã½ºÅÛÀ» ºÎÆýÃÄ×°í, ¸ðµç °ÍÀÌ Á¦´ë·Î ÀÛµ¿ÇÑ´Ù. ÀÌÁ¦ ¼³Á¤ÆÄÀÏÀ» º¯°æ½Ãų Çʿ並 ´À³¥ °ÍÀÌ´Ù(ÀϹÝÀûÀ¸·Î ¼³Á¤´ë»óÀº /etc/fstab¿Í /etc/devfsd.confÀÌ´Ù). Á¦´ë·Î ÀÛµ¿ÇÏ´Â ½Ã½ºÅÛÀ» °®°í Àֱ⠶§¹®¿¡, ¼³Á¤À» º¯°æÇÏ°í³ª¼­ Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾Ê´õ¶óµµ, µðÆúÆ®·Î ¼³Á¤ÆÄÀÏÀ» º¹±¸Çϸé Àß ÀÛµ¿ÇÑ´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù.
¸®ºÎÆà ÈÄÀÇ ÆÛ¹Ì¼Ç À¯Áö ¸¸¾à µð¹ÙÀ̽º ÆÄÀÏÀ» »ý¼ºÇϱâ À§ÇÏ¿© mknod(2)¸¦ »ç¿ëÇÏÁö ¾Ê°í ¼ÒÀ¯±Ç/Æ۹̼ÇÀ» º¯°æÇϱâ À§ÇØ chmod(2) ¶Ç´Â chown(2)À» »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é inodeÀÇ ctime´Â 0(12 am, 1-JAN-1970, GMT)À¸·Î ³²°ÜÁú °ÍÀÌ´Ù. ÀÌÈÄÀÇ ctimeÀ» °¡Áö´Â °ÍµéÀº ¼ÒÀ¯±Ç/Æ۹̼ÇÀÇ º¯È­°¡ ÀÖÀ» °ÍÀÌ´Ù. µû¶ó¼­, °£´ÜÇÑ ½ºÅ©¸³Æ® ¶Ç´Â ÇÁ·Î±×·¥À» »ç¿ëÇÏ¿© ¼Ë´Ù¿îÇϱâ Àü¿¡ ¸ðµç º¯°æµÈ inodeµéÀ» ¹­´Âµ¥ »ç¿ëÇÑ´Ù. È¿°úÀûÀ̱ä ÇÏÁö¸¸ ÀÌ°ÍÀ» Àû¿ëÇϱâ À§Çؼ­´Â ¸¹Àº °í·Á»çÇ×ÀÌ ÀÖ´Ù. ´õ ³ªÀº Á¢±Ù¹æ¹ýÀº Æ۹̼ÇÀ» ÀúÀåÇÏ°í ºÏ±¸Çϴµ¥ devfsd¸¦ »ç¿ëÇÏ´Â °ÍÀÌ´Ù. ÀÌ°ÍÀº Æ۹̼ǿ¡¼­ÀÇ º¯°æÀ» ±â·ÏÇϱâ À§Çؼ­ ¼³Á¤µÇ°í, µ¥ÀÌŸº£À̽º(½ÇÁ¦·Î´Â µð·ºÅ丮 Æ®¸®)¿¡ ÀúÀåÇÏ°í, ºÎÆýÿ¡ º¹±¸ÇÒ °ÍÀÌ´Ù. ÀÌ°ÍÀº ÇöÀçÀÇ Æ۹̼ÇÀ» ÀúÀåÇϴµ¥ À־ È¿À²ÀûÀÎ ¹æ¹ýÀ̸ç È¿°úÀûÀÎ °á°ú¸¦ º¸¿©ÁØ´Ù(¾Ë¼ö ¾ø´Â ¹Ì·¡ÀÇ ½Ã°£¿¡ Æ۹̼ÇÀ» ÀúÀåÇÏ´Â tar ÀÇ Á¢±Ù°ú´Â ´Ù¸£°Ô) devsd¿¡ Á¦°øµÇ´Â ±âº»¼³Á¤ÆÄÀÏÀº Áö¼ÓÀûÀÎ °ü¸®°¡ °¡´ÉÇϵµ·Ï Çϱâ À§ÇØ ÁÖ¼®ÀÌ ´Þ¸° ¼³Á¤ºÎºÐÀ» °¡Áö°í ÀÖ´Ù. ¸¸¾à ¾î¶² ¹æ¹ýÀ¸·Î´ø tar Á¢±ÙÀ» »ç¿ëÇϱâ·Î °áÁ¤Çß´Ù¸é, tarÀº »õ·Î¿î µð¹ÙÀ̽º ³ëµå¸¦ »ý¼ºÇϱâ Àü¿¡ ¸ÕÀú inode¸¦ unlink(2) ÇÒ °ÍÀ̶ó´Â °ÍÀ» ÁÖÀÇÇ϶ó. unlink(2)´Â devfs ¿£Æ®¸®¿Í µð¹ÙÀ̽º µå¶óÀ̹ö »çÀÌÀÇ ¿¬°áÀ» ²÷¾î¹ö¸®´Â È¿°ú¸¦ °¡Áø´Ù. ¸¸¾à ºÎÆà ¿É¼Ç¿¡¼­ "devfs=only"¸¦ »ç¿ëÇÏ°í ÀÖ´Ù¸é, ¸ðµâÀ» ÀûÀçÇϱâ À§ÇØ ÇÊ¿äÇÑ µð¹ÙÀ̽º µå¶óÀ̹ö¿¡ ´ëÇÑ Åë·Î¸¦ ÀÒ°Ô µÈ´Ù. ³ª´Â ÀÌ°ÍÀ» tarÀÇ ¹ö±×¶ó°í »ý°¢ÇÏ°í ÀÖ´Ù(½ÇÁ¦·Î tar°¡ inode¸¦ ¸ÕÀú unlink(2)ÇÒ ÇÊ¿ä´Â ¾ø´Ù) ´Ù¸¥ ¹æ¹ýÀ¸·Î´Â, µð¹ÙÀ̽ºÀÇ Á»´õ öÇÐÀûÀÎ ÆÛ¹Ì¼Ç °ü¸®¸¦ Á¦°øÇϱâ À§ÇÏ¿© devfsd¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ´Ù. ´ç½ÅÀº µð¹ÙÀ̽º´ç ÇϳªÀÇ ¿£Æ®¸®¸¦ ÇÒ´çÇÏ´Â ÁøºÎÇÑ ¹æ¹ýº¸´Ù, ÇϳªÀÇ ¼³Á¤À» ÅëÇÏ¿© ¸ðµç µð¹ÙÀ̽º ±×·ì¿¡ ´ëÇÏ¿© Æ۹̼ÇÀ» ÀúÀåÇÒ ¼ö ÀÖ´Ù. <filename>/dev</filename>¿¡ ¸¶¿îÆ®µÈ ÆÛ¹Ì¼Ç µ¥ÀÌŸº£À̽ºÀÇ ÀúÀå ¸¸¾à devfs°¡ /dev¿¡ ¸¶¿îÆ® µÈä·Î disc-baed /dev¿¡ µð¹ÙÀ̽ºÀÇ Æ۹̼ÇÀ» ÀúÀåÇϰųª º¹±¸Çϱ⸦ ¿øÇÑ´Ù¸é ±×·¸°Ô ÇÒ ¼öµµ ÀÖ´Ù. ÀÌ°ÍÀº 2.4.x Ä¿³Î (½ÇÁ¦·Î´Â, 2.3.99 ÀÌÈÄ)ÀÇ VFS ¹ÙÀεù ±â´ÉÀ» ÇÊ¿ä·Î ÇÑ´Ù. ÀÌ ±â´ÉÀ» ¼³Á¤Çϱâ À§Çؼ­´Â ¾Æ·¡¿Í °°ÀÌ Ç϶ó: ºÎÆýÿ¡ devfs°¡ ¸¶¿îÆ® µÇÁö ¾Êµµ·ÏÇ϶ó /dev-stateµð·ºÅ丮¸¦ ¸¸µé¾î¶ó ºÎÆ® ½ºÅ©¸³Æ®ÀÇ ¾ÕºÎºÐ¿¡ ´ÙÀ½ÀÇ ÁÙÀ» Ãß°¡Ç϶ó
mount --bind /dev /dev-state mount -t devfs none /dev devfsd /dev
/etc/devfsd.conf¿¡ ´ÙÀ½À» Ãß°¡Ç϶ó:
REGISTER ^pt[sy]/.* IGNORE CHANGE ^pt[sy]/.* IGNORE REGISTER .* COPY /dev-state/$devname $devpath CHANGE .* COPY $devpath /dev-state/$devname CREATE .* COPY $devpath /dev-state/$devname
¸®º×
ÀÏ¹Ý µð·ºÅ丮¿¡ ÆÛ¹Ì¼Ç µ¥ÀÌÅͺ£À̽º º¹±¸Çϱ⠸¸¾à VFS ¹ÙÀεùÀ» Áö¿øÇÏÁö ¾Ê´Â ¿À·¡µÈ Ä¿³ÎÀ» »ç¿ëÁßÀ̶ó¸é, /dev¿¡ ¸¶¿îÆ®µÇ¾î ÀÖ´Â ÆÛ¹Ì¼Ç µ¥ÀÌŸº£À̽º¸¦ °¡Á®¿Ã ¼ö ¾øÀ» °ÍÀÌ´Ù. ±×·¯³ª ±× µ¥ÀÌŸº£À̽º¸¦ º¹±¸Çϱâ À§ÇÏ¿© ÀÏ¹Ý µð·ºÅ丮¸¦ ¸¸µé ¼ö ÀÖ´Ù. À§ÀÇ /etc/devfsd.confÆÄÀÏÀº ¿©ÀüÈ÷ »ç¿ë°¡´É ÇÒ °ÍÀÌ´Ù. ´ç½ÅÀº devfsd¸¦ ÀνºÅç Çϱ⿡ ¾Õ¼­ /dev-stateµð·ºÅ丮¸¦ ¸¸µé¾î¾ß ÇÑ´Ù. ¸¸¾à /dev¿¡ ¿¹ÀüÀÇ Æ۹̼ÇÀ» °¡Áö°í ÀÖ´Ù¸é, »õ·Î¿î µð·ºÅ丮¿¡ µð¹ÙÀ̽º ³ëµåµéÀ» Ä«ÇÇ(¶Ç´Â move)ÇÏ¸é µÈ´Ù. ´õ ³ªÀº ¹æ¹ý °¡Àå ÁÁÀº ¹æ¹ýÀº /dev¿¡ ¸¶¿îÆ®µÇ¾î ÀÖ´Â Æ۹̼ÇÀÇ µ¥ÀÌÅͺ£À̽º¸¦ °¡Á®¿À´Â °ÍÀÌ´Ù. ±× ÀÌÀ¯´Â µð¹ÙÀ̽º ³ëµåµéÀ» /dev-state¿¡ º¹»çÇÒ ÇÊ¿ä°¡ ¾ø°í, /dev-state(devfs¸¦ À§ÇÑ) °ú /dev/(devfs¸¦ »ç¿ëÇÏÁö ¾ÊÀ» °æ¿ì¿¡) »çÀÌ¿¡ Æ۹̼ÇÀ» º¹»çÇÒ ÇÊ¿ä°¡ ¾øÀÌ devfs¿Í devfs¸¦ »ç¿ëÇÏÁö ¾Ê´Â Ä¿³ÎÀ» ¹Ù²Ü ¼ö Àֱ⠶§¹®ÀÌ´Ù.
devfsÀÇ Áö¿ø¾øÀÌ µå¶óÀ̹ö¸¦ Ãë±ÞÇϱâ ÇöÀç, Ä¿³Î¿¡¼­ ¸ðµç µå¶óÀ̹öµéÀÌ devfs¸¦ »ç¿ëÇϵµ·Ï ¼öÁ¤µÇÁö´Â ¾Ê¾Ò´Ù. ¿©ÀüÈ÷ devfs°¡ Áö¿øµÇÁö ¾Ê´Â µð¹ÙÀ̽º µå¶óÀ̹öµéÀº ÀÚµ¿À¸·Î devfs¿¡ ³ªÅ¸³ªÁö ¾ÊÀ» °ÍÀÌ´Ù. ÀÌ·¯ÇÑ µå¶óÀ̹öµé¿¡ ´ëÇÑ µð¹ÙÀ̽º¸¦ »ý¼ºÇÏ´Â °¡Àå °£´ÜÇÑ ¹æ¹ýÀº ÇÊ¿äÇÑ µð¹ÙÀ̽º ³ëµåµéÀ» Æ÷ÇÔÇÏ°í ÀÖ´Â tarfileÀ» Ǫ´Â °ÍÀÌ´Ù. ÀÌ°ÍÀ» ºÎÆ® ½ºÅ©¸³Æ®¿¡ ³Ö¾îµµ µÈ´Ù. ÀÌÁ¦ ´ç½ÅÀÇ ¸ðµç µå¶óÀ̹öµéÀº Àüó·³ ÀÛµ¿ÇÒ °ÍÀÌ´Ù. °í¹«ÀûÀÌ°Ôµµ ´ëºÎºÐÀÇ »ç¶÷µé¿¡°Ô devfs´Â ´ëºÎºÐÀÇ ±â´ÉÀ» ÀÒÁö ¾Ê°í (¿¹¸¦ µé¾î ´Ù¾çÇÑ µð¹ÙÀ̽º¿¡ ´ëÇÑ Á¢±Ù »ó½Ç) /dev À§¿¡ devfsµð·ºÅ丮¸¦ ¸¶¿îÆ® ÇÒ ¼ö ÀÖ´Â ÃæºÐÇÑ Áö¿øÀ» ÇÑ´Ù. 1998 ³â 1¿ù 22ÀÏ ÀÌÈÄ (devfs ÆÐÄ¡ ¹öÀü 10)ºÎÅÍ ³ª´Â(ÀúÀÚ´Â) ÀÌ ¹æ¹ý(devfs)¸¦ ¿î¿µÇÏ°í ÀÖ´Ù. ³»°¡ °¡Áö°í ÀÖ´Â ¸ðµç µð¹ÙÀ̽ºµéÀº devfs¿¡ ³ªÅ¸³ª¹Ç·Î ³ª´Â ¾Æ¹«°Íµµ ÀÒÀº °ÍÀÌ ¾ø´Ù. ¸¸¾à ´ç½ÅÀÇ ¼³Á¤ÀÌ ¿¹Àü¹æ½ÄÀÇ µð¹ÙÀ̽º À̸§(¿¹¸¦ µé¾î /dev/hda1 , /dev/sda1)À» ÇÊ¿ä·Î ÇÑ´Ù¸é, ȣȯ¿£Æ®¸®¸¦ À¯ÁöÇϵµ·Ï devfsd¸¦ ¼³Ä¡ÇÏ°í ¼³Á¤ÇØ¾ß ÇÑ´Ù. ´ç½ÅÀÌ ÀÌ°ÍÀ» ÇÊ¿ä·Î ÇÒ °ÍÀ̶ó´Â °ÍÀº °ÅÀÇ È®½ÇÇÏ´Ù. Ä¿³ÎÀÌ ·çÆ® µð¹ÙÀ̽º¿¡ ´ëÇØ È£È¯Ç׸ñÀ» »ý¼ºÇϱ⠶§¹®¿¡ initrd¸¦ ÇÊ¿ä·Î ÇÏÁö ¾Ê´Â´Ù´Â °ÍÀ» ±â¾ïÇ϶ó. ¸¸¾à Unix98 PTYs¸¦ »ç¿ëÇϱâ ÀÖ´Ù¸é devfs °¡ /dev/pts¸¦ °ü¸®ÇÒ ¼ö Àֱ⠶§¹®¿¡ ´õ ÀÌ»ó devpts ¸¦ ¸¶¿îÆ®ÇÒ ÇÊ¿ä°¡ ¾ø´Ù´Â °ÍÀ» ±â¾ïÇ϶ó. ÀÌ°ÍÀº devpts¸¦ ÄÄÆÄÀÏ ÇÏ°í ¼³Ä¡ÇÒ ÇÊ¿ä°¡ ¾ø±â ¶§¹®¿¡, ¾à°£ÀÇ ·¥À» Àý¾àÇÑ´Ù. glibcÀÇ ¾î¶² ¹öÀüÀº devfs ½Ã½ºÅÛ¿¡¼­ Unix98 pty¸¦ Ãë±ÞÇϴµ¥ ¹ö±×¸¦ °¡Áö°í ÀÖ´Ù´Â °ÍÀ» ¸í½ÉÇ϶ó. ¼öÁ¤À» À§Çؼ­´Â glibc ¸ÞÀÎÅ×ÀÌ³Ê¿Í ¿¬¶ôÇ϶ó. Glibc 2.1.3 Àº ¼öÁ¤µÇ¾ú´Ù. ¸¸¾à devfsd¸¦ ¼³Ä¡ÇÏÁö ¾Ê¾Ò´Ù¸é /etc/fstab¸¦ ¼öÁ¤ÇÏ´Â °Í¿¡¼­ºÎÅÍ ´Ù¸¥ °Íµéµµ ¼öÁ¤ÇØ¾ß ÇÑ´Ù´Â °ÍÀ» ¸í½ÉÇ϶ó. (X ¼­¹ö¿Í °°Àº) ¾î¶² ¼ÒÇÁÆ®¿þ¾î´Â ±× ¼Ò½º¿¡ µð¹ÙÀ̽º À̸§À» °íÁ¤½ÃÄÑ ³õ´Â´Ù. ½ÇÁ¦·Î ȣȯ ¿£Æ®¸®¸¦ »ý¼ºÇϴµ¥ devfsd¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ÈξÀ ½±´Ù. ´ç½ÅÀº ´ç½ÅÀÇ ½Ã½ºÅÛÀ» devfsd°¡ ȣȯÇ׸ñÀ» »ý¼ºÇϵµ·Ï Á¦ÇÑÇϸ鼭 ¼­¼­È÷ »õ·Î¿î µð¹ÙÀ̽º À̸§(¿¹¸¦ µé¾î, /etc/fstabºÎÅÍ ½ÃÀÛÇÏ¿©)À» »ç¿ëÇϵµ·Ï ÇÒ¼ö ÀÖ´Ù. DEVFS°¡ °¡´ÉÇÑ Ä¿³ÎÀ» ºÎÆÃÇϱâ Àü¿¡ DEVFSD¸¦ ¼³Ä¡ÇÏ¿´´ÂÁö È®ÀÎÇ϶ó!! devfs°¡ 2.3.46 Ä¿³Î¿¡ µé¾î°¬À» ´ç½Ã, ³ª´Â ¼ö¸¹Àº º¸°í¸¦ ¹Þ¾Ò´Ù. ´ëºÎºÐÀÇ º¸°íµéÀº »ç¶÷µéÀÌ devfsd ¾øÀÌ ¿î¿µÇ߱⠶§¹®À̾ú°í, ±× Áß¿¡ ¾î¶² °ÍµéÀÌ ±úÁ³´Ù(»ç¿ëÇÒ ¼ö ¾ø´Â ½Ã½ºÅÛÀÌ µÇ¾ú´Ù). ³ª´Â ¼ø°£ÀûÀÎ ¼³Á¤À߸øÀ¸·Î ÀÎÇÑ ¹ö±×º¸´Ù ½ÇÁ¦ ¹ö±×¿¡ Àü³äÇϱ⸦ ¿øÇÑ´Ù. ¸¸¾à ´Ù¸¥ ÄÚµå(¿¹¸¦ µé¾î glibc, X server)¿¡¼­ ¹ö±×/¿À·ù¸¦ ¼öÁ¤ÇØ¾ß ÇÑ´Ù°í ´À³¤´Ù¸é, ±× ¸ÞÀÎÅ×À̳ʵ鿡°Ô È®ÀÎÇ϶ó. ±×µéÀº (³ªº¸´Ù) ÈǸ¢ÇÏ°Ô ÇØ°áÇÒ °ÍÀÌ´Ù. Devfs ÀÇ ¹æ¹ý devfsÀÇ Ä¿³ÎÆÐÄ¡´Â ÇÕ¸®ÀûÀÎ µð¹ÙÀ̽º Æ®¸®¸¦ »ý¼ºÇÑ´Ù. À§¿¡ ±â¼úµÈ´ë·Î, ¸¸¾à ¿¹Àü ¹æ½ÄÀÇ /dev ³×ÀÌ¹Ö ½ºÅ°¸¶¸¦ À¯ÁöÇϱ⠿øÇÑ´Ù¸é, Àû´çÇÏ°Ô(¸Ç ÆäÀÌÁö¿¡¼­ º¸´Â´ë·Î) devfsd¸¦ ¼³Á¤ÇÏ¸é µÈ´Ù. ¿¹Àü ¹æ½ÄÀ» ¼±È£ÇÏ´Â »ç¶÷µéÀº À̹ø ¼½¼ÇÀ» °Ç³Ê¶Ù¾î¶ó. ü°èÈ­µÈ À̸§°ú ¸íÈ®ÇÑ /dev¸¦ ÁÁ¾ÆÇÏ´Â »ç¶÷µéÀº Àо±æ ¹Ù¶õ´Ù. ¸¸¾à devfsd¸¦ ½ÇÇàÇÏÁö ¾Ê¾Ò´Ù¸é, ȣȯ ¿£Æ®¸®ÀÇ °ü¸®¸¦ ÇÒ¼ö ¾ø°í, »õ·Î¿î À̸§À» »ç¿ëÇϱâ À§Çؼ­´Â ´ç½ÅÀÇ ½Ã½ºÅÛÀ» ¼³Á¤ÇØ¾ß ÇÒ °ÍÀÌ´Ù. ¿¹¸¦ µé¾î, »õ·Î¿î µð½ºÅ©ÀÇ ³×ÀÌ¹Ö ½ºÅ°¸¶¸¦ »ç¿ëÇϱâ À§Çؼ­ /etc/fstab¸¦ ¼öÁ¤ÇØ¾ß ÇÒ °ÍÀÌ´Ù. ¸¸¾à devfs¸¦ »ç¿ëÇÏÁö ¾Ê´Â Ä¿³ÎÀ» ºÎÆÃÇϽñ⠿øÇÑ´Ù¸é, devfs¾øÀÌ Ä¿³ÎÀ» ºÎÆÃÇßÀ»¶§¸¦ À§ÇÏ¿© ¿¹Àü ¹æ½ÄÀÇ À̸§À¸·Î µ¹¾Æ°¥ disc-based /dev¿¡ ±âÃÊÇÑ È£È¯ ½É¸µÅ©°¡ ÇÊ¿äÇÒ °ÍÀÌ´Ù. ´ç½ÅÀº ȣȯ¿£Æ®¸®¸¦ À¯ÁöÇÒ µð¹ÙÀ̽º¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, BSD pseudo-terminal µð¹ÙÀ̽º¿¡ ´ëÇÑ È£È¯ ¿£Æ®¸®¸¦ ¿øÇÒ ¼öµµ ÀÖ´Ù(±×·¸Áö ¾ÊÀ¸¸é C ¶óÀ̺귯¸®¸¦ ÆÐÄ¡Çϰųª, ´ë½Å¿¡ Unix98 ptys¸¦ »ç¿ëÇØ¾ß ÇÒ °ÍÀÌ´Ù). ÀÌ°ÍÀº /dev/devfsd.conf ¿¡ Á¤È®ÇÑ Á¤±ÔÇ¥Çö½ÄÀ» ³ÖÀ¸¸é µÇ´Â ÀÏÀÌ´Ù. ´ç½ÅÀÌ ¼±È£ÇÏ´Â ´Ù¸¥ ³×ÀÌ¹Ö ½ºÅ°¸¶¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, ³ª´Â ³Ê¹« ¼öÁ÷ÀûÀ̱⠶§¹®¿¡ Ä¿³Î Á¦°ø À̸§¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù. ÀϹÝÀûÀÎ À߸øµÈ »ý°¢Àº Ä¿³ÎÀÌ Á¦°øÇÏ´Â À̸§µéÀº ¼³Á¤ÆÄÀÏ¿¡ Á÷Á¢ÀûÀ¸·Î »ç¿ëµÇ¾î¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù. ÀÌ°ÍÀº ±×·±°Ô ¾Æ´Ï´Ù. ±×°ÍµéÀº ÀåÂøµÈ µð¹ÙÀ̽ºµéÀÇ ·¹À̾ƿôÀ» ¹Ý¿µÇÏ°í ½±°Ô ºÐ·ùÇϱâ À§ÇÏ¿© µðÀÚÀÎµÈ °ÍÀÌ´Ù. ¸¸¾à Ä¿³ÎÀÌ Á¦°øÇÏ´Â À̸§À» ÁÁ¾ÆÇÑ´Ù¸é, ±×°ÍÀ¸·Î ÁÁ´Ù. ¸¸¾à ±×·¸Áö ¾Ê´Ù¸é, ´ç½ÅÀÌ Á»´õ ¼±È£ÇÏ´Â ³×ÀÓ½ºÆäÀ̽º¸¦ »ý¼ºÇϱâ À§ÇÏ¿© devfsd¸¦ »ç¿ëÇØ¾ß ÇÒ °ÍÀÌ´Ù. devfsd´Â ³í¸®ÀûÀÌ°í °ü¸®Çϱ⠽±µµ·Ï ÇÏ´Â ³×ÀÓ½ºÆäÀ̽º¸¦ »ý¼ºÇϱâ À§ÇÑ Äڵ带 Æ÷ÇÔÇÏ°í ÀÖ´Ù. ±Ùº»ÀûÀ¸·Î´Â, Ä¿³ÎÀÌ Á¦°øÇÏ´Â ³×ÀÓ½ºÆäÀ̽ºÀÇ »ý·«ÇüÀ» »ý¼ºÇÑ´Ù. ´ç½ÅÀº ÀڽŸ¸ÀÇ ³×ÀÓ½ºÆäÀ̽º¸¦ ¸¸µé±â À§ÇÑ °úÁ¤¿¡ ÀÖ´Ù. devfsd´Â ´ç½ÅÀÌ ÀÌ ÀÏÀ» ½±°Ô Çϵµ·Ï Çϴµ¥ ÇÊ¿äÇÑ ¸ðµç ±â¹ÝÀ» °¡Áö°í ÀÖ´Ù. ÇÊ¿äÇÑ ÀÏÀº ½ºÅ©¸³Æ®¸¦ ¸¸µå´Â °ÍÀÌ´Ù. ½ÉÁö¾î c Äڵ带 ÀÛ¼ºÇÒ ¼öµµ ÀÖÀ¸¸ç devfsd´Â È£Ãâ°¡´ÉÇÑ È®ÀåÀ¸·Î ±× °øÀ¯ ¿ÀºêÁ§Æ®¸¦ ÀûÀçÇÒ ¼ö ÀÖ´Ù. ´Ù¸¥ ³íÁ¡ init ÇÁ·Î±×·¥ ÁÖÀǸ¦ ±â¿ï¿©¾ß ÇÒ ´Ù¸¥ Á¡Àº initÇÁ·Î±×·¥ÀÌ /dev/telinit À¯´Ð½º ¼ÒÄÏÀ» »ý¼ºÇÏ´ÂÁö¿¡ ´ëÇÑ °ÍÀÌ´Ù. initÀÇ ¾î¶² ¹öÀüÀº /dev/telinit¸¦ »ý¼ºÇÏ°í telinitÇÁ·Î±×·¥Àº init ÇÁ·Î¼¼½º¿Í Åë½ÅÇÑ´Ù. ¸¸¾à ÀÌ·± ½Ã½ºÅÛÀ» °¡Áö°í ÀÖ´Ù¸é, init °¡ ½ÃÀ۵DZâ Àü¿¡ devfs°¡ /dev¿¡ ¸¶¿îÆ®µÇµµ·Ï ÇØ¾ß ÇÑ´Ù. ´Ù¸¥ ¸»·Î Çϸé, initÈÄ¿¡ ¼öÇàµÇ´Â /etc/rc¿¡´Â devfs¸¦ ¸¶¿îÆ® Çϵµ·Ï ³Ö¾î¼­´Â ¾ÈµÈ´Ù. initÀÇ ´Ù¸¥ ¹öÀüµéÀº init°¡ ½ÃÀÛÇϱâ Àü¿¡ Á¸ÀçÇؾ߸¸ ÇÏ´Â named pipe /dev/initctl °¡ ÇÊ¿äÇÏ´Ù. ´Ù½Ã¸»ÇÏÁö¸¸ init°¡ ½ÃÀ۵DZâ Àü¿¡ ±× named pipe¸¦ »ý¼ºÇÏ°í devfs¸¦ ¸¶¿îÆ®ÇØ¾ß ÇÑ´Ù. ±âº»ÀûÀÎ ÇൿÀº 2.3.x ÀÌÈÄÀÇ Ä¿³ÎÀÌ ºÎÆÃÇÒ¶§¿¡´Â /dev ¿¡ devfs¸¦ ¸¶¿îÆ® ÇÏÁö ¾Ê´Â °ÍÀÌ´Ù. ÀÌ°ÍÀº ºÎÆà ¿É¼Ç¿¡ "devfs=mount"¸¦ ³ÖÀ½À¸·Î½á °íÄ¥ ¼ö ÀÖ´Ù. ÀÌ ¹®Á¦´Â initÀÇ ¹®Á¦¸¦ ÇØ°áÇÏ°í, ´ÙÀ½ÀÇ ²ûÂïÇÑ »óȲ(Cannot open initial console ¸Þ¼¼Áö)À» ¸·¾ÆÁØ´Ù. devfs ÆÐÄ¡°¡ Àû¿ëµÇ¾î¾ß ÇÏ´Â 2.2.xÀÇ Ä¿³Î¿¡¼­´Â ±âº»ÀûÀ¸·Î ¸¶¿îÆ® ÇÑ´Ù. ¸¸¾à /dev¿¡ devfs¸¦ ÀÚµ¿À¸·Î ¸¶¿îÆ®ÇÑ´Ù¸é, ºÎÆ® ½ºÅ©¸³Æ®¿¡¼­ /dev/initctl¸¦ »ý¼ºÇϵµ·Ï ÇØ¾ß ÇÑ´Ù. ´ÙÀ½ÀÇ ÁÙÀ» Ãß°¡Ç϶ó:
mknod /dev/initctl p kill -SIGUSR1 1 # /dev/initctlÀÌ ÇöÀç Á¸ÀçÇÏ´ÂÁö¸¦ init¿¡ ¾Ë·ÁÁÜ
´Ù¸¥ ¹æ¹ýÀ¸·Î´Â, Ä¿³ÎÀÌ /dev¿¡ devfs¸¦ ¸¶¿îÆ® Çϱ⸦ ¿øÄ¡ ¾Ê´Â´Ù¸é, /dev/initctl¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇÏ¿© ´ÙÀ½ÀÇ ÇÁ·Î½ÃÁ®¸¦ »ç¿ëÇÒ ¼ö ¼ö ÀÖ´Ù:
# cd /sbin # mv init init.real # cat > init #! /bin/sh mount -n -t devfs none /dev mknod /dev/initctl p exec /sbin/init.real $* [control-D] # chmod a+x init
initÀÇ ÃֽŠ¹öÀüÀº /dev/initctl¸¦ ÀÚµ¿À¸·Î »ý¼ºÇϹǷÎ, ÀÌ°Í¿¡ ´ëÇؼ­ °ÆÁ¤ÇÒ ÇÊ¿ä°¡ ¾ø´Ù´Â °ÍÀ» ±â¾ïÇ϶ó.
¸ðµâ ÀÚµ¿·Îµù ¸ðµâÀÇ ÀÚµ¿·ÎµùÀ» Çϱâ À§Çؼ­´Â devfsd¸¦ ¼³Á¤ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ´ÙÀ½ÀÇ ÁÙÀ» /etc/devfsd.confÆÄÀÏ¿¡ Ãß°¡½ÃÄѶó:
LOOKUP .* MODLOAD
devfsd-v1.3.10 ÀÌÈÄ·Î, MODLOAD ¿¡ ÀÇÇØ »ç¿ëµÇ´Â Æ÷°ýÀûÀÎ /etc/modules.devfs ¼³Á¤ ÆÄÀÏÀÌ ¼³Ä¡µÈ´Ù. ÀÌ°ÍÀº ´ëºÎºÐÀÇ ¼³Á¤µé¿¡ ´ëÇØ ÃæºÐÇÏ´Ù. ¸¸¾à ¼³Á¤ÀÌ ´õ ÇÊ¿äÇÏ´Ù¸é, /etc/modules.confÆÄÀÏÀ» ¼öÁ¤Ç϶ó. devfs°¡ ¸ðµâÀÇ ÀÚµ¿·ÎµùÀ» ÇÏ´Â ¹æ¹ýÀº : ÇÁ·Î¼¼½º°¡ µð¹ÙÀ̽º ³ëµåÀÇ Å½»ö½Ãµµ¸¦ ÇÑ´Ù(e.g. /dev/fred) ¸¸¾à µð¹ÙÀ̽º ³ëµå°¡ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, Àüü°æ·Î°¡ ¹®ÀÚ¿­·Î devfsd¿¡ ³Ñ°ÜÁø´Ù. devfsd´Â modprobe ÇÁ·Î±×·¥(À§¿¡¼­ º¸¿©Áø ¼³Á¤ ¶óÀÎÀÌ Á¸ÀçÇÏ´Â) ¿¡ ±× ¹®ÀÚ¿­À» ÀüÇØÁÖ°í, ±× ¼³Á¤ÆÄÀÏÀÎ /etc/modules.devfs¿¡ ¸í½ÃÇÑ´Ù. /etc/modules.devfs´Â ·ÎÄà ¼³Á¤¿¡ Á¢±ÙÇϱâ À§ÇØ /etc/modules.confÀ» Æ÷ÇÔÇÑ´Ù. modprobe´Â ±× °æ·Î¸¦ ¸ðµâÀ̸§À¸·Î º¯È¯ÇÏ´Â ¾Ù¸®¾î½º¸¦ Ž»öÇÔÀ¸·Î½á ±×°ÍÀÇ ¼³Á¤ÆÄÀÏÀ» ãÀ» °ÍÀÌ´Ù. º¯È¯µÈ °æ·Î´Â ±× ¸ðµâÀ» ·ÎµùÇϴµ¥ »ç¿ëµÈ´Ù.
¸¸¾à mymod¸ðµâÀ» ·ÎµùÇϱâ À§ÇÏ¿© /dev/fred¸¦ Ž»öÇϱ⠿øÇÑ´Ù¸é, /etc/modules.conf¿¡ ´ÙÀ½ÀÇ ÁÙÀ» Ãß°¡Ç϶ó:
alias /dev/fred mymod
±× /etc/modules.devfs ¼­Á¤ ÆÄÀÏÀº Ç¥ÁØ µð¹ÙÀ̽º À̸§¿¡ ´ëÇؼ­ °¢°¢ÀÇ ¾Ù¸®¾î½º¸¦ Á¦°øÇÑ´Ù. ¸¸¾à ÀÌ ÆÄÀÏÀ» ÀÚ¼¼ÇÏ°Ô Ã£´Â´Ù¸é, ¾î¶² ¸ðµâÀº ¿©·¯°³ÀÇ ¾Ù¸®¾î½º ¼³Á¤ ÁÙÀÌ ÇÊ¿äÇÏ´Ù´Â °ÍÀ» ¾Ë°ÍÀÌ´Ù. ±×°ÍÀº ¿§ ¹æ½Ã°ú »õ·Î¿î ¹æ½ÄÀÇ µð¹ÙÀ̽º À̸§¿¡ ´ëÇØ ¸ðµâ ÀÚµ¿·ÎµùÀ» Áö¿øÇϱâ À§ÇØ ÇÊ¿äÇÏ´Ù.
devfs µð¹ÙÀ̽º¿¡ root¸¦ ¸¶¿îÆ®Çϱ⠸¸¾à "devfs=only" ºÎÆ® ¿É¼ÇÀ» ¼³Á¤ÇßÀ»¶§ devfs µð¹ÙÀ̽º°¡ root¸¦ ¸¶¿îÆ® Çϱ⸦ ¿øÇÑ´Ù¸é, ºÎÆýà Ŀ³Î¿É¼Ç¿¡ "root=<device>" ¿É¼ÇÀ» ³Ö¾î¾ß ÇÑ´Ù. LILO¸¦ »ç¿ëÇÑ´Ù¸é, lilo.conf¿¡ ÀÌ°ÍÀ» °¡Áö°í ÀÖ¾î¾ß¸¸ ÇÑ´Ù:
append = "root=>device>"
³î¶ó¿î°¡? ¿½, ³ª ¿ª½Ã ±×·¸´Ù. ´ÙÀ½ÀÇ ÁÙÀ» ´ç½ÅÀÌ °¡Áö°í ÀÖ´Ù¸é (´ëºÎºÐÀÇ »ç¶÷µéÀÌ ±×·± °Íó·³) ÇØ°áÇÑ´Ù:
root = <device>
LILO´Â <device>ÀÇ µð¹ÙÀ̽º ¹øÈ£¸¦ °áÁ¤ÇÒ °ÍÀÌ°í, ±× Ä¿³ÎÀ» ½ÃÀÛÇÏ°Ô Àü¿¡ Ä¿³Î À̹ÌÁöÀÇ Æ¯Á¤ ºÎºÐ¿¡ ±× ¹øÈ£¸¦ ±â·ÏÇÒ °ÍÀ̸ç, ±× Ä¿³ÎÀº ·çÆ® ÆÄÀϽýºÅÛÀ» ¸¶¿îÆ® Çϱâ À§ÇÏ¿© ±× µð¹ÙÀ̽º ¹øÈ£¸¦ »ç¿ëÇÒ °ÍÀÌ´Ù. ±×·¡¼­, "append" º¯¼ö¸¦ »ç¿ëÇÏ´Â °ÍÀº LILO°¡ ±× ·çÆ® ÆÄÀϽýºÅÛÀ» devfs°¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ¹®ÀÚ¿­·Î ³Ñ°Ü ÁÖµµ·Ï È®½ÇÈ÷ ÇÏ´Â °ÍÀÌ´Ù.
¸¸¾à "devfs=only"¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é ½Å°æ¾µ °Í ¾ø´Ù.
TTY ¹®Á¦ C ¶óÀ̺귯¸®ÀÇ ¾î¶² ¹öÀü¿¡¼­´Â ttyname(3)°¡ ½Éº¼¸¯ ¸µÅ©ÀÎ µð¹ÙÀ̽º ¿£Æ®¸®¿¡ ´ëÇؼ­´Â ¿À·ù¸¦ ¸¸µé¾î³½´Ù. tty(1) ÇÁ·Î±×·¥Àº ÀÌ ÇÔ¼ö¿¡ ÀÇÁ¸ÇÑ´Ù. ³ª´Â ÀÌ°ÍÀ» ¼öÁ¤Çϱâ À§ÇÏ¿© libc 5.4.43¿¡ ÆÐÄ¡¸¦ ¸¸µé¾ú´Ù. ÀÌ°ÍÀº libc 5.4.44¿¡ Æ÷ÇԵǾî ÀÖ°í ºñ½ÁÇÚ ÆÐÄ¡°¡ glibc 2.1.4¿¡ ÀÖ´Ù.
Ä¿³Î ³×ÀÌ¹Ö ½ºÅ°¸¶ Ä¿³ÎÀº ±âº» ³×ÀÌ¹Ö ½ºÅ°¸¶¸¦ Á¦°øÇÑ´Ù. ÀÌ ½ºÅ°¸¶´Â ƯÁ¤ÇÑ µð¹ÙÀ̽º³ª µð¹ÙÀ̽º ÇüÅ¿¡ µû¶ó °Ë»öÇÏ°í, »ç¿ë°¡´ÉÇÑ µð¹ÙÀ̽º¸¦ ã¾Æº¸´Âµ¥ ½±µµ·Ï µðÀÚÀÎ µÈ´Ù. ¾î¶² µð¹ÙÀ̽º ÇüÅÂ(ÇÏµå µð½ºÅ© °°Àº)´Â ±×·± ºÎ·ùÀÇ µð¹ÙÀ̽º°¡ »ç¿ë°¡´ÉÇÑ°¡¸¦ ¾Ë¾Æº¸±â ½±°Ô Çϱâ À§ÇØ ±× Ç׸ñÀÇ µð·ºÅ丮¸¦ °¡Áö°í ÀÖ´Ù. Á¾Á¾, ±× Ç׸ñµéÀº »ç¿ë°¡´ÉÇÑ µð¹ÙÀ̽ºÀÇ ±¸Á¶¸¦ ¹Ý¿µÇϱâ À§ÇÑ µð·ºÅ丮 Æ®¸®¿¡ ½Éº¼¸¯ ¸µÅ©·Î µÇ¾î ÀÖ´Ù. ±âÇÏÇÐÀûÀÎ Æ®¸®´Â ´ç½ÅÀÇ µð¹ÙÀ̽º°¡ ¾î¶»°Ô ¹è¿­µÇ¾î ÀÖ´ÂÁö º¸´Âµ¥ À¯¿ëÇÏ´Ù. ¾Æ·¡´Â ´ëºÎºÐÀÇ ÀϹÝÀûÀÎ µå¶óÀ̹öµé¿¡ ´ëÇÑ ³×ÀÌ¹Ö ½ºÅ°¸¶ÀÇ ¸ñ·ÏÀÌ´Ù. ¿¹¾àµÈ µð¹ÙÀ̽º À̸§µéÀÇ ¸ñ·ÏÀº Âü°í°¡ °¡´ÉÇÏ´Ù. ±× ¸ñ·Ï¿¡ Ãß°¡µÇ±â ¿øÇÑ´Ù¸é rgooch (at) atnf.csiro.au ¿¡ ¸ÞÀÏÀ» º¸³»¶ó. ´Ù¸¥ À̸§µéµµ ±× ¸ÞÀÎÅ×À̳ÊÀÇ ÆÇ´Ü¿¡ µû¶ó ¿äûµÈ À̸§´ë½Å ÇÒ´çµÉ ¼ö ÀÖ´Ù. µð½ºÅ© µð¹ÙÀ̽ºµé SCSI, IDE ¶Ç´Â ¹«¾ùÀ̶óµµ, ¸ðµç µð½ºÅ©´Â /dev/discs ¾Æ·¡¿¡ À§Ä¡ÇÑ´Ù.
/dev/discs/disc0 first disc /dev/discs/disc1 second disc
ÀÌµé °¢ Ç׸ñµé¸¶´Ù ±× µð¹ÙÀ̽º¿¡ ´ëÇÏ¿© µð·ºÅ丮¿¡ ½Éº¼¸¯ ¸µÅ©°¡ °É·ÁÀÖ´Ù. µð¹ÙÀ̽º µð·ºÅ丮´Â ´ÙÀ½À» Æ÷ÇÔÇÑ´Ù.
disc Àüü µð½ºÅ©¿¡ ´ëÇÏ¿© part* °¢°¢ÀÇ ÆÄƼ¼Ç¿¡ ´ëÇÏ¿©
CD-ROM Devices SCSI, IDE ¶Ç´Â ¾î¶² CD-ROMÀÌ´øÁö°£¿¡ ¸ðµç CD-ROMµéÀº /dev/cdroms °è¿­¾Æ·¡ Á¸ÀçÇÑ´Ù.:
/dev/cdroms/cdrom0 first CD-ROM /dev/cdroms/cdrom1 second CD-ROM
À̵é Ç׸ñ °¢°¢Àº ±× µð¹ÙÀ̽º¿¡ ´ëÇÑ ½ÇÁ¦ µð¹ÙÀ̽º Ç׸ñ¿¡ ´ëÇÑ ½Éº¼¸¯ ¸µÅ©ÀÌ´Ù.
Tape Devices SCSI, IDE ¸¦ ¸··ÐÇÏ°í ¸ðµç Å×ÀÙ ÀåÄ¡µéÀº /dev/tapes°è¿­¾Æ·¡¿¡ À§Ä¡ÇÑ´Ù.
/dev/tapes/tape0 first tape /dev/tapes/tape1 second tape
À̵é Ç׸ñ °¢°¢Àº ±× µð¹ÙÀ̽º¿¡ ´ëÇÑ µð·ºÅ丮ÀÇ ½Éº¼¸¯ ¸µÅ©ÀÌ´Ù.
mt for mode 0 mtl for mode 1 mtm for mode 2 mta for mode 3 mtn for mode 0, no rewind mtln for mode 1, no rewind mtmn for mode 2, no rewind mtan for mode 3, no rewind
SCSI Devices ¾î¶² SCSI µð¹ÙÀ̽º¸¦ À¯ÀÏÇÏ°Ô ÆǺ°Çϱâ À§Çؼ­´Â ´ÙÀ½ÀÇ Á¤º¸°¡ ÇÊ¿äÇÏ´Ù:
controller (host adapter) bus (SCSI channel) target (SCSI ID) unit (Logical Unit Number)
¸ðµç SCSI µð¹ÙÀ̽º´Â /dev/scsi (devfs°¡ /dev¿¡ ¸¶¿îÆ® µÇ¾ú´Ù´Â ÀüÁ¦ÇÏ¿¡) ¾Æ·¡ À§Ä¡ÇÑ´Ù. ±×·¯¹Ç·Î, ´ÙÀ½ ÆĶó¹ÌÅÍ:c=1, b=2, t=3, u=4 ¸¦ °¡Áö´Â SCSI µð¹ÙÀ̽º´Â ´ÙÀ½°ú °°ÀÌ ³ªÅ¸³¯ °ÍÀÌ´Ù.
/dev/scsi/host1/bus2/target3/lun4 device directory
ÀÌ µð·ºÅ丮 ¾È¿¡¼­ SCSI µð¹ÙÀ̽º ŸÀÙ µå¶óÀ̹ö°¡ ÀνºÅçµÈ °Í¿¡ ÀÇÁ¸ÇÏ¿© µð¹ÙÀ̽º Ç׸ñ ¹øÈ£°¡ ¸¸µé¾îÁú °ÍÀÌ´Ù.
SCSI µð½ºÅ© µå¶óÀ̹ö°¡ ¸¸µå´Â Ç׸ñÀ» ¾Ë±âÀ§Çؼ­´Â µð½ºÅ© ³×ÀÌ¹Ö Ã¼°è¿¡ ´ëÇÑ ¼½¼ÇÀ» º¸¶ó. SCSI Å×ÀÙ µå¶óÀ̹ö Ç׸ñÀÌ ¸¸µé¾îÁö´Â °Í¿¡ ´ëÇØ ¾Ë°í ½ÍÀ¸¸é Å×ÀÙ ³×ÀÌ¹Ö ÃÇ°Ô¿¡ ´ëÇÑ ¼½¼ÇÀ» º¸¶ó. SCSI CD-ROm µå¶óÀ̹ö´Â ´ÙÀ½À» ¸¸µç´Ù:
cd
SCSI generic µå¶óÀ̹ö´Â ´ÙÀ½À» ¸¸µç´Ù:
generic
IDE Devices IDE µð¹ÙÀ̽º¸¦ À¯ÀÏÇÏ°Ô ÁöÁ¤Çϱâ À§Çؼ­´Â ´ÙÀ½ÀÇ Á¤º¸°¡ ÇÊ¿äÇÏ´Ù:
controller bus (aka. primary/secondary) target (aka. master/slave) unit
¸ðµç IDE µð¹ÙÀ̽ºµéÀº /dev/ide¾Æ·¹ À§Ä¡ÇÏ°í, SCSI ¼­ºê½Ã½ºÅÛ°ú ºñ½ÁÇÑ ³×ÀÌ¹Ö Ã¼°è¸¦ »ç¿ëÇÑ´Ù.
XT Hard Discs ¸ðµç XT µð½ºÅ©µéÀº /dev/xd¾Æ·¡ À§Ä¡ÇÑ´Ù. ù¹ø° XT µð½ºÅ©´Â /dev/xd/disc0µð·ºÅ丮¸¦ °¡Áø´Ù. TTY devices tty µð¹ÙÀ̽ºµéÀº ´ÙÀ½°ú °°ÀÌ ³ªÅ¸³­´Ù.
New name Old-name Device Type --------- -------- ----------- /dev/tts/{0,1,...} /dev/ttyS{0,1,...} Serial ports /dev/cua/{0,1,...} /dev/cua{0,1,...} Call out devices /dev/vc/0 /dev/tty Current virtual console /dev/vc/{1,2,...} /dev/tty{1...63} Virtual consoles /dev/vcc/{0,1,...} /dev/vcs{1...63} Virtual consoles /dev/pty/m{0,1,...} /dev/ptyp?? PTY masters /dev/pty/s{0,1,...} /dev/ttyp?? PTY slaves
RAMDISCS RAMDISCµéÀº ±×µé ÀÚ½ÅÀÇ µð·ºÅ丮¿¡ À§Ä¡Çϸç, ´ÙÀ½°ú °°Àº À̸§À» °¡Áø´Ù:
/dev/rd/{0,1,2,...}
Meta Devices meta µð¹ÙÀ̽ºµéÀº ±×µé ÀÚ½ÅÀÇ µð·ºÅ丮¿¡ À§Ä¡Çϸç, ´ÙÀ½°ú °°´Ù:
/dev/md/{0,1,2,...}
Floppy discs Ç÷ÎÇÇ µð½ºÅ©µéÀº /dev/floppyµð·ºÅ丮¿¡ À§Ä¡ÇÑ´Ù. Loop devices Loop µð¹ÙÀ̽ºµéÀº /dev/loopµð·ºÅ丮¿¡ À§Ä¡ÇÑ´Ù. Sound devices Sound µð¹ÙÀ̽ºµéÀº /dev/soundµð·ºÅ丮¿¡ À§Ä¡ÇÑ´Ù. (audio, sequencer,...).
Devfsd ³×ÀÌ¹Ö ½ºÅ°¸¶ Devfsd´Â Ä¿³ÎÁ¦°ø ³×ÀÓ½ºÆäÀ̽º ÀÇ Æí¸®ÇÑ Ãà¾àÇüÀÎ ³×ÀÌ¹Ö ½ºÅ°¸¶¸¦ Á¦°øÇÑ´Ù. ¾î¶² °æ¿ì¿¡´Â, Ä¿³ÎÀÌ Á¦°øÇÏ´Â ³×ÀÌ¹Ö ½ºÅ°¸¶´Â ¸Å¿ì Æí¸®ÇÏ°í, µû¶ó¼­ devfsd´Â ´Ù¸¥ ³×ÀÌ¹Ö ½ºÅ°¸¶¸¦ Á¦°øÇÏÁö ¾Ê´Â´Ù. devfsd°¡ ¸¸µå´Â Æí¸®ÇÑ À̸§Àº ½ÇÁ¦·Î ¿À¸®Áö³¯ devfs Ä¿³Î ÆÐÄ¡°¡ ¸¸µå´Â À̸§°ú µ¿ÀÏÇÏ´Ù(¸®´©Áî°¡ Big Name Change¸¦ Áö½ÃÇϱâ Àü±îÁö). À̰͵éÀº "»õ·Î¿î ȣȯ ¿£Æ®¸®"·Î¼­ Âü°íµÈ´Ù. À̵é Æí¸®ÇÑ À̸§À» »ý¼ºÇϱâ À§ÇØ devfsd¸¦ ¼³Á¤Çϱâ À§ÇÏ¿©, ´ÙÀ½ÀÇ ÁÙÀÌ /etc/devfsd.conf¿¡ Ãß°¡µÇ¾î¾ß ÇÑ´Ù:
REGISTER .* MKNEWCOMPAT UNREGISTER .* RMNEWCOMPAT
ÀÌ°ÍÀº Ä¿³ÎÀÌ Á¦°øÇÏ´Â À̸§À» ÁöÁ¤Çϱâ À§ÇÏ¿© devfsd°¡ ½Éº¼¸¯ ¸µÅ©¸¦ ¸¸µé(¾ø¾Ù)µµ·Ï ÇÑ´Ù.
SCSI ÇÏµå µð½ºÅ©µé ¸ðµç SCSI µð½ºÅ©µéÀº /dev/sd¾Æ·¡¿¡ À§Ä¡ÇÑ´Ù (devfs´Â /dev¿¡ ¸¶¿îÆ®µÇ¾ú´Ù°í °¡Á¤Çϸé). ±×·¯¹Ç·Î, ´ÙÀ½ÀÇ ÆĶó¹ÌÅÍ:c=1,b=2,t=3,u=4¸¦ °¡Áö´Â SCSI µð½ºÅ©µéÀº
/dev/sd/c1b2t3u4 for the whole disc /dev/sd/c1b2t3u4p5 for the 5th partition /dev/sd/c1b2t3u4p5s6 for the 6th slice in the 5th partition
¿¡ ³ªÅ¸³­´Ù.
SCSI Tapes ¸ðµç SCSI Å×ÀÔµéÀº /dev/st¾Æ·¡ À§Ä¡ÇÑ´Ù. SCSI µð½ºÅ©µé°ú À¯»çÇÑ ³×ÀÌ¹Ö Ã¼°è°¡ »ç¿ëµÈ´Ù. ´ÙÀ½°ú °°Àº ÆĶó¹ÌÅÍ : c=1, b=2, t=3, u=4 ¸¦ °¡Áö´Â SCSI Å×ÀÙµéÀº ´ÙÀ½°ú °°ÀÌ ³ªÅ¸³­´Ù:
/dev/st/c1b2t3u4m0 for mode 0 /dev/st/c1b2t3u4m1 for mode 1 /dev/st/c1b2t3u4m2 for mode 2 /dev/st/c1b2t3u4m3 for mode 3 /dev/st/c1b2t3u4m0n for mode 0, no rewind /dev/st/c1b2t3u4m1n for mode 1, no rewind /dev/st/c1b2t3u4m2n for mode 2, no rewind /dev/st/c1b2t3u4m3n for mode 3, no rewind
SCSI CD-ROMs ¸ðµç SCSI CD-ROMµéÀº /dev/sr¾Æ·¡ À§Ä¡ÇÑ´Ù. SCSI µð½ºÅ©µé°ú ºñ½ÁÇÑ ³×ÀÌ¹Ö Ã¼°è¸¦ »ç¿ëÇÑ´Ù. ´ÙÀ½°ú °°Àº ÆĶó¹ÌÅÍ: c=1, b=2, t=3, u=4 ¸¦ °¡Áö´Â SCSI CD-ROMÀº ´ÙÀ½°ú °°ÀÌ ³ªÅ¸³­´Ù:
/dev/sr/c1b2t3u4
SCSI Generic Devices ¸ðµç SCSI CD-ROMµéÀº /dev/sg¾Æ·¡ À§Ä¡ÇÑ´Ù. SCSI µð½ºÅ©¿Í ºñ½ÁÇÑ ³×ÀÌ¹Ö Ã¼°è¸¦ »ç¿ëÇÑ´Ù. ´ÙÀ½°ú °°Àº ÆĶó¹ÌÅÍ: c=1, b=2, t=3, u=4 ¸¦ °¡Áö´Â SCSI generic µð¹ÙÀ̽º´Â ´ÙÀ½°ú °°ÀÌ ³ªÅ¸³­´Ù:
/dev/sg/c1b2t3u4
IDE Hard Discs ¸ðµç IDE µð½ºÅ©µéÀº SCSI µð½ºÅ©µé°ú ºñ½ÁÇÑ ¹æ¹ýÀ» »ç¿ëÇÏ¿©, /dev/ide/hd¾Æ·¡ À§Ä¡ÇÑ´Ù. ´ÙÀ½ÀÇ ¸ÊÇÎÀÌ »õ·Î¿î À̸§°ú ¿¹Àü À̸§ »çÀÌ¿¡ Á¸ÀçÇÑ´Ù.
/dev/hda /dev/ide/hd/c0b0t0u0 /dev/hdb /dev/ide/hd/c0b0t1u0 /dev/hdc /dev/ide/hd/c0b1t0u0 /dev/hdd /dev/ide/hd/c0b1t1u0
IDE Tapes IDE µð½ºÅ©µé°ú À¯»çÇÑ ³×ÀÌ¹Ö Ã¼°è°¡ »ç¿ëµÈ´Ù. ±× Ç׸ñÀº /dev/ide/mtµð·ºÅ丮 ¾È¿¡¼­ ³ªÅ¸³¯ °ÍÀÌ´Ù. IDE CD-ROM IDE µð½ºÅ©¿Í ºñ½ÁÇÑ ³×ÀÌ¹Ö Ã¼°è°¡ »ç¿ëµÈ´Ù. °¢ Ç׸ñÀº /dev/ide/cdµð·ºÅ丮 ¾È¿¡¼­ ³ªÅ¸³¯ °ÍÀÌ´Ù. IDE Floppies IDE µð½ºÅ©¿Í ºñ½ÁÇÑ ³×ÀÌ¹Ö Ã¼°è¸¦ »ç¿ëÇÑ´Ù. °¢ Ç׸ñÀº /dev/ide/fdµð·ºÅ丮 ¾È¿¡¼­ ³ªÅ¸³¯ °ÍÀÌ´Ù. XT Hard Discs ¸ðµç XT µð½ºÅ©µéÀº /dev/xd¾Æ·¡¿¡ À§Ä¡ÇÑ´Ù. ù¹ø° XT µð½ºÅ©´Â /dev/xd/c0t0ó·³ ³ªÅ¸³¯ °ÍÀÌ´Ù.
¿¾ ¹æ½ÄÀÇ È£È¯ À̸§ ¿¡ÀüÀÇ È£È¯À̸§µéÀº /dev/hda, /dev/sda, /dev/rtc µîµîÀÇ ¿¹ÀüºÎÅÍ À¯ÁöµÇ¾î¿Â µð¹ÙÀ̽º À̸§À» »ç¿ëÇÑ´Ù. Devfsd´Â ¿À·¡µÈ À̸§À» °è¼Ó »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ȣȯ ½É¸µÅ©¸¦ »ý¼ºÇϵµ·Ï ¼³Á¤ÆÄÀÏ¿¡ ¼³Á¤µÉ ¼ö ÀÖ°í, µû¶ó¼­ ¿À·¡µÈ ÀÀ¿ëÇÁ·Î±×·¥µéÀº °è¼ÓÇÏ¿© Àß ÀÛµ¿ÇÏ°Ô µÉ °ÍÀÌ´Ù. devfsd°¡ ÀÌ·± ¿¹ÀüÀÇ À̸§À» »ý¼ºÇϵµ·Ï ¼³Á¤Çϱâ À§Çؼ­ ´ÙÀ½ÀÇ ÁÙÀÌ /etc/devfsd.conf¿¡ Ãß°¡µÇ¾î¾ß ÇÑ´Ù
REGISTER .* MKOLDCOMPAT UNREGISTER .* RMOLDCOMPAT
ÀÌ°ÍÀº devfsd°¡ Ä¿³ÎÀÌ Á¦°øÇÏ´Â À̸§À» ÁöÁ¤Çϵµ·Ï ÇÏ´Â ½Éº¼¸¯ ¸µÅ©¸¦ ¸¸µé(¾ø¾Ö)µµ·Ï ÇÑ´Ù.
SCSI È£½ºÆ® Ž»ö°ú °ü·ÃµÈ ¹®Á¦ Devfs´Â SCSI È£½ºÆ® ¹øÈ£¿¡ ´ëÇØ ±âÃÊÇÑ SCSI µð½ºÅ©¸¦ ½Äº°Çϵµ·Ï Çã¿ëÇÑ´Ù. ¸¸¾à ´ç½ÅÀÇ ÄÄÇ»ÅÍ¿¡ ¿ÀÁ÷ ÇϳªÀÇ SCSI È£½ºÆ®(card)°¡ ÀÖ´Ù¸é, È£½ºÆ® ¹øÈ£´Â 0À» ¹Þ°Ô µÉ °ÍÀÌ´Ù. ´ç½ÅÀÌ ¿©·¯°³ÀÇ SCSI È£½ºÆ®¸¦ °¡Áö°í ÀÖ´Ù¸é ±×´ÙÁö ½±Áö ¾Ê´Ù. ºÒÇàÇÏ°Ôµµ, ¶§¶§·Î SCSI È£½ºÆ®ÀÇ ¹øÈ£¸¦ ¾ò±â ¿øÇÏ´Â °ÍÀ» ÃßÃøÇϴµ¥ ¾î·Á¿òÀÌ ÀÖÀ» ¼ö ÀÖ´Ù. ÀÌ°ÍÀ» ½±°Ô Çϱâ À§Çؼ­, "scsihosts"¶ó ºÒ¸®´Â Ä¿³Î ºÎÆ® ÆĶó¹ÌÅÍ°¡ ÀÖ´Ù. ÀÌ°ÍÀº SCSI È£½ºÆ®µéÀÇ ´Ù¸¥ ŸÀÔ¿¡ ´ëÇØ ¼ø¼­¸¦ °áÁ¤Çϵµ·Ï ÇØÁØ´Ù. ÀÌ ÆĶó¹ÌÅÍÀÇ ¹®¹ýÀº:
scsihosts=<name_1>:<name_2>:<name_3>:...:<name_n>
ÀÌ´Ù. ¿©±â¼­ <name_1>,<name_2>,...,<name_n> µéÀº /proc ÆÄÀϽýºÅÛ¿¡¼­ »ç¿ëµÈ µå¶óÀ̹öµéÀÇ À̸§µéÀÌ´Ù. ¿¹¸¦ µé¾î:
scsihosts=aha1542:ppa:aha1542::ncr53c7xx
´Â
- ù¹ø° aha1542 ÄÁÆ®·Ñ·¯ - /dev/scsi/host0/bus#/target#/lun# ÀÏ °ÍÀÌ´Ù. - ù¹ø° º´·ÄÆ÷Æ® ZIP - /dev/scsi/host1/bus#/target#/lun# ÀÏ °ÍÀÌ´Ù. - µÎ¹ø° aha1542 ÄÁÆ®·Ñ·¯ - /dev/scsi/host2/bus#/target#/lun# ÀÏ °ÍÀÌ´Ù. - ù¹ø° NCR53C7xx ÄÁÆ®·Ñ·¯ - /dev/scsi/host4/bus#/target#/lun# ÀÏ °ÍÀÌ´Ù. - ³ª¸ÓÁö ÄÁÆ®·Ñ·¯ - /dev/scsi/host5/bus#/target#/lun#, /dev/scsi/host6/bus#/target#/lun# µîµî ÀÏ °ÍÀÌ´Ù. - ¸¸¾à À§ÀÇ ¾î¶² ÄÁÆ®·Ñ·¯µµ ¹ß°ßµÇÁö ¾Ê¾Ò´Ù¸é - ±× ¿¹¾àµÈ À̸§µéÀÌ ´Ù¸¥ µð¹ÙÀ̽º¿¡ ÀÇÇØ »ç¿ëµÇÁö ¾Ê´Â´Ù´Â °ÍÀÌ´Ù. - /dev/scsi/host3/bus#/target#/lun# ´Â Àý´ë·Î »ç¿ëµÇÁö ¾Ê´Â´Ù.
¿¡ ¿¬°áµÈ µð¹ÙÀ̽º¸¦ ÀǹÌÇÑ´Ù. ¿øÇÑ´Ù¸é ºÐ¸®ÀÚ·Î ':' ´ë½Å¿¡ ','¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ³ª´Â ¿©±â¼­ devfsd ³×ÀÌ¹Ö ½ºÅ°¸¶ ¸¦ »ç¿ëÇÑ´Ù.
¸¸¾à °°Àº ŸÀÔÀ¸·Î ¿©·¯°³ÀÇ Ä«µå(NCR53c8xx¿Í °°Àº)¸¦ °¡Áö°í ÀÖ´Ù¸é, ÀÌ ½ºÅ°¸¶°¡ SCSI È£½ºÆ®¸¦ ÁöÁ¤ÇÏÁö´Â ¸øÇÑ´Ù. ÀÌ·± °æ¿ì¿¡ ´ç½ÅÀº ÀÌ°ÍÀ» Á¦¾îÇϱâ À§Çؼ­ µå¶óÀ̹ö¸¦ ÁöÁ¤ÇÏ´Â ºÎÆ® ÆĶó¹ÌÅ͸¦ »ç¿ëÇÒ ÇÊ¿ä°¡ ÀÖ´Ù.
ÇöÀç Æ÷ÆÃµÈ µð¹ÙÀ̽º µå¶óÀ̹öµé ¸ðµç miscellaneous ij¸¯ÅÍ µð¹ÙÀ̽ºµéÀº devfs¸¦ Áö¿øÇÑ´Ù (ÀÌ°ÍÀº misc_register()¸¦ ÅëÇÏ¿© Åõ¸íÇÏ°Ô ÀÌ·ç¾î Áø´Ù) SCSI µð½ºÅ©¿Í ÀÏ¹Ý ÇÏµå µð½ºÅ©µé ij¸¯ÅÍ ¸Þ¸ð¸® µð¹ÙÀ̽ºµé(null, zero, full, ±âŸµîµî) -- C. Scott Ananian <cananian (at) alumni.princeton.edu>¿¡°Ô °¨»çÇÏ´Ù. ·çÇÁ µð¹ÙÀ̽ºµé(/dev/loop?) TTY µð¹ÙÀ̽ºµé (ÄܼÖ, ½Ã¸®¾ó Æ÷Æ®, Å͹̳ΰú pseudo Å͹̳εé) -- C. Scott Ananian <cananian (at) alumni.princeton.edu> ¿¡ °¨»çÇÑ´Ù. SCSI Å×ÀÔÀåÄ¡(/dev/scsi ¿Í /dev/tapes) SCSI CD-ROM(/dev/scsi¿Í /dev/cdroms) SCSI ÀÏ¹Ý µð¹ÙÀ̽ºµé(/dev/scsi) RAMDISCS (/dev/ram?) ¸ÞŸ µð¹ÙÀ̽ºµé (/dev/md*) º´·ÄÆ÷Æ® ÇÁ¸°ÅÍ (/dev/printers) »ç¿îµå µð¹ÙÀ̽º (/dev/sound) -- C. Scott Ananian <cananian (at) alumni.princeton.edu> ¿Í Eric Dumas <dumas (at) linux.eu.org> ¿¡°Ô °¨»çÇÑ´Ù. Á¶À̽ºÆ½(/dev/joysticks) Sparc Å°º¸µå (/dev/kbd) DSP56001 µðºñÅÐ ½Ã±×³Î ÇÁ·Î¼¼¼­ (/dev/dsp56k) ¾ÖÇà µ¥½ºÅ©Å¾ ¹ö½º (/dev/adb) Coda ³×Æ®¿÷ ÆÄÀϽýºÅÛ (/dev/cfs*) ¹öÃò¾ó ÄÜ¼Ö Ä¸ÃÄ µð¹ÙÀ̽º (/dev/vcc) -- Dennis Hou <smilax (at) mindmeld.yi.org> ¿¡ °¨»çÇÑ´Ù. ÇÁ·¹ÀÓ ¹öÆÛ µð¹ÙÀ̽º (/dev/fb) ºñµð¿À ĸÃÄ µð¹ÙÀ̽º (/dev/v41) µð¹ÙÀ̽º ¹øÈ£ÀÇ ÇÒ´ç Devfs´Â Ä¿³Î ³»ºÎÀÇ ¿ÀÆÛ·¹À̼ǿ¡ ´ëÇØ µð¹ÙÀ̽º ¹øÈ£(¸ÞÀÌÀú&¸¶ÀÌ³Ê ¹øÈ£) ¸¦ ÇÒ´çÇÒ ÇÊ¿ä°¡ ¾ø´Â µå¶óÀ̹öµéÀ» ÀÛ¼ºÇÒ ¼ö ÀÖµµ·Ï Çã¿ëÇÑ´Ù. ±×·¯³ª, µð¹ÙÀ̽º¿¡ ´ëÇØ À¯ÀÏÇÏ°Ô Á¶Á¤°¡´ÉÇÑ °ÍÀ¸·Î½á ±× µð¹ÙÀ̽º¸¦ »ç¿ëÇÏ´Â »ç¿ëÀÚ °ø°£ ÇÁ·Î±×·¥µéÀÇ ¹øÈ£°¡ ÀÖ´Ù. ±× Áß¿¡ ÇÑ ¿¹°¡ inode°¡ ´Ù¸¥ inode¿Í ´Ù¸¥ ÆÄÀϽýºÅÛ¿¡ ÀÖ´ÂÁö ±¸ºÐÇϱâ À§ÇÏ¿© ´ÙºñÀ̽º ¹øÈ£¸¦ »ç¿ëÇÏ´Â find ÇÁ·Î±×·¥ÀÌ´Ù. ±× »ç¿ëµÈ µð¹ÙÀ̽º ¹øÈ£´Â ÆÄÀϽýºÅÛÀÌ »ç¿ëÇÏ°í ÀÖ´Â ºí·° µð¹ÙÀ̽º¸¦ À§ÇÑ °ÍÀÌ´Ù. »ç¿ëÀÚ °ø°£ ÇÁ·Î±×·¥µé°ú ȣȯ¼ºÀ»À¯ÁöÇϱâ À§ÇÏ¿© devfs¸¦ »ç¿ëÇÏ´Â ºí·° µð¹ÙÀ̽ºµéÀº À¯ÀÏÇÑ µð¹ÙÀ̽º ¹øÈ£¸¦ ÇÒ´ç¹ÞÀ» ÇÊ¿ä°¡ ÀÖ´Ù. ¶ÇÇÑ, POSIX´Â µð¹ÙÀ̽º ¹øÈ£µéÀ» ¸í½ÃÇÏ°í µð¹ÙÀ̽º ¹øÈ£Áß ÀϺκÐÀº »ç¿ëÀÚ °ø°£¿¡ º¸¿©ÁÙ ÇÊ¿ä°¡ ÀÖ´Ù. °¡Àå °£´ÜÇÑ ¿É¼Ç(ƯÈ÷ devfs¿¡ Æ÷ÆÃµÈ µå¶óÀ̹öÀ϶§)Àº ¿¹ÀüÀÇ ¸ÞÀÌÀú/¸¶ÀÌ³Ê ¹øÈ£µéÀ» °è¼Ó »ç¿ëÇÏ´Â °ÍÀÌ´Ù. Devfs´Â ¸ÞÀÌÀú&¸¶ÀÌ³Ê ¹øÈ£¿¡ ÁÖ¾îÁø °ªÀÌ ¹«¾ùÀÌ´ø°£¿¡ »ç¿ëÀÚ °ø°£¿¡ º¸³¾ °ÍÀÌ´Ù. ´Ù¸¥ ¹æ¹ýÀ¸·Î´Â, devfs°¡ À¯ÀÏÇÑ µð¹ÙÀ̽º ¹øÈ£¸¦ ¼±ÅÃÇϵµ·Ï ÇÒ ¼ö ÀÖ´Ù. devfs_register¸¦ »ç¿ëÇÏ¿© ij¸¯Åͳª ºí·° µð¹ÙÀ̽º¸¦ µî·ÏÇÏ¿´À»¶§, ÀÚµ¿ÀûÀ¸·Î °íÀ¯ÇÑ µð¹ÙÀ̽º ¹øÈ£¸¦ ÇÏ´çÇÏ´Â(±× ÇÒ´çÀº ij¸¯ÅÍ¿Í ºí·°µð¹ÙÀ̽º¸¦ ±¸ºÐÇÑ´Ù) DEVFS_FL_AUTO_DEVNUM Ç÷¡±×¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ µð¹ÙÀ̽º ¹øÈ£´Â 16 bit ¹øÈ£À̸ç, µû¶ó¼­ ¸¹Àº ¼öÀÇ µð½ºÅ©¿Í ÆÄƼ¼Ç¿¡ ´ëÇØ ÃæºÐÇÑ °ø°£À» ¸¶·ÃÇØÁØ´Ù. ÀÌ ½ºÅ°¸¶´Â ¶ÇÇÑ ÇöÀç 256 pseudo-ttys ·Î Á¦ÇѵÈ(ÀÌ Á¦ÇÑÀº xterms °ú ¿ø°Ý ·Î±äÀÇ ÃÑ µ¿½Ã Á¢¼ÓÀÚ ¼öÀÌ´Ù) tty µð¹ÙÀ̽ºµé°ú °°Àº ij¸¯ÅÍ µð¹ÙÀ̽º¿¡µµ Àû¿ëµÈ´Ù. µð¹ÙÀ̽º ¹øÈ£´Â ÇöÁ¸ÇÏ´Â °ø½ÄÀûÀÎ ÇÒ´ç°úÀÇ °¡´ÉÇÑ Ãæµ¹À» ÇÇÇϱâ À§ÇÏ¿© 36864-61439(¸ÞÀÌÀú 144-239) ÀÇ ¹üÀ§·Î Á¦ÇѵǾî ÀÖ´Ù´Â °ÍÀ» ¸í½ÉÇ϶ó. µ¿ÀûÀ¸·Î ÇÒ´çµÈ ºí·° µð¹ÙÀ̽º ¹øÈ£µéÀº ¿ø°Ý ¸¶¿îÆ®ÀÇ È°¼º ½Ã°£µ¿¾È °è¼ÓÇؼ­ ÁÖ¾îÁö´Â µð¹ÙÀ̽º¿¡ ´ëÇØ dev_t ¸¦ ±â´Ù¸®´Â NFS µ¥¸ó°ú´Â ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù (»ç¿ëÀÚ¿Í Ä¿³Î ¸ðµå ´Ù) ´Â °ÍÀ» ¸í½ÉÇ϶ó. ÀÌ ½ºÅ°¸¶¿¡¼­ ¸¶Áö¸·À¸·Î ¸í½ÉÇÒ °ÍÀº : ÀÌ°ÍÀÌ µð¹ÙÀ̽º ¹øÈ£ÀÇ Å©±â¸¦ Áõ°¡½ÃÅ°Áö ¾Ê±â ¶§¹®¿¡ »ç¿ëÀÚ °ø°£¿¡¼­ÀÇ È£È¯°ú´Â ¹®Á¦°¡ ¾ø´Ù ´Â °ÍÀÌ´Ù. Áú¹®°ú ´äº¯ Making things work ¿©±â¿¡´Â Åë»óÀûÀÎ Áú¹®°ú ´äº¯ÀÌ ÀÖ´Ù. Devfsd°¡ ¸ðµç Æ۹̼ÇÀ» °ü¸®ÇÏÁö ¾Ê´Â´Ù ´ç½ÅÀÌ Àû´çÇÑ À̺¥Æ®¸¦ ĸÃÄÇÏ°í ÀÖ´ÂÁö È®ÀÎÇ϶ó. ¿¹¸¦ µé¾î,Ä¿³ÎÀÌ ¸¸µç µð¹ÙÀ̽º ¿£Æ®¸®´Â REGISTER À̺¥Æ®¸¦ ¹ß»ý½ÃÅ°Áö¸¸, devfsd°¡ »ý¼ºÇÑ °ÍµéÀº CREATEÀ̺¥Æ®¸¦ ¹ß»ýÇÑ´Ù. Devfsd ´Â ¸ðµç REGISTERÀ̺¥Æ®¸¦ ĸÃÄÇÏÁö ¾Ê´Â´Ù. ¾ÕÀÇ Ç׸ñÀ» º¸¶ó : ´ç½ÅÀº CREATEÀ̺¥Æ®¸¦ ĸÃÄÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. X°¡ ½ÃÀÛÇÏÁö ¾Ê´Â´Ù. À§¿¡ ¾à¼úµÈ ¸ðµç ´Ü°è¸¦ µû¶óÇß´ÂÁö È®ÀÎÇغ¸¶ó. ¿Ö ³×Æ®¿öÅ© µð¹ÙÀ̽º°¡ devfs¿¡ ³ªÅ¸³ªÁö ¾Ê´Â°¡? ÀÌ°ÍÀº ¹ö±×°¡ ¾Æ´Ï´Ù. ³×Æ®¿÷ µð¹ÙÀ̽º´Â ³×ÀÓ½ºÆäÀ̽º¿Í´Â ¿ÏÀüÈ÷ ºÐ¸®µÇ¾î ÀÖ´Ù. ±×°ÍµéÀº socket(2)¿Í setsockopt(2)¿¡ ÀÇÇØ Á¢±ÙµÇ°í, µû¶ó¼­ µð¹ÙÀ̽º ³ëµå°¡ ÇÊ¿ä¾ø´Ù. ³ª´Â ³×Æ®¿÷ µð¹ÙÀ̽º¸¦ µð¹ÙÀ̽º ³×ÀÓ½ºÆäÀ̽º¿¡ ¿Å±æ °ÍÀ» Á¦¾ÈÇÏ¿´Áö¸¸, ¾Æ¹«·± ÀÀ´äÀ» ¹ÞÁö ¸øÇß´Ù. Ä¿³Î¿¡ devfs°¡ ÄÄÆÄÀϵǾî ÀÖ´ÂÁö È®ÀÎÇÏ´Â ¹æ¹ýÀº ¹«¾ùÀΰ¡? Ä¿³Î¿¡ ³»ÀåµÇ¾î Àְųª ÇöÀç ·ÎµùµÇ¾î ÀÖ´Â ¸ðµç ÆÄÀϽýºÅÛµéÀº /proc/filesystems¿¡ ³ªÅ¸³­´Ù. ¸¸¾à devfs ¿£Æ®¸®°¡ º¸Àδٸé, devfs°¡ ÄÄÆÄÀϵǾî ÀÖ´Â Ä¿³ÎÀ̶ó´Â °ÍÀ» ¾Ë¼ö ÀÖ´Ù. ¸¸¾à Á¤È®ÇÏ°Ô ¼³Á¤ÇÏ°í Ä¿³ÎÀ» ÀçÄÄÆÄÀÏ ÇÑ´Ù¸é, devfs´Â ³»ÀåµÇ¾î ÀÖÀ» °ÍÀÌ´Ù. »ý°¢Çϱ⿡ Á¦´ë·Î ¼³Á¤ÇßÀ½¿¡µµ /proc/filesystems¿¡ ³ªÅ¸³ªÁö ¾Ê´Â´Ù¸é, ´ç½ÅÀÌ ½Ç¼ö¸¦ ÇÑ °ÍÀÌ´Ù. ÀϹÝÀûÀÎ ½Ç¼ö´Â: devfs ÆÐÄ¡¸¦ Àû¿ëÇÏÁö ¾ÊÀº 2.2.x Ä¿³ÎÀ» »ç¿ëÁßÀÌ´Ù(¸¸¾à Ä¿³ÎÀ» ÆÐÄ¡ÇÏ´Â ¹æ¹ýÀ» ¸ð¸¥´Ù¸é, ´ë½Å¿¡ 2.4.x¸¦ »ç¿ëÇÏ°í, ³ª¿¡°Ô ÆÐÄ¡ÇÏ´Â ¹ýÀ» Áú¹®Çؼ­ ¼º°¡½Ã°Ô ÇÏÁö ¸»¶ó) CONFIG_EXPERIMENTAL=y ·Î ¼³Á¤ÇÏ´Â °ÍÀ» Àؾú´Ù. CONFIG_DEVFS_FS=y·Î ¼³Á¤ÇÏ´Â °ÍÀ» Àؾú´Ù. CONFIG_DEVFS_MOUNT=y·Î ¼³Á¤ÇÏ´Â °ÍÀ» Àؾú´Ù. (¸¸¾à ºÎÆýà devfs°¡ ÀÚµ¿À¸·Î ¸¶¿îÆ® µÇ±â¸¦ ¿øÇÑ´Ù¸é) make config ³ª make xconfig ´ë½Å¿¡ .config ¸¦ Á÷Á¢ ¼öÁ¤Ç϶ó. ¼³Á¤À» º¯°æÇÏ°í ÄÄÆÄÀÏÇϱâ Àü¿¡ make dep; make cleanÇÏ´Â °ÍÀ» Àؾú´Ù. Ä¿³Î°ú ¸ðµâÀ» ÄÄÆÄÀÏ ÇÏ´Â °ÍÀ» Àؾú´Ù. Ä¿³ÎÀ» ¼³Ä¡ÇÏ´Â °ÍÀ» Àؾú´Ù. ¸ðµâÀ» ¼³Ä¡ÇÏ´Â °ÍÀ» Àؾú´Ù Á¦¹ß ¹ö±× ¸®Æ÷Æ®¸¦ º¸³»±â Àü¿¡ À§ÀÇ ¸ðµç ´Ü°è¸¦ ¼öÇàÇÏ¿´´ÂÁö µÎ¹ø¾¿ üũÇϵµ·Ï Ç϶ó. devfs°¡ /dev¿¡ ¸¶¿îÆ®µÇ¾ú´ÂÁö ¾î¶»°Ô È®ÀÎÇÏÁÒ? µð¹ÙÀ̽º ÆÄÀϽýºÅÛÀº µ¥¸ó°ú Åë½ÅÇϱâ À§ÇØ »ç¿ëµÇ´Â ".devfsd" ¶ó ºÒ¸®´Â Ç׸ñÀ» Ç×»ó »ý¼ºÇÑ´Ù. µ¥¸óÀÌ ½ÇÇàÁßÀÌ ¾Æ´Ï¶ó ÇÒÁö¶óµµ, ±× Ç׸ñÀº Á¸ÀçÇÑ´Ù. ÀÌ Ç׸ñÀÇ Á¸Àç¿¡ ´ëÇØ È®ÀÎÇÏ´Â °ÍÀº devfs°¡ ¸¶¿îÆ® µÇ¾ú´ÂÁö ¾Æ´ÑÁö °áÁ¤ÇÏ´Â ÁÁÀº ¹æ¹ýÀÌ´Ù. Ç׸ñÀÇ ÇüÅÂ(i.e. ÀϹÝÀûÀÎ ÆÄÀÏ, ij¸¯ÅÍ µð¹ÙÀ̽º, named pipe, µîµî)Àº »çÀüÁÖÀÇ ¾øÀÌ ¹Ù²ð¼öµµ ÀÖ´Ù. ¿ÀÁ÷ ±× Ç׸ñ(.devfsd:¿ªÀÚ ÁÖ)ÀÇ Á¸À縸ÀÌ ¹ÏÀ»¸¸ÇÑ °ÍÀÌ´Ù devfsÀÇ ´ë¾È ³ª´Â ¸ðµç devfs¸¦ ¹Ý´ëÇÑ Á¦¾Èµé°ú ´ëÁ¶ÇØ º¸¾Ò°í, ±×°ÍµéÀÇ ÇѰ踦 ¼³¸íÇß´Ù. ÁغñÁßÀÔ´Ï´Ù. ¿Ö µ¥¸ó¿¡¼­ create/remove À̺¥Æ®¸¦ º¸³»Áö ¾Ê´Â°¡? ¿©±â¿¡¼­ ±×·¯ÇÑ Á¦¾ÈÀº µð¹ÙÀ̽ºµéÀÌ create/remove À̺¥Æ®µéÀ» µî·ÏÇÒ ¼ö ÀÖ°í, µ¥¸óÀº ±× À̺¥Æ®µéÀ» µéÀ» ¼ö ÀÖ´Â Ä¿³ÎÀÇ API¸¦ °³¹ßÇÏÀÚ´Â °ÍÀÌ´Ù. ±× µ¥¸óÀº (µð½ºÅ©»óÀÇ ÇѺκÐÀÎ)/dev¸¦ »ý¼º/ÇØÁ¦ ÇÒ °ÍÀÌ´Ù. ÀÌ°ÍÀº ¿©·¯°¡Áö Á¦ÇÑÀ» °¡Áö°í ÀÖ´Ù: ±×°ÍÀº ¿ÀÁ÷ Ä¿³ÎÀÌ ºÎÆÃÀ» ³¡³½ÈÄ¿¡ ¸ðµâÀ» ¿Ã¸®°Å³ª Á¦°ÅÇÏ´Â (¶Ç´Â µð¹ÙÀ̽º¸¦ Ãß°¡Çϰųª Á¦°ÅÇÏ´Â) °Í¿¡ ´ëÇÑ ÀÛ¾÷ÀÌ´Ù. À̺¥Æ®ÀÇ µ¥ÀÌÅͺ£À̽º ¾øÀÌ´Â µ¥¸óÀÌ ¿ÏÀüÇÑ /dev¸¦ ¸¸µé ¼ö ÀÖ´Â ¹æ¹ýÀº ¾ø´Ù. ¸¸¾à ÀÌ ½ºÅ°¸¶¿¡ ´ëÇÑ µ¥ÀÌÅͺ£À̽º¸¦ Ãß°¡ÇÑ´Ù¸é, ¹®Á¦Á¡Àº »ç¿ëÀÚ °ø°£¿¡¼­ ±× µ¥ÀÌÅͺ£À̽º¸¦ º¸¿©ÁÖ´Â ¹æ¹ýÀÌ´Ù. ¸¸¾à µ¥¸ó¿¡¼­ ÆÄÀÌÇÁ¸¦ ÅëÇØ Åë°úµÇ´Â À̺¥Æ® ÄÚµåµéÀÇ ¹®ÀÚ¿­ ¸®½ºÆ®¸¦ ¸¸µç´Ù¸é, ¿ÀÁ÷ µ¥¸ó¸¸ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ³ª´Â ÀÌ µ¥ÀÌÅ͸¦ º¸¿©ÁÖ±â À§ÇÑ À忬ÀûÀº ¹æ¹ýÀ¸·Î devfs¿Í °°Àº ÆÄÀϽýºÅÛ ºñ½ÁÇÑ °ÍÀ» ¼³¸íÇÒ °ÍÀÌ´Ù. ÆÄÀϽýºÅÛÀ¸·Î½á ±× µ¥ÀÌÅ͸¦ º¸¿©ÁÖ´Â °ÍÀº »ç¿ëÀÚ°¡ »ç¿ë°¡´ÉÇÑ °ÍÀ» ¾Ë¾Æº¸±â ½±°Ô ÇÏ°í ¶ÇÇÑ ±× "µ¥ÀÌÅͺ£À̽º"¸¦ Ž»öÇϱ⠽±µµ·Ï ÇÏ´Â ½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇϱ⠽±°Ô ÇÑ´Ù. µð¹ÙÀ̽º ³ëµå¿Í µå¶óÀ̹ö »çÀÌÀÇ ºýºýÇÑ ¹ÙÀεùÀÌ ´õ ÀÌ»ó °¡´ÉÇÏÁö ¾Ê´Ù. (requiring the otherwise perfectly avoidable Å×ÀÌºí °Ë»ö) /dev¿¡¼­ ¸ðµâÀÇ ÀÚµ¿·ÎµùÀº »ý¼ºµÈ µð¹ÙÀ̽º ³ëµå¸¦ ÇÊ¿ä·Î Çϱ⿡ inode Ž»ö À̺¥Æ®¸¦ ÀâÀ» ¼ö ¾ø´Ù. ÀÌ°ÍÀº Ä¿´Ù¶õ ¼ÂÀ¸·ÎºÎÅÍ »ý¼ºµÈ ¸Å¿ì ÀûÀº¼öÀÇ inodeµéÀÇ µå¶óÀ̹ö¿¡ ´ëÇÑ ¹®Á¦ÀÌ´Ù. ÀÌ ±â¹ýÀº root ÆÄÀϽýºÅÛÀÌ Àбâ Àü¿ëÀ¸·Î ¸¶¿îÆ® µÇ¾úÀ»¶§´Â »ç¿ëÇÒ ¼ö ¾ø´Ù. scsidev¿¡ ´ëÇÑ ´õ ³ªÀº ±¸Çö ÀÌ Á¦¾ÈÀº scsidev ÇÁ·Î±×·¥À» Æ÷ÇÔ½ÃÄѼ­ ±×°ÍÀ» SCSI µð¹ÙÀ̽º »Ó¸¸ ¾Æ´Ï¶ó, ¸ðµç µð¹ÙÀ̽º¸¦ Ž»öÇϴµ¥¿¡µµ È®ÀåÇÏÀÚ´Â °ÍÀÌ´Ù. scsidev ÇÁ·Î±×·¥Àº /proc/scsi ¸¦ Ž»öÇÏ´Â ¹æ¹ýÀ¸·Î ÀÛµ¿ÇÑ´Ù. ¹®Á¦Á¡: Ä¿³ÎÀº ÇöÀç »ç¿ë°¡´ÉÇÑ ¸ðµç µð¹ÙÀ̽ºµéÀÇ ¸ñ·ÏÀ» Á¦°øÇÏÁö ¾Ê´Â´Ù. ¸ðµç µå¶óÀ̺êµéÀÌ Ä¿³Î ¸Þ¼¼Áö¸¦ »ý¼ºÇϰųª /proc¿¡ ¿£Æ®¸®¸¦ µî·ÏÇÏÁö´Â ¾Ê´Â´Ù. devfs API¿Í´Â ´Ù¸£°Ô µð¹ÙÀ̽º¸¦ µî·Ï½ÃÅ°´Â ÀÏÁ¤ÇÑ ¸ÞÄ¿´ÏÁòÀÌ ¾ø´Ù. ±×¿Í °°Àº API¸¦ ±¸ÇöÇÏ´Â °ÍÀº À§ÀÇ Á¦¾È°ú °°´Ù. ·¥ µð½ºÅ©¿¡ /dev¸¦ ³Ö´Â °Í ÀÌ Á¦¾ÈÀº ·¥µð½ºÅ©¸¦ »ý¼ºÇÏ°í µð¹ÙÀ̽º ³ëµåµéÀ» °Å±â¿¡ µÐ ÈÄ /dev¿¡ ±×°ÍÀ» ¸¶¿îÆ® ÇÏÀÚ´Â °ÍÀÌ´Ù. ¹®Á¦Á¡: ÀÌ°ÍÀº ·çÆ® ÆÄÀϽýºÅÛÀ» ¸¶¿îÆ® Çϱâ À§Çؼ­´Â ¿©ÀüÈ÷ µð¹ÙÀ̽º ³ëµå°¡ ÇÊ¿äÇϹǷΠ·çÆ® ÆÄÀϽýºÅÛÀ» ¸¶¿îÆ® ÇÒ¶§´Â µµ¿òÀÌ µÇÁö ¸øÇÑ´Ù. ¸¸¾à ·çÆ® µð¹ÙÀ̽º ³ëµå¿¡µµ ÀÌ ±â¹ýÀ» »ç¿ëÇϱ⠿øÇÑ´Ù¸é, initrd¸¦ »ç¿ëÇÏ¿©¾ß ÇÑ´Ù. ÀÌ°ÍÀº ºÎÆà °úÁ¤À» º¹ÀâÇÏ°Ô ÇÏ°í, °ü¸®ÀÚ¿Í ¼³Á¤ÇÏ´Â °ÍÀ» ´õ ¾î·Æ°Ô ÇÑ´Ù. initrd ´Â ½¬¿î ½Ã½ºÅÛ °ü¸®¸¦ ¾Ñ¾Æ°¨À¸·Î½á º»ÁúÀûÀ¸·Î ºÒÅõ¸íÇÏ´Ù. Á¤È®ÇÏ°Ô ·¥µð½ºÅ©¸¦ À§Ä¡½ÃÅ°±â À§ÇÑ Á¤º¸°¡ ºÒÃæºÐÇÏ´Ù. ±×·¡¼­ ¿ì¸®´Â ±× ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ­ À§ÀÇ Á¦¾ÈÀ¸·Î µ¹¾Æ°£´Ù. ramdisc-based ÇØ°áÃ¥Àº °¢ Ç׸ñ¸¶´Ù ÀÏ¹Ý VFS inode¿Í dentry ¿¡ ´ëÇؼ­ 284 ¹ÙÀÌÆ®¿Í 112 ¹ÙÀÌÆ®ÀÇ ±âº»ÀûÀÎ ÀúÀå°ø°£ÀÌ ÇÊ¿äÇϹǷÎ, ´õ ¸¹Àº Ä¿³Î ¸Þ¸ð¸®°¡ ÇÊ¿äÇÏ´Ù. devfs°¡ 72 ¹ÙÀÌÆ®¸¦ ¿ä±¸ÇÏ´Â °Í°ú ºñ±³Çغ¸¶ó. ¾Æ¹«°Íµµ ÇÏÁö ¾Ê´Â´Ù: ¾Æ¹«·± ¹®Á¦°¡ ¾ø´Ù ¶§¶§·Î »ç¶÷µéÀº ÇöÀçÀÇ ½ºÅ°¸¶°¡ ÁÁ´Ù¶ó´Â ÁÖÀåÀ» µè°ï ÇÑ´Ù. ÀÌ°ÍÀº ±×µéÀÌ ¹«½ÃÇÏ´Â °Í¿¡ ´ëÇÑ °ÍÀÌ´Ù. µð¹ÙÀ̽º ¹øÈ£ÀÇ Å©±â(¸ÞÀÌÀú/¸¶ÀÌ³Ê ¹øÈ£ ´ç 8ºñÆ®)Àº ½ÇÁ¦ Á¦ÇÑ»çÇ×ÀÌ°í, ¾î¶² ¹æ½ÄÀ¸·Î´ø ¼öÁ¤µÇ¾î¾ß¸¸ ÇÑ´Ù. ¿¹¸¦ µé¾î Å« SCSI µð¹ÙÀ̽º ¹øÈ£¸¦ °¡Áö´Â ½Ã½ºÅÛ¿¡¼­´Â ÇÒ´çµÇÁö ¾ÊÀº ¸ÞÀÌÀú ¹øÈ£µéÀ» °è¼Ó »ç¿ëÇÒ °ÍÀÌ´Ù. USB´Â 8ºñÆ®ÀÇ ¸¶ÀÌ³Ê ¹øÈ£ Á¦ÇÑÀ» ³ÑÀ» ÇÊ¿ä°¡ ÀÖ´Ù. ´Ü¼øÈ÷ µð¹ÙÀ̽º ¹øÈ£¸¦ Áõ°¡½ÃÅ°´Â °Í¸¸À¸·Î´Â ºÒÃæºÐÇÏ´Ù. ¸¹Àº ³ë·ÂÀ» ÇÊ¿ä·Î ÇÏ´Â °Í°ú´Â ´Þ¸®, ¼öõ°³ ÀÌ»óÀÇ µð¹ÙÀ̽º ³ëµå¸¦ °¡Áö´Â /dev ¸¦ °ü¸®ÇÏ´Â ¹®Á¦¸¦ ÇØ°áÇÏÁö´Â ¸øÇÑ´Ù. °Å´ëÇÑ /devÀÇ ¹®Á¦¸¦ ¹«½ÃÇÏ´Â °ÍÀº µ¿ÀûÀÎ /dev¸¦ ¿øÇÏ´Â ¸¹Àº ¼öÀÇ ÇÕ¸®ÀûÀÎ ÁÖÀåÀ» öȸÇϰųª ¿À·¡°¡Áö ¸øÇÒ °ÍÀÌ´Ù. Ç¥ÁØ ÀÀ´ä: "µð¹ÙÀ̽º °ü¸® µ¥¸óÀ» ÀÛ¼ºÇ϶ó" ÀÌ°ÍÀº ¿ì¸®°¡ À§ÀÇ Á¦¾ÈÀ¸·Î µ¹¾Æ°¡°Ô ÇÑ´Ù. devfs¿¡ ´ëÇØ ÁÁ¾ÆÇÏÁö ¾Ê´Â°Í ¿©±â devfs¿¡ ´ëÇÑ ºÒÆòºÒ¸¸ÀÌ ÀÖ°í, ¾î¶² Á¦¾È°ú ÇØ°áÃ¥Àº Á»´õ ´ç½ÅÀÇ ¸¶À½¿¡ µé°ÍÀÌ´Ù. ³ª´Â ¸ðµç »ç¶÷À» ±â»Ú°Ô ÇÒ ¼ö ¾øÁö¸¸, ³ë·ÂÇÏ°Ú´Ù :-) ³ª´Â ±× ³×ÀÌ¹Ö ½ºÅ°¸¶°¡ ½È´Ù ù¹ø°·Î, ¸ðµç »ç¶÷À» ±â»Ú°Ô ÇØ ÁÙ¼ö ÀÖ´Â ³×ÀÌ¹Ö ½ºÅ°¸¶´Â ¾ø´Ù´Â °ÍÀ» ±â¾ïÇ϶ó. ´ç½ÅÀÌ ±× ½ºÅ°¸¶°¡ ½È¾îµµ, ´Ù¸¥ »ç¶÷Àº ÁÁ¾ÆÇÑ´Ù. ´©°¡ ¿Ç°í ±×¸§À» ¸»ÇÒ¼ö Àִ°¡? ±Ã±ØÀûÀ¸·Î, Äڵ带 ÀÛ¼ºÇÏ´Â »ç¶÷Àº ¼±ÅÃÀ» ÇÏ°í, ÇöÀç ³²¾ÆÀÖ´Â °ÍÀº devfs ÀúÀÚ¿Í Ä¿³Î °ü¸®ÀÚ(Linus)¿¡ ÀÇÇØ ¸¸µé¾îÁø °ÍÀ» Á¶ÇÕÇÏ´Â °ÍÀÌ´Ù. ±×·¯³ª, ¸ðµç °ÍÀ» ÀÒÁö´Â ¾Ê´Â´Ù. ¸¸¾à ÀڽŸ¸ÀÇ ³×ÀÌ¹Ö ½ºÅ°¸¶¸¦ ¸¸µé°í ½Í´Ù¸é, µ¶¸³ÀûÀÎ ½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇϰųª, devfsd ¸¦ ÇÙ Çϰųª, devfsd ¿¡ ÀÇÇØ È£ÃâµÇ´Â ½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇÏ´Â µîÀÇ °£´ÜÇÑ ÀÏÀ» ÇϸéµÈ´Ù. ¿©·¯ºÐÀÌ ÁÁ¾ÆÇÏ´Â ³×ÀÌ¹Ö ½ºÅ°¸¶°¡ ¹«¾ùÀÌ´øÁö °£¿¡ ¸¸µé ¼ö ÀÖ´Ù. ¶ÇÇÑ, /dev·ÎºÎÅÍ devfs ³×ÀÌ¹Ö ½ºÅ°¸¶ÀÇ ¸ðµç °ÍÀ» Á¦°ÅÇϱ⸦ ¿øÇÑ´Ù¸é, devfs¸¦ ¾Æ¹«°÷À̳ª(/devfsµîÀÇ)¸¶¿îÆ®ÇÏ°í, /devfs¿¡ /dev¸¦ ¸µÅ©ÇÏ¿© ¸¸µé ¼ö ÀÖ´Ù. ±×°ÍÀº ¿øÇÑ´Ù¸é devfsd¸¦ »ç¿ëÇÔÀ¸·Î½á ÀÚµ¿ÀûÀ¸·Î ÇØ°áµÉ ¼öµµ ÀÖ´Ù. ½ÉÁö¾î ½Éº¼¸¯ ¸µÅ©¸¦ »ç¿ëÇϱ⺸´Ù VFS ¹ÙÀεù Å°´ÉÀÌ ¸µÅ©¸¦ ¸¸µéµµ·Ï »ç¿ëÇÒ ¼öµµ ÀÖ´Ù. ÀÌ ¹æ¹ýÀº, ÀÌ ½Éº¼¸¯ ¸µÅ©µéÀÇ "¸ñÀûÁö"°¡ ¾îµðÀÎÁö ¾Ë ÇÊ¿ä°¡ ¾ø´Ù. Ä¿³Î¿¡¼­ Devfs Á¤Ã¥ ÀÌ¹Ì Ä¿³Î¾È¿¡¼­ÀÇ Á¤Ã¥ÀÌ ÀÖ´Ù. µð¹ÙÀ̽º ¹øÈ£´Â ½ÇÁ¦·Î Á¤Ã¥¿¡ ÀÇÇÑ °ÍÀÌ´Ù (¿Ö ³»°¡ »ç¿ëÇÏ´Â µð¹ÙÀ̽º ¹øÈ£°¡ ¹«¾ùÀÎÁö¸¦ Ä¿³ÎÀÌ Áö½ÃÇؾ߸¸ Çϴ°¡?). ÀÌ°Í¿¡ ´ëÇØ, Ä¿³Î¿¡´Â ¾î¶² Á¤Ã¥ÀÌ ÀÖ´Ù. Á¤Ã¥À¸·Î½áÀÇ µð¹ÙÀ̽º À̸§°ú Á¤Ã¥À¸·Î¼­ÀÇ µð¹ÙÀ̽º ¹øÈ£ÀÇ ½ÇÁ¦ Â÷ÀÌÁ¡Àº µð¹ÙÀ̽º ¹øÈ£´Â »ç¶÷¿¡°Ô´Â Àǹ̾ø´Â ¼ýÀÚÀÌ°í ³Ê¹« Á¶À⽺·´±â ¶§¹®¿¡ ´©±¸µµ Á÷Á¢ÀûÀ¸·Î »ç¿ëÇÏÁö ¾Ê´Â´Ù´Â °ÍÀÌ´Ù. ÃÖ¼ÒÇÑ devfs µð¹ÙÀ̽º À̸§¿¡¼­´Â, (ÀڽŸ¸ÀÇ ³×ÀÌ¹Ö ½ºÅ°¸¶¸¦ ´õ ÇÒ ¼ö ÀÖ´Ù ÇÏ´õ¶óµµ) ¾î¶² »ç¶÷µéÀº devfs°¡ Á¦°øÇÏ´Â À̸§À» Á÷Á¢ÀûÀ¸·Î »ç¿ëÇÒ °ÍÀÌ´Ù. ÀÌ°ÍÀº ¾î¶² »ç¶÷µé¿¡°Ô´Â ±âºÐ ³ª»Û ÀÏÀÌ´Ù :-) Devfs´Â ºí·ÎÆ®¿þ¾î(bloatware)ÀÌ´Ù ¾Õ¿¡¼­ º¸¿©Áø °Íó·³, ÀÌ°ÍÀº ÀüÇô Áø½ÇÀÌ ¾Æ´Ï´Ù. ÄÚµå¿Í µ¥ÀÌÅÍ Å©±â ¸ðµÎ ¸Å¿ì ÀûÀº ¾çÀÌ´Ù. ¹ö±× ¸®Æ÷Æ® ¹æ¹ý ¸¸¾à devfs¿¡ ´ëÇÑ ¹ö±×¸¦ ¾Ë°í ÀÖ´Ù¸é(¶Ç´Â ¾Ë°í ÀÖ´Ù°í »ý°¢ÇÑ´Ù¸é), ´ÙÀ½ÀÇ ´Ü°è´ë·Î ÇàÇ϶ó: ÃÖ½ÅÀÇ devfs ÆÐÄ¡¸¦ Àû¿ëÇß´ÂÁö È®ÀÎÇغ¸¶ó. ÃÖ½ÅÀÇ Ä¿³Î¹öÀü¿¡ ÃÖ½ÅÀÇ devfs ÆÐÄ¡°¡ Àû¿ëµÇÁö ¾Ê¾ÒÀ» ¼öµµ ÀÖ´Ù(Linus´Â ¸Å¿ì ¹Ù»Ú´Ù) ´ç½ÅÀÇ ¹ö±× ¸®Æ÷Æ®¿¡ ¿ÏÀüÇÑ Ä¿³Î ·Î±× (dmesg¸¦ »ç¿ëÇÏ¿©)¸¦ ÀúÀåÇÏ¿© Æ÷ÇÔÇ϶ó. ¸ðµç ºÎÆ® ¸Þ¼¼Áö¸¦ Àâ¾Æ³»±â À§ÇÑ ³»ºÎ¹öÆÛÀÇ Å©±â¸¦ Áõ°¡½ÃÅ°±â À§ÇØ ¸¦ »ç¿ëÇÒ ÇÊ¿ä°¡ ÀÖÀ» °ÍÀÌ´Ù. Ä¿³Î ºÎÆ® Ä¿¸Çµå ¶óÀο¡ ¸¦ ³Ö°í ºÎÆÃÇغ¸°í (ºÎÆ®·Î´õ¿¡¼­ ÀÌ°ÍÀ» »ç¿ëÇÏ´Â ¹æ¹ýÀº ¹®¼­¸¦ Àеµ·Ï Ç϶ó), ±× °á°ú¸¦ ÆÄÀÏ·Î ÀúÀåÇ϶ó. ÀÌ°ÍÀº ¸Å¿ì ÀåȲ½º·¯¿î ÀÏÀÌ°í, ¸ÞÁ¦½Ã ¹öÆÛ¸¦ ³Ñ¾î¼³ ¼öµµ ÀÖÁö¸¸, ÇÒ¼ö¸¸ ÀÖ´Ù¸é ´õ ¸¹Àº °ÍÀ» Àâ¾Æ³»µµ·Ï ³ë·ÂÇØ´Þ¶ó. ´ç½ÅÀÇ devfsd ¼³Á¤ÆÄÀÏÀ» º¹»çÇØ º¸³»´Þ¶ó. ³ª ¿¡°Ô ¸ÕÀú ¹ö±× ¸®Æ÷Æ®¸¦ º¸³»¶ó. ´ç½ÅÀÌ ¸®´ª½º Ä¿³Î ¸ÞÀϸµ ¸®½ºÆ®¿¡ ¹ö±×¸¦ ¸®Æ÷Æ® ÇÑ´Ù°í Çؼ­ ³»°¡ ¾Ë °ÍÀ̶ó°í ±â´ëÇÏÁö´Â ¸»¶ó. À§¿¡ ³ª¿­µÈ ¸ðµç Á¤º¸¸¦ Æ÷ÇÔÇÏ°í, ±×¿Ü °ü·ÃÀÌ ÀÖ´Ù°í »ý°¢ÇÏ´Â °ÍÀ» Ãß°¡½ÃÄѵµ ÁÁ´Ù. Á¦¸ñ¿¡ devfs¸¦ ³Ö¾î¼­, ³ªÀÇ ¸ÞÀÏ ÇÊÅÍ°¡ ±ä±ÞÇÑ »óȲÀÓÀ» ¾Ë¼ö ÀÖ°Ô Ç϶ó. ¿©±â, ´äÀå¹ÞÀ» ±âȸ¸¦ Çâ»ó½ÃÄÑÁÖ´Â Áú¹®ÇÏ´Â ¹æ¹ýÀÌ ÀÖ´Ù: http://www.tuxedo.org/~esr/faqs/smart-questions.html ¸¸¾à ¹ö±×º¸°í¸¦ ÇÏ°í ½Í´Ù¸é, http://www.chiark.greenend.org.uk/~sgtatham/bugs.html ¸¦ ÀÐÀ» ÇÊ¿ä°¡ ÀÖÀ» °ÍÀÌ´Ù. ÀÌ»óÇÑ Ä¿³Î ¸Þ¼¼Áö ´ç½ÅÀÇ Ä¿³Î·Î±×¿¡¼­ devfs¿Í °ü·ÃµÈ ¸Þ¼¼Áö¸¦ º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¾Æ·¡´Â ±× ¸Þ¼¼ÁöµéÀÇ Àǹ̸¦ ³ª¿­Çß´Ù (±×¸®°í °¡´ÉÇÏ´Ù¸é ±× ¸Þ¼¼Áö¿Í °ü·ÃÇؼ­ ÇØ¾ß ÇÒ °ÍµéÀÇ ¸ñ·ÏÀÌ´Ù) devfs_register(fred):could not append to parent, err: -17 ´ç½ÅÀº ±× ¿¡·¯Äڵ尡 ÀǹÌÇÏ´Â ¹Ù¸¦ È®ÀÎÇÒ ÇÊ¿ä°¡ ÀÖÁö¸¸, º¸Åë 17Àº EEXIST¸¦ ÀǹÌÇÑ´Ù. ÀÌ°ÍÀº µå¶óÀ̹ö°¡ µð·ºÅ丮¿¡ fred Ç׸ñÀ» »ý¼ºÇÏ·Á°í ÇßÁö¸¸, °°Àº À̸§ÀÇ Ç׸ñÀÌ ÀÌ¹Ì Á¸ÀçÇÑ´Ù´Â °ÍÀ» ³ªÅ¸³½´Ù. ÀÌ°ÍÀº Á¾Á¾ Æ۹̼ÇÀ» º¹±¸Çϱâ À§ÇÑ ¼ö´ÜÀ¸·Î /dev¿¡ inodeµéÀ» Ç®¾î³õÀ¸·Á´Â ½ºÅ©¸³Æ®°¡ À߸øµÇ¾úÀ»¶§ ÀϾ´Ù. ÀÌ ¸Þ¼¼Áö´Â ±× µð¹ÙÀ̽º ³ëµå°¡ ¿©ÀüÈ÷ ±× µå¶óÀ̹ö¿¡ Á¢±ÙÇϵµ·Ï Çã¿ëÇϱ⠶§¹®¿¡ (¿Â Á¤¼ºÀ» ´ÙÇÏ¿©:-) ºÎÆ® ¿É¼ÇÀ» »ç¿ëÇÏ´õ¶óµµ) À§ÇèÇÏ´Ù. ÀÌ·¯ÇÑ ºÒÇÊ¿äÇÑ ¸Þ¼¼Áö¸¦ Á¦°ÅÇϱ⠿øÇÑ´Ù¸é, devfsd-v1.3.20À¸·Î ¾÷±×·¹À̵å ÇÏ°í, Æ۹̼ÇÀ» ÀúÀåÇϱâ À§ÇÏ¿© ÃßõµÈ Áö½ÃÀÚ¸¦ »ç¿ëÇ϶ó. devfs_mk_dir(bill): using old entry in dir: c1808724 "" ÀÌ°ÍÀº µå¶óÀ̹ö°¡ ºÎ¸ðµð·ºÅ丮°¡ °°Àº À̸§À» °¡Áö´Â billÀ̶ó ºÒ¸®´Â µð·ºÅ丮¸¦ »ý¼ºÇÏ·Á°í ÇÑ´Ù´Â °ÍÀ» Á¦¿ÜÇÏ°íÀ§ÀÇ ¸Þ¼¼Áö¿Í À¯»çÇÏ´Ù. ÀÌ °æ¿ì¿¡, µå¶óÀ̹ö°¡ ÀÛµ¿À» ¿Ã¹Ù¸£°Ô °è¼ÓÇϱâ À§Çؼ­, ¿¾ Ç׸ñÀÌ ±× µå¶óÀ̹ö¿¡ ÁÖ¾îÁö°í Àç»ç¿ëµÈ´Ù. 2.5 Ä¿³Î¿¡¼­´Â, ±× µå¶óÀ̹ö´Â NULL Ç׸ñÀÌ ÁÖ¾îÁö°í, µû¶ó¼­, ¾î¶² ȯ°æ¿¡¼­´Â ¿äûµÈ µð¹ÙÀ̽º ³ëµå¸¦ »ý¼ºÇÏÁö ¸øÇÒ °ÍÀÌ´Ù. ÀÌ°ÍÀÇ ÇØ°áÃ¥Àº À§¿Í °°´Ù devfsdÀÇ ÄÄÆÄÀÏ ¹®Á¦ º¸Åë, devfsdÄÄÆÄÀÏÀº ´ÜÁö ¼Ò½º µð·ºÅ丮¿¡¼­ make¸¦ Ä£ ÈÄ, make install (·çÆ®·Î)À» Ä¡´Â °ÍÀ¸·Î µÈ´Ù. °¡²ûÀº, À߸øµÈ ¼³Á¤À¸·Î ÀÎÇØ ¹®Á¦°¡ ÀϾ ¼öµµ ÀÖ´Ù. ¿¡ °ü·ÃµÈ ¿¡·¯¸Þ¼¼Áö ÀÌ°ÍÀº /usr/include/linux³ª /usr/src/linux¿¡ ¿¹ÀüÀÇ Ä¿³Î Çì´õ¸¦ °¡Áö°í Àֱ⠶§¹®¿¡ ÀϾ´Ù. º¯¼ö¸¦ (¸¸¾à /usr/src/linux¿¡ »õ Ä¿³Î¼Ò½º¸¦ ¼³Ä¡ÇÏÁö ¾Ê¾Ò´Ù¸é) make¿¡ Àü´ÞÇϰųª, /usr/include/linux¿¡ Ä¿³Î ¼Ò½º¿¡ ÀÖ´Â devfs_fs.h¸¦ º¹»çÇÏ¸é µÈ´Ù. ÀÌ ¹®¼­ÀÇ ¹ø¿ªº» ÀÌ ¹®¼­´Â ´Ù¸¥ ¾ð¾î·Î ¹ø¿ªµÇ¾î ÀÖ´Ù. rgooch (at) atnf.csiro.au ¿¡ ÀÇÇØ ÁÖ ¹®¼­(¿µ¾î·Î µÈ)´Â http://www.atnf.csiro.au/~rgooch/linux/docs/devfs.html ¿¡ ÀÖ´Ù. viatoris (at) nownuri.net °¡ ¹ø¿ªÇÑ Çѱ¹¾î ¹®¼­´Â http://your.destiny.pe.kr/devfs/devfs.html¿¡ ÀÖ´Ù. Most flags courtesy of ITA's Flags of All Countries used with permission. ´Ù¸¥ Âü°í¹®¼­ <ulink url="http://www.torque.net/sg/devfs_scsi.html"> http://www.torque.net/sg/devfs_scsi.html</ulink> SCSI ¼­ºê ½Ã½ºÅÛÀ» Ž»öÇÏ°í devfs ¿Í °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ°Ô Çϴ°ÍÀ» ¼³¸íÇÑ À¯¿ëÇÑ ¹®¼­ Douglas Gilbert <ulink url="http://www.torque.net/scsi/scsihosts.html"> http://www.torque.net/scsi/scsihosts.html</ulink> ºÎÆ® ¿É¼Ç¿¡ ´ëÇØ ³íÇÏ´Â ÁÁÀº ¹®¼­ Douglas Gilbert <ulink url="http://www.torque.net/scsi/SCSI-2.4-HOWTO/"> http://www.torque.net/scsi/SCSI-2.4-HOWTO/</ulink> 2.4 ¿¡¼­ ¸®´ª½º SCSI ¼­ºê½Ã½ºÅÛ¿¡ ´ëÇØ ³íÇÑ ¹®¼­ Douglas Gilbert <ulink url="http://johannes.erdfelt.com/hotswap.txt"> http://johannes.erdfelt.com/hotswap.txt</ulink> ¿ä±¸»çÇ×ÀÌ ³³µæÇÒ¸¸ÇÑ ÇØ°áÃ¥ÀÎÁö¿Í ¾î¶»°Ô ¿Ö devfs + devfsd ¸¦ »ç¿ëÇÒÁö µî¿¡ ´ëÇØ ±â¼úÇÑ ÆäÀÌÁö. ÃʾÈÀÓ. plain-text Çü½ÄÀÓ. johannes ´Â html ¹öÁ¯À» ¸¸µé°Ú´Ù°í ¾à¼ÓÇß´Ù. Johannes Erdfelt 2000³â 10¿ù ¹Ì±¹ Ç÷θ®´Ù ¸¶Àֹ̾̿¡¼­ °³ÃÖµÈ <ulink url="http://www.sistina.com/gfs/Pages/Miami2000.html"> 2nd Annual Storage Management Workshop</ulink> ¿¡¼­ ¹ßÇ¥ÇÑ <ulink url="http://www.atnf.csiro.au/~rgooch/linux/papers/Miami2000/index.html"> ³ª(ÀúÀÚ) ÀÇ ³í¹®</ulink> Richard Gooch