©®linuxÉçÇø©® °®ÐÄÔ®Öú ©® LinuxÈÏÖ¤©®ÏµÁÐ½Ì³Ì ©® Òµ½ç¶¯Ì¬©® Õ¾ÎñÐÂÎÅ ©® ¹«Ë¾ÕÐÆ¸©® ½¨ÒéÁôÑÔ ©® ÍøÖ·´óÈ« ©®LPIרÌâ©® CISCOרÌâ
ÉèΪÊ×Ò³
¼ÓÈëÊÕ²Ø
¹ÜÀíÍŶÓ
JSP  
JAVA  
PERL  
 ÄúµÄλÖãºÊ×Ò³ > article > Linux¿ª·¢Çø > Ç¶ÈëÓ¦Óà>
À¸Ä¿µ¼À¸
×ÊÁÏËÑË÷
ÈÈÃÅÎÄÕÂ
¡¤Symbian±à³ÌVC¿ª·¢»·¾³ÉèÖÃ
¡¤»ùÓÚARMµÄǶÈëʽLinux¿ª·¢Æ½Ì¨
¡¤Ç¶ÈëʽLinuxÓÃQt Designer¿ìËÙ
¡¤S3C2410X¿ª·¢×ܽἰÐĵÃ
¡¤ÇáËÉ¿ØÖÆuClinuxǶÈëʽ¿ª·¢¹ý³Ì
¡¤Ç¶Èëʽ²Ù×÷ϵͳuCLinux
¡¤uClinuxϵͳ·ÖÎö
¡¤Porting uClinux to Samsung S
¡¤uC/OSºÍuClinuxµÄ±È½Ï
¡¤ÔÚWindowsÉÏÓ¦ÓÃuClinux
¡¤sqliteǶÈëʽÊý¾Ý¿âÔÚarm-linu
¡¤Ç¶ÈëʽÉ豸É쵀 Linux ϵͳ¿ª·¢
¡¤Æß¿îǶÈëʽLinux²Ù×÷ϵͳ¼ò½é
¡¤e680iÊÖ»úǶÈëʽLinux Ñо¿
¡¤Ç¶ÈëʽϵͳºÍǶÈëʽ²Ù×÷ϵͳ
×îÐÂÎÄÕÂ
¡¤ÔÚǶÈëʽLinux»·¾³ÏÂÖÆ×÷QPF×Ö
¡¤ARM Linux¿ª»úºó×Ô¶¯ÔËÐÐÌØ¶¨³Ì
¡¤¹¹½¨»ù±¾µÄǶÈëʽLinux¸ùÎļþϵ
¡¤×Ô¼º¶¯ÊÖ´òÔìǶÈëʽLinuxÈíÓ²¼þ
¡¤MP3²¥·ÅÆ÷madplayÔÚARMµÄÒÆÖ²
¡¤Linux 2.6.11 MTDÇý¶¯Çé¾°·ÖÎö
¡¤ARMÖÐCºÍ»ã±à»ìºÏ±à³Ì¼°Ê¾Àý
¡¤BusyBox ¼ò»¯Ç¶Èëʽ Linux ϵͳ
¡¤Ê¹ÓÃÐéÄâ»úǶÈëʽLinux¿ª·¢Ç°µÄ
¡¤ÓÃNFS·þÎñ¿ª·¢ARM Linux³ÌÐòµÄ
¡¤ÐéÄâ»úLinuxϵͳÏÂÁ¬½ÓARM¿ª·¢
¡¤Ç¶ÈëʽLinuxϵͳϵÄÍøÒ³ä¯ÀÀÆ÷
¡¤LinuxÒÆÖ²PSPÏêϸ²½Öè
¡¤Ç³Îöarmlinux 2.4.19ÖжÏirq·Ö
¡¤Linux µÄ÷ÈÁ¦: ¿ª·¢ Nokia N80
Google
 
ǶÈëʽÉ豸É쵀 Linux ϵͳ¿ª·¢
[ ×÷Õß:  ¼ÓÈëʱ¼ä:2006-08-16 09:36:40  À´×Ô:ÈüµÏÍø ]

Èç¹ûÄú¸Õ½Ó´¥Ç¶Èëʽ¿ª·¢£¬ÄÇô´óÁ¿¿ÉÓõÄÒýµ¼×°ÔسÌÐò£¨bootloader£©¡¢¹æÄ£ËõСµÄ·Ö·¢°æ£¨distribution£©¡¢ÎļþϵͳºÍ GUI ¿´ÆðÀ´¿ÉÄÜÌ«¶àÁË¡£µ«ÊÇÕâЩ·á¸»µÄÑ¡Ïîʵ¼ÊÉÏÊÇÒ»ÖÖ¶÷´Í£¬ÔÊÐíÄúµ÷Õû¿ª·¢»òÓû§»·¾³ÒÔÍêÈ«·ûºÏÄúµÄÐèÒª¡£¶Ô Linux ǶÈëʽ¿ª·¢µÄ¸ÅÊö½«°ïÖúÄúÀí½âËùÓÐÕâЩѡÏî¡£

Linux ÕýÔÚǶÈëʽ¿ª·¢ÁìÓòÎȲ½·¢Õ¹¡£ÒòΪ Linux ʹÓà GPL£¨Çë²ÎÔı¾ÎĺóÃæµÄ²Î¿¼×ÊÁÏ£©£¬ËùÒÔÈκζԽ« Linux ¶¨ÖÆÓÚ PDA¡¢ÕÆÉÏ»ú»òÕß¿ÉÅå´øÉ豸¸ÐÐËȤµÄÈ˶¼¿ÉÒÔ´ÓÒòÌØÍøÃâ·ÑÏÂÔØÆäÄں˺ÍÓ¦ÓóÌÐò£¬²¢¿ªÊ¼ÒÆÖ²»ò¿ª·¢¡£Ðí¶à Linux ¸ÄÁ¼Æ·ÖÖÓ­ºÏÁËǶÈëʽ£¯ÊµÊ±Êг¡¡£ËüÃǰüÀ¨ RTLinux£¨ÊµÊ± Linux£©¡¢uclinux£¨ÓÃÓÚ·Ç MMU É豸µÄ Linux£©¡¢Montavista Linux£¨ÓÃÓÚ ARM¡¢MIPS¡¢PPC µÄ Linux ·Ö·¢°æ£©¡¢ARM-Linux£¨ARM É쵀 Linux£©ºÍÆäËü Linux ϵͳ£¨Çë²ÎÔIJο¼×ÊÁÏÒÔÁ´½Óµ½±¾ÎÄÖÐÌáµ½µÄÕâЩºÍÆäËüÊõÓï¼°²úÆ·¡££©

ǶÈëʽ Linux ¿ª·¢´óÖÂÉæ¼°Èý¸ö²ã´Î£ºÒýµ¼×°ÔسÌÐò¡¢Linux Äں˺ÍͼÐÎÓû§½çÃæ£¨»ò³Æ GUI£©¡£ÔÚ±¾ÎÄÖУ¬ÎÒÃǽ«¼¯ÖÐÌÖÂÛÉæ¼°ÕâÈý²ãµÄһЩ»ù±¾¸ÅÄÉîÈëÁ˽âÒýµ¼×°ÔسÌÐò¡¢Äں˺ÍÎļþϵͳÊÇÈçºÎ½»»¥µÄ£»²¢½«Ñо¿¿ÉÓÃÓÚÎļþϵͳ¡¢GUI ºÍÒýµ¼×°ÔسÌÐòµÄÖÚ¶àÑ¡ÏîÖеÄÒ»²¿·Ö¡£

Òýµ¼×°ÔسÌÐò

Òýµ¼×°ÔسÌÐòͨ³£ÊÇÔÚÈκÎÓ²¼þÉÏÖ´ÐеĵÚÒ»¶Î´úÂë¡£ÔÚÏǫ́ʽ»úÕâÑùµÄ³£¹æÏµÍ³ÖУ¬Í¨³£½«Òýµ¼×°ÔسÌÐò×°ÈëÖ÷Òýµ¼¼Ç¼£¨Master Boot Record£¬(MBR)£©ÖУ¬»òÕß×°Èë Linux פÁôµÄ´ÅÅ̵ĵÚÒ»¸öÉÈÇøÖС£Í¨³££¬ÔŲ́ʽ»ú»òÆäËüϵͳÉÏ£¬BIOS ½«¿ØÖÆÒƽ»¸øÒýµ¼×°ÔسÌÐò¡£Õâ¾ÍÌá³öÁËÒ»¸öÓÐȤµÄÎÊÌ⣺˭½«Òýµ¼×°ÔسÌÐò×°È루ÔÚ´ó¶àÊýÇé¿öÖУ©Ã»ÓÐ BIOS µÄǶÈëʽÉ豸ÉÏÄØ£¿

½â¾öÕâ¸öÎÊÌâÓÐÁ½ÖÖ³£¹æ¼¼Êõ£º×¨ÓÃÈí¼þºÍ΢СµÄÒýµ¼´úÂ루tiny bootcode£©¡£

רÓÃÈí¼þ¿ÉÒÔÖ±½ÓÓëÔ¶³ÌϵͳÉϵÄÉÁ´æÉ豸½øÐн»»¥²¢½«Òýµ¼×°ÔسÌÐò°²×°ÔÚÉÁ´æµÄ¸ø¶¨Î»ÖÃÖС£ÉÁ´æÉ豸ÊÇÓë´æ´¢É豸¹¦ÄÜÀàËÆµÄÌØÊâоƬ£¬¶øÇÒËüÃÇÄܳ־ô洢ÐÅÏ¢ ¡ª ¼´£¬ÔÚÖØÐÂÒýµ¼Ê±²»»á²Á³ýÆäÄÚÈÝ¡£

Õâ¸öÈí¼þʹÓÃÄ¿±ê£¨ÔÚǶÈëʽ¿ª·¢ÖУ¬Ç¶ÈëʽÉ豸ͨ³£±»³ÆÎªÄ¿±ê£©É쵀 JTAG ¶Ë¿Ú£¬ËüÊÇÓÃÓÚÖ´ÐÐÍⲿÊäÈ루ͨ³£À´×ÔÖ÷»ú»úÆ÷£©µÄÖ¸ÁîµÄ½Ó¿Ú¡£JFlash-linux ÊÇÒ»ÖÖÓÃÓÚÖ±½ÓдÉÁ´æµÄÁ÷Ðй¤¾ß¡£ËüÖ§³ÖΪÊýÖÚ¶àµÄÉÁ´æÐ¾Æ¬£»ËüÔÚÖ÷»ú»úÆ÷£¨Í¨³£ÊÇ i386 »úÆ÷ ¡ª ±¾ÎÄÖÐÎÒÃǰÑһ̨ i386 »úÆ÷³ÆÎªÖ÷»ú£©ÉÏÖ´Ðв¢Í¨¹ý JTAG ½Ó¿ÚʹÓò¢Ðж˿ڷÃÎÊÄ¿±êµÄÉÁ´æÐ¾Æ¬¡£µ±È»£¬ÕâÒâζ×ÅÄ¿±êÐèÒªÓÐÒ»¸ö²¢ÐнӿÚʹËüÄÜÓëÖ÷»úͨÐÅ¡£Jflash-linux ÔÚ Linux ºÍ Windows °æ±¾Öж¼¿ÉʹÓ㬿ÉÒÔÔÚÃüÁîÐÐÖÐÓÃÒÔÏÂÃüÁîÆô¶¯Ëü£º

Jflash-linux

ijЩÖÖÀàµÄǶÈëʽÉ豸¾ßÓÐ΢СµÄÒýµ¼´úÂë ¡ª ¸ù¾Ý¼¸¸ö×Ö½ÚµÄÖ¸Áî ¡ª Ëü½«³õʼ»¯Ò»Ð© DRAM ÉèÖò¢ÆôÓÃÄ¿±êÉϵÄÒ»¸ö´®ÐУ¨»òÕß USB£¬»òÕßÒÔÌ«Íø£©¶Ë¿ÚÓëÖ÷»ú³ÌÐòͨÐÅ¡£È»ºó£¬Ö÷»ú³ÌÐò»ò×°Èë³ÌÐò¿ÉÒÔʹÓÃÕâ¸öÁ¬½Ó½«Òýµ¼×°ÔسÌÐò´«Ë͵½Ä¿±êÉÏ£¬²¢½«ËüдÈëÉÁ´æ¡£

ÔÚ°²×°Ëü²¢¸øÓèÆä¿ØÖƺó£¬Õâ¸öÒýµ¼×°ÔسÌÐòÖ´ÐÐÏÂÁи÷À๦ÄÜ£º

¡¤³õʼ»¯ CPU ËÙ¶È

¡¤³õʼ»¯Äڴ棬°üÀ¨ÆôÓÃÄÚ´æ¿â¡¢³õʼ»¯ÄÚ´æÅäÖüĴæÆ÷µÈ

¡¤³õʼ»¯´®Ðж˿ڣ¨Èç¹ûÔÚÄ¿±êÉÏÓеϰ£©

¡¤ÆôÓÃÖ¸ÁÊý¾Ý¸ßËÙ»º´æ

¡¤ÉèÖöÑÕ»Ö¸Õë

¡¤ÉèÖòÎÊýÇøÓò²¢¹¹Ôì²ÎÊý½á¹¹ºÍ±ê¼Ç£¨ÕâÊÇÖØÒªµÄÒ»²½£¬ÒòΪÄÚºËÔÚ±êʶ¸ùÉ豸¡¢Ò³Ãæ´óС¡¢ÄÚ´æ´óСÒÔ¼°¸ü¶àÄÚÈÝʱҪʹÓÃÒýµ¼²ÎÊý£©

¡¤Ö´ÐÐ POST£¨¼Óµç×Լ죩À´±êʶ´æÔÚµÄÉ豸²¢±¨¸æÈκÎÎÊÌâ

¡¤ÎªµçÔ´¹ÜÀíÌṩ¹ÒÆð£¯»Ö¸´Ö§³Ö

¡¤Ìø×ªµ½Äں˵ĿªÊ¼

´øÓÐÒýµ¼×°ÔسÌÐò¡¢²ÎÊý½á¹¹¡¢Äں˺ÍÎļþϵͳµÄϵͳµäÐÍÄÚ´æ²¼¾Ö¿ÉÄÜÈçÏÂËùʾ£º

Çåµ¥ 1. µäÐÍÄÚ´æ²¼¾Ö /* Top Of Memory */

Bootloader

Parameter Area

Kernel

Filesystem

/* End Of Memory */

ǶÈëʽÉ豸ÉÏһЩÁ÷ÐеIJ¢¿ÉÃâ·ÑʹÓÃµÄ Linux Òýµ¼×°ÔسÌÐòÓÐ Blob¡¢Redboot ºÍ Bootldr£¨Çë²ÎÔIJο¼×ÊÁÏ»ñµÃÁ´½Ó£©¡£ËùÓÐÕâЩÒýµ¼×°ÔسÌÐò¶¼ÓÃÓÚ»ùÓÚ ARM É豸É쵀 Linux£¬²¢ÐèÒª Jflash-linux ¹¤¾ßÓÃÓÚ°²×°¡£

Ò»µ©½«Òýµ¼×°ÔسÌÐò°²×°µ½Ä¿±êµÄÉÁ´æÖУ¬Ëü¾Í»áÖ´ÐÐÎÒÃÇÉÏÃæÌáµ½µÄËùÓгõʼ»¯¹¤×÷¡£È»ºó£¬Ëü×¼±¸½ÓÊÕÀ´×ÔÖ÷»úµÄÄں˺ÍÎļþϵͳ¡£Ò»µ©×°ÈëÁËÄںˣ¬Òýµ¼×°ÔسÌÐò¾Í½«¿ØÖÆ×ª¸øÄںˡ£

ÉèÖù¤¾ßÁ´

ÉèÖù¤¾ßÁ´ÔÚÖ÷»ú»úÆ÷ÉÏ´´½¨Ò»¸öÓÃÓÚ±àÒ뽫ÔÚÄ¿±êÉÏÔËÐеÄÄں˺ÍÓ¦ÓóÌÐòµÄ¹¹½¨»·¾³ ¡ª ÕâÊÇÒòΪĿ±êÓ²¼þ¿ÉÄÜûÓÐÓëÖ÷»ú¼æÈݵĶþ½øÖÆÖ´Ðм¶±ð¡£

¹¤¾ßÁ´ÓÉÒ»Ì×ÓÃÓÚ±àÒë¡¢»ã±àºÍÁ´½ÓÄں˼°Ó¦ÓóÌÐòµÄ×é¼þ×é³É¡£ ÕâЩ×é¼þ°üÀ¨£º

Binutils ¡ª ÓÃÓÚ²Ù×÷¶þ½øÖÆÎļþµÄʵÓóÌÐò¼¯ºÏ¡£ËüÃǰüÀ¨ÖîÈç ar¡¢as¡¢objdump¡¢objcopy ÕâÑùµÄʵÓóÌÐò¡£

Gcc ¡ª GNU C ±àÒëÆ÷¡£

Glibc ¡ª ËùÓÐÓû§Ó¦ÓóÌÐò¶¼½«Á´½Óµ½µÄ C ¿â¡£±ÜÃâʹÓÃÈκΠC ¿âº¯ÊýµÄÄÚºËºÍÆäËüÓ¦ÓóÌÐò¿ÉÒÔÔÚûÓиÿâµÄÇé¿öϽøÐбàÒë¡£

¹¹½¨¹¤¾ßÁ´½¨Á¢ÁËÒ»¸ö½»²æ±àÒëÆ÷»·¾³¡£±¾µØ±àÒëÆ÷±àÒëÓë±¾»úͬÀàµÄ´¦ÀíÆ÷µÄÖ¸Áî¡£½»²æ±àÒëÆ÷ÔËÐÐÔÚijһÖÖ´¦ÀíÆ÷ÉÏ£¬È´¿ÉÒÔ±àÒëÁíÒ»ÖÖ´¦ÀíÆ÷µÄÖ¸Áî¡£ÖØÍ·ÉèÖý»²æ±àÒëÆ÷¹¤¾ßÁ´¿É²»ÊÇÒ»Ïî¼òµ¥µÄÈÎÎñ£ºËü°üÀ¨ÏÂÔØÔ´´úÂë¡¢ÐÞ²¹²¹¶¡¡¢ÅäÖᢱàÒë¡¢ÉèÖÃÍ·Îļþ¡¢°²×°ÒÔ¼°ºÜ¶àºÜ¶àµÄ²Ù×÷¡£ÁíÍ⣬ÕâÑùÒ»¸ö³¹µ×µÄ¹¹½¨¹ý³Ì¶ÔÄÚ´æºÍÓ²Å̵ÄÐèÇóÊǾ޴óµÄ¡£Èç¹ûûÓÐ×ã¹»µÄÄÚ´æºÍÓ²Å̿ռ䣬ÄÇôÔÚ¹¹½¨½×¶ÎÓÉÓÚÏà¹ØÐÔ¡¢ÅäÖûòÍ·ÎļþÉèÖõÈÎÊÌâ»áͻȻð³öÐí¶àÎÊÌâ¡£

Òò´ËÄܹ»´ÓÒòÌØÍøÉÏ»ñµÃÒÑÔ¤±àÒëµÄ¶þ½øÖÆÎļþÊÇÒ»¼þºÃÊ£¨µ«²»Ì«ºÃµÄÒ»µãÊÇ£¬Ä¿Ç°ËüÃÇ´ó¶àÊýÖ»ÏÞÓÚ»ùÓÚ ARM µÄϵͳ£¬µ«³ÙÔç»á¸Ä±äµÄ£©¡£Ò»Ð©±È½ÏÁ÷ÐеÄÒÑÔ¤±àÒëµÄ¹¤¾ßÁ´°üÀ¨ÄÇЩÀ´×Ô Compaq£¨Familiar Linux £©¡¢LART£¨LART Linux£©ºÍ Embedian£¨»ùÓÚ Debian µ«ÓëËüÎ޹أ©µÄ¹¤¾ßÁ´ ¡ª ËùÓÐÕâЩ¹¤¾ßÁ´¶¼ÓÃÓÚ»ùÓÚ ARM µÄƽ̨¡£

ÄÚºËÉèÖÃ

Linux ÉçÇøÕý»ý¼«µØÎªÐÂÓ²¼þÌí¼Ó¹¦Äܲ¿¼þºÍÖ§³Ö¡¢ÔÚÄÚºËÖÐÐÞÕý´íÎó²¢ÇÒ¼°Ê±µØ½øÐг£¹æ¸Ä½ø¡£Õâµ¼Ö´óԼÿ 6 ¸öÔ£¨»ò 6 ¸öÔ²»µ½£©¾ÍÓÐÒ»¸öÎȶ¨µÄ Linux Ê÷µÄз¢Ðа档²»Í¬µÄά»¤Õßά»¤Õë¶ÔÌØ¶¨Ìåϵ½á¹¹µÄ²»Í¬ÄÚºËÊ÷ºÍ²¹¶¡¡£µ±ÎªÒ»¸öÏîĿѡÔñÁËÒ»¸öÄÚºËʱ£¬ÄúÐèÒªÆÀ¹À×îз¢ÐаæµÄÎȶ¨ÐÔÈçºÎ¡¢ËüÊÇ·ñ·ûºÏÏîĿҪÇóºÍÓ²¼þƽ̨¡¢´Ó±à³Ì½Ç¶ÈÀ´¿´ËüµÄÊæÊʳ̶ÈÒÔ¼°ÆäËüÄÑÒÔÈ·¶¨µÄ·½Ãæ¡£»¹ÓÐÒ»µãÒ²·Ç³£ÖØÒª£ºÕÒµ½ÐèÒªÓ¦ÓÃÓÚ»ù±¾Äں˵ÄËùÓв¹¶¡£¬ÒÔ±ãÎªÌØ¶¨µÄÌåϵ½á¹¹µ÷ÕûÄںˡ£

Äں˲¼¾Ö

Äں˲¼¾Ö·ÖÎªÌØ¶¨ÓÚÌåϵ½á¹¹µÄ²¿·ÖºÍÓëÌåϵ½á¹¹Î޹صIJ¿·Ö¡£ÄÚºËÖÐÌØ¶¨ÓÚÌåϵ½á¹¹µÄ²¿·ÖÊ×ÏÈÖ´ÐУ¬ÉèÖÃÓ²¼þ¼Ä´æÆ÷¡¢ÅäÖÃÄÚ´æÓ³Éä¡¢Ö´ÐÐÌØ¶¨ÓÚÌåϵ½á¹¹µÄ³õʼ»¯£¬È»ºó½«¿ØÖÆ×ª¸øÄÚºËÖÐÓëÌåϵ½á¹¹Î޹صIJ¿·Ö¡£ÏµÍ³µÄÆäÓಿ·ÖÔÚÕâµÚ¶þ¸ö½×¶ÎÆÚ¼ä½øÐгõʼ»¯¡£ÄÚºËÊ÷ϵÄĿ¼ arch/ Óɲ»Í¬µÄ×ÓĿ¼×é³É£¬Ã¿¸ö×ÓĿ¼ÓÃÓÚÒ»¸ö²»Í¬µÄÌåϵ½á¹¹£¨MIPS¡¢ARM¡¢i386¡¢SPARC¡¢PPC µÈ£©¡£Ã¿Ò»¸öÕâÑùµÄ×ÓĿ¼¶¼°üº¬ kernel/ ºÍ mm/ ×ÓĿ¼£¬ËüÃǰüº¬Ìض¨ÓÚÌåϵ½á¹¹µÄ´úÂëÀ´Íê³ÉÏó³õʼ»¯ÄÚ´æ¡¢ÉèÖà IRQ¡¢ÆôÓøßËÙ»º´æ¡¢ÉèÖÃÄÚºËÒ³Ãæ±íµÈ²Ù×÷¡£Ò»µ©×°ÈëÄں˲¢¸øÓèÆä¿ØÖÆ£¬¾ÍÊ×Ïȵ÷ÓÃÕâЩº¯Êý£¬È»ºó³õʼ»¯ÏµÍ³µÄÆäÓಿ·Ö¡£

¸ù¾Ý¿ÉÓõÄϵͳ×ÊÔ´ºÍÒýµ¼×°ÔسÌÐòµÄ¹¦ÄÜ£¬Äں˿ÉÒÔ±àÒë³É vmlinux¡¢Image »ò zImage¡£vmlinux ºÍ zImage Ö®¼äµÄÖ÷񻂿±ðÔÚÓÚ vmlinux ÊÇʵ¼ÊµÄ£¨Î´Ñ¹ËõµÄ£©¿ÉÖ´ÐÐÎļþ£¬¶ø zImage ÊÇ»ò¶à»òÉÙ°üº¬ÏàͬÐÅÏ¢µÄ×Ô½âѹѹËõÎļþ ¡ª Ö»ÊÇѹËõËüÒÔ´¦Àí£¨Í¨³£ÊÇ Intel Ç¿ÖÆµÄ£©640 KB Òýµ¼Ê±¼äµÄÏÞÖÆ¡£ÓйØËùÓÐÕâЩµÄȨÍþÐÔ½âÊÍ£¬Çë²ÎÔÄ Linux Magazine µÄÎÄÕ¡°Kernel Configuration: dealing with the unexpected¡±£¨Çë²ÎÔIJο¼×ÊÁÏ£©¡£

ÄÚºËÁ´½ÓºÍ×°Èë

Ò»µ©ÎªÄ¿±êϵͳ±àÒëÁËÄں˺ó£¬Í¨¹ýʹÓÃÒýµ¼×°ÔسÌÐò£¨ËüÒѾ­±»×°È뵽Ŀ±êµÄÉÁ´æÖУ©£¬Äں˾ͱ»×°È뵽Ŀ±êϵͳµÄÄڴ棨ÔÚ DRAM ÖлòÕßÔÚÉÁ´æÖУ©¡£Í¨¹ýʹÓô®ÐС¢USB »òÒÔÌ«Íø¶Ë¿Ú£¬Òýµ¼×°ÔسÌÐòÓëÖ÷»úͨÐÅÒÔ½«Äں˴«Ë͵½Ä¿±êµÄÉÁ´æ»ò DRAM ÖС£ÔÚ½«ÄÚºËÍêȫװÈëÄ¿±êºó£¬Òýµ¼×°ÔسÌÐò½«¿ØÖÆ´«µÝ¸ø×°ÈëÄں˵ĵØÖ·¡£

Äں˿ÉÖ´ÐÐÎļþÓÉÐí¶àÁ´½ÓÔÚÒ»ÆðµÄ¶ÔÏóÎļþ×é³É¡£¶ÔÏóÎļþÓÐÐí¶à½Ú£¬ÈçÎı¾¡¢Êý¾Ý¡¢init Êý¾Ý¡¢bass µÈµÈ¡£ÕâЩ¶ÔÏóÎļþ¶¼ÊÇÓÉÒ»¸ö³ÆÎªÁ´½ÓÆ÷½Å±¾µÄÎļþÁ´½Ó²¢×°ÈëµÄ¡£Õâ¸öÁ´½ÓÆ÷½Å±¾µÄ¹¦ÄÜÊǽ«ÊäÈë¶ÔÏóÎļþµÄ¸÷½ÚÓ³Éäµ½Êä³öÎļþÖУ»»»¾ä»°Ëµ£¬Ëü½«ËùÓÐÊäÈë¶ÔÏóÎļþ¶¼Á´½Óµ½µ¥Ò»µÄ¿ÉÖ´ÐÐÎļþÖУ¬½«¸Ã¿ÉÖ´ÐÐÎļþµÄ¸÷½Ú×°Èëµ½Ö¸¶¨µØÖ·´¦¡£vmlinux.lds ÊÇ´æÔÚÓÚ arch// Ŀ¼ÖеÄÄÚºËÁ´½ÓÆ÷½Å±¾£¬Ëü¸ºÔðÁ´½ÓÄں˵ĸ÷¸ö½Ú²¢½«ËüÃÇ×°ÈëÄÚ´æÖÐÌØ¶¨Æ«ÒÆÁ¿´¦¡£µäÐ굀 vmlinux.lds ¿´ÆðÀ´ÏóÕâÑù£º

Çåµ¥ 2. µäÐ굀 vmlinux.lds Îļþ OUTPUT_ARCH() /* includes architecture type */

ENTRY(stext) /* stext is the kernel entry point */

SECTIONS /* SECTIONS command describes the layout

of the output file */

{

. = TEXTADDR; /* TEXTADDR is LMA for the kernel */

.init : { /* Init code and data*/

_stext = .; /* First section is stext followed

by __init data section */

__init_begin = .;

*(.text.init)

__init_end = .;

}

.text : { /* Real text segment follows __init_data section */

_text = .;

*(.text)

_etext = .; /* End of text section*/

}

.data :{

_data=.; /* Data section comes after text section */

*(.data)

_edata=.;

} /* Data section ends here */

.bss : { /* BSS section follows symbol table section */

__bss_start = .;

*(.bss)

_end = . ; /* BSS section ends here */

}

}

LMA ÊÇ×°ÈëÄ£¿éµØÖ·£»Ëü±íʾ½«Òª×°ÈëÄں˵ÄÄ¿±êÐéÄâÄÚ´æÖеĵØÖ·¡£TEXTADDR ÊÇÄں˵ÄÐéÄâÆðʼµØÖ·£¬²¢ÇÒÔÚ arch// Ï嵀 Makefile ÖÐÖ¸¶¨ËüµÄÖµ¡£Õâ¸öµØÖ·±ØÐëÓëÒýµ¼×°ÔسÌÐòʹÓõĵØÖ·ÏàÆ¥Åä¡£

Ò»µ©Òýµ¼×°ÔسÌÐò½«Äں˸´ÖƵ½ÉÁ´æ»ò DRAM ÖУ¬Äں˾ͱ»ÖØÐ¶¨Î»µ½ TEXTADDR ¡ª Ëüͨ³£ÔÚ DRAM ÖС£È»ºó£¬Òýµ¼×°ÔسÌÐò½«¿ØÖÆ×ª¸øÕâ¸öµØÖ·£¬ÒÔ±ãÄÚºËÄÜ¿ªÊ¼Ö´ÐС£

²ÎÊý´«µÝºÍÄÚºËÒýµ¼

stext ÊÇÄÚºËÈë¿Úµã£¬ÕâÒâζ×ÅÔÚÄÚºËÒýµ¼Ê±½«Ê×ÏÈÖ´ÐÐÕâÒ»½ÚϵĴúÂë¡£Ëüͨ³£Óûã±àÓïÑÔ±àд£¬²¢ÇÒͨ³£ËüÔÚ arch// ÄÚºËĿ¼Ï¡£Õâ¸ö´úÂëÉèÖÃÄÚºËÒ³ÃæÄ¿Â¼¡¢´´½¨Éí·ÝÄÚºËÓ³Éä¡¢±êʶÌåϵ½á¹¹ºÍ´¦ÀíÆ÷ÒÔ¼°Ö´ÐзÖÖ§ start_kernel£¨³õʼ»¯ÏµÍ³µÄÖ÷Àý³Ì£©¡£

start_kernel µ÷Óà setup_arch ×÷ΪִÐеĵÚÒ»²½£¬ÔÚÆäÖÐÍê³ÉÌØ¶¨ÓÚÌåϵ½á¹¹µÄÉèÖá£Õâ°üÀ¨³õʼ»¯Ó²¼þ¼Ä´æÆ÷¡¢±êʶ¸ùÉ豸ºÍϵͳÖпÉÓÃµÄ DRAM ºÍÉÁ´æµÄÊýÁ¿¡¢Ö¸¶¨ÏµÍ³ÖпÉÓÃÒ³ÃæµÄÊýÄ¿¡¢Îļþϵͳ´óСµÈµÈ¡£ËùÓÐÕâЩÐÅÏ¢¶¼ÒÔ²ÎÊýÐÎʽ´ÓÒýµ¼×°ÔسÌÐò´«µÝµ½Äںˡ£

½«²ÎÊý´ÓÒýµ¼×°ÔسÌÐò´«µÝµ½ÄÚºËÓÐÁ½ÖÖ·½·¨£ºparameter_structure ºÍ±ê¼ÇÁÐ±í¡£ÔÚÕâÁ½ÖÖ·½·¨ÖУ¬²»ÔÞ³ÉʹÓòÎÊý½á¹¹£¬ÒòΪËüÇ¿¼ÓÁËÏÞÖÆ£ºÖ¸¶¨ÔÚÄÚ´æÖУ¬Ã¿¸ö²ÎÊý±ØÐëλÓÚ param_struct ÖеÄÌØ¶¨Æ«ÒÆÁ¿´¦¡£×îеÄÄÚºËÆÚÍû²ÎÊý×÷Ϊ±ê¼ÇÁбíµÄ¸ñʽÀ´´«µÝ£¬²¢½«²ÎÊýת»¯ÎªÒѱê¼Ç¸ñʽ¡£param_struct ¶¨ÒåÔÚ include/asm/setup.h ÖС£ËüµÄÒ»Ð©ÖØÒª×Ö¶ÎÊÇ£º

Çåµ¥ 3. Ñù±¾²ÎÊý½á¹¹ struct param_struct {

unsigned long page_size; /* 0: Size of the page */

unsigned long nr_pages; /* 4: Number of pages in the system */

unsigned long ramdisk /* 8: ramdisk size */

unsigned long rootdev; /* 16: Number representing the root device */

unsigned long initrd_start; /* 64: starting address of initial ramdisk */

/* This can be either in flash/dram */

unsigned long initrd_size; /* 68: size of initial ramdisk */

}

Çë×¢Ò⣺ÕâЩÊý±íʾ¶¨Òå×ֶεIJÎÊý½á¹¹ÖÐµÄÆ«ÒÆÁ¿¡£ÕâÒâζ×ÅÈç¹ûÒýµ¼×°ÔسÌÐò½«²ÎÊý½á¹¹·ÅÖÃÔÚµØÖ· 0xc0000100£¬ÄÇô rootdev ²ÎÊý½«·ÅÖÃÔÚ 0xc0000100 + 16£¬initrd_start ½«·ÅÖÃÔÚ 0xc0000100 + 64 µÈµÈ ¡ª ·ñÔò£¬Äں˽«ÔÚ½âÊÍÕýÈ·µÄ²ÎÊýʱÓöµ½À§ÄÑ¡£

ÕýÈçÉÏÃæÌáµ½µÄ£¬ÒòΪ´ÓÒýµ¼×°ÔسÌÐòµ½Äں˵IJÎÊý´«µÝ»áÓÐÒ»Ð©Ô¼ÊøÌõ¼þ£¬ËùÒÔ´ó¶àÊý 2.4.x ϵÁÐÄÚºËÆÚÍû²ÎÊýÒÔÒѱê¼ÇµÄÁбí¸ñʽ´«µÝ¡£ÔÚÒѱê¼ÇµÄÁбíÖУ¬Ã¿¸ö±ê¼ÇÓɱêʶ±»´«µÝ²ÎÊýµÄ tag_header ÒÔ¼°ÆäºóµÄ²ÎÊýÖµ×é³É¡£±ê¼ÇÁбíÖбê¼ÇµÄ³£¹æ¸ñʽ¿ÉÒÔÈçÏÂËùʾ£º

Çåµ¥ 4. Ñù±¾±ê¼Ç¸ñʽ¡£ÄÚºËͨ¹ý Í·À´±êʶÿ¸ö±ê¼Ç¡£ #define

struct {

u32 ;

u32 ;

};

/* Example tag for passing memory information */

#define ATAG_MEM 0x54410002 /* Magic number */

struct tag_mem32 {

u32 size; /* size of memory */

u32 start; /* physical start address of memory*/

};

setup_arch »¹ÐèÒª¶ÔÉÁ´æ´æ´¢¿â¡¢ÏµÍ³¼Ä´æÆ÷ºÍÆäËüÌØ¶¨É豸ִÐÐÄÚ´æÓ³Éä¡£Ò»µ©Íê³ÉÁËÌØ¶¨ÓÚÌåϵ½á¹¹µÄÉèÖ㬿ØÖƾͷµ»Øµ½³õʼ»¯ÏµÍ³ÆäÓಿ·ÖµÄ start_kernel º¯Êý¡£ÕâЩ¸½¼ÓµÄ³õʼ»¯ÈÎÎñ°üº¬£º

¡¤ÉèÖÃÏÝÚå

¡¤³õʼ»¯ÖжÏ

¡¤³õʼ»¯¼ÆÊ±Æ÷

¡¤³õʼ»¯¿ØÖÆÌ¨

¡¤µ÷Óà mem_init£¬Ëü¼ÆËã¸÷ÖÖÇøÓò¡¢¸ßÄÚ´æÇøµÈÄÚµÄÒ³ÃæÊýÁ¿

¡¤³õʼ»¯ slab ·ÖÅäÆ÷²¢Îª VFS¡¢»º³åÇø¸ßËÙ»º´æµÈ´´½¨ slab ¸ßËÙ»º´æ

¡¤½¨Á¢¸÷ÖÖÎļþϵͳ£¬Èç proc¡¢ext2 ºÍ JFFS2

¡¤´´½¨ kernel_thread£¬ËüÖ´ÐÐÎļþϵͳÖÐµÄ init ÃüÁî²¢ÏÔʾ lign Ìáʾ·û¡£ Èç¹ûÔÚ /bin¡¢/sbin »ò /etc ÖÐûÓÐ init ³ÌÐò£¬ÄÇôÄں˽«Ö´ÐÐÎļþϵͳµÄ /bin ÖÐµÄ shell¡£

É豸Çý¶¯³ÌÐò

ǶÈëʽϵͳͨ³£ÓÐÐí¶àÉ豸ÓÃÓÚÓëÓû§½»»¥£¬Ïó´¥ÃþÆÁ¡¢Ð¡¼üÅÌ¡¢¹ö¶¯ÂÖ¡¢´«¸ÐÆ÷¡¢RA232 ½Ó¿Ú¡¢LCD µÈµÈ¡£³ýÁËÕâЩÉ豸Í⣬»¹ÓÐÐí¶àÆäËüרÓÃÉ豸£¬°üÀ¨ÉÁ´æ¡¢USB¡¢GSM µÈ¡£ÄÚºËͨ¹ýËùÓÐÕâЩÉ豸¸÷×ÔµÄÉ豸Çý¶¯³ÌÐòÀ´¿ØÖÆËüÃÇ£¬°üÀ¨ GUI Óû§Ó¦ÓóÌÐòҲͨ¹ý·ÃÎÊÕâЩÇý¶¯³ÌÐòÀ´·ÃÎÊÉ豸¡£±¾½Ú×ÅÖØÌÖÂÛͨ³£¼¸ºõÔÚÿ¸öǶÈëʽ»·¾³Öж¼»áʹÓõÄÒ»Ð©ÖØÒªÉ豸µÄÉ豸Çý¶¯³ÌÐò¡£

Ö¡»º³åÇøÇý¶¯³ÌÐò

ÕâÊÇ×îÖØÒªµÄÇý¶¯³ÌÐòÖ®Ò»£¬ÒòΪͨ¹ýÕâ¸öÇý¶¯³ÌÐò²ÅÄÜʹϵͳÆÁÄ»ÏÔʾÄÚÈÝ¡£Ö¡»º³åÇøÇý¶¯³ÌÐòͨ³£ÓÐÈý²ã¡£×îµ×²ãÊÇ»ù±¾¿ØÖÆÌ¨Çý¶¯³ÌÐò drivers/char/console.c£¬ËüÌṩÁËÎı¾¿ØÖÆÌ¨³£¹æ½Ó¿ÚµÄÒ»²¿·Ö¡£Í¨¹ýʹÓÿØÖÆÌ¨Çý¶¯³ÌÐòº¯Êý£¬ÎÒÃÇÄܽ«Îı¾´òÓ¡µ½ÆÁÄ»ÉÏ ¡ª µ«Í¼Ðλò¶¯»­»¹²»ÄÜ£¨ÕâÑù×öÐèҪʹÓÃÊÓÆµÄ£Ê½¹¦ÄÜ£¬Í¨³£³öÏÖÔÚÖмä²ã£¬Ò²¾ÍÊÇ drivers/video/fbcon.c ÖУ©¡£Õâ¸öµÚ¶þ²ãÇý¶¯³ÌÐòÌṩÁËÊÓÆµÄ£Ê½ÖлæÍ¼µÄ³£¹æ½Ó¿Ú¡£

Ö¡»º³åÇøÊÇÏÔ¿¨ÉϵÄÄڴ棬ÐèÒª½«ËüÄÚ´æÓ³Éäµ½Óû§¿Õ¼äÒÔ±ã¿ÉÒÔ½«Í¼ÐκÍÎı¾ÄÜдµ½Õâ¸öÄÚ´æ¶ÎÉÏ£ºÈ»ºóÕâ¸öÐÅÏ¢½«·´Ó³µ½ÆÁÄ»ÉÏ¡£Ö¡»º³åÇøÖ§³ÖÌá¸ßÁË»æÍ¼µÄËٶȺÍÕûÌåÐÔÄÜ¡£ÕâÒ²ÊǶ¥²ãÇý¶¯³ÌÐòÒýÈË×¢ÒâÖ®´¦£º¶¥²ãÊǷdz£Ìض¨ÓÚÓ²¼þµÄÇý¶¯³ÌÐò£¬ËüÐèÒªÖ§³ÖÏÔ¿¨²»Í¬µÄÓ²¼þ·½Ãæ ¡ª ÏóÆôÓ㯽ûÓÃÏÔ¿¨¿ØÖÆÆ÷¡¢Éî¶ÈºÍģʽµÄÖ§³ÖÒÔ¼°µ÷É«°åµÈ¡£ËùÓÐÕâÈý²ã¶¼Ï໥ÒÀÀµÒÔʵÏÖÕýÈ·µÄÊÓÆµ¹¦ÄÜ¡£ÓëÖ¡»º³åÇøÓйصÄÉ豸ÊÇ /dev/fb0£¨Ö÷É豸ºÅ 29£¬´ÎÉ豸ºÅ 0£©¡£

ÊäÈëÉ豸Çý¶¯³ÌÐò

¿É´¥Ãþ°åÊÇÓÃÓÚǶÈëʽÉ豸µÄ×î»ù±¾µÄÓû§½»»¥É豸֮һ ¡ª С¼üÅÌ¡¢´«¸ÐÆ÷ºÍ¹ö¶¯ÂÖÒ²°üº¬ÔÚÐí¶à²»Í¬É豸ÖÐÒÔÓÃÓÚ²»Í¬µÄÓÃ;¡£

´¥Ãþ°åÉ豸µÄÖ÷Òª¹¦ÄÜÊÇËæÊ±±¨¸æÓû§µÄ´¥Ãþ£¬²¢±êʶ´¥ÃþµÄ×ø±ê¡£Õâͨ³£ÔÚÿ´Î·¢Éú´¥Ãþʱ£¬Í¨¹ýÉú³ÉÒ»¸öÖжÏÀ´ÊµÏÖ¡£

È»ºó£¬Õâ¸öÉ豸Çý¶¯³ÌÐòµÄ½ÇÉ«ÊÇÿµ±³öÏÖÖжÏʱ¾Í²éѯ´¥ÃþÆÁ¿ØÖÆÆ÷£¬²¢ÇëÇó¿ØÖÆÆ÷·¢ËÍ´¥ÃþµÄ×ø±ê¡£Ò»µ©Çý¶¯³ÌÐò½ÓÊÕµ½×ø±ê£¬Ëü¾Í½«Óйش¥ÃþºÍÈκοÉÓÃÊý¾ÝµÄÐźŷ¢Ë͸øÓû§Ó¦ÓóÌÐò£¬²¢½«Êý¾Ý·¢Ë͸øÓ¦ÓóÌÐò£¨Èç¹û¿ÉÄܵϰ£©¡£È»ºóÓû§Ó¦ÓóÌÐò¸ù¾ÝËüµÄÐèÒª´¦ÀíÊý¾Ý¡£

¼¸ºõËùÓÐÊäÈëÉ豸 ¡ª °üÀ¨Ð¡¼üÅÌ ¡ª ¶¼ÒÔÀàËÆÔ­Àí¹¤×÷¡£

ÉÁ´æ MTD Çý¶¯³ÌÐò

MTD É豸ÊÇÏóÉÁ´æÐ¾Æ¬¡¢Ð¡ÐÍÉÁ´æ¿¨¡¢¼ÇÒä°ôµÈÖ®ÀàµÄÉ豸£¬ËüÃÇÔÚǶÈëʽÉ豸ÖеÄʹÓÃÕýÔÚ²»¶ÏÔö³¤¡£

MTD Çý¶¯³ÌÐòÊÇÔÚ Linux ÏÂרÃÅΪǶÈëʽ»·¾³¿ª·¢µÄеÄÒ»ÀàÇý¶¯³ÌÐò¡£Ïà¶ÔÓÚ³£¹æ¿éÉ豸Çý¶¯³ÌÐò£¬Ê¹Óà MTD Çý¶¯³ÌÐòµÄÖ÷ÒªÓŵãÔÚÓÚ MTD Çý¶¯³ÌÐòÊÇרÃÅΪ»ùÓÚÉÁ´æµÄÉ豸ËùÉè¼ÆµÄ£¬ËùÒÔËüÃÇͨ³£ÓиüºÃµÄÖ§³Ö¡¢¸üºÃµÄ¹ÜÀíºÍ»ùÓÚÉÈÇøµÄ²Á³ýºÍ¶Áд²Ù×÷µÄ¸üºÃµÄ½Ó¿Ú¡£Linux Ï嵀 MTD Çý¶¯³ÌÐò½Ó¿Ú±»»®·ÖΪÁ½ÀàÄ£¿é£ºÓû§Ä£¿éºÍÓ²¼þÄ£¿é¡£

Óû§Ä£¿é

ÕâЩģ¿éÌṩ´ÓÓû§¿Õ¼äÖ±½ÓʹÓõĽӿڣºÔ­Ê¼×Ö·û·ÃÎÊ¡¢Ô­Ê¼¿é·ÃÎÊ¡¢FTL£¨ÉÁ´æ×ª»»²ã£¬Flash Transition Layer ¡ª ÓÃÔÚÉÁ´æÉϵÄÒ»ÖÖÎļþϵͳ£©ºÍ JFS£¨¼´ÈÕÖ¾Îļþϵͳ£¬Journaled File System ¡ª ÔÚÉÁ´æÉÏÖ±½ÓÌṩÎļþϵͳ¶ø²»ÊÇÄ£Äâ¿éÉ豸£©¡£ÓÃÓÚÉÁ´æµÄ JFS µÄµ±Ç°°æ±¾ÊÇ JFFS2£¨ÉÔºó½«ÔÚ±¾ÎÄÖÐÃèÊö£©¡£

Ó²¼þÄ£¿é

ÕâЩģ¿éÌṩ¶ÔÄÚ´æÉ豸µÄÎïÀí·ÃÎÊ£¬µ«²¢²»Ö±½ÓʹÓÃËüÃÇ¡£Í¨¹ýÉÏÊöµÄÓû§Ä£¿éÀ´·ÃÎÊËüÃÇ¡£ÕâЩģ¿éÌṩÁËÔÚÉÁ´æÉ϶Á¡¢²Á³ýºÍд²Ù×÷µÄʵ¼ÊÀý³Ì¡£

MTD Çý¶¯³ÌÐòÉèÖÃ

ΪÁË·ÃÎÊÌØ¶¨µÄÉÁ´æÉ豸²¢½«ÎļþϵͳÖÃÓÚÆäÉÏ£¬ÐèÒª½« MTD ×Óϵͳ±àÒëµ½ÄÚºËÖС£Õâ°üÀ¨Ñ¡ÔñÊʵ±µÄ MTD Ó²¼þºÍÓû§Ä£¿é¡£µ±Ç°£¬MTD ×Óϵͳ֧³ÖΪÊýÖÚ¶àµÄÉÁ´æÉ豸 ¡ª ²¢ÇÒÓÐÔ½À´Ô½¶àµÄÇý¶¯³ÌÐòÕý±»Ìí¼Ó½øÀ´ÒÔÓÃÓÚ²»Í¬µÄÉÁ´æÐ¾Æ¬¡£

ÓÐÁ½¸öÁ÷ÐеÄÓû§Ä£¿é¿ÉÆôÓöÔÉÁ´æµÄ·ÃÎÊ£ºMTD_CHAR ºÍ MTD_BLOCK¡£

MTD_CHAR Ìṩ¶ÔÉÁ´æµÄԭʼ×Ö·û·ÃÎÊ£¬¶ø MTD_BLOCK ½«ÉÁ´æÉè¼ÆÎª¿ÉÒÔÔÚÉÏÃæ´´½¨ÎļþϵͳµÄ³£¹æ¿éÉ豸£¨Ïó IDE ´ÅÅÌ£©¡£Óë MTD_CHAR ¹ØÁªµÄÉ豸ÊÇ /dev/mtd0¡¢mtd1¡¢mtd2£¨µÈµÈ£©£¬¶øÓë MTD_BLOCK ¹ØÁªµÄÉ豸ÊÇ /dev/mtdblock0¡¢mtdblock1£¨µÈµÈ£©¡£ÓÉÓÚ MTD_BLOCK É豸ÌṩÏó¿éÉ豸ÄÇÑùµÄÄ£Ä⣬ͨ³£¸ü¿ÉÈ¡µÄÊÇÔÚÕâ¸öÄ£Äâ»ù´¡ÉÏ´´½¨Ïó FTL ºÍ JFFS2 ÄÇÑùµÄÎļþϵͳ¡ LinuxÁªÃËÊÕ¼¯ÕûÀí ,תÌùÇë±êÃ÷ԭʼÁ´½Ó,ÈçÓÐÈκÎÒÉÎÊ»¶Ó­À´±¾Õ¾LinuxÂÛ̳ÌÖÂÛ

·ÖÒ³£º[1] 2 3
¡¾ÆÀÂÛ¡¿¡¾¼ÓÈëÊղؼС¿¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿¡¾¹Ø±Õ¡¿
¡ù Ïà¹ØÁ´½Ó
ÎÞÏà¹ØÐÅÏ¢