´ÙÀ½ ÀÌÀü Â÷·Ê

9. Modules

ÀûÀç°¡´ÉÇÑ Ä¿³Î ¸ðµâµéÀº ±¸¼ºÇϱ⠽±°í ¸Þ¸ð¸®¸¦ Àý¾àÇÒ ¼ö ÀÖ´Ù. ¸ðµâÀÇ ¹üÀ§´Â ÆÄÀÏ ½Ã½ºÅÛµé, ÀÌ´õ³Ý Ä«µå µå¶óÀ̹öµé, Å×ÀÌÇÁ µå¶óÀ̹öµé, ÇÁ¸°ÅÍ µå¶óÀ̹öµé°ú ´õ¿í ¸¹Àº °ÍµéÀ» Æ÷ÇÔÇØ °¡°í ÀÖ´Ù.

9.1 ¸ðµâ À¯Æ¿¸®Æ¼ ¼³Ä¡

¸ðµâ À¯Æ¿¸®Æ¼´Â ¿©·¯ºÐÀÌ Ä¿³Î ¼Ò½º¸¦ °¡Á®¿Â °÷ÀÌ¸é ¾îµðµçÁö modules-x.y.z.tar.gz À» °¡Á®¿À´Â °ÍÀÌ °¡´ÉÇÏ´Ù. °¡Àå ³ôÀº ÆÐÄ¡·Î ¿©·¯ºÐÀÇ ÇöÀç Ä¿³Îº¸´Ù ³·°Å³ª °°Àº x.y.z¸¦ ¼±ÅÃÇÑ´Ù. `tar zxvf modules-x.y.z.tar.gz' À¸·Î Ç®°í, ±×°ÍÀÌ ¸¸µç µð·ºÅ丮(modules-x.y.z)·Î µé¾î°¡¼­ README ÆÄÀÏÀ» Àаí, ±× ¼³Ä¡ ¼³¸í(º¸Åë make install ó·³ ¸Å¿ì °£´ÜÇÑ)´ë·Î µû¸¥´Ù. ¿©·¯ºÐ Àº ÀÌÁ¦ /sbin¿¡ insmod, rmmod, ksyms, lsmod, genksyms, modprobe, ±×¸®°í depmod ¶ó´Â ÇÁ·Î±×·¥µéÀ» °¡Áö°Ô µÇ¾úÀ» °ÍÀÌ´Ù. ¿©·¯ºÐÀÌ ¿øÇÑ´Ù¸é, insmod ¿¡ ÀÖ´Â ``hw''¶ó´Â ¿¹Á¦ µå¶óÀ̹ö·Î À¯Æ¿¸®Æ¼¸¦ Å×½ºÆ®ÇØ º¼ ¼ö ÀÖ´Ù. ÀÚ¼¼ÇÑ °ÍÀº ±× ¼­ºêµð·ºÅ丮¿¡ ÀÖ´Â INSTALLÀ̶ó´Â ÆÄÀÏÀ» º¸¾Æ¶ó.

insmod´Â ¸ðµâÀ» ÇöÀç ½ÇÇàÁßÀÎ Ä¿³Î¾È¿¡ »ðÀÔÇÏ´Â °ÍÀÌ´Ù. ¸ðµâµéÀº º¸Åë .o È®ÀåÀÚ¸¦ °®´Â´Ù. À§¿¡¼­ ¾ð±ÞÇÑ ¿¹Á¦ µå¶óÀ̹ö´Â drv_hello.o À̹ǷÎ, ±×°ÍÀ» »ðÀÔÇϱâ À§Çؼ­´Â, `insmod drv_hello.o'¶ó°í ÇؾßÇÑ´Ù. Ä¿³ÎÀÌ ÇöÀç »ç¿ëÁßÀÎ ¸ðµâÀ» º¸±â À§Çؼ­´Â lsmod¸¦ »ç¿ëÇÑ´Ù. ±× °á°ú´Â ´ÙÀ½°ú °°´Ù.

    blah# lsmod
    Module:        #pages:  Used by:
    drv_hello          1

`drv_hello'´Â ¸ðµâÀÇ À̸§ÀÌ°í, ¸Þ¸ð¸®ÀÇ ÇÑ ÆäÀÌÁö(4k)¸¦ »ç¿ëÇÏ°í ÀÖ´Ù. ±× ¸®°í ±× ¼ø°£¿¡´Â ´Ù¸¥ Ä¿³Î ¸ðµâÀº ¾ø´Ù. ÀÌ ¸ðµâÀ» Á¦°ÅÇϱâ À§Çؼ­´Â `rmmod drv_hello'¸¦ »ç¿ëÇÑ´Ù. rmmod ´ÙÀ½¿¡´Â ÆÄÀÏ À̸§ÀÌ ¾Æ´Ï¶ó ¸ðµâÀ̸§ À» »ç¿ëÇÔÀ» ÁÖÀÇÇ϶ó. ¿©·¯ºÐÀÇ ÀÌ°ÍÀ» lsmodÀÇ ¸ñ·ÏÀ¸·ÎºÎÅÍ ¾òÀ» ¼ö ÀÖ´Ù. ´Ù¸¥ ¸ðµâ À¯Æ¿¸®Æ¼ÀÇ ¸ñÀûÀº ±×µéÀÇ ¸Å´º¾ó ÆäÀÌÁö¿¡ ÀûÇôÀÖ´Ù.

9.2 Ä¿³Ú°ú °°ÀÌ ¹èÆ÷µÇ´Â ¸ðµâµé

¹öÀü 2.0.30ÀÇ ¿¹¸¦ µéÀÚ¸é, ¸¹Àº ÆÄÀÏ ½Ã½ºÅÛµé°ú, ¾à°£ÀÇ SCSI µå¶óÀ̹öµé, ¸î°³ÀÇ ÀÌ´õ³Ý ¾Æ´äÅÍ µå¶óÀ̹öµé, ±×¸®°í ³ª¸ÓÁö ´Ù¸¥°ÍµéÀº ¸ðµâ·Î¼­ ÀûÀçÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù. ±×µéÀ» »ç¿ëÇϱâ À§Çؼ­´Â, ¿ì¼± ¿ì¼± ±×µéÀ» ÇöÀç Ä¿³Î¿¡ ±¸ ¼ºÇÏ¿© ³ÖÁö ¾Ê¾Ò´ÂÁö È®ÀÎÇ϶ó. ÀÌ°ÍÀº `make config'ÇÏ´Â µ¿¾È¿¡ y¶ó°í ÇÏÁö ¾ÊÀº °ÍÀ» ¸»ÇÑ´Ù. »õ Ä¿³ÎÀ» ÄÄÆÄÀÏÇÏ°í ÀçºÎÆÃÇ϶ó. ±×¸®°í ³ª¼­, ´Ù½Ã /usr/src/linux·Î µé¾î°¡¼­, `make modules'¸¦ Ä£´Ù. ÀÌ°ÍÀº ¿©·¯ºÐÀÌ Ä¿³Î¾È ¿¡ ±¸¼ºÇÏ¿© Áý¾î³ÖÁö ¾ÊÀº ¸ðµâµéÀ» ¸ðµÎ ÄÄÆÄÀÏÇÏ°í,/usr/src/linux/modules ¾È¿¡ ¸µÅ©½ÃÅ°´Â °ÍÀÌ´Ù. ¿©·¯ºÐÀº ±× µð·ºÅ丮¿¡¼­ Á÷Á¢ »ç¿ëÇÒ ¼ö µµ ÀÖ°í, `make modules_install'À» ½ÇÇàÇÏ¿© /lib/modules/x.y.z¿¡ ¼³Ä¡ÇÒ ¼ö ÀÖ´Ù. ¿©±â¼­ x.y.z´Â Ä¿³Î ¹öÀü ¹øÈ£ÀÌ´Ù.

ÀÌ°ÍÀº ƯÈ÷ ÆÄÀÏ ½Ã½ºÅ۵鿡 ¾Ë¸Â´Ù. ¿©·¯ºÐÀº ¾Æ¸¶ minix³ª msdos ÆÄÀÏ ½Ã½º ÅÛÀº ÀÚÁÖ »ç¿ëÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. ¿¹¸¦ µé¸é, ¸¸¾à ³»°¡ msdos Ç÷ÎÇǸ¦ »ç¿ëÇÏ °Ô µÈ´Ù¸é, ³ª´Â /usr/src/linux/modules/msdos.o¸¦ Ä¿³Î·Î Áý¾î³Ö°í(insmod), ³¡³ª¸é rmmod msdosÇÏ¸é µÈ´Ù. ÀÌ °úÁ¤Àº º¸Å붧 Ä¿³ÎÀÇ RAM »ç¿ë·®À» 50kÁ¤µµ ÁÙ¿©ÁØ´Ù. minix ÆÄÀÏ ½Ã½ºÅÛÀ» »ç¿ëÇÒ ¶§ ¾Ë¾ÆµÎ¾î¾ß ÇÒ °ÍÀº, ÀÌ°ÍÀ» ``±ä±Þ º¹±¸'' µð½ºÅ©¿¡ »ç¿ëÇϱâ À§Çؼ­´Â Ç×»ó Ä¿³Î¿¡ Á÷Á¢ ±¸¼ºÇÏ¿© ³Ö¾ß ÇÑ´Ù.


´ÙÀ½ ÀÌÀü Â÷·Ê