BBSˮľÇ廪վ¡Ã¾«»ªÇø

·¢ÐÅÈË: coolzhang (coolzhang), ÐÅÇø: Linux        
±ê  Ìâ: linux bible µÚÊ®ËÄÕ LinuxºËÐÄ×ÊÔ´ 
·¢ÐÅÕ¾: BBS Ë®Ä¾Ç廪վ (Mon Oct 25 18:00:40 1999) 
 
·¢ÐÅÈË: coolzhang (coolzhang), ÐÅÇø: UNIX 
±ê  Ìâ: linux bible µÚÊ®ËÄÕ LinuxºËÐÄ×ÊÔ´ 
·¢ÐÅÕ¾: Î人°×ÔÆ»Æº×Õ¾ (Mon Oct 25 17:31:19 1999), Õ¾ÄÚÐżþ 
µÚÊ®ËÄÕ LinuxºËÐÄ×ÊÔ´ 
±¾ÕÂÖ÷ÒªÃèÐðѰÕÒij¸öÌØÊâºËÐĺ¯ÊýʱÓõ½µÄLinuxºËÐÄ×ÊÔ´¡£ 
±¾Êé²¢²»ÒªÇó¶ÁÕß¾ßÓÐC±à³ÌÓïÑÔµÄÄÜÁ¦»òÕßÓµÓÐLinuxºËÐÄÔ´´úÂëÀ´Àí½âLinuxºËÐÄ 
¹¤×÷Ô­Àí¡£µ«ÊÇÈç¹û¶ÔºËÐÄÔ´´úÂë½øÐÐÔĶÁ½«¼ÓÉî¶ÔLinux²Ù×÷ϵͳµÄÀí½â¡£±¾ÕÂÌá 
¹©ÁËÒ»¸öºËÐÄÔ´´úÂëµÄ×ÛÊö¡£ 
´ÓÄÄÀïµÃµ½LinuxºËÐÄÔ´Âë 
ËùÓÐÖ÷ÒªLinux·Ö·¢°æ±¾£¨ÈçCraftworks£¬Debian£¬Slackware£¬Redhat£©¶¼°üº¬ÁË 
Ô´ÂëÔÚÄÚ¡£Í¨³£°²×°ÔÚÄãµÄLinuxϵͳºËÐľÍÊÇ´ÓÕâЩԴÂëÖй¹Ôì³öÀ´µÄ¡£ÓÉÓÚһЩ 
ÏÔÈ»µÄÒòËØ£¬ÕâЩԴÂë¶¼»ò¶à»òÉÙÓеã¹ýÆÚ¡£Äã¿ÉÒÔÔÚwww-appendixÒ»ÕÂÖеÄÄÇЩ 
WEBÕ¾µãÖеõ½×îеİ汾¡£ÕâЩվµã°üÀ¨ftp://ftp.cs.helsinki.fiÒÔ¼°ËùÓÐÆäËû 
¾µÏóÕ¾µãÖС£helsinkiµÄÕâ¸öWEBÕ¾µãÉϵÄLinuxÔ´ÂëÏÔÈ»ÊÇ×îеĵ«ÊÇMITºÍSunsite 
µÄÒ²²»»á²î̫Զ¡£ 
Èç¹ûÄãÎÞ·¨·ÃÎÊÕâЩWEBÕ¾µã£¬ÓÐÐí¶àCDROM³§ÉÌÒԷdz£ºÏÀíµÄ¼Û¸ñÌṩÁËÕâЩWEBÕ¾ 
µãµÄ¾µÏó¹âÅÌ¡£ÓÐЩ³§ÉÌ»¹Ìṩÿ¼¾¶ÈÉõÖÁÿ¸öÔ¸üÐµĶ©¹º·þÎñ¡£ÁíÍâÄãËùÔڵı¾ 
µØLinuxÓû§×éÒ²ÊÇÒ»¸öºÜºÃµÄ×ÊÔ´¡£ 
LinuxºËÐÄ´úÂëµÄ°æ±¾±àºÅºÜ¼òµ¥¡£ÈκÎżÊý±àºÅµÄºËÐÄ£¨Èç2.0.30£©¶¼ÊÇÎȶ¨µÄ·¢ 
ÐÐ°æ¶ø¼ÇÊý±àºÅµÄºËÐÄ£¨Èç2.1.42£©¶¼ÊÇÕýÔÚ¿ª·¢µÄºËÐÄ¡£±¾Êé»ùÓÚÎȶ¨µÄ2.0.30°æ 
±¾¡£¿ª·¢°æµÄºËÐľßÓÐËùÓÐ×îеÄÌØÕ÷²¢Ö§³Ö×îеÄÉ豸¡£¾¡¹ÜËüÃDz»ÊÇÄãËùÏ£ÍûµÄ 
ÄÇÑùÎȶ¨£¬µ«ÊǶÔÓÚLinuxÓû§ÍÅÌåÀ´ËµÊÔÓÃкËÐÄÊǷdz£ÖØÒªµÄ¡£ÒòΪËûÃǽ«Íê³É 
ÕâЩÆÀ²â¹¤×÷¡£µ±ÊÔÓ÷Ƿ¢Ðа汾ºËÐÄʱ±¸·Ýϵͳ×ÜÊÇÓкô¦µÄ¡£ 
ºËÐĵÄÐÞ¸ÄÒÔpatchÎļþÀ´·Ö·¢¡£¶øpatchʵÓóÌÐò±»ÓÃÀ´¶ÔһЩºËÐÄÔ´Âë½øÐб༭¡£ 
ÀýÈçÈç¹ûÏÖÔÚÄãÒѾ­ÓÐÁË2.0.39µÄºËÐÄ´úÂ뵫ÊÇÄãÏëÉý¼¶µ½2.0.30£¬ÄÇôÄãÔÚÈ¡µÃ 
2.0.30²¹¶¡Îļþºó¿ÉÒÔʵÓÃÒÔÏÂÃüÁîÀ´ÐÞ¸ÄÏÖ´æºËÐÄ£º 
$ cd /usr/src/linux 
$ patch -p1 < patch-2.0.30 
Ò»¸öÊÕ¼¯ºËÐIJ¹¶¡µÄÕ¾µãÊÇhttp://www.linuxhq.com¡£ 
ºËÐÄÔ´ÂëµÄ×éÖ¯ 
ºËÐÄÔ´ÂëµÄ¶¥²ãÊÇ/usr/src/linuxĿ¼£¬ÔÚ´ËĿ¼ÏÂÄã¿ÉÒÔ¿´µ½´óÁ¿×ÓĿ¼£º 
arch 
     Õâ¸ö×ÓĿ¼°üº¬ÁËËùÓÐÌåϵ½á¹¹Ïà¹ØµÄºËÐÄ´úÂë¡£Ëü»¹°üº¬Ã¿ÖÖÖ§³ÖµÄÌåϵ 
     ½á¹¹µÄ×ÓĿ¼£¬Èçi386¡£ 
include 
     Õâ¸öĿ¼°üÀ¨ÁËÓÃÀ´Öع¹ºËÐĵĴó¶àÊýincludeÎļþ¡£¶ÔÓÚÿÖÖÖ§³ÖµÄÌåϵ½á 
     ¹¹·Ö±ðÓÐÒ»¸ö×ÓĿ¼¡£ 
     ´ËĿ¼ÖеÄasm×ÓĿ¼ÖÐÊǶÔӦijÖÖ´¦ÀíÆ÷µÄ·ûºÅÁ¬½Ó£¬Èçinclude/asm-i386¡£ 
     ÒªÐ޸Ĵ¦ÀíÆ÷½á¹¹ÔòÖ»Ðè±à¼­ºËÐĵÄmakefile²¢ÖØÐÂÔËÐÐLinuxºËÐÄÅäÖóÌÐò¡£ 
init ´ËĿ¼°üº¬ºËÐÄÆô¶¯´úÂë¡£ 
mm 
     ´ËĿ¼°üº¬ÁËËùÓеÄÄÚ´æ¹ÜÀí´úÂë¡£Óë¾ßÌåÌåϵ½á¹¹Ïà¹ØµÄÄÚ´æ¹ÜÀí´úÂëλ 
     ÓÚarch/*/mmĿ¼Ï£¬Èçarch/i386/mm/fault.c ¡£ 
drivers 
     ÏµÍ³ÖÐËùÓеÄÉ豸Çý¶¯¶¼Î»ÓÚ´ËĿ¼ÖС£ËüÓÖ½øÒ»²½»®·Ö³É¼¸ÀàÉ豸Çý¶¯£¬Èçblo 
ck¡£ 
ipc ´ËĿ¼°üº¬Á˺ËÐĵĽø³Ì¼äͨѶ´úÂë¡£ 
modules 
     ´ËĿ¼½ö½ö°üº¬Òѽ¨ºÃµÄÄ£¿é¡£ 
fs 
     ËùÓеÄÎļþϵͳ´úÂë¡£ËüÒ²±»»®·Ö³É¶ÔÓ¦²»Í¬ÎļþϵͳµÄ×ÓĿ¼£¬ÈçvfatºÍext2¡£ 
 
kernel 
     Ö÷ÒªºËÐÄ´úÂ롣ͬʱÓë´¦ÀíÆ÷½á¹¹Ïà¹Ø´úÂë¶¼·ÅÔÚarch/*/kernelĿ¼Ï¡£ 
net ºËÐĵÄÍøÂ粿·Ö´úÂë¡£ 
lib 
     ´ËĿ¼°üº¬Á˺ËÐĵĿâ´úÂë¡£Óë´¦ÀíÆ÷½á¹¹Ïà¹Ø¿â´úÂë±»·ÅÔÚarch/*/lib/Ŀ¼Ï 
¡£ 
scripts 
     ´ËĿ¼°üº¬ÓÃÓÚÅäÖúËÐĵĽű¾Îļþ£¨ÈçawkºÍtk½Å±¾£©¡£ 
´ÓÄÄÀïÈëÊÖ 
ÔĶÁÏóLinuxºËÐÄ´úÂëÕâÑùµÄ¸´ÔÓ³ÌÐòÁîÈËÍû¶øÉúη¡£ËüÏóÒ»¸öÔ½¹öÔ½´óµÄÑ©Çò¡£ÔĶÁ 
ºËÐÄij¸ö²¿·Ö¾­³£ÒªÓõ½ºÃ¼¸¸öÆäËûµÄÏà¹ØÎļþ£¬²»¾ÃÄ㽫»áÍü¼ÇÄãÔ­À´ÔÚ¸Éʲô¡£ 
±¾Ð¡½Ú½«¸ø³öһЩÌáʾ¡£ 
ϵͳÆô¶¯Óë³õʼ»¯ 
ÔÚ»ùÓÚintelµÄϵͳÉÏ£¬Linux¿ÉÒÔͨ¹ýloadlin.exe»òÕßLILO½«ºËÐÄÔØÈëÄÚ´æ²¢½«¿Ø 
ÖÆ´«µÝ¸øËü¡£Õⲿ·Ö³ÌÐòλÓÚarch/i386/kerneld/head.S¡£´ËÎļþÍê³ÉһЩ´¦ÀíÆ÷ 
Ïà¹Ø²Ù×÷²¢Ìø×ªµ½init/main.cÖеÄmain()Àý³Ì¡£ 
ÄÚ´æ¹ÜÀí 
Õⲿ·Ö´úÂëÖ÷ҪλÓÚmmĿ¼Öе«Æä´¦ÀíÆ÷½á¹¹Ïà¹Ø²¿·Ö±»·ÅÔÚarch/*/mmÖС£Ò³Ãæ³ö 
´í´¦Àí´úÂëλÓÚmmϵÄmemory.cÎļþÖжøÄÚ´æÓ³ÉäÓëÒ³Ãæcache´úÂëλÓÚfilemap.cÖС£ 
 
buffer cacheÔòÔÚmm/buffer.cÖÐʵÏÖ£¬ swap cacheλÓÚmm/swap_state.cºÍ 
mm/swapfile.cÖС£ 
ºËÐÄ 
´ó¶àÊýͨÓôúÂëλÓÚkernelĿ¼Ï¶ø´¦ÀíÆ÷Ïà¹Ø´úÂë±»·ÅÔÚarch/*/kernelÖС£µ÷¶ÈÆ÷ 
λÓÚkernel/sched.c¶øfork´úÂëλÓÚkernel/fork.cÖС£µ×²ã²¿·Ö´¦Àí´úÂëλÓÚ 
include/linux/interrupt.hÖС£task_structµÄÃèÐðÔòÔÚ/linux/sched.hÖпÉÒÔÕÒµ½¡£ 
 
PCI 
PCIαÉ豸Çý¶¯Î»ÓÚdrivers/pci/pci.cÇÒÆäϵͳͨÓö¨Òå·ÅÔÚinclude/linux/pci.hÖС£ 
 
ÿ¸ö´¦ÀíÆ÷½á¹¹¾ßÓÐÌØÊâµÄPCI BIOS´úÂ룬Alpha AXPµÄλÓÚarch/alpha/kernel/bios3 
2.cÖ 
¡£ 
½ø³Ì¼äͨѶ 
ËùÓÐÕâЩ´úÂë¶¼ÔÚipcĿ¼ÖС£ÏµÍ³VIPC¶ÔÏó¶¼°üº¬Ò»¸öipc_perm½á¹¹£¬ËüÔÚ 
include/linux/ipc.hÖÐÃèÐð¡£ÏµÍ³VÏûÏ¢ÔÚipc/msg.cÖÐʵÏÖ£¬¹²ÏíÄÚ´æÔÚipc/shm.c 
¶øÐźŵÆÎ»ÓÚipc/sem.cÖС£¹ÜµÀÔÚipc/pipe.cÖÐʵÏÖ¡£ 
Öжϴ¦Àí 
ºËÐĵÄÖжϴ¦Àí´úÂë×ÜÊÇÓë΢´¦ÀíÆ÷½á¹¹Ïà¹Ø¡£IntelϵͳµÄÖжϴ¦Àí´úÂëλÓÚ 
arch/i386/kernel/irq.cÖУ¬Æä¶¨ÒåλÓÚinclude/asm-i386/irq.hÖС£ 
É豸Çý¶¯ 
LinuxºËÐÄÔ´ÂëµÄ´ó¶àÊý¶¼ÊÇÉ豸Çý¶¯¡£ËùÓÐLinuxµÄÉ豸Çý¶¯Ô´Âë¶¼·ÅÔÚdriversÄ¿ 
¼Öв¢·Ö³ÉÒÔϼ¸Àࣺ 
/block 
     ¿éÉ豸Çý¶¯°üÀ¨IDE£¨ÔÚide.cÖУ©Çý¶¯¡£Èç¹ûÄãÏëѰÕÒÕâЩ¿É°üº¬ÎļþϵͳµÄÉè 
     ±¸µÄ³õʼ»¯¹ý³ÌÔòÓ¦¸ÃÔÚdrivers/block/genhd.cÖеÄdevice_setup()¡£µ±°²×° 
     Ò»¸önfsÎļþϵͳʱ²»µ«Òª³õʼ»¯Ó²ÅÌ»¹Ðè³õʼ»¯ÍøÂç¡£¿éÉ豸°üÀ¨IDEÓëSCSIÉ豸 
¡£ 
/char ´ËĿ¼°üº¬×Ö·ûÉ豸µÄÇý¶¯£¬Èçttys£¬´®ÐпÚÒÔ¼°Êó±ê¡£ 
/cdrom 
     °üº¬ËùÓÐLinux CDROM´úÂë¡£ÔÚÕâÀï¿ÉÒÔÕÒµ½Ä³Ð©ÌØÊâµÄCDROMÉ豸 
    £¨ÈçSoundblaster CDROM£©¡£ IDE½Ó¿ÚµÄCDÇý¶¯Î»ÓÚdrivers/block/ide-cd.c 
     ÖжøSCSI CDÇý¶¯Î»ÓÚdrivers/scsi/scsi.cÖС£ 
/pci 
     Ëü°üº¬ÁËPCIαÉ豸Çý¶¯Ô´Âë¡£ÕâÀï¿ÉÒÔÕÒµ½¹ØÓÚPCI×ÓϵͳӳÉäÓë³õʼ»¯µÄ´ú 
     Âë¡£ÁíÍâλÓÚarch/alpha/kernel/bios32.cÖеÄAlpha AXP PCI²¹¶¡´úÂëÒ²ÖµµÃÒ» 
¶Á¡£ 
/scsi ÕâÀï¿ÉÒÔÕÒµ½ËùÓеÄSCSI´úÂëÒÔ¼°LinuxÖ§³ÖµÄSCSI É豸µÄÉ豸Çý¶¯¡£ 
/net °üº¬ÍøÂçÇý¶¯Ô´Â룬Èçtulip.cÖеÄDECChip 21040 PCIÒÔÌ«ÍøÇý¶¯¡£ 
/sound 
     ËùÓеÄÉù¿¨Çý¶¯Ô´Âë¡£ 
Îļþϵͳ 
EXT2ÎļþϵͳµÄÔ´ÂëλÓÚfs/ext2ÖУ¬ÆäÊý¾Ý½á¹¹¶¨ÒåλÓÚinclude/linux/ext2_fs.h, 
ext2_fs_i.h ÒÔ¼°ext2_fs_sb.hÖС£ÐéÄâÎļþϵͳÊý¾Ý½á¹¹ÔÚinclude/linux/fs.hÖР
ÃèÐðÇÒÆä´úÂëÔÚfs/*ÖС£buffercache ºÍupdateºËÐĺǫ́½ø³ÌÔÚfs/buffer.cÖÐʵÏÖ¡£ 
ÍøÂç 
ÍøÂç´úÂëλÓÚnetĿ¼¶ø´ó¶àÊý°üº¬ÎļþλÓÚinclude/netÖС£BSDÌ×½Ó¿Ú´úÂëλÓÚ 
net/socket.cÖС£IPV4µÄINETÌ×½Ó¿Ú´úÂëλÓÚnet/ipv4/af_inet.cÖС£Í¨ÓÃЭÒé 
Ö§³Å´úÂ루°üÀ¨sk_buff´¦Àí¹ý³Ì£©Î»ÓÚnet/coreÖУ¬Í¬Ê±TCP/IPÍøÂç´úÂëλÓÚ 
net/ipv4ÖС£ÍøÂçÉ豸Çý¶¯Î»ÓÚdrivers/netÖС£ 
Ä£¿é 
ºËÐÄÄ£¿é´úÂ벿·ÖλÓÚºËÐÄÖв¿·ÖλÓÚmodules°üÖС£ºËÐÄ´úÂëλÓÚkernel/modules.c 
ÆäÊý¾Ý½á¹¹ÓëºËÐĺǫ́½ø³ÌkerneldÏûϢλÓÚinclude/linux/module.hºÍ 
include/linux/kerneld.hĿ¼ÖС£Í¬Ê±±ØÒªÊ±Ðè²éÔÄinclude/linux/elf.hÖеĠ
ELFÎļþ¸ñʽ¡£ 
--  
 
-- 
¡ù À´Ô´:¡¤BBS Ë®Ä¾Ç廪վ bbs.net.tsinghua.edu.cn¡¤[FROM: 202.114.2.2] 

BBSˮľÇ廪վ¡Ã¾«»ªÇø