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.