Table of Contents, Show Frames, No Frames

µÚÊ®ËÄÕ 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Õ¾µã£¬ÓÐÐí¶àCD ROM³§ÉÌÒԷ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
ϵͳÖÐËùÓеÄÉ豸Çý¶¯¶¼Î»ÓÚ´ËĿ¼ÖС£ËüÓÖ½øÒ»²½»®·Ö³É¼¸ÀàÉ豸Çý¶¯£¬Èçblock¡£
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/bios32.cÖС£

½ø³Ì¼äͨѶ

ËùÓÐÕâЩ´úÂë¶¼ÔÚipcĿ¼ÖС£ÏµÍ³V IPC¶ÔÏó¶¼°üº¬Ò»¸ö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/*ÖС£buffer cache ºÍ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Îļþ¸ñʽ¡£


File translated from TEX by TTH, version 1.0.
Top of Chapter, Table of Contents, Show Frames, No Frames
© 1996-1999 David A Rusling copyright notice.