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¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ´Ù. ´ç½ÅÀº µð¹ÙÀ̽º´ç ÇϳªÀÇ ¿£Æ®¸®¸¦ ÇÒ´çÇÏ´Â
ÁøºÎÇÑ ¹æ¹ýº¸´Ù, ÇϳªÀÇ ¼³Á¤À» ÅëÇÏ¿© ¸ðµç µð¹ÙÀ̽º ±×·ì¿¡ ´ëÇÏ¿©
ÆÛ¹Ì¼ÇÀ» ÀúÀåÇÒ ¼ö ÀÖ´Ù.
/dev ¿¡ ¸¶¿îÆ®µÈ ÆÛ¹Ì¼Ç µ¥ÀÌŸº£À̽ºÀÇ ÀúÀå
¸¸¾à 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 ¸¦ »ç¿ëÇÏ¿©)¸¦ ÀúÀåÇÏ¿© Æ÷ÇÔÇ϶ó.
¸ðµç ºÎÆ® ¸Þ¼¼Áö¸¦ Àâ¾Æ³»±â À§ÇÑ ³»ºÎ¹öÆÛÀÇ Å©±â¸¦ Áõ°¡½Ã۱â À§ÇØ
-s ¸¦ »ç¿ëÇÒ Çʿ䰡 ÀÖÀ» °ÍÀÌ´Ù.
Ä¿³Î ºÎÆ® Ä¿¸Çµå ¶óÀο¡ devfs=dall ¸¦ ³Ö°í ºÎÆÃÇØº¸°í
(ºÎÆ®·Î´õ¿¡¼ À̰ÍÀ» »ç¿ëÇÏ´Â ¹æ¹ýÀº ¹®¼¸¦ Àеµ·Ï Ç϶ó),
±× °á°ú¸¦ ÆÄÀÏ·Î ÀúÀåÇ϶ó. À̰ÍÀº ¸Å¿ì ÀåȲ½º·¯¿î ÀÏÀ̰í, ¸ÞÁ¦½Ã ¹öÆÛ¸¦
³Ñ¾î¼³ ¼öµµ ÀÖÁö¸¸, ÇÒ¼ö¸¸ ÀÖ´Ù¸é ´õ ¸¹Àº °ÍÀ» Àâ¾Æ³»µµ·Ï ³ë·ÂÇØ´Þ¶ó.
´ç½ÅÀÇ 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µéÀ» Ç®¾î³õÀ¸·Á´Â ½ºÅ©¸³Æ®°¡ À߸øµÇ¾úÀ»¶§ ÀϾÙ. ÀÌ ¸Þ¼¼Áö´Â ±× µð¹ÙÀ̽º ³ëµå°¡
¿©ÀüÈ÷ ±× µå¶óÀ̹ö¿¡ Á¢±ÙÇϵµ·Ï Çã¿ëÇϱ⠶§¹®¿¡ (¿Â Á¤¼ºÀ» ´ÙÇÏ¿©:-)
devfs=only ºÎÆ® ¿É¼ÇÀ» »ç¿ëÇÏ´õ¶óµµ)
À§ÇèÇÏ´Ù. ÀÌ·¯ÇÑ ºÒÇÊ¿äÇÑ ¸Þ¼¼Áö¸¦ Á¦°ÅÇϱ⠿øÇÑ´Ù¸é, devfsd-v1.3.20À¸·Î
¾÷±×·¹À̵å Çϰí, ÆÛ¹Ì¼ÇÀ» ÀúÀåÇϱâ À§ÇÏ¿© ÃßõµÈ RESTORE
Áö½ÃÀÚ¸¦ »ç¿ëÇ϶ó.
devfs_mk_dir(bill): using old entry in dir: c1808724 ""
À̰ÍÀº µå¶óÀ̹ö°¡ ºÎ¸ðµð·ºÅ丮°¡ °°Àº À̸§À» °¡Áö´Â
bill À̶ó ºÒ¸®´Â µð·ºÅ丮¸¦
»ý¼ºÇÏ·Á°í ÇÑ´Ù´Â °ÍÀ» Á¦¿ÜÇϰíÀ§ÀÇ ¸Þ¼¼Áö¿Í À¯»çÇÏ´Ù. ÀÌ °æ¿ì¿¡, µå¶óÀ̹ö°¡ ÀÛµ¿À» ¿Ã¹Ù¸£°Ô
°è¼ÓÇϱâ À§Çؼ, ¿¾ Ç׸ñÀÌ ±× µå¶óÀ̹ö¿¡ ÁÖ¾îÁö°í Àç»ç¿ëµÈ´Ù. 2.5 Ä¿³Î¿¡¼´Â, ±× µå¶óÀ̹ö´Â
NULL Ç׸ñÀÌ ÁÖ¾îÁö°í, µû¶ó¼, ¾î¶² ȯ°æ¿¡¼´Â ¿äûµÈ µð¹ÙÀ̽º ³ëµå¸¦ »ý¼ºÇÏÁö ¸øÇÒ °ÍÀÌ´Ù.
À̰ÍÀÇ ÇØ°áÃ¥Àº À§¿Í °°´Ù
devfsdÀÇ ÄÄÆÄÀÏ ¹®Á¦
º¸Åë, devfsd ÄÄÆÄÀÏÀº ´ÜÁö ¼Ò½º µð·ºÅ丮¿¡¼
make ¸¦ Ä£ ÈÄ, make install
(·çÆ®·Î)À» Ä¡´Â °ÍÀ¸·Î µÈ´Ù. °¡²ûÀº, À߸øµÈ ¼³Á¤À¸·Î ÀÎÇØ ¹®Á¦°¡ ÀϾ ¼öµµ ÀÖ´Ù.
DEVFSD_NOTIFY_DELETE ¿¡ °ü·ÃµÈ ¿¡·¯¸Þ¼¼Áö
À̰ÍÀº /usr/include/linux ³ª
/usr/src/linux ¿¡ ¿¹ÀüÀÇ Ä¿³Î Çì´õ¸¦ °¡Áö°í
Àֱ⠶§¹®¿¡ ÀϾÙ. KERNEL_DIR º¯¼ö¸¦
(¸¸¾à /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.
´Ù¸¥ Âü°í¹®¼
http://www.torque.net/sg/devfs_scsi.html
SCSI ¼ºê ½Ã½ºÅÛÀ» Ž»öÇϰí devfs ¿Í °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ°Ô Çϴ°ÍÀ»
¼³¸íÇÑ À¯¿ëÇÑ ¹®¼
Douglas
Gilbert
http://www.torque.net/scsi/scsihosts.html
scsihosts= ºÎÆ® ¿É¼Ç¿¡ ´ëÇØ ³íÇÏ´Â
ÁÁÀº ¹®¼
Douglas
Gilbert
http://www.torque.net/scsi/SCSI-2.4-HOWTO/
2.4 ¿¡¼ ¸®´ª½º SCSI ¼ºê½Ã½ºÅÛ¿¡ ´ëÇØ ³íÇÑ ¹®¼
Douglas
Gilbert
http://johannes.erdfelt.com/hotswap.txt
¿ä±¸»çÇ×ÀÌ ³³µæÇÒ¸¸ÇÑ ÇØ°áÃ¥ÀÎÁö¿Í ¾î¶»°Ô ¿Ö
devfs + devfsd ¸¦ »ç¿ëÇÒÁö µî¿¡ ´ëÇØ ±â¼úÇÑ ÆäÀÌÁö. ÃʾÈÀÓ.
plain-text Çü½ÄÀÓ.
johannes ´Â html ¹öÁ¯À» ¸¸µé°Ú´Ù°í ¾à¼ÓÇß´Ù.
Johannes
Erdfelt
2000³â 10¿ù ¹Ì±¹ Ç÷θ®´Ù ¸¶Àֹ̾̿¡¼ °³ÃÖµÈ
2nd Annual Storage Management Workshop ¿¡¼ ¹ßÇ¥ÇÑ
³ª(ÀúÀÚ) ÀÇ ³í¹®
Richard
Gooch