devfs¿¡ ±âÃÊÇÑ /dev ¾È¿¡¼ °¢ ¿£Æ®¸®(µð¹ÙÀ̽º³ëµå)¿¡ ´ëÇØ µå¶óÀ̹ö´Â devfs_register()¸¦ È£ÃâÇØ¾ß¸¸ ÇÑ´Ù. À̰ÍÀº ³»ºÎ Å×ÀÌºí¿¡ µð¹ÙÀ̽º ¿¥Æ®¸®ÀÇ À̸§°ú file_operation ±¸Á¶Ã¼ Æ÷ÀÎÅÍ¿Í ¾à°£ÀÇ ´Ù¸¥ °ÍµéÀ» Ãß°¡ÇÑ´Ù. µð¹ÙÀ̽º ¿£Æ®¸®´Â ¾î¶² ¶§¶óµµ Ãß°¡µÇ°Å³ª Á¦°ÅµÉ ¼ö ÀÖÀ» °ÍÀÌ´Ù. µð¹ÙÀ̽º ¿£Æ®¸®°¡ µî·ÏµÇ¸é, devfs°¡ ¸¶¿îÆ®µÈ °÷¿¡ ÀÚµ¿À¸·Î ³ªÅ¸³´Ù.
¿£Æ®¸®¿¡ ´ëÇÑ Å½»öÀÌ ¼öÇàµÇ°í ¸¸¾à ±× ¿£Æ®¸®¿¡ ´ëÇÑ ¾î¶°ÇÑ µå¶óÀ̹ö Á¤º¸µµ ¾øÀ»¶§ devfs´Â devfsdÀÇ È£ÃâÀ» ½ÃµµÇÑ´Ù. ¸¸¾à ¾î¶°ÇÑ Á¤º¸µµ ã¾ÆÁöÁö ¾Ê´Â´Ù¸é, negative dentry°¡ ¾ò¾îÁö°í, ´ÙÀ½ ´Ü°èÀÇ ¼öÇàÀº VFS(create() ¶Ç´Â mknod() ÇÔ¼öó·³ inode ¸¦ Á¶ÀÛÇÏ´Â ¸Þ½îµå ¿Í °°Àº)¿¡ ÀÇÇØ È£ÃâµÉ °ÍÀÌ´Ù. µå¶óÀ̹öÀÇ Á¤º¸°¡ ã¾ÆÁö¸é inode´Â »ý¼ºµÉ °ÍÀ̰í(¹Ì¸® Á¸ÀçÇÏ´Â °ÍÀÌ ¾ø´Ù¸é) ±×°ÍÀ¸·Î Àß µÉ °ÍÀÌ´Ù.
mknod() ¸Þ½îµå´Â »ç¿ëÀÚ¿¡°Ô devfs ¾È¿¡ °íÀ¯ÇÏ°Ô À̸§ºÙ¿©Áø ÆÄÀÌÇÁ¸¦ ¸¸µéµµ·Ï Çã¿ëÇϰųª, ÀÌ¹Ì Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é ºí·° ½ºÆä¼È inode¸¦ ¸¸µé¼ö ÀÖµµ·Ï Çã¿ëÇÑ´Ù. »ç¿ëÀÚ´Â »ç¿ëÀÚ ½º½º·Î ÆÛ¹Ì¼Ç°ú ¼ÒÀ¯±ÇÀ» ¼³Á¤ÇÒ ¼ö Àִ ij¸¯Åͳª ºí·° ½ºÆä¼È inode¸¦ »ý¼ºÇϱ⸦ ¿øÇÒ ¼öµµ ÀÖ´Ù. ³ªÁß¿¡, ¸¸¾à µð¹ÙÀ̽º µå¶óÀ̹ö°¡ °°Àº À̸§À¸·Î ¿£Æ®¸®¸¦ µî·ÏÇÑ´Ù¸é, ±× ÆÛ¹Ì¼Ç°ú ¼ÒÀ¯±Ç°ú ½Ã°£Àº °è¼Ó À¯ÁöµÈ´Ù. À̰ÍÀº ±× µå¶óÀ̹ö°¡ ÀûÀçµÇ±â ÀüÀÌ¶óµµ µð¹ÙÀ̽º¿¡ ´ëÇÑ º¸È£±ÇÀ» ¼³Á¤ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ÇѹøÀÌ¶óµµ inode¸¦ ¸¸µé¾ú´Ù¸é µð·ºÅ丮¿¡ ³ªÅ¸³´Ù.
µð¹ÙÀ̽º µå¶óÀ̹ö´Â ¿£Æ®¸®¸¦ µî·ÏÇØÁ¦Çϱâ À§Çؼ devfs_unregister()¸¦È£ÃâÇÑ´Ù.
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