Kernel HOWTO ¤¤Ä¶ª© §@ªÌ: Brian Ward [1]bri@blah.math.tu-graz.ac.at ĶªÌ: [2]C.W.Huang & [3]Asd L. Chen v0.80, 26 May 1997. ½Ķ¤é´Á: 25-29 August 1997 _________________________________________________________________ ³o¬O¤@¥÷Ãö©ó¦p¦ó°t¸m¡B½sĶ¡B¤É¯Å®Ö¤ß¥H¤Î±ÆÃø¸Ñ¯Éªº¸Ô²Ó«ü¤Þ¡D _________________________________________________________________ 1. ²¤¶ * 1.1 ½Ð¥ý¬Ý¦¹! * 1.2 ¤å³¹­·®æ»¡©ú 2. ­«­n°ÝÃD»P¸Ñµª * 2.1 ¤£ºÞ«ç»ò¼Ë¡A®Ö¤ß¨ì©³¬O°µ¤°»òªº? * 2.2 §Ú¬°¤°»ò­n§ó·s®Ö¤ß? * 2.3 ¸û·sªº®Ö¤ß¤ä´©¨º¨ÇµwÅé? * 2.4 §Ú»Ý­n¨º­Óª©¥»ªº gcc ©Î¬O libc ? * 2.5 ¤°»ò¬O¥i¸ü¤J¼Ò²Õ? * 2.6 §Ú»Ý­n¦h¤jªººÏºÐªÅ¶¡? * 2.7 ³o»Ý­n¦h¤[ªº®É¶¡? 3. ¦p¦ó¯u¥¿¶i¦æ®Ö¤ßªº°t¸m? * 3.1 ¨ú±o­ì©lµ{¦¡½X * 3.2 ¸Ñ¶}­ì©lµ{¦¡½Xªº¥]¸Ë * 3.3 °t¸m®Ö¤ß * 3.4 ²{¦b©O? (The Makefile) 4. ½sĶ®Ö¤ß * 4.1 ²M°£»P½T»{ * 4.2 ½sĶ®É´Á * 4.3 ¨ä¥L¥i¥H``make''ªºªF¦è * 4.4 ¦w¸Ë®Ö¤ß 5. ­×¸É®Ö¤ß * 5.1 ¨Ï¥Î­×¸ÉÀÉ * 5.2 ¦pªG¦³¿ù»~µo¥Í * 5.3 ¬å±¼ .orig ÀÉ®× * 5.4 ¨ä¥¦ªº­×¸ÉÀÉ 6. ªþ¥[ªº®M¥ó * 6.1 kbd * 6.2 util-linux * 6.3 hdparm * 6.4 gpm 7. ¤@¨Ç³´¨À * 7.1 make clean * 7.2 ¥¨¤j©Î½wºCªº®Ö¤ß * 7.3 ®Ö¤ßµLªk½sĶ * 7.4 ·sª©ªº®Ö¤ß¦ü¥G¤£¯à±Ò°Ê * 7.5 §A§Ñ¤F°õ¦æ LILO¡A©Î¨t²Î®Ú¥»¤£¯à±Ò°Ê * 7.6 ¨t²Îªí¥Ü `warning: bdflush not running' * 7.7 ¨t²Î»¡ undefined symbols ¦Ó¥BµLªk½sĶ * 7.8 µLªkÅý§Úªº IDE/ATAPI CD-ROM ¥¿±`¤u§@ * 7.9 ¨t²ÎÅã¥ÜÃö©ó obsolete routing requests ªº©_©Ç°T®§ * 7.10 ¨¾¤õÀð¥\¯àµLªk¦b 1.2.0 ¤W¤u§@ * 7.11 ``Not a compressed kernel Image file'' («DÀ£ÁY®Ö¤ß¬M¹³ÀÉ) * 7.12 ¤É¯Å¦Ü 1.3.x «á¦b±±¨î¥x²×ºÝ¾÷¤Wªº°ÝÃD * 7.13 ®Ö¤ß¤É¯Å«á¦ü¥GµLªk½sĶªF¦è * 7.14 ¼W¥[¤W­­ 8. ¤É¯Å¦Ü 2.0.x ªºª`·N¨Æ¶µ 9. ¥i¸ü¤J¼Ò²Õ * 9.1 ¦w¸Ë¼Ò²Õ¤u¨ã * 9.2 »P®Ö¤ßµo¦æªº¼Ò²Õ 10. ¨ä¥¦°t¸m¿ï¶µ * 10.1 General setup (¤@¯ë³]©w) * 10.2 Networking options (ºô¸ô¿ï¶µ) 11. ¯¦³Z©M§Þ¥© * 11.1 ­«¾É make ©Î¬O patch «ü¥Oªº¿é¥X * 11.2 ±ø¥ó¦¡ªº®Ö¤ß¦w¸Ë * 11.3 ®Ö¤ß§ó·s 12. ¨ä¥¦¥i¯à¬ÛÃö¦³¥Îªº HOWTOs 13. Âø¶µ * 13.1 §@ªÌ * 13.2 ¹w©w¥Ø¼Ð * 13.3 °^ÄmªÌ * 13.4 ª©ÅvÁn©ú¡A³\¥i¡A½Ñ¦p¦¹Ãþªº _________________________________________________________________ 1. ²¤¶ §A¬O§_»Ý­n¾\Ū³o¥÷¤å¥ó? ¦pªG§A¦³¤U¦C¥ô¦ó¯gª¬¤§¤@ªº¸Ü¡A¬Oªº¡G * ``«u§r¡I³o®M wizzo-46.5.6 ³nÅ黡¥¦»Ý­n 1.8.193 ª©ªº®Ö¤ß¡A¦Ó§Ú«o¤´µM ¥u¦³ 1.0.9 ª©¡I'' * ¤ñ¸û·sªº®Ö¤ß¤§¤@ùØ­±¦³§A¥¿¦n»Ý­nªº¤@­Ó³]³ÆÅX°Êµ{¦¡¡D * §A¹ï©ó¦p¦ó½sĶ®Ö¤ß¯uªº¤@µL©Òª¾¡D * ``¦b README Àɮ׸̭±¯uªº´N¬O¥þ³¡ªº¸ê®Æ¤F¶Ü?'' * §A¨Ó¡A§A¸Õ¡A¥¦ÁÙ¬O¤£°Ê¡D * §A»Ý­n¬Y¨Æµ¹¤©¤@ª½­n¨D§A¬°¥L­Ì¦w¸Ë®Ö¤ßªº¤H­Ì¡D 1.1 ½Ð¥ý¬Ý¦¹! ³o¥÷¤å¥ó¤¤ªº¬Y¨Ç½d¨Ò°²³]§A¦³ GNU tar¡Afind ¥H¤Î xargs¡D ³o¨Ç¬O Linux ®M ¥ó¸Ìªº¼Ð·Ç¤u¨ã¡AÀ³¸Ó¤£¬O°ÝÃD¡D ¤å¥ó¤¤¤]°²³]§Aª¾¹D§A¨t²ÎªºÀɮרt²Î¬[ºc¡A ¦pªG§A¨Ã¤£ª¾¹D¡A³Ì¦n»°§Ö¼g¤U¤@¥÷ mount «ü¥O¦b¨t²Î¥¿±`¹B§@¤U¡A©ÒÅã¥Üªºµ² ªG§@¬°°Ñ¦Ò(©ÎªÌ¬O¤@¥÷ /etc/fstab ªº¦Cªí¡A¦pªG§A¯à°÷¬Ý±oÀ´)¡D ³o¨Ç¸ê°T«Ü ­«­n¡A¦Ó¥B¡A°£«D§A­«·s¤À³Î©Î¥[¤J·sªººÏºÐ¡A­«·s¦w¸Ë§Aªº¨t²Î¥H¤Î°µ½Ñ¦p¦¹ Ãþªº¾Þ§@¡A§_«h¥¦­Ì¤£·|ÅÜ°Ê¡D ¥»¤å¼g§@®É³Ì·s``²£«~''ªº®Ö¤ßª©¥»¸¹½X¬O 2.0.30¡A¤]´N¬O»¡¥»¤åªº°Ñ¦Ò¤Î¨Ò¤l ¬O¹ïÀ³©ó¸Óª©¥»ªº¡D ÁöµM§Ú¹Á¸ÕÅý³o½g¤å³¹¾¨¶q¸òª©¥»µLÃö¡A®Ö¤ß«o¤£Â_¦a¦bµo ®i¤¤¡D ¦]¦¹¦pªG§A¨ú±o¤@·sªºª©¥»¡A¥¦¤£¥iÁקK¦a·|¦³¤@¨Ç¤£¦P¡D ·íµM¡A³oÀ³ ¸Ó¤£·|³y¦¨¤j°ÝÃD¡A¦ý¥¦¥i¯à·|»s³y¤@¨Ç²V²c¡D ¦³¨âºØª©¥»ªº Linux ®Ö¤ß­ì©l½X¡A``²£«~'' »P ``µo®i¤¤'' ªº¡D ²£«~ª©¥»±q 1.0.x ¶}©l¦Ó¥B¥Ø«e¬O¥H°¸¼Æ½s¸¹µoªíªº; 1.0.x ¬O²£«~¡A1.2.x ¬O²£«~¡A 2.0.x ¤]¬O¡D³o¨Çª©¥»À³¸Ó¤ñ¸ûí©w¡A¦bµoªí®É¬O¨S¦³¯äÂÎ(bug)ªºª©¥»¡D µo®i ¤¤ªº®Ö¤ß (1.1.x, 1.3.x µ¥µ¥) ¬O§@¬°´ú¸Õ¥Îªº¡Aµ¹¨º¨Ç·Q­n´ú¸Õ³Ì·s¦Ó¥B¥i¯à ¦³³\¦h¯äÂΪº¤H¥Îªº¡D ¤w¸gĵ§i¹L§A¤F¡D 1.2 ¤å³¹­·®æ»¡©ú ¬Ý°_¨Ó¹³³o¼Ë text ªº¤å¦r©ÎªÌ¬O¬Y¼Ë±N¥X²{§Aªº¿Ã¹õ¤WªºªF¦è¡A¤@­ÓÀɦW¡A ©Î ¬O¬Y¼Ë¥i³Qª½±µÁä¤JªºªF¦è¡A¹³¬O©R¥O¡A©Î©R¥Oªº¿ï¶µ(¦pªG§A¬Ýªº¬O¯Â¤å¦rÀÉ®× ¡A¥¦¬Ý°_¨Ó¨S¤°»ò¤£¦P)¡D ©R¥O»P¨ä¥¦ªº¿é¤J¸g±`³Q®Ø°_¨Ó(¥Î` ')¡A³o¸g±`¤Þ°_ ¨å«¬ªº¼ÐÂI²Å¸¹°ÝÃD: ¦pªG³o¼Ëªº¶µ¥Ø¥X²{¦b¥y¤lªº³Ì«á­±¡A¤H­Ì®É±`·|¦b©R¥O «á­±¥[¤W¤@¥y¸¹ `.'¡A ¦]¬°¬ü°ê¤Hªº¤Þ¸¹²ßºD±N¥y¸¹©ñ¤J¤Þ¸¹¸Ì­±¡D §Y¨Ï¥Î±` ÃÑ(¦Ó¤£©¯ªº¬O¡A³o°²³]¤F¾Ö¦³¦¹``±`ÃÑ''ªº¤H¬O²ßºD©ó¬ü°ê¦¡ªº¤Þ¸¹)·Q¤]ª¾¹D À³¥ý±N³o¼ÐÂI¥h±¼¡A¦ý«Ü¦h¤HÁ`¬O§Ñ°O¡D ©Ò¥H¦b¦¹±¡§Î¤U§Ú±N¥y¸¹©ñ¦b¤Þ¸¹¥~ÀY ¡D´«¥y¸Ü»¡¡A·í§Ú¥s§A­n¥´ ``make config'' ®É¡A §Ú·|¼g `make config'¡A¦Ó ¤£¬O `make config.'¡D 2. ­«­n°ÝÃD»P¸Ñµª 2.1 ¤£ºÞ«ç»ò¼Ë¡A®Ö¤ß¨ì©³¬O°µ¤°»òªº? ¦b Unix ¨t²Î¤¤¡A¹³¬O§Aªºµ{¦¡»PµwÅ骺¤@­Ó¥òµôªÌ¡D ­º¥ý¡A¥¦¬°©Ò¦³°õ¦æ¤¤ªº µ{¦¡(µ{§Ç)°µ°O¾ÐÅéºÞ²z¡A ¨Ã¥B½T«O¥¦­Ì³£¯à°÷¥­§¡(©Î¤£¥­§¡¡A¦pªG§AÄ@·N)ªº ¤À¨É³B²z¾÷ªº¹Bºâ¸ê·½¡D ¦¹¥~¡A¥¦ÁÙ´£¨Ñ¤F¤@­Ó¨}¦nªº¤¶­±Åý­è­è´£¨ìªºµ{¦¡¯à ³z¹L¥¦»P§AªºµwÅé·¾³q¡D ¨ä¹ê®Ö¤ß©Ò³B²zªº¤u§@¤ñ³oÁÙ­n§ó½ÆÂø¤@¨Ç¡A¤£¹L³o¨Ç°ò¥»ªº¥\¯à¬O³Ì¥²­nª¾¹D ªº¡D 2.2 §Ú¬°¤°»ò­n§ó·s®Ö¤ß? ¤ñ¸û·sªº®Ö¤ß¤@¯ë¨Ó»¡·|´£¨Ñ§ó±jªº¯à¤O¨Ó»P§ó¦hºØ©_©_©Ç©ÇªºµwÅé·¾³q(¤]´N¬O »¡¡A¥¦­Ì¾Ö¦³§ó¦hªº³]³ÆÅX°Êµ{¦¡)¡A ¥¦­Ì¯à°÷¦³§ó¦nªº¦æµ{ºÞ²z¡A¥¦­Ì¯à°÷°õ ¦æªº¤ñªºª©¥»§ó¦³®Ä²v¡A¥¦­Ì¥i¯à¤ñªºª©¥»¨Óªº§óí©w¡A¦Ó¥B¥¦­Ì­×¥¿¤F ª©¸Ìªº¤@¨Ç¿ù»~¡D ¤j³¡¤Àªº¤H¬O¦]¬°¥L­Ì»Ý­n¨º¨Ç·sªº³]³ÆÅX°Êµ{¦¡¥H¤Î¿ù»~­× ¥¿ªº³¡¥÷¦Ó§ó·s®Ö¤ß¡D 2.3 ¸û·sªº®Ö¤ß¤ä´©¨º¨ÇµwÅé? ½Ð¬Ý [4]Hardware-HOWTO ¤å¥ó¡D ¥t¤@­Ó¤èªk¬O¡A§A¥i¥H¬d¬Ý Linux ­ì©lµ{¦¡½X ¤¤ªº `config.in' ÀÉ¡A ©ÎªÌ´N¦b·í§A¸ÕµÛ¥h `make config' ®É§ä¥X¨Ó¡D `make config' ±N·|Åý§A¬Ý¨ì¼Ð·Çªº®Ö¤ß­ì©lµ{¦¡½X¤ä´©ªº©Ò¦³µwÅé¡A¦ý³o¨Ã¤£ ¬O Linux ©Ò¤ä´©ªº¥þ³¡µwÅé¡F ³\¦h´¶³qªº³]³ÆÅX°Êµ{¦¡(¹³¬O PCMCIA ÅX°Êµ{¦¡ ¥H¤Î¬Y¨ÇºÏ±a¾÷ªºÅX°Êµ{¦¡)¬O­Ó§OºûÅ@¤Îµo¦æªº¥i¸ü¤J¼Ò²Õ¡D 2.4 §Ú»Ý­n¨º­Óª©¥»ªº gcc ©Î¬O libc ? Linus ¹ï³o­Ó°ÝÃDªº«Øij©ñ¦b Linux ­ì©lµ{¦¡ªº README ÀÉ®×ùØÀY¡D ¦pªG§A¨S ¦³¸Óª©¥»©Î¬O§ó·sªºª©¥»¡A·sª©ªº gcc À³¸Ó·|§i¶D§A¬O§_»Ý­n§ó·s libc ªºª©¥» ¡D ³o¨â­Ó¾Þ§@³£¤£·|¦³¤°»ò°ÝÃD¡A¥u­n·ÓµÛ»¡©ú°µ´N¥i¥H¤F¡D 2.5 ¤°»ò¬O¥i¸ü¤J¼Ò²Õ? ¥¦­Ì¬O®Ö¤ßªº¤@³¡¤À(³q±`¬O³]³ÆÅX°Êµ{¦¡)¡A¦ý¬O¨Ã¨S¦³½sĶ¨ì®Ö¤ß¸Ì­±¥h¡D ¥¦ ­Ì³Q¤À§O½sĶ¡AµM«á´X¥G¥i¥H¦b¥ô¦ó®É­Ô±N¥¦­Ì´¡¤J¹B§@¤¤ªº®Ö¤ß©Î±q¤¤¨ú¥X¡D ¥Ñ©ó¥¦ªº«K§Q©Ê¡A³o¤w¸g¦¨¬°¤@ºØ¼W¥[ªF¦è¨ì®Ö¤ß¸Ì¥hªº¸û¦n¤è¦¡¡D ³\¦h±`¥Îªº ³]³ÆÅX°Êµ{¦¡¡A¨Ò¦p PCMCIA ÅX°Êµ{¦¡¥H¤Î QIC-80/40 ºÏ±a¾÷ªºÅX°Êµ{¦¡´N¬O¥i ¸ü¤J¼Ò²Õ¡D 2.6 §Ú»Ý­n¦h¤jªººÏºÐªÅ¶¡? ³o»P§A¨t²Îªº¯S®í°t¸m¦³Ãö¡D­º¥ý¡AÀ£ÁY¹L«áªº Linux ­ì©lµ{¦¡½X¦b 2.0.10 ª© ®É¬ù¦û 6 MB¡D ³\¦h¯¸¥x¦b¸ÑÀ£ÁY«á¤´·|«O¯d¤@¥÷¡D¸ÑÀ£ÁY¥H«á³o±N¦û±¼¬ù 24 MB¡D ¦ý³oÁÙ¤£¬O¥þ³¡ ¢w §A±N·|»Ý­n§ó¦hªººÏºÐªÅ¶¡¨Ó¹ê»Ú½sĶ³o¨ÇªF¦è¡D ³o »P§A°t¸m¦h¤ÖªF¦è¨ì§Aªº®Ö¤ß¸ÌÀY¥h¦³Ãö¡D¨Ò¦p¡A¦b¬Y³¡¾÷¾¹¤W¡A§Ú¦³ºô¸ô ¡A3Com 3C503 ªºÅX°Êµ{¦¡¡A ¨Ã¥B°t¸m¤F¤TºØÀɮרt²Î¡A¦Ó³o¥þ³¡¦@»Ý­n 30 MB ¡D¥[¤WÀ£ÁY¹Lªº linux ­ì©lµ{¦¡½X¡A³o­Ó°t¸m¤j·§»Ý­n¥Î±¼§A 36MB ¡D ¦b¥t¥~ ¤@­Ó¨t²Î¤W¡A¤£»Ý­n¤ä´©ºô¸ô³]³Æ(¦ý¤´µM»Ý­n¤ä´©ºô¸ô)¡A¥[¤W­µ®Ä¥d¡Aµ²ªG¦Y ±¼§ó¦hªÅ¶¡¡D ÁÙ¦³¡A¤@­Ó·sª©¥»ªº®Ö¤ß´X¥GÁ`¬O¤ñª©¥»ªº¦û§ó¤jªºªÅ¶¡¡D ©Ò ¥H¡A¤@¯ë¨Ó»¡¡A¦pªG§A¦³³\¦hºØµwÅé³]³Æªº¸Ü¡A½T©w§A¦³¨¬°÷ªºµwºÐªÅ¶¡¨Ó®e¯Ç ³o­Ó°t¸m¡D (¥H¤µ¤éªº»ù®æ¨Ó»¡¡A¹ï©óÀx¦sªÅ¶¡ªº°ÝÃD§Ú¤£¯à¤£«Øij§A¦A¶R¤@¥x ºÏºÐ¾÷¡D) 2.7 ³o»Ý­n¦h¤[ªº®É¶¡? ¹ï¤j³¡¥÷ªº¤H¦Ó¨¥¡Aµª®×¬O``«Ü¤[''¡D§Aªº³B²z¾÷³t«×¦³¦h§Ö¡A¥H¤Î§A¾Ö¦³ªº°O ¾ÐÅé¼Æ¶q¦³¦h¤Ö±N¬O¨M©w©Ò»Ý®É¶¡ªº¥D­n¦]¯À¡A ¦ý¬O¡A¦b§â¦h¤ÖªF¦è°t¸m¨ì®Ö¤ß ¸ÌÀY¥h³o¤è­±ÁÙ¬O¥i¥H°µÂI§V¤O¡D ¦b¤@¥x¦³ 16 MB °O¾ÐÅ骺 486DX4-100 ¹q¸£ ¤W¡A¤@­Ó¦³¤­ºØÀɮרt²Î¡B¤ä´©ºô¸ô¡B¥H¤Î­µ®Ä¥dÅX°Êµ{¦¡ªº 1.2 ª©®Ö¤ß¥i¥H¦b ¤G¤Q¤ÀÄÁ¥H¤º§¹¦¨¡D Ãþ¦üªº°t¸m¡A¦b¤@¥x 386DX/40(8 MB °O¾ÐÅé)¤W¤j¬ù»Ý­n­n 1.5 ­Ó¤p®É¡D ¦b½sĶ®Ö¤ß®É³q±`¤@¨Ç¦nªº«Øij¬O¥h³Ü¤@ÂI©@°Ø¡A¬ÝÂI¹qµø¡A´¨Ç ¤ò½u¡A©Î¥ô¦ó§A³ßÅwªº¨Æ¡D ¦pªG§Aªº¾÷¾¹¯uªº«ÜºCªº¸Ü§A¤]¸Ó´«¥x¸û§Öªº¾÷¾¹¡D 3. ¦p¦ó¯u¥¿¶i¦æ®Ö¤ßªº°t¸m? 3.1 ¨ú±o­ì©lµ{¦¡½X §A¥i¥H¸g¥Ñ°Î¦W ftp ¯¸±q ftp.funet.fi ªº [5]/pub/Linux/PEOPLE/Linus¡A ©Î ¬O¨ä¥¦ MIRROR ¯¸¨ú±o¡D([Ķµù] ¥xÆW¥i±q [6]ftp.edu.tw ¨ú±o¡D) ÀɮצWºÙ¤@ ¯ë¬O¥H¼Ð°O¦¨ linux-x.y.z.tar.gz ¬°¥Nªí¡A¨ä¤¤ªº x.y.z ¬Oª©¥»½s¸¹¡D ¸û·s ªº(§ó¦nªº?)ª©¥»¥H¤Î­×¸ÉÀɤ@¯ë¬O©ñ¦bÃþ¦ü `v1.1' ¥H¤Î `v1.2' ³o¼Ëªº¤l¥Ø¿ý ¤U¡D ¼Æ¦r³Ì¤jªº¬O³Ì·sªºª©¥»¡A¦Ó¥B³q±`¬O``´ú¸Õª©''¡A¤]´N¬O»¡¦pªG§A¹ï beta ©Î alpha ª©·P¨ì¤£¦wªº¸Ü¡A§AÀ³¸Ó°±¯d¦b¥D­nªºµo¦æª©¥»¤W¡D ±j¯P«Øij§A¥h§ä mirror ªº ftp ¸`ÂI¡A¦Ó¤£­nª½±µ¨ì ftp.funet.fi ¥h! ©³¤U¬O ¤@¨Ç mirrors ¥H¤Î¨ä¥L¸`ÂIªºÂ²­n¦Cªí: USA: sunsite.unc.edu:/pub/Linux/kernel USA: tsx-11.mit.edu:/pub/linux/sources/system UK: sunsite.doc.ic.ac.uk:/pub/unix/Linux/sunsite.unc-mirror/kernel Austria: ftp.univie.ac.at:/systems/linux/sunsite/kernel Germany: ftp.Germany.EU.net:/pub/os/Linux/Local.EUnet/Kernel/Linus Germany: sunsite.informatik.rwth-aachen.de:/pub/Linux/PEOPLE/Linus France: ftp.ibp.fr:/pub/linux/sources/system/patches Australia: sunsite.anu.edu.au:/pub/linux/kernel ¤@¯ë¨Ó»¡¡Asunsite.unc.edu ªº mirror ¯¸¬O«Ü¦n§äªº¡D ÀÉ®× /pub/Linux/MIRRORS ¥]§t¤F¤wª¾ªº mirror ¸`ÂI¡D ¦pªG§A¨S¦³¿ìªk¤W ftp ¡A¦³ ­Ó¦s©ñ linux ªº BBS ¨t²Î¦Cªí·|©w´Á¥Zµn¦b comp.os.linux.announce ¤W¡A¸Õ µÛ¨ì¨ºÃä¥h§ä¤@¤U¡D ¦pªG§A·Q´M§ä¤@¯ëªº Linux ¸ê°T»P®M¥ó¡A¥h [7]http://www.linux.org/¡D 3.2 ¸Ñ¶}­ì©lµ{¦¡½Xªº¥]¸Ë ½T©w§A¬O¥H`root'ªº¨­¥÷ñ¤J¡AµM«á cd ¨ì /usr/src¡D ¦pªG§A¦w¸Ë Linux ®É¤w ¸g¦w¸Ë¤F®Ö¤ß­ì©lµ{¦¡½X¡A¦b³o­Ó¥Ø¿ý©³¤UÀ³¸Ó¤w¸g¦s¦b¤@­Ó¥s°µ `linux' ªº¤l ¥Ø¿ý¡D ³o¬Oª©ªº linux ­ì©lµ{¦¡½X¡D¦pªG§AÁÙ¦³ºÏºÐªÅ¶¡¦Ó¥B·Q­nª±±o¦w¥þ ¤@ÂI¡A¨º»ò§A·|·Q­n«O¯d³o­Ó¤l¥Ø¿ýªº¡D ¦³­Ó¦n¥D·N¬O®Ú¾Ú§A¥Ø«e¨Ï¥Îªº®Ö¤ßª© ¥»¨Ó­×§ï³o­Ó¤l¥Ø¿ýªº¦WºÙ¡D `uname -r' ³o­Ó«ü¥O±N·|§i¶D§A¥Ø«eªº®Ö¤ßª©¥» ¡D ©Ò¥H¡A¦pªG `uname -r' Åã¥Ü `1.0.9'¡A§A´N¥i¥H§â `linux' §ï¦W(¥Î `mv')¬° `linux-1.0.9'¡D ¦pªG§A¬O­Ó¾|²õ«¬ªº¤H¡A¨º´Nª½±µ§â³o­Ó¤l¥Ø¿ý²M°£ ±¼¡D µL½×¬O­þ¤@ºØ±¡ªp¡A¤Ï¥¿¥u­n½T©w¦b¸Ñ¶}¥þ³¡ªº­ì©lµ{¦¡½X¤§«e ¡A/usr/src ¥Ø¿ý¤U¨S¦³ `linux' ³o­Ó¤l¥Ø¿ý´N¹ï¤F¡D ¦b /usr/src ¥Ø¿ý¤U¡A¥Î `tar zxpvf linux-x.y.z.tar.gz' ¨Ó¸Ñ¶}­ì©lµ{¦¡½X ªº¥]¸Ë (¦pªG§A®³¨ìªº¬O .tar ªºÀɮסA«á­±¨S¦³¥[¤W .gz¡A¨º´N¥Î `tar xpvf linux-x.y.z.tar')¡D §A±N·|¬Ý¨ì­ì©lµ{¦¡ªº¤º®e­¸³u¦Ó¹L¡D·í¥¦§¹¦¨¥H«á¡A¦b /usr/src ±N·|¥X²{¤@­Ó·sªº `linux' ¤l¥Ø¿ý¡D cd ¨ì linux ¥Ø¿ý¤UµM«á¬d¬Ý README ÀÉ¡A ¸Ì­±À³¸Ó·|¦³¤@¬q¼ÐÃD¬° `INSTALLING the kernel' ©ÎÃþ¦üªº¤å¦r ¡D ¦pªG¾A·íªº¸Ü¡A¥ý¨Ì·Ó»¡©ú¸Ìªº«ü¥Ü ¢w «Ø¥ß¸Ó¦³ªº²Å¸¹Ãìµ²¡A²¾°£¹L®Éªº .o ÀÉ®×µ¥µ¥µ¥½Ñ¦p¦¹Ãþªº¤u§@¡D 3.3 °t¸m®Ö¤ß ª`·N¡G³o³¡¥÷¤º®e¦³¨Ç¬O­«ÂÐ Linus ªº README Àɮפ¤ªº¬ÛÀ³³¹¸`©Î¥[¥H­×­q¡D ¦b /usr/src/linux ¤U°õ¦æ `make config' ³o­Ó©R¥O±N·|±Ò©l¤@­Ó«ü¥O½Z¡A ¦Ó ³o­Ó«ü¥O½Z·|°Ý§A¦UºØ°ÝÃD¡D¥¦»Ý­n bash ¡A©Ò¥H­n½T©w bash ¬O /bin/bash ¡A/bin/sh ©Î $BASH¡D ÁÙ¦³¨ä¥¦ºØ `make config' ªº¤è¦¡§A¥i¯à·|ı±o§ó®e©ö¨Ï¥Î¡D ¹ï¨º¨Ç°õ¦æ X Window ªº¤H§A¦pªG¦³¸Ë Tk ªº¸Ü¥i¥H¸ÕµÛ¥Î `make xconfig'¡D `make menuconfig' ¬Oµ¹¨º¨Ç¦³¸Ë (n)curses ¦Ó¥B³ßÅw¤å¦r¼Ò¦¡¿ï³æªº¤H¥Îªº¡D ³o¨Ç ¬É­±¦³­Ó©úÅ㪺¦n³B: ¦pªG¦b°t¸m¹Lµ{¤¤§A¤£¤p¤ß¥Ç¤F¿ù¡A¥i¥H²³æ¦a¦^¥h­×¥¿ ¡D §A²{¦b¸Ó·Ç³Æ¦n¦^µª³o¨Ç°ÝÃD¡A³q±`¥Î `y' ©Î `n' ´N¥i¥H¤F¡D ³]³ÆÅX°Êµ{¦¡³q ±`·|¦³¤@­Ó `m' ¿ï¶µ¡D ³oªí¥Ü``¼Ò²Õ(module)''¡Aªí¥Ü»¡¨t²Î±N·|½sĶ¥¦¡A¦ý ¤£·|ª½±µ©ñ¶i®Ö¤ß¸Ì¡A¦Ó¬O°µ¬°¤@¥i¸ü¤J¼Ò²Õ¡D ¤@­Ó¦³½ìªº»¡ªk¬Oªí ¥Ü``maybe''¡D¦³¤@¨Ç«Ü©úÅã©Î¬O¤£­«­nªº¿ï¶µ±N¤£·|¦b¦¹¥[¥H»¡©ú¡D ½Ð¨£`` [8]¨ä¥¦°t¸m¿ï¶µ''¤@¸`¹ï¨ä¤¤ªºÂ²µu»¡©ú¡D ¦b 2.0.x ©Î¥H«áªºª©¥»¤¤¦³¤@­Ó `?' ¿ï¶µ¡A´£¨Ñ¤F³o­Ó°t¸m°Ñ¼ÆªºÂ²µu´y­z¡D ³o¨Ç¸ê°TÀ³¸Ó³£¬O³Ì·sªº¡D Kernel math emulation (®Ö¤ßªº¼Æ¾Ç¹Bºâ¼ÒÀÀ) ¦pªG§A¨S¦³¼Æ¾Ç»²§U¹Bºâ³B²z¾÷(§A¥u¦³¤@¥x³æ¯Âªº 386 ©Î 486SX)¡A¨º»ò§A¦b ³o¸Ì­n¦^µª `y'¡D¦pªG§A¤w¸g¦³¼Æ¾Ç»²§U¹Bºâ³B²z¾÷«oÁÙ¦^µª `y'¡A ¨º¤]¤£¥²¤Ó ¾á¤ß ¢w linux ÁÙ¬O·|¥h¨Ï¥Î¥¦¦Ó©¿²¤±¼®Ö¤ßªº¼ÒÀÀµ{¦¡¡D °ß¤@ªº¼vÅT¬O½sĶ¥X ¨Óªº®Ö¤ßÅܤj¤F(¥Î±¼§ó¦hªº°O¾ÐÅé)¡D §ÚÅ¥»¡¼Æ¾Ç¹B²¼ÒÀÀ«ÜºC; ÁöµM©M¥»¸`µL ¤Ó¤jÃö«Y¡AÁÙ¬OÀ³¸Óª`·N³o¹ï X Window ¨t²Îªº®Ä²v·|¦³«Ü¤j¼vÅT¡D Normal (MFM/RLL) disk and IDE disk/cdrom support (¼Ð·ÇµwºÐ¤ä´©) §A¦b³o¸Ì®t¤£¦h³£±o¦^µª `y'¡D¥¦¥Nªíªº·N«ä¬O®Ö¤ß±N·|¤ä´©¼Ð·Çªº PC µwºÐ¡A ¨Ò¦p¤j¦h¼Æ¤H¨Ï¥Îªº IDE ¬É­±µwºÐ¡D³o¤£¥]¬A SCSI ³]³Æªº¤ä´©; ³o±N¦b«á­±³] ©w¡D µM«á§A·|³Q°Ý¨ìÃö©ó ``old disk-only'' »P ``new IDE'' ÅX°Êµ{¦¡ªº¨Æ¡D §AÀ³ ¸Ó¨âªÌ¿ï¤@; ¥D­nªº®t§O¬OªºÅX°Êµ{¦¡¥u¤ä´©³æ¤@¬É­±¨â³¡ºÏºÐ¾÷¡A ¦Ó·sªºÅX °Êµ{¦¡¤ä´©²Ä¤G¬É­±¤Î IDE/ATAPI ¥úºÐ¾÷¡D·sªºÅX°Êµ{¦¡¤ñªº¤j¬ù¦h 4K¡A ¦Ó ¥BÀ³¸Ó¬O``§ï¨}ªº''¡A¤]´N¬O»¡°£¤F¥i¯à¥]§t¨Ç³\¿ù»~¤§¥~¡A¥¦À³¸Ó·|§ïµ½§Aªº ºÏºÐ®Ä²v¡A¯S§O¬O¦pªG§A¦³¸û·sªº EIDE µwÅ骺¸Ü¡D Networking support (ºô¸ô¤ä´©) ­ì«h¤W¡A¦pªG§A¦³³s±µºô¸ô¡AÄ´¦p»¡¡A§A¦³ Internet ³s½u¡A©Î¬O§A±N¨Ï¥Î SLIP¡APPP¡Aterm ©Î¨ä¥¦¤è¦¡¼·±µ¨ì Internet ¤Wªº¸Ü¡A¦^µª `y'¡D µM¦Ó¡A¬Y¨Ç ³nÅé®M¥ó(¨Ò¦p X Window ¨t²Î)»Ý­nºô¸ô¤ä´©¡A§Y¨Ï§Aªº¾÷¾¹¨Ã¤£¯u¥¿³s±µ¨ìºô ¸ô¤W¡D³o±¡§Î§A¤]À³¸Ó¦^µª `y'¡D µM«á¡A§A·|³Q°Ý¨ì¬O§_»Ý­n¤ä´© TCP/IP ºô¸ô ¡A¦pªG§A¤£¤Q¤À½T©w¡A´N¦^µª `y'¡D Limit memory to low 16MB (¨î°O¾ÐÅé¦b 16 MB) ¥i¯à·|¦³¤@¨Ç¤£¨}ªº 386 DMA ±±¨î¾¹µLªk¥¿½T¦a©w§}¨ì 16 MB ¥H¤Wªº°O¾ÐÅé¦ì §}¡F ¦pªG§Aªº¾÷¾¹­è¦n¦³³oºØ(¨u¨£)±¡ªp®É¡A¨º»ò§A¤]´N¥u¦n¦^µª¡ª y ¡ª¤F¡D System V IPC ¤@­Ó IPC (¦æµ{¤º³q°T¡AInterprocess Communication) ªº©w¸q´N¦b Perl ®Ñ¤¤ ªºµù¸Ñ¡D ³o¨Ã¤£¤j©_©Ç¡A¤@¨Ç Perl µ{¦¡³]­pªÌ¥Î¥¦¨ÓÅý¦æµ{¤§¶¡¤¬¬Û·¾³q¡A´N ¹³³\¦h¨ä¥¦®M¥ó(³ÌµÛ¦W¦p DOOM)¤@¼Ë¡D ¦]¦¹°£«D§A§¹¥þ¤F¸Ñ§A¦b°µ¤°»ò¡A¤£µM ³Ì¦n§O¦^µª n¡D Processor type (386, 486, Pentium, PPro) (·L³B²z¾÷ºØÃþ) (¦b¸ûª©¥»ªº®Ö¤ß¤¤¬°: Use -m486 flag for 486-specific optimizations¡A ¨Ï¥Î -m486 ºX¼Ð°w¹ï 486 °µ³Ì¨Î¤Æ) «ö·ÓºD¨Ò¦a¡A³o¬O¹ï¤@¯S§Oªº·L³B²z¾÷°µ¬YºØ³Ì¨Î¤Æ; ®Ö¤ß¤´¥i¦b¨ä¥¦´¹¤ù¤W¶] ±o«Ü¦n¡A¦ý¥i¯à·|¤ñ¸û¤j¨Ç¡D ¤£¹L¡A¦b¸û·sª©¥»ªº®Ö¤ß¤W¡A¤w¸g¤£¬O³o­Ó¼Ë¤l¤F ¡D¦]¦¹§AÀ³¸Ó¥¿½T¦a¦^µª§A­n½sĶªº·L³B²z¾÷ºØÃþ¡D ``386'' ªº®Ö¤ß¥i¥H¦b©Ò¦³ ªº¾÷¾¹¤W¤u§@¡D SCSI support (SCSI ªº¤ä´©) ¦pªG§A¦³ SCSI ³]³Æ¡A¨º»ò´N¦^µª `y'¡D ±µµÛ·|¦³´£¥Ü­n¨D§ó¶i¤@¨Bªº¸ê°T¡A¹³ ¬O§A¬O§_­n¤ä´©¥úºÐ¾÷¡AºÏºÐ¾÷¡AÁÙ¦³§A¨Ï¥Îªº¬O¨º¤@ºØ SCSI ¤¶­±¥d¡D ³o³¡¥÷ ½Ð°Ñ¾\ [9]SCSI-HOWTO¡A¦³§ó¸Ô²Óªº»¡©ú¡D Network device support (ºô¸ô³]³Æ¤ä´©) ¦pªG§A¦³ºô¸ô¥d¡A©ÎªÌ§A·Q­n¨Ï¥Î SLIP¡APPP¡A©Î¬O¨Ã¦C°ð¬É­±¥d¡A¨º´N¦^µª `y'¡D ±µµÛ·|¦³´£¥Ü°Ý§A¨Ï¥Îªº¬O¨º¤@ºØºô¸ô¥d¡A©Î­n¨Ï¥Î¨º¤@ºØ³q°T¨ó©w¡D Filesystems (Àɮרt²Î) ³o±N·|¦³´£¥Ü­n§A¦^µª©Ò­n¤ä´©ªºÀɮרt²ÎºØÃþ¡A­p¦³¡G Standard (minix) ¢w ·sªº®M¥ó¤£¦A«Ø¥ß minix Àɮרt²Î¡A¦Ó¥B«Ü¦h¤H¤£¨Ï¥Î¥¦ ¡A¦ý¬O§â¥¦°t¸m¦b®Ö¤ß¸Ì¤´µM¬O­Ó¦n¥D·N¡D ¬Y¨Ç``«æ±ÏºÏ¤ù''µ{¦¡·|¥Î¨ì¥¦¡A¦Ó ¥B¤´µM¦³³\¦h³nºÐºÏ¤ù¥i¯à¥Î minix Àɮרt²Î¡A¦]¬° minix Àɮרt²Î¹ï©ó³B²z ³nºÐ¤ù¤è­±¸ûµL°ÝÃD¡D Extended fs ¢w ³o¬OÂX¥RÀɮרt²Îªº²Ä¤@ª©¡A²{¦b¤w¸g¤£¦A¨Ï¥Î¡D¨Ï¥Îªº®É¾÷¬O ¡A¦pªG§A¦³»Ý­n¡A§A´N·|ª¾¹Dªº¡D¦pªG§Aı±oÃhºÃ¡A§A´N¤£»Ý­n¥¦¡D Second extended ¢w ³o¬O²{¦b·sµo¦æªº®M¥ó©Ò¼sªx±Ä¥ÎªºÀɮרt²Î¡A§A¥i¯à·|¦³ ¨ä¤¤¤@ºØ¡A©Ò¥H¥²¶·¦^µª `y'¡D xiafs filesystem ¢w ³o­ÓÀɮרt²Î´¿¸g¤@«×«Ü´¶¹M¡A¦ý¬O¦b¼g³o¥÷¤å¥ó®É¡A§Ú ¤w¸g¤£ª¾¹D¦³¥ô¦ó¤H¦b¨Ï¥Î¥¦¤F¡D msdos ¢w ¦pªG§A·Q­n¦b linux ¤U¨Ï¥Î§AµwºÐ¤¤ªº MS-DOS ¤À³Î°Ï¡A©Î¬O·Q±N¥Î MS-DOS ®æ¦¡¤Æªº³nºÐ¤ù±¾¶i¨Óªº¸Ü¡A¦^µª `y'¡D ums-dos ¢w ³oºØÀɮרt²Î¯à¨Ï MS-DOS Àɮרt²Î¾Ö¦³§ó¦h¹³ Unix ªº¯S©Ê¡A¹³¬O ªøÀɦWµ¥µ¥¡D³o¹ï¨º¨Ç¤£¨Ï¥Î MS-DOS ªº¤H(¹³§Ú)¨Ã¤£¬O«Ü¦³¥Î¡D /proc ¢w ¥t¤@ºØ¯«©_ªºªF¦è(§Ú²q³o­Ó·§©À¬OµL®¢¦a±q¨©º¸¹êÅç«Ç¸Ì°½¹L¨Óªº)¡D ¥¦¤£¬O§AµwºÐ¤À³Î°Ï¸Ìªº¥ô¦óªF¦è¡A¦Ó¬O®Ö¤ß»Pµ{§Ç¤§¶¡ªºÀɮרt²Î¤¶­±¡D³\¦h µ{§Ç¤u¨ã(¹³ `ps')³£·|¥Î¨ì¥¦¡D ¦³®É¥i¥H¸ÕµÛ¥Î `cat /proc/meminfo' ©Î `cat /proc/devices'¡D ¬Y¨Ç shell (¯S§O¹³¬O rc) ¨Ï¥Î¤F /proc/self/fd (¦b ¨ä¥¦¨t²Î¸Ì¥s°µ /dev/fd) ¨Ó°µ¿é¥X¿é¤J°Ê§@¡D §A´X¥GÀ³¸Ó¦^µª `y'; ³\¦h­«­n ªº Linux ¤u¨ã³£¨Ì¿à¥¦¨Ó¹B§@ªº¡D NFS ¢w ¦pªG§A¦bºô¸ôÀô¹Ò¤U¦Ó¥B·Q­n¥Ñ NFS ¨Ó¨Ï¥Î¨ä¥¦¾÷¾¹ªºÀɮרt²Î¡A¦^µª `y'¡D ISO9660 ¢w µ´¤j³¡¤Àªº¥úºÐ¤ù³£¨Ï¥Î³o­ÓÀɮרt²Î¡D¦pªG§A¦³¥úºÐ¾÷¦Ó¥B·Q¦b Linux ¤U¨Ï¥Î¡A¦^µª `y'¡D OS/2 HPFS ¢w ¦b½s¼g³o¥÷¤å¥óªº®É­Ô¡A³o­ÓÀɮרt²ÎÁÙ¥u¤ä´©¨ì OS/2 HPFS ªº Ū¨ú¡D System V and Coherent ¢w ³o¬O¬° System V ¥H¤Î Coherent ¨t²Îªº¤À³Î°Ï¦Ó³] ªº(¥¦­Ì¬O¥t¤@ºØ¦b PC ¤Wªº Unix ¨t²Î)¡D ¦ý¬O§Ú¤£ª¾¹D§Ú»Ý­n¨º¨ÇÀɮרt²Î! ¦n§a¡AÁä¤J `mount'¡D¥¦¬Ý°_¨Ó·|¹³³o¼Ë¡G blah# mount /dev/hda1 on / type ext2 (defaults) /dev/hda3 on /usr type ext2 (defaults) none on /proc type proc (defaults) /dev/fd0 on /mnt type msdos (defaults) ¥J²Ó¬Ý¬Ý¨C¤@¦æ¡F¦b `type' «á­±ªº¨º­Ó¦r´N¬OÀɮרt²Îªº®æ¦¡¡D ¦b³o­Ó¨Ò¤l¤¤ ¡A§Úªº / ©M /usr ¤À³Î°Ï¬O second extended ®æ¦¡¡A §Ú¨Ï¥Î¤F /proc ¡A¦Ó¥B ±¾¦³¤@±i¥H msdos (bleah) ¬°Àɮרt²Î®æ¦¡ªººÏ¤ù¡D ¦pªG§A¦³¨Ï¥Î /proc¡A¥i¥H¸Õ¸Õ `cat /proc/filesystems'¡D ¥¦·|µ¹§A¤@¥÷¥Ø«e ¨Ï¥Îªº®Ö¤ß©Ò¤ä´©ªºÀɮרt²Î¦Cªí¡D ³o°t¸m¨Ã¤£±`¨Ï¥Î¡D¤£­«­nªºÀɮרt²Î·|¨Ï®Ö¤ßÅã±oÁs¸~; °Ñ¨£¥i¸ü¤J¼Ò²Õ¤@¸` ªº»¡©ú¥HÁקK¦¹±¡ªp¡A¥H¤Î`` [10]³´¨À''¤@¸`»¡©ú¬°¦óÁs¸~ªº®Ö¤ß¤£¦n¡D Character devices (¦r¤¸³]³Æ) ¦b³o¸Ì¡A§A±N·|µo²{³\¦h³]³Æ¦WºÙ¡A¥Î¨Ó³]©w§Aªº¦Lªí¾÷¡A¶×¬y±Æ·Æ¹«¡APS/2 ·Æ ¹«(¤j³¡¤Àµ§°O«¬¹q¸£¨Ï¥Î¤º«Øªº PS/2 ·Æ¹«)¡A ¥H¤Î¤@¨ÇºÏ±a¾÷ÅX°Êµ{¦¡¡A¥H¤Î ¨ä¥¦ªº``¦r¤¸''³]³Æ¡D·í¦³¦X¾Aªº¿ï¶µ®É¡A¦^µª `y'¡D ª`·N¡GSelection ³o­Óµ{¦¡¨Ï§A¥i¥H¦b X window ¤§¥~¨Ï¥Î·Æ¹«¦b¦U­ÓµêÀÀ±±¨î ¥x¶¡°µ°Å¶Kªº°Ê§@¡D ¦pªG§A¦³¦ê¦C·Æ¹«ªº¸Ü¡A³o¯uªº«Ü´Î¡A¦]¬°¥¦»P X window ¤§¶¡ªº·¾³q¨}¦n¡A ¤£¹L¦pªG§A¥Î¨ä¥¦ºØÃþªº·Æ¹«´N»Ý­nÂI§Þ¥©¤F¡DSelection ´¿ ¸g¤@«×¬O¿ï¾Üªº°t¸m°t¶µ¡A¤£¹L²{¦b¤w¸g¬O¼Ð·Ç¤F¡D ª`·N¤G: Selection ²{¦b¤w¸g¹L®É¤F¡D²{¦b·sªºµ{¦¡¦W¥s ``gpm''¡D ¥¦¯à°µ§ó¯« ©_ªº¨Æ¡A¹³¬OÂà´«·Æ¹«¨ó©w¡A³B²z¦h­«·Æ¹«µ¥¡K¡K Sound card (­µ®Ä¥d) ¦pªG§A·QÅ¥¨ì biff µ{¦¡¤j¥sªº¸Ü¡A¦^µª `y'¡D µM«áµ¥¤@¤U·|½sĶ¥t¤@­Ó°t¸mµ{ ¦¡¨Ã¸Ô²Ó¸ß°Ý§A©Ò¦³Ãö©ó­µ®Ä¥dªº°ÝÃD¡D (ª`·N: ·í¥¦°Ý§A¬O§_¦w¸Ë§¹¾ãª©¥»ªº ÅX°Êµ{¦¡®É¡A§A¥i¥H¦^µª `n' ¥H´î¤Ö§A®Ö¤ß°O¾ÐÅé¨Ã¥u¿ï¥Î§A¯u¥¿»Ý­nªº¡D) ¦p ªG§A¦³­µ®Ä¥d§Ú±j¯P«Øij¬Ý¤@¤U [11]Sound-HOWTO ¥Hª¾¹D§ó¦hªº²Ó¸`¡D ¨ä¥¦°t¸m¿ï¶µ ¨S¦³±N©Ò¦³ªº¿ï¶µ³£¦C¥X¨Ó¡A¦]¬°¦³¨Ç¸g±`§ïÅÜ¡A©Î¬O¬Û·í¦Û©úªº(¨Ò¦p 3Com 3C509 support ´N¬O½sĶ³oºØ¯S§O¤A¤Óºô¸ô¥dªºÅX°Êµ{¦¡)¡A ¦³¤@­Ó¤Q¤À®e©ö²z ¸Ñªº©Ò¦³¿ï¶µ¦Cªí(¥]¬A±N¥¦­Ì©ñ¨ì Configure «ü¥O½Zªº¤èªk)¥i¦b³o­Ó URL §ä ¨ì(¥Ñ Axel Boldt [12]axel@uni-paderborn.de ©Ò¦¬¶°): [13]http://math-www.uni-paderborn.de/~axel/config_help.html ©Î¸g¥Ñ°Î¦W FTP ¯¸: [14]ftp://sunsite.unc.edu/pub/Linux/kernel/config/krnl_cnfg_hlp.x.y z.tgz ¨ä¤¤ x.yz ¬Oª©¥»¸¹½X¡D ¨ä«á¨Óªº®Ö¤ß¤¤(2.0.x ¤Î¨ä«áªº)¡A³o¤w³Q¾ã¦X¨ì­ì©lµ{¦¡½X¤¤¡D Kernel hacking >³o¬O±q Linus ªº README ¸ÌºK¿ýªº¡G ``kernel hacking'' °t¸mªº²Ó¸`³q±`·|²£¥Í¤@­Ó§ó¤j©Î¬O§óºCªº®Ö¤ß(©ÎªÌ¬O¤S ¤j¤SºC)¡A ¦Ó¥B¥i¯à¦]¬°±N¤@¨Ç±`¦¡°t¸m¦¨«Ü¬¡ÅD¦a¥h¹Á¸Õ¤¤Â_¤@¨Ç¤£¨}ªºµ{¦¡ ½X¥H«K§ä¥X®Ö¤ß¸Ìªº°ÝÃD¡] kmalloc() ¡^¡A ¦Ó¨Ï±o®Ö¤ßÅܱo¤ñ¸û¤£Ã­©w¡D©Ò¥H ­n²£¥Í¤@­Ó®Ö¤ß``²£«~''ªº¸Ü¡A§A¦b³o¸ÌÀ³¸Ó¦^µª `n'¡D 3.4 ²{¦b©O? (The Makefile) ¦b§A§¹¦¨ make config ¤§«á¡AÀ³¸Ó·|¦³¤@­Ó°T®§§i¶D§A®Ö¤ß¤w¸g°t¸m¦n¤F¡A ¥H ¤Î­n§A¥h``check the top-level Makefile for additional configuration'' µ¥µ¥°T®§¡D ©Ò¥H¬d¬Ý¤@¤U Makefile¡D§AÀ³¸Ó¤£¥²§ïÅÜ¥¦¡A¦ý¬O¬Ý¬ÝµL§«¡D ¤@¥¹·s®Ö¤ß§¹¦¨ ¡A§A¤]¥i¥H¥Î `rdev' «ü¥O¨Ó§ïÅܨ䤤ªº¿ï¶µ¡D 4. ½sĶ®Ö¤ß 4.1 ²M°£»P½T»{ ·í¥Î¨Ó¶i¦æ°t¸mªº«ü¥O½Z°õ¦æ§¹¦¨®É¡A¥¦·|§i¶D§A¥h `make dep' ¥H¤Î `clean' ¡D ©Ò¥H­n°õ¦æ`make dep'¡D³o±N½T«O©Ò¦³ªº¬Û¨ÌÃö«Y¡A¨Ò¦p include files ³£ ¨S°ÝÃD¡D °£«D§Aªº¹q¸£¯uªº«ÜºC¡A§_«h¥¦¤£·|ªá¤Ó¤[®É¶¡ªº¡D §¹¦¨«á¡A¦b¸û ª©¥»ªº®Ö¤ß¤¤§AÁÙÀ³¸Ó°µ `make clean'¡D ³o·|²M°£®Ö¤ß½sĶªº©Ò¦³¥ØªºÀÉ¥H¤Î ¨ä¥¦ªF¦è¡D¦b­««Ø¤@­Ó®Ö¤ß¤§«e¤£­n§Ñ°O³o­Ó¨BÆJ¡D 4.2 ½sĶ®É´Á ¦b§¹¦¨ `make dep' ¤Î `make clean' ¤u§@¤§«á¡A§A²{¦b¥i¥H°õ¦æ `make zImage' ©Î `make zdisk' (³o³¡¥÷»Ý­nªø®É¶¡)¡D `make zImage' ±N·|½sĶ®Ö¤ß ¡A¨Ã¥B¦b arch/i386/boot ¯dµ¹§A¤@­Ó¥s°µ `zImage' ªºÀɮסD³o´N¬O·sªºÀ£ÁY ®Ö¤ß¡D `make zdisk' °µªº¨Æ¤]¤@¼Ë¡A¦ý¬O¥¦·|§â®Ö¤ß©ñ¨ì§A©Ò§Æ±æªººÏ¤ù¥h¡A ¥u­n§â³o±iºÏ¤ù©ñ¦b ``A:''¡D `zdisk'¹ï©ó´ú¸Õ·s®Ö¤ß«Ü¤è«K¡F¦pªG¥¦·í±¼(©Î ¤u§@¤£¥¿±`)¡A¥u­n§âºÏ¤ù®³±¼¦A¥Îªº®Ö¤ß±Ò°Ê§Y¥i¡D ¦pªG§A·N¥~¦a§R°£¤F®Ö ¤ß©Î¬O¤°»òªº¡A¥¦¤]¬O­Ó¤è«Kªº±Ò°Ê¿ìªk¡D ·í§A§â¤@¥xºÏºÐªº¤º®e¶É­Ë¨ì¥t¥~¤@ ¥x¥h®É¡A§A¤]¥i¥H¥Î¥¦¨Ó¦w¸Ë·sªº¨t²Î(°£¤F³o¨Ç¤§¥~ÁÙ¦³§ó¦h¥Î³~¡I) ©Ò¦³ªñ¨Óªº®Ö¤ß³£¬OÀ£ÁY¹Lªº¡A©Ò¥H¦³­Ó `z' ¦b¦W¦r«e­±¡DÀ£ÁY¹Lªº®Ö¤ß°õ¦æªº ®É­Ô·|¦Û°Ê±N¦Û¤v¸ÑÀ£ÁY¡D 4.3 ¨ä¥L¥i¥H``make''ªºªF¦è `make mrproper' ±N·|°µ§ó¼sªxªº `²M°£' ¤u§@¡D ³o­Ó°Ê§@¦³®É­Ô¬O¥²¶·ªº¡A©Ò ¥H§A¥i¯à·|§Æ±æ¦b¨C¦¸­×¸Éªº®É­Ô°õ¦æ¥¦¡D `make mrproper' ÁÙ·|±N§Aªº°t¸mÀÉ ®×±þ±¼¡A©Ò¥H¦pªG§A»{¬°¥¦­«­nªº¸ÜÀ³¸Ó¥ý°µ¤@³Æ¥÷(¦b .config)¡D `make oldconfig' ·|¹Á¸Õ¥Ñ¤@ªº°t¸mÀɮרӰt¸m§Aªº®Ö¤ß¡D¥¦·|¬°§A°õ¦æ `make config'¡D ¦pªG§AÁÙ¥¼´¿½sĶ¹L®Ö¤ß©Î¨S¦³Âªº°t¸mÀɮסA¨º»ò§A¥i¯à¤£ ¸Ó°µ³o­Ó¡A¦]¬°§A´X¥G½T©w·|§ó§ï¹w³]ªº°t¸m¡D °Ñ¨£¥i¸ü¤J¼Ò²Õ¤@¸`¹ï `make modules' ªº»¡©ú¡D 4.4 ¦w¸Ë®Ö¤ß ¦b§A¤w¸gÀò±o¤@­Ó¬Ý°_¨Ó¯à°÷·Ó§A§Æ±æ¹B§@ªº·s®Ö¤ß¤§«á¡A²{¦b¬O¦w¸Ë¥¦ªº®É­Ô ¤F¡D ¤j³¡¥÷ªº¤H¨Ï¥Î LILO (Linux Loader) ¨Ó°µ³o¥ó¨Æ¡D `make zlilo' ±N·| ¦w¸Ë®Ö¤ß¡AµM«á¹ï¥¦°õ¦æ LILO¡A¨Ï§A§¹¦¨©Ò¦³¶}¾÷ªº·Ç³Æ¡A ¦ý¬O³o¥u¦³¦b LILO ¤w¸g¥H¤U¦C³oºØ¤è¦¡°t¸m¦nªº®É­Ô¤~¥i¥H¡G®Ö¤ß¬° /vmlinuz ¡A lilo ¦b /sbin ¤U¡A¦Ó¥B»P§Aªº LILO °t¸m(/etc/lilo.conf)¤@­P¡D ¥t¤@¤è­±¡A§A¥i¯à»Ý­nª½±µ¨Ï¥Î LILO¡D³o¬O¤@­Ó¬Û·í®e©ö¦w¸Ëªº³nÅé¡AµM¦Ó¡A¥¦ ªº°t¸mÀɱ`¨Ï¤H§xÂZ¡D ¬d¬Ý°t¸mÀÉ(¤£¬Oª©ªº /etc/lilo/config ´N¬O·sª©ªº /etc/lilo.conf)¡A¬Ý¬Ý¸Ì­±¦³¨Ç¤°»ò¡D ¥¦¬Ý°_¨Ó¹³³o¼Ë¤lªºªF¦è¡G image = /vmlinuz label = Linux root = /dev/hda1 ... ­º¥ý¡A`image =' ³]©w¬°¤w¸g¦w¸Ëªº®Ö¤ß¡D¤j³¡¥÷ªº¤H¦ü¥G³£¥Î /vmlinuz¡D `label' «h¬Oµ¹ lilo ¥Î¨Ó¨M©w²{¦b­n±Ò°Êªº¬O¨º­Ó®Ö¤ß©Î§@·~¨t²Î¡A ¦Ó `root' «h¬O³o­Ó¯S§Oªº§@·~¨t²Îªº®Ú¥Ø¿ý /¡D ³Æ¥÷¤@¥÷ªº®Ö¤ß¡AµM«á±N§A°µ ªº zImage «þ¨©¶i¥h(¨Ò¦p¡A¦pªG§A¥Î `/vmlinuz' ªº¸Ü¡A´N¹³³o¼Ë `cp zImage /vmlinuz')¡D µM«á¡A°õ¦æ `lilo'¡A¦ý¬O¦b¸ûªº¨t²Î¤W¡A§A¥i¯à¥²¶·°õ¦æ /etc/lilo/install ©Î¬Æ¦Ü¬O /etc/lilo/lilo -C /etc/lilo/config¡D ¦pªG§A·Qª¾¹D§ó¦h¦³Ãö©ó LILO ªº°t¸m¡A©Î¬O§A¨Ã¨S¦³ LILO ¦ý¬O§A·Q­n¦w¸Ëªº ¸Ü¡A ±q§A³ßÅwªº ftp ¸`ÂI¨ú±o³Ì·sªºª©¥»µM«á¨Ì»¡©ú¦æ¨Æ¡D ­n¯à°÷±qµwºÐ±Ò°Ê§AªºÂ®֤ߨ䤤¤§¤@ªº¸Ü(³o¬O¥t¤@­Ó¦b·s®Ö¤ß¥Xª¬ªpªº±¡ªp¤U «OÅ@§A¦Û¤vªº¤èªk)¡A §â LILO °t¸mÀɤ¤©Ò¦³ªº(¥]¬A) `image = xxx' «þ¨©¨ìÀÉ ®×ªº³Ì©³ºÝ¡A µM«á§â `image = xxx' §ï¦¨ `image = yyy' ¨ä¤¤ªº `yyy' ¬O§A ³Æ¥÷®֤ߩҦsÀɪº¦W¦r¡D ±µµÛ¡A§â `label = zzz' §ï¦¨¹³¬O `label = linux-backup' µM«á­«·s°õ¦æ lilo¡D §A¥i¯à±o­n¥[¤W¤@¦æ `delay=x'¡A¨ä¤¤ªº x ¬O¥H¤Q¤À¤§¤@¬í¬°³æ¦ìªº®É¶¡¡A ³o¬O§i¶D LILO ¦b±Ò°Ê«e¥ýµ¥¤@¤U¡A©Ò¥H§A¥i ¥H¤¤Â_¥¦ªº°õ¦æ(¨Ò¦p¥Î shift Áä)¡D µM«áÁä¤J©Ò³Æ¥÷ªº±Ò°Ê¬M¹³¤§ label (¦b µo¥Í¤F¬Y¨Ç¥O¤H¤£´r§Öªº¨Æ±¡ªº±¡ªp¤U)¡D 5. ­×¸É®Ö¤ß 5.1 ¨Ï¥Î­×¸ÉÀÉ ®Ö¤ßªº¤p´T§ó·s¬O¥H­×¸ÉÀɪº¤è¦¡µo¦æ¡D¨Ò¦p¡A¦pªG§Aªºª©¥»¬O 1.1.45 ¡A ¦Ó¥B §Aª`·N¨ì¥X²{¤F¤@­Ó `patch46.gz' ¥i¥H¥Î¨Ó¤É¯Å¥¦¡A ³o¥Nªí§A¥i¥HÂǥѨϥγo ­Ó­×¸ÉÀɱNª©¥»¤É¯Å¨ì 1.1.46¡D §A¤]³\·|·Q­n¥ý³Æ¥÷­ì©lµ{¦¡½X(`make clean' µM«á `cd /usr/src; tar zcvf old-tree.tar.gz linux' ±N·|¬°§A³y¥X ¤@¥÷ tar À£ÁYÀÉ¡A¸Ì­±´N¬O¾ã­Ó­ì©lµ{¦¡½X»P¨äÀɮ׬[ºc)¡D ²{¦b±µµÛÄ~Äò¤W­±ªº¨Ò¤l¡A°²³]§A¤w¸g¨ú±o¤F `patch46.gz' ¨Ã©ñ¦b /usr/src ¤U¡D cd ¨ì /usr/src µM«á°õ¦æ `zcat patch46.gz | patch -p0' (¦pªG¨Ã¤£¬O À£ÁY¹Lªº­×¸ÉÀÉ¡A¨º»ò´N°õ¦æ `patch -p0 < patch46')¡A §A±N·|¬Ý¨ì³\¦hªF¦è ­¸³u¦Ó¹L(©Î¬OºCºC¸õ¹L¡A¦pªG§Aªº¹q¸£¯uªº«ÜºCªº¸Ü)§i¶D§A¥¦¥¿¸ÕµÛ­×¸Éµ{¦¡ ¡A¥H¤Î¬O§_¦¨¥\¡D ³q±`¡A³o­Ó¹Lµ{§Ö±oµLªk¥J²Ó¬Ý²M·¡¥¦ªº°Ê§@¡A©Ò¥H§A·|µLªk ½T©w¥¦¨ì©³¦³¨S¦³¦¨¥\¦a°õ¦æ¡D ©Ò¥H§A¥i¯à·|·Q¦b patch «ü¥O¤¤¥[¤W -s ¿ï¶µ ¡A§i¶D patch µ{¦¡¥u³ø§i¿ù»~°T®§´N¦n¡D (³o¼Ë§A´N¤£·|±o¨ì³\¦h``¶Ù! §Úªº¹q ¸£¥¿¦b°µ¬Y¨Ç§ïÅÜ!''ªº·Pı¡A¤£¹L§A¥i¯à¹çÄ@³o¼Ë¡K) ¨º»ò´N±o§ä§ä¬Ý¤@¨Ç¥i¯à ¤£¬O¨º»ò¶¶§Qªº¨Æ¡Dcd ¨ì /usr/src/linux ¨Ã§ä´MÀɦWµ²§À¬° .rej ªºÀɮסD ¬Y¨Çª©¥»ªº patch¡]¤ñ¸ûªºª©¥»¡A¥¦­Ì¥i¯à¬O¦b¤ñ¸û¦­´ÁªºÀɮרt²Î¤W½sĶªº ¡^·|§â³o¨Ç¨S¦³¦¨¥\ªº¾Þ§@°O¿ý¦bÀɦW¦³ # ªºÀɮ׸̡D §A¥i¥H¥Î `find' ¨Ó´À §A§ä¡F find . -name '*.rej' -print ·|±N²{¦æ¥Ø¿ý¤Î¤l¥Ø¿ý¤U©Ò¦³¨ã .rej µ²§ÀªºÀɦW¦L¨ì¼Ð·Ç¿é¥X¡D ¦pªG¤@¤Á¥¿½TµL»~ªº¸Ü¡A°õ¦æ²Ä¤T¸`¸ò²Ä¥|¸`©Ò°Q½×ªº `make clean' ¡A`config' ¥H¤Î `dep'¡D Ãö©ó patch «ü¥O¥t¥~ÁÙ¦³¤@¨Ç¿ï¶µ¡D¦p«e©Ò­z¡Apatch -s ±N·|§í¨î°£¤F¿ù»~¥H ¥~ªº©Ò¦³¨ä¥L°T®§¡D ¦pªG§A§â®Ö¤ß­ì©lµ{¦¡½X©ñ¦b /usr/src/linux ¥H¥~ªº¦a¤è ¡A¦b¸Ó¥Ø¿ý¤U¥Î patch -p1 ¤]¥i¥H°®²b«W¸¨ªº°õ¦æ­×¸É¥ô°È¡D ¨ä¥¦ªº patch ¿ï ¶µ¦b½u¤W¤â¥U(man page)¸Ì³£¦³«Ü¸Ô²Óªº´y­z¡D 5.2 ¦pªG¦³¿ù»~µo¥Í (ª`·N: ¥»¸`´£¨ìªº¤j³¡¥÷¬O«üª©ªº®Ö¤ß) ³q±`³Ì±`µo¥Íªº°ÝÃD¬O·í patch ­×§ï¤@­Ó¥s°µ `config.in' ªºÀɮ׮ɡA³o­ÓÀÉ ®×¬Ý°_¨Ó¤£«ç»ò¹ï«l¡A ¦]¬°§A­×§ï¤F¤@¨Ç¿ï¶µ¨Ó°t¦X§Aªº¾÷¾¹¡D³o­Ó°ÝÃD¤w¸g¤p ¤ßªºª`·N¹L¤F¡A¦ýÁÙ¬O¥i¯à¦³¤H·|¦b¸ûªºª©¥»¤W¾D¹J³o­Ó°ÝÃD¡D ­n­×¥¿³o­Ó°Ý ÃDªº¸Ü¡A¬d¬Ý config.in.rej ³o­ÓÀɮ׸̯d¤U¨Ç¤°»ò°T®§¡D ¦³­×§ï¹Lªº³¡¥÷¥¿ ±`¨Ó»¡·|¦b¨C¤@¦æ¶}©lªº¦a¤è¼Ð¤W `+' ©M `-'¡D ¬d¬Ý¦³¼Ð°Oªºªþªñ´X¦æ¡AµM«á °O±o¥¦­Ì¬O³]¦¨ `y' ©Î¬O `n'¡D ²{¦b½s¿è config.in ÀÉ¡AµM«á¦b¾A·íªº¦a ¤è §â `y' §ï¦¨ `n' ¥H¤Î `n' §ï¦¨ `y'¡D°õ¦æ patch -p0 < config.in.rej ¦pªG¦¨¥\ªº¸Ü(¨S¦³¿ù»~)¡A¨º»ò§A´N¥i¥HÄ~Äò°t¸m»P½sĶªº¤u§@¡D ³o­Ó config.in.rej ÀÉÁÙ¬O·|¯d¦b¨º¸Ì¡A¦ý¬O§A¥i¥H¬å±¼¥¦¡D ¦pªG§A¤´µM¾D¹J¨ä¥¦°ÝÃD¡A¨º»ò¥i¯à¬O§A¦w¸Ë¤F¤@¥÷·lÃaªº­×¸ÉÀÉ¡D ¦pªG patch Åã¥Ü `previously applied patch detected: Assume -R?'¡A §A¥i¯à¨Ï¥Î ¤F¤@¨Ç¤ñ§A¥Ø«eªºª©¥»½s¸¹ÁÙ§Cªº­×¸ÉÀÉ; ¦pªG§A¦^µª `y'¡A¥¦·|¹Á¸Õ±N§Aªºµ{ ¦¡½X­°¯Å¡A¦Ó¥B´X¥G¤@©w·|¥¢±Ñ; ¦p¦¹¡A§A´N»Ý­n­«·s¨ú±o¤@¥÷·sªº­ì©lµ{¦¡½X ¡D ­nÁÙ­ì¨ì­×¸É«eªºª¬ºAªº¸Ü¡A¦b­ì¥ýªº­×¸ÉÀɤW°õ¦æ `patch -R'¡D ·í­×¸ÉÀɯuªº¥¢±Ñªº®É­Ô¡A³Ì¦nªº¿ìªk¬O±q¤@­Ó°®²bªº­ì©lµ{¦¡½X(¨Ò¦p±q linux-x.x.x.tar.gz Àɮר䤤¤§¤@)¶}©l¡A¦A­«·s°õ¦æ¡D 5.3 ¬å±¼ .orig ÀÉ®× ¥u­n°µ¹L´X¦¸­×¸É¥H«á¡A¨º¨Ç .orig ªºÀÉ®×±N·|¶}©l°ï¿n¡D ¨Ò¦p¡A§Úªº¤@­Ó 1.1.51 ª©ªºµ{¦¡½X³Ì«á¤@¦¸°µ²M±½¬O¦b 1.1.48 ª©¡]§Ú·Q¬O§a¡^¡D §R°£³o¨Ç .orig ÀÉ®×·|¸`¬Ù³\¦hªººÏºÐªÅ¶¡¡D find . -name '*.orig' -exec rm -f {} ';' ±N·|´À§A·Ó®Æ³o¥ó¨Æ¡D¬Y¨Çª©¥»ªº patch ·|¥Î ~ ¨Ó¥N´À .orig¡D ¦³¨ä¥¦§ó¦nªºªº¿ìªk¥i¬å±¼³o¨Ç .orig ÀÉ¡A´N¬O§Q¥Î GNU ªº xargs: find . -name '*.orig' | xargs rm ©Î¬O§ó¦w¥þ¦ý¦³¨ÇÅo¶Ûªº¤èªk: find . -name '*.orig' -print0 | xargs --null rm -- 5.4 ¨ä¥¦ªº­×¸ÉÀÉ ¦³¤@¨Ç¨Ã¤£¬O¥Ñ Linus µo¦æªº¨ä¥¦­×¸ÉÀÉ¥X²{(§Ú±NºÙ¤§¬°``«D¼Ð·Çªº'')¡D ¦p ªG§A¨Ï¥Î¤F¥¦­Ì¡ALinus ªº­×¸ÉÀÉ¥i¯à·|¦ÓµLªk¥¿½T¦a°õ¦æ¡A ¨º»ò§A¤£¬O±o±N¥¦ ­ÌÁÙ­ì´N¬O±o¦]¦¹¦Ó¥h­×§ï­ì©lµ{¦¡½X©Î¬O­×¸ÉÀÉ¡D³o­Ó¤u§@¹ïªì¾ÇªÌ³q±`¬O«Ü °Q¹½¡A ©Ò¥H¦pªG§A¤£·Q¥h­×§ï­ì©lµ{¦¡½X(µ²ªG³q±`¤£¤j¦n)¡A¦b¨Ï¥Î Linus ªº ­×¸ÉÀɤ§«e¥ýÁÙ­ì³o¨Ç«D¼Ð·Çªº­×¸ÉÀÉ¡A©Î­«·s¦w¸Ë·sªºµ{¦¡½X¡D µM«á¸Õ¸Õ³o«D ¼Ð·Çªº­×¸ÉÀɯण¯à¥Î¡D¦pªG¤£¯àªº¸Ü¡A¨º»ò­n¤£§A´NÄ~Äò¨Ï¥Îªº®Ö¤ß¡A ¸ÕµÛ ­×§ï­×¸ÉÀɨϨä¯à¥Î¡A­n¤£´Nµ¥«Ý(¥i¯à¬O¤^¨D)·sª©«D¼Ð·Ç­×¸ÉÀÉ¥X²{¡D «D¼Ð·Çªº­×¸ÉÀɦ³¦h´¶¹M? §A¦³¥i¯à´¿¸gÅ¥¹L¥¦­Ì¡D§Ú¨Ï¥Î Bill Paul ªº¤£°{Ã{ ­×¸ÉÀɨӭקï§ÚªºµêÀÀ±±¨î¥x¡A¦]¬°§Ú°Q¹½·|°{Ã{ªº´å¼Ð(³o­Ó­×¸ÉÀɸg±`¬°·sª© ®Ö¤ß¦Ó§ó·s)¡D ¥Ñ©ó¤j³¡¥÷¸û·sªº³]³ÆÅX°Êµ{¦¡³£¤w¸g³Qµo®i¦¨¥i¸ü¤J¼Ò²Õ§Î¦¡ ¡A¦]¦¹³\¦h«D¼Ð·Çªº­×¸ÉÀɪº­«­n©Ê¤w³vº¥­°§C¡D 6. ªþ¥[ªº®M¥ó §Aªº Linux ®Ö¤ß¦³³\¦h¦b­ì©lµ{¦¡½X¥»¨­¸Ì­±¨Ã¨S¦³»¡©úªº¯S©Ê¡F ³o¨Ç¯S©Ê¤@ ¯ë¬O¸g¥Ñ¥~¨Óªº³nÅé¨Ó§Q¥Î¡A¦b³o¸Ì¦C¥X¤@³¡¤À³Ì´¶¹Mªº¡G 6.1 kbd Linux ªº±±¨î¥x¦³µÛ¤ñ§A©Ò¯à¦YÅå§ó¦hªº¯S¦â¡D³o¥]¬A¤Á´«¦r«¬¡A­«·s¹ï¬M§Aªº Áä½L¡A¤Á´«Åã¥Ü¼Ò¦¡(¸û·sª©ªº®Ö¤ß)ªº¯à¤Oµ¥µ¥¡D kbd ³o®M³nÅé¸Ì¦³¯à°÷Åý¨Ï¥Î ªÌ°µ³o¨Ç°Ê§@ªº¤ä´©µ{¦¡¡AÁÙ¥[¤W¤@¤j°ïªº¦r«¬¥H¤Î´X¥G¨¬¥H¾A¥Î¥ô¦óÁä½Lªº¤@ ¨ÇÁä½L¹ï¬Mªí¡D ¥¦¥i¦b©ñ¸m®Ö¤ß­ì©l½Xªº¦P¤@¯¸¥x§ä¨ì¡D 6.2 util-linux Rik Faith ( [15]faith@cs.unc.edu) ¦¬¶°¤F¤@¤j°ï Linux ªº¤u¨ã¡A¥s°µ util-linux¡D ²{¦b¬O¥Ñ Nicolai Langfeldt ( [16]util-linux@math.uio.no) ©ÒºûÅ@¡D ¥i±q sunsite.unc.edu ªº [17]/pub/Linux/system/misc ¨ú±o¡D ¥¦¥] ¬A¤F¹³ setterm¡Ardev ¥H¤Î ctrlaltdel »P®Ö¤ß¦³Ãöªº¤u¨ã¡D ´N¹³ Rik ©Ò»¡ªº ¡A¤£­n·Q³£¤£·Q´N§â¥¦¸Ë¤W¥h! §A¤£»Ý­n¦w¸Ë¦¹®M¥ó¤¤ªº¨C¤@­ÓªF¦è¡A¦Ó¥B¦pªG §A³o¼Ë°µªº¸Ü¥i¯à·|¤Þ°_ÄY­«ªº°ÝÃD¡D 6.3 hdparm ¹³«Ü¦h³nÅé¤@¼Ë¡A³o´¿¸g¬O¤@­Ó®Ö¤ß­×¸ÉÀɤΨä¤ä´©µ{¦¡¡D ³o¨Ç­×¸ÉÀɳQ©ñ¤J°Ó ·~®Ö¤ß¤¤¡A¦Ó¥Î¨Ó³Ì¨Î¤Æ¥H¤Î½Õ¾A§AµwºÐªº¤ä´©µ{¦¡¤@¯ë¬O¤À¶}µo¦æªº¡D 6.4 gpm gpm ¬O general purpose mouse ªºÂ²¼g¡D ³o­Óµ{¦¡¥i¥HÅý§A¨Ï¥Î¤£¦PºØÃþªº·Æ ¹«¦bµêÀÀ±±¨î¥x¤§¶¡°Å¶K¡A¥H¤Î°µ¤@¨Ç¨ä¥¦ªº¨Æ±¡¡D 7. ¤@¨Ç³´¨À 7.1 make clean ¦pªG§Aªº·s®Ö¤ß·|°µ¤@¨Ç¯uªº«Ü©_©Çªº¨Æ¡A¦³¥i¯à¬O¦]¬°¦b½sĶ®Ö¤ß«e§A§Ñ¤F°µ ²M°£ make clean¡D ¯gª¬±q§Aªº®Ö¤ß¤£¥¿±`¦a±Y¼ì¨ì©_©Çªº¿é¥X¤J°ÝÃD¡A¤@ª½¨ì ¥i¼¦ªº°õ¦æ®Ä²vµ¥µ¥¤£¤@¦Ó¨¬¡A¥i¥H¬O¥ô¦ó¨Æ¡D ³Ì¦n¤]­n½T©w§A¦³°µ make dep ¡D 7.2 ¥¨¤j©Î½wºCªº®Ö¤ß ¦pªG§Aªº®Ö¤ß¦û¥Î¤F¤j¶qªº°O¾ÐÅé¡A©ÎªÌ¥¦¯uªº¬O«Ü¤j«Ü¤j¡A¤]©ÎªÌ¬O§Y¨Ï¥Î§A ¥þ·sªº 786DX6/440 ¨Ó½sĶ«o³£ÁÙ¹³¬O¥Ã»·½sĶ¤£§¹ªº¸Ü¡A ¨º»ò¦³¥i¯à¬O¦]¬°§A °t¸m¤F¤Ó¦h¤£¥²­nªºªF¦è(³]³ÆÅX°Êµ{¦¡¡AÀɮרt²Îµ¥µ¥)¡D ¦pªG§A¤£·|¥Î¨ì¬Y¨Ç ªF¦è¡A¨º´N¤£­n°t¸m¥¦¡A¦]¬°¥¦¯uªº·|¦û¥Î°O¾ÐÅé¡D ®Ö¤ß¹L©óÁs¸~³Ì©úÅ㪺¯gª¬ ´N¬Oµo¥Í°O¾ÐÅé»PºÏºÐ¤§¶¡²§±`¤j¶qªº¸ê®Æ¥æ´«¡D ¦pªG§A¤£¬O¥Î¨ººØÁn­µÅ¥°_¨Ó ¦n¹³¬O¼Q®g¾÷­°¸¨ªºÂ«¬ Fujitsu Eagles µwºÐ¡AÀˬd¤@¤U§Aªº®Ö¤ß°t¸m¡D §A¥i¥H§ä¥X§A¾÷¾¹¤W¥þ³¡°O¾ÐÅ骺¼Æ¶q¡AµM«á´î±¼ /proc/meminfo ¸Ì­±ªº ``total mem'' ©Î `free' «ü¥O©Ò±oªº°O¾ÐÅé¼Æ¶q¨Ó±oª¾®Ö¤ß¨Ï¥Î¤F¦h¤Ö°O¾ÐÅé ¡D §A¤]¥i¥H°õ¦æ `dmesg' (©ÎªÌ¤]¥i¥H¬d¬Ý®Ö¤ßªº°O¿ýÀÉ¡A¥¦¤@©w¦b·|§Aªº¨t²Î ¸Ì)¡D¬Ý°_¨Ó´N¹³³o¤@¦æ¡G Memory: 15124k/16384k available (552k kernel code, 384k reserved, 324k data) §Úªº 386 (°t¸m«Ü¤Ö©U§£)Åã¥Ü¦p¤U¡G Memory: 7000k/8192k available (496k kernel code, 384k reserved, 312k data) ¦pªG§A`¥²¶·'±o¨ì¤@¤j«¬®Ö¤ß¦ý¨t²Î«o¤£Åý§A°µ¡A§A¥i¥H¸Õ¸Õ `make bzimage'¡D §A¥i¯à¥²¶·¦w¸Ë·sª©ªº LILO ¨Ó°µ³o¥ó¨Æ¡D 7.3 ®Ö¤ßµLªk½sĶ ¦pªG¥¦¨S¦³³Q½sĶ¡A¨º»ò¥i¯à¬O¦³­Ó­×¸ÉÀÉ¥¢±Ñ¤F¡A©ÎªÌ¬O§A±q¬Y­Ó¦a¤è®³¨ìªº ­ì©lµ{¦¡½X¦³°ÝÃD¡D ¤]¦³¥i¯à¬O¦]¬°§Aªº gcc ª©¥»¤£¥¿½T©ÎÃa±¼¤F(¨Ò¦p§t¤JÀÉ ¦³¿ù»~)¡D ½T©w Linus ¦b README ¸Ì©Ò´y­zªº²Å¸¹Ãìµ²³£¦³¥¿½T«Ø¥ß¡D ¤@¯ë»¡ ¨Ó¡A¦pªG®Ö¤ß¨S¯à½sĶ¡A³oªí¥Ü¦b¬Y¨Ç¦a¤è¦³ÄY­«ªº¿ù»~¡A­«·s¦w¸Ë¬Y¨Ç¤u¨ã¥i ¯à¬O¥²¶·ªº¡D ©ÎªÌ¥i¯à§A¥Î ELF ½sĶ¾¹ (gcc 2.6.3 ©Î¥H«áªº) ¨Ó½sĶ 1.2.x ªº®Ö¤ß¡D ¦pªG ½sĶ¹Lµ{¤¤§A±o¨ì¤@¤j°ïªº xxxx undefined ªº°T®§¡A³o¥i¯à¬O§Aªº°ÝÃD¡D ­×¥¿ ªº¤èªk¤j³¡¥÷³£«Ü²³æ¡D±N³o´X¦æ¥[¨ì arch/i386/Makefile ªº³»ºÝ: arch/i386/Makefile: AS=/usr/i486-linuxaout/bin/as LD=/usr/i486-linuxaout/bin/ld -m i386linux CC=gcc -b i486-linuxaout -D__KERNEL__ -I$(TOPDIR)/include µM«á­«·s°õ¦æ make dep »P zImage¡D ¦b¤Ö¼Æ±¡ªp¤U¡Agcc ¥i¯à·|¥Ñ©óµwÅé°ÝÃD¦Ó·í±¼¡D¿ù»~°T®§·|¹³ ``xxx exited with signal 15'' ¤§Ãþªº¡A¦Ó¥B·|¬Ý°_¨Ó«Ü©_©Ç¡D §Ú¥»¨Ó¤£·Q´£³oÂIªº¡A¤£¹L ¦b§Ú¨­¤W¤]µo¥Í¹L¤@¦¸ - §Ú¦³¤@¨ÇÃaªº cache °O¾ÐÅé¡A½sĶ¾¹®É±`·|ÀH¾÷¦a·í ±¼¡D ¦pªG§A¦³¦¹°ÝÃDªº¸Ü¥ý¸ÕµÛ­«·s¦w¸Ë gcc¡D¦pªG§A±N¥~³¡ cache Ãö±¼¡A´î ¤Ö¤@¨Ç RAM ¤§«á®Ö¤ß´N½sĶ¦¨¥\¤F¡A§A¤j·§¥u·|ı±o¥iºÃ¡D §i¶D¤H­Ì¥LªºµwÅ馳°ÝÃD±`·|¨Ï¤H§xÂZ¡D¤£¹L¡A³o¤£¬O§Úµo©úªº¡D ³o¬O¤@­Ó FAQ -- ¥i¥H¦b [18]http://www.bitwizard.nl/sig11/ §ä¨ì¡E 7.4 ·sª©ªº®Ö¤ß¦ü¥G¤£¯à±Ò°Ê §A¨S¦³°õ¦æ LILO ¡A©Î¬O¨S¦³¥¿½Tªº°t¸m¥¦¡D¦³¤@¦¸§Ú´¿¸g¸I¨ìªº°ÝÃD¬O¥X¦b°t ¸mÀɸ̡A §Ú¥Î¤F `boot = /dev/hda1' ¦Ó¤£¬O `boot = /dev/hda' (³o¦b­è¶}©l ®É¯uªº¬O«Ü°Q¹½¡A¦ý¬O¤@¥¹§A¦³¤F¤@­Ó¥i¥H¥Îªº°t¸mÀÉ¡AÀ³¸Ó¤£»Ý­n¥h¦A¥h§ïÅÜ ¥¦)¡D 7.5 §A§Ñ¤F°õ¦æ LILO¡A©Î¨t²Î®Ú¥»¤£¯à±Ò°Ê ¾¾¡I²{¦b³Ì¦nªº¿ìªk¬O¥ÎºÏ¤ù±Ò°Ê¡A¨Ã¥B·Ç³Æ¥t¤@±i¥i¥H±Ò°ÊªººÏ¤ù(¹³¬O`make zdisk'®É°µªººÏ¤ù)¡D §A±oª¾¹D§Aªº®Ú¥Ø¿ý(/)©Ò¦bªº¤À³Î°Ï¥H¤Î¥¦ªº®æ ¦¡(second extended, minix µ¥µ¥)¡D ¦b¤U­±ªº¨Ò¤l¤¤¡A§A¤]±oª¾¹D§Aªº /usr/src/linux ­ì©lµ{¦¡½X¦b¨º­Ó¤À³Î°Ï¡A¥¦ªº®æ¦¡¡A¥H¤Î¥¦¤@¯ë·|±¾¦b¨º¨à¡D ¦b³o­Ó¨Ò¤l¤¤¡A ®Ú¥Ø¿ý / ¬O /dev/hda1¡A¦Ó«ù¦³ /usr/src/linux ªº¤À³Î°Ï¬O /dev/hda3¡A¤@¯ë·|±¾¦b /usr ¤U¡D ¥¦­Ì³£¬O second extended Àɮרt²Î¡D¥i¥H ¹B§@ªº®Ö¤ß¬M¹³¥s°µ zImage ¡A©ñ¦b /usr/src/linux/arch/i386/boot ©³¤U¡D ³o­Ó¥D·N¬O³o¼Ëªº¡A°²­Y¦³¤@­Ó¥i¥H¹B§@ªº®Ö¤ß¬M¹³¥s°µ zImage¡A¥i¯à¥i¥H§â¥¦ ¥Î¦b·sªººÏ¤ù¤W¡D ¥t¥~¤@­Ó¤£¤@©w·|§ó¦nªºÅܳq¿ìªk(³o¸ò§Aªº¨t²Î«ç»ò²Õ¦¨ªº ¦³Ãö)¦b»¡©ú³o­Ó¨Ò¤l¤§«á·|°Q½×¨ì¡D ­º¥ý¡A±q boot/root ºÏ¤ù©ÎªÌ¬O«æ±ÏºÏ¤ù¶}¾÷¡AµM«á±N«ù¦³¥i¹B§@®Ö¤ßªº¤À³Î°Ï ±¾¤W¨Ó¡G mkdir /mnt mount -t ext2 /dev/hda3 /mnt ¦pªG mkdir «ü¥OÅã¥Ü¸Ó¥Ø¿ý¤w¸g¦s¦b¡A©¿²¤±¼¤£¥²²z·|¥¦¡D ²{¦b¡Acd ¨ì«ù¦³¥i ¹B§@®Ö¤ßªº¦a¤è¡Dª`·N: /mnt + /usr/src/linux/arch/i386/boot - /usr = /mnt/src/linux/arch/i386/boot §â¤@±i®æ¦¡¤Æ¹LªººÏ¤ù©ñ¶i ``A:'' ºÏºÐ¾÷(½T©w¤£¬O§Aªº boot/root ºÏ¤ù!)¡A §â¬M¹³Àɶɭ˨ìºÏ¤ù¸Ì¥h¡AµM«á°t¸m§Aªº®Ú¥Ø¿ý¤À³Î°Ï: cd /mnt/src/linux/arch/i386/boot dd if=zImage of=/dev/fd0 rdev /dev/fd0 /dev/hda1 cd ¨ì®Ú¥Ø¿ý / ¨Ã¥B¨ø¤U¼Ð·Ç /usr ¤À³Î°Ï: cd / umount /mnt §A²{¦bÀ³¸Ó¥i¥H±q³o±iºÏ¤ù¥¿±`ªº¶}¾÷¤F¡D¦b³o¦¸¶}¾÷«á¤£­n§Ñ°O°õ¦æ lilo (©Î ¬O¨ä¥¦§A´¿¸g°µ¿ùªº¤°»ò¨Æ)! ¦p¦P«e­±´¿¸g´£¹Lªº¡AÁÙ¦³¥t¥~¤@ºØ«Ü´¶¹MªºÅܳq¤è¦¡¡D ¦pªG±¡ªp¬O§A¦³¤@­Ó¥i ¥H¹B§@ªº®Ö¤ß¦b©ñ¦b / (¨Ò¦p /vmlinuz)¡A§A¤]¥i¥H¨Ï¥Î¥¦¡D °²©w©Ò¦³ªº±ø¥ó³£ ¸ò¤W­±ªº¨Ò¤l¤@¼Ë¡A¦Ó§Úªº®Ö¤ß¬M¹³¬O /vmlinuz¡A¥u­n¹ï¤W­±ªº¨Ò¤l°µ³o¨Ç§ï ÅÜ: §â /dev/hda3 §ï¦¨ /dev/hda1 (/ ¤À³Î°Ï)¡A §â /mnt/src/linux §ï¦¨ /mnt¡A¨Ã¥B§â if=zImage §ï¦¨ if=vmlinuz¡D ¦Ü©ó«e­±¦³Ãöª`·N¦p¦ó±À¾É¥X /mnt/src/linux/arch/i386/boot ªº¨º­Ó³¡¤À¥i¥H©¿²¤¡D ±N LILO ¨Ï¥Î¦b¤jªºµwºÐ¤W(¶W¹L 1024 ºÏ¬W)¥i¯à·|¦³°ÝÃD¡D ½Ð°Ñ¨£ LILO mini-HOWTO ©Î¨ä¥¦¤å¥óªº»¡©ú¡D 7.6 ¨t²Îªí¥Ü `warning: bdflush not running' ³o¥i¥Hºâ¬O¤@­Ó¬Û·íÄY­«ªº°ÝÃD¡D±q 1.0 ª©¥H«áªº®Ö¤ß¶}©l(¤j·§¬O¦b 1994 ¦~ ¥|¤ë¤G¤Q¤é¥ª¥k)¡A ¦³­Ó·|¶g´Á©Ê¦a§ó·sÀɮרt²Î½w½Ä°Ïªºµ{¦¡¥s°µ `update' ³Q¤É¯Å©Î¨ú¥N±¼¤F¡D ¨ú±o `bdflush' ªº­ì©lµ{¦¡½X(§AÀ³¸Ó¥i¥H±q§A¨ú±o®Ö¤ßªº ¦a¤è§ä¨ì)¡A µM«á½sĶ¥¦(§A¥i¯à·|§Æ±æ¦bª©ªº®Ö¤ß¤U°õ¦æ½sĶ¤Î¦w¸Ë)¡D ¥¦·| ¥H `update' ¬°¦W¦w¸Ë¥¦¦Û¤v¨Ã¥B¦b­«¶}¾÷¥H«á¡A·s®Ö¤ßÀ³¸Ó·|¹B§@¨}¦n¡D 7.7 ¨t²Î»¡ undefined symbols ¦Ó¥BµLªk½sĶ §A¥i¯à¦³¤@ ELF ½sĶ¾¹(gcc 2.6.3 ©Î¥H«áªº)¦Ó¥B¬O 1.2.x (©Î§ó¦­ªº)®Ö¤ß­ì ©l½X¡D ¤@¯ë­×¥¿ªº¤èªk¬O±N³o´X¦æ¥[¨ì arch/i386/Makefile ªº³»ºÝ: AS=/usr/i486-linuxaout/bin/as LD=/usr/i486-linuxaout/bin/ld -m i386linux CC=gcc -b i486-linuxaout -D__KERNEL__ -I$(TOPDIR)/include ³o·|¥H a.out µ{¦¡®w¨Ó½sĶ 1.2.x ®Ö¤ß¡D 7.8 µLªkÅý§Úªº IDE/ATAPI CD-ROM ¥¿±`¤u§@ «Ü©_©Ç¡A¤@¤j°ï¤HµLªkÅý¥L­Ìªº ATAPI ¥úºÐ¾÷¤u§@¡A¥i¯à¬O¦]¬°¦³¤Ó¦h¨Æ®e©ö¥X ¿ù¡D §Aªº¥úºÐ¾÷¬O¦b¤@¯S§O IDE ¬É­±¤Wªº°ß¤@³]³Æ¡A¥¦¥²¶·³Q½Õ¾ã¬° ``master'' ©Î ``single''¡D ³o¥i¯à¬O³Ì±`¨£ªº¿ù»~¡D Creative Labs ²{¦b±N IDE ¬É­±©ñ¨ì¥L­Ì­µ®Ä¥d¸Ì¡D µM¦Ó¡A³o±N¾É­P¤@­Ó¦³½ì ªº°ÝÃD¡AÁöµM¦³¨Ç¤H¥u¦³¤@­Ó IDE ¬É­±¡A³\¦h¤H¦b¥D¾÷ªO¤W¦³¨â­Ó¤º«Øªº IDE ¬É­±(³q±`¦b IRQ15)¡A ¦]¦¹¤@¸Ñ¨Mªº¿ìªk¬O±NÁnÅQ¥dªº¬É­±½Õ¦¨²Ä¤T­Ó IDE (¦³ ¤H§i¶D§Ú¬O IRQ11)¡D ³o¦b 1.2.x ªº Linux ®Ö¤ß¤W·|¦³°ÝÃD¡A¦]¬°¥¦¤£¤ä´©²Ä¤T­Ó IDE ¬É­±(±q 1.3.x ¨t¦C¤w¶}©l¤ä´©¡A¦ý¥¦ÁÙ¦bµo®i¤¤¡A¦Ó¥B¤£·|¦Û°Ê°»´ú)¡D ­n¸Ñ¨M¦¹°ÝÃD ¡A§A¦³¤@¨Ç¿ï¾Ü¡D ¦pªG§A¤w¸g¦³²Ä¤G­Ó IDE °ð¡A¦pªG§A¨S¥Î¥¦©Î¨S¦³¨â³¡³]³Æ¦b¤W­±ªº¸Ü´N¦³¾÷·| ¡D ±N ATAPI ¥úºÐ¾÷±q­µ®Ä¥d¤W®³¤U¨Ó¨Ã©ñ¨ì²Ä¤G­Ó¬É­±¤W¡DµM«á§A¥i¥HÃö±¼­µ ®Ä¥d¤Wªº¬É­±¡A³o´N¥i¥H¬Ù¤U¤@­Ó IRQ¡D ¦pªG§A¨S¦³²Ä¤G­Ó IDE ¬É­±¡A½Õ¾ã­µ®Ä¥dªº¬É­±(¤£¬O­µ®Ä¥dªº­µ®Ä³¡¥÷)¨ì²Ä¤G ¬É­±¥Îªº IRQ15¡A³o¼ËÀ³¸Ó·|°Ê¡D ¦pªG¦]¬°¬Y¨Ç²z¥Ñ«D±o¨Ï¥Î``²Ä¤T­Ó''¬É­±¤£¥i¡A©Î¬O¦³¨ä¥¦°ÝÃD¡A ¨ú±o 1.3.x ªº®Ö¤ß(¨Ò¦p 1.3.57 ´N¦³)¡A¾\Ū drivers/block/README.ide ÀɮסD ¨º ¸Ì¦³§ó¦hªº¸ê°T»¡©ú¡D 7.9 ¨t²ÎÅã¥ÜÃö©ó obsolete routing requests ªº©_©Ç°T®§ ¨ú±o·sª©ªº route µ{¦¡¤Î¨ä¥¦»P route ¦³Ãöªºµ{¦¡¡D /usr/include/linux/route.h (³o¬O /usr/src/linux ¤Uªº¤@­ÓÀÉ®×)¤w¸g°µ¤F­× §ï¡D 7.10 ¨¾¤õÀð¥\¯àµLªk¦b 1.2.0 ¤W¤u§@ ¦Ü¤Ö¤É¯Å¨ì 1.2.1 ª©¡D 7.11 ``Not a compressed kernel Image file'' («DÀ£ÁY®Ö¤ß¬M¹³ÀÉ) ¤£­n¥Î¦b /usr/src/linux ²£¥Íªº vmlinux °µ¬°§Aªº±Ò°Ê®Ö¤ß¬M¹³; [..]/arch/i386/boot/zImage ¤~¬O¥¿½Tªº¡D 7.12 ¤É¯Å¦Ü 1.3.x «á¦b±±¨î¥x²×ºÝ¾÷¤Wªº°ÝÃD ±N±±¨î¥x³]©wÀÉ /etc/termcap ¤¤ªº dumb §ï¬° linux¡D §A¥i¯à·|¥²¶·¼W¥[¤@¶µ terminfo¡D 7.13 ®Ö¤ß¤É¯Å«á¦ü¥GµLªk½sĶªF¦è Linux ªº®Ö¤ß­ì©lµ{¦¡½X¥]§t¤F³\¦hªº§t¤JÀÉ(´N¬O¥Î .h µ²§ÀªºÀÉ®×)¥²¶·¬°¼Ð ·Çªº /usr/include ©Ò°Ñ¦Ò¡D ¥¦­Ì³q±`¥Î³oºØ¤èªk³Q°Ñ¦Ò(¨ä¤¤ xyzzy.h ¬O¦b /usr/include/linux ¤U): #include ¥¿±`±¡ªp¤U¡A¦b /usr/include ¤U·|¦³¤@¥s°µ linux ªº³sµ²¨ì§Aªº®Ö¤ß­ì©l½Xªº include/linux ¥Ø¿ý(¤@¯ë¨t²Î¦b /usr/src/linux/include/linux)¡D ¦pªG³o­Ó ³sµ²¨S¦³¤F¡A©Î«ü¨ì¿ù»~ªº¦a¤è¡A¤j³¡¥÷ªºªF¦è³£±NµLªk½sĶ¡D ¦pªG§Aı±o®Ö¤ß ­ì©l½X¦û¤F¤Ó¦hªºªÅ¶¡¦Ó¬å±¼¥¦¡A³oÅãµM·|¤Þµo°ÝÃD¡D ¥t¤@­Ó¥i¯àªº¿ù»~¬O¥¦ªº ÀÉ®×Åv­­; ¦pªG§Aªº root ¹w³]¤£Åý¨ä¥¦¨Ï¥ÎªÌ¬Ý¨ì¥LªºÀɮסA ¦Ó¥B§A¸Ñ¶}®Ö¤ß ­ì©l½X®É¨S¦³¥[¤W p («O¯dÀÉ®×¼Ò¦¡)¿ï¶µ¡A¨ä¥¦¨Ï¥ÎªÌ¤]·|µLªk¨Ï¥Î C ½sĶ¾¹ ¡D ÁöµM§A¥i¥H¥Î chmod «ü¥O¨Ó­×¥¿¡A¤£¹L§ó®e©öªº¤èªk¬O­«·s¸Ñ¶}§t¤JÀÉ¡D §A ¥i¥H¤@¶}©l§A¸Ñ¶}¾ã­Ó­ì©l½Xªº¦P¼Ë¤èªk¡A¤£¹L¦h¥[¤F¤@­Ó°Ñ¼Æ: blah# tar zxvpf linux.x.y.z.tar.gz linux/include ½Ðª`·N: ¦pªG /usr/src/linux ³sµ²¤£¦bªº¸Ü ``make config'' ·|­««Ø¤§¡D 7.14 ¼W¥[¤W­­ ¤U­±¤@¨Ç½d¨Ò«ü¥O§i¶D§A¦p¦ó¼W¥[®Ö¤ß´£¨Ñªº¤W­­: echo 4096 > /proc/sys/kernel/file-max echo 12288 > /proc/sys/kernel/inode-max echo 300 400 500 > /proc/sys/vm/freepages 8. ¤É¯Å¦Ü 2.0.x ªºª`·N¨Æ¶µ ®Ö¤ß 2.0.x ª©¦b¦w¸Ë¤W¤Þ¤J¤F³\¦hªº§ïÅÜ¡D ¦b­ì©lµ{¦¡½X¸Ìªº Documentation/Changes ÀÉ®×¥]§t¤F¤É¯Å¦Ü 2.0.x ª©©ÒÀ³ª¾¹Dªº¸ê°T¡D §A¥i¯à Áٻݭn¤É¯Å¤@¨ÇÃöÁ䪺®M¥ó¡A¨Ò¦p gcc¡Alibc »P SysVInit¡A¨Ã§ïÅܤ@¨Ç¨t²ÎÀÉ ®×¡D¤£¹L¡A¤]§Oºò±i¡D 9. ¥i¸ü¤J¼Ò²Õ ¥i¸ü¤J¼Ò²Õ¯à°÷¸`¬Ù°O¾ÐÅé¡A¦Ó¥B«Ü®e©ö³]©w¡D ¼Ò²Õªº½d³ò¤w¸g¥]§t¤FÀɮרt²Î ¡A¤A¤Óºô¸ô¥dÅX°Êµ{¦¡¡AºÏ±a¾÷¡A¦Lªí¾÷ÅX°Êµ{¦¡¡AÁÙ¦³§ó¦h¡D 9.1 ¦w¸Ë¼Ò²Õ¤u¨ã ¼Ò²Õ¤u¨ã¥i¥H±q§A¨ú±o®Ö¤ßªº¦a¤è§ä¨ì¡A¦p modules-x.y.z.tar.gz; ¿ï¾Ü»P§A¥Ø «e®Ö¤ßª©¥»¬Ûµ¥©Îµy§Cªº³Ì±µªñªº x.y.z¡D ¥Î `tar zxvf modules-x.y.z.tar.gz' ¸Ñ¶}¡D cd ¨ì¥¦²£¥Íªº¥Ø¿ý(modules-x.y.z)¡A¬Ý¤@¤U README¡AµM«á«ö·Ó¦w¸Ë«ü¥Ü°õ¦æ (³q±`«Ü²³æ¡A´N¹³ make install ¤§Ãþªº)¡D µM«á§A¦b /sbin À³¸Ó·|¦³³o¨Çµ{¦¡ insmod, rmmod, ksyms, lsmod, genksyms, modprobe, ¥H¤Î depmod¡D ¦pªG§A·Qªº¸Ü¡A¥i¥H¥Î insmod ¸Ìªº½d¨ÒÅX°Êµ{ ¦¡``hw''¨Ó´ú¸Õ³o¨Ç¤u¨ã; °Ñ¨£ INSTALL Àɸ̪º²Ó¸`»¡©ú¡D insmod «ü¥O±N¤@­Ó¼Ò²Õ´¡¤J¹B¦æ¤¤ªº®Ö¤ß¡D¼Ò²Õ³q·|¥H .o ¬°µ²§À; ¤W­±´£¨ìªº ½d¨Òµ{¦¡´N¥s°µ drv_hello.o¡A¦]¦¹­n´¡¤J¦¹¼Ò²Õ¡A´N¥Î `insmod drv_hello.o'¡D ­n¤F¸Ñ¥Ø«e®Ö¤ß¥¿¦b¨Ï¥Îªº¼Ò²Õ¡A¥Î lsmod «ü¥O¡D¿é¥X¬Ý°_¨Ó ¹³³o¼Ë: blah# lsmod Module: #pages: Used by: drv_hello 1 `drv_hello' ¬O³o¼Ò²Õªº¦WºÙ¡A¥¦¥Î¤F¤@­¶ (4K) ªº°O¾ÐÅé¡A¦Ó¥B¥Ø«e¨S¦³¨ä¥¦ ªº®Ö¤ß¼Ò²Õ¨Ì¿à©ó¥¦¡D ­n²¾°£¦¹¼Ò²Õ¡A¥Î `rmmod drv_hello'¡Dª`·N rmmod »Ý ­nªº¬O¼Ò²Õ¦WºÙ¡A¦Ó¤£¬OÀɮצWºÙ; ´N¬O§A±q lsmod «ü¥O¦C¥X¨Óªº¡D¨ä¾l¤u¨ãªº §@¥Î¦b½u¤W¤â¥U¤¤³£¦³»¡©ú¡D 9.2 »P®Ö¤ßµo¦æªº¼Ò²Õ ¦b 2.0.30 ª©¤¤¡A´X¥G©Ò¦³ªºªF¦è³£¥i¥HÅܦ¨¥i¸ü¤J¼Ò²Õ¡D ­n¨Ï¥Î¥i¸ü¤J¼Ò²Õ¡A ­º¥ý½T©w§A¨S¦³±N¨ä°t¸m¨ì¥¿±`ªº®Ö¤ß¸Ì¡A¤]´N¬O»¡¡A¦b `make config' ®É¤£¬O ¦^µª y¡D ½sĶ·s®Ö¤ß¨Ã¥Î¥¦¨Ó¶}¾÷¡DµM«á¡A¦A¦¸ cd ¨ì /usr/src/linux¡AµM«á °õ¦æ `make modules'¡D ³o±N½sĶ©Ò¦³§A¥¼«ü©w¦b®Ö¤ß°t¸m¸Ìªº¼Ò²Õ¡A¨Ã±N¨ä³s µ²¨ì /usr/src/linux/modules¡D §A¥i¥Hª½±µ¥Ñ¦¹¥Ø¿ý¨Ï¥Î¡A©Î¬O°õ¦æ `make modules_install' ±N¨ä¦w¸Ë¨ì /lib/modules/x.y.z¡A¨ä¤¤ x.y.z ¬O®Ö¤ßª©¥»¡D ³o¹ï³B²zÀɮרt²Î¤W¯S§O«K§Q¡D§A¥i¯à¨Ã¤£¸g±`¨Ï¥Î minix ©Î MS-DOS ªºÀɮרt ²Î¡D ¨Ò¦p¡A¦pªG§Ú¹J¨ì¤@ MS-DOS ªº³nºÐ¤ù¡A§Ú·|¥Î insmod /usr/src/linux/modules/msdos.o¡A¨Ã¦b¨Ï¥Î§¹¦¨«á¥Î rmmod msdos «ü¥O±N¨ä¥h ±¼¡D ¦¹¹Lµ{¤j¬ù¥i¥H¸`¬Ù®Ö¤ß 50K ¥ª¥kªº°O¾ÐÅé¡D¹ï©ó minix Àɮרt²Î¦³¤@ÂI ­nª`·Nªº´N¬O¡A ¬°¤F­n¨Ï¥Î``«æ±ÏºÏ¤ù''¡A§AÀ³¸ÓÁ`¬Oª½±µ±N¥¦°t¸m¨ì®Ö¤ß¤¤¡D 10. ¨ä¥¦°t¸m¿ï¶µ ¥»¸`¥]¬A¤F¦b°t¸m¤@¸`¤¤¥¼¦C¥Xªº®Ö¤ß°t¸m¿ï¶µ(¦b make config ®É)¡D ¤j³¡¥÷ ªº³]³ÆÅX°Êµ{¦¡¨Ã¥¼¦C¥X¡D 10.1 General setup (¤@¯ë³]©w) Normal floppy disk support (¤@¯ë³nºÐ¤ä´©) - ´N¬O³o­Ó¡D §A¥i¯à·|·Q¬Ý¤@¤U drivers/block/README.fd ³o­ÓÀÉ®×; ¹ï IBM Thinkpad ªº¨Ï¥ÎªÌ¨Ó»¡¯S§O­«­n ¡D XT harddisk support (XT µwºÐ¤ä´©) - ¦pªG§A·Q¥Î¦Ñ¥j¸³ªº¤K¦ì¤¸ XT ±±¨î¾¹ ªº¸Ü¡D PCI bios support (PCI bios ªº¤ä´©) - ¦pªG§A¦³ PCI¡A§A¥i¯à·|·Q¥´¶}¦¹¿ï¶µ ¡D ¦ý­n¤p¤ß¡A¬Y¨Çªº PCI ¥D¾÷ªO¦b¦¹¿ï¶µ¤U¥i¯à·|·í±¼¡D§ó¦hÃö©ó PCI ¶×¬y ±Æ¦b Linux ¤U¨Ï¥Îªº¸ê°T¥i¥H¦b [19]PCI-HOWTO ¸Ì§ä¨ì¡D Kernel support for ELF binaries (®Ö¤ß¤ä´© ELF °õ¦æÀÉ) - ELF ¬O¤@ºØ·sªº ¤G¶i¦ì°õ¦æÀÉ¡D Linux ¦ü¥G¥¿´Â¦¹¤è¦V«e¶i¡A©Ò¥H§A¥i¯à·|­n³o­Ó¡D Set version information on all symbols for modules - ¦b¹L¥h¡A®Ö¤ß¼Ò²Õ»P ¨C­Ó·s®Ö¤ß¤@°_³Q½sĶ¡D ¦pªG§A¦^µª y¡A¥¦¥i¯àÅý§A¨Ï¥Î¤£¦P patchlevel ¤U½s Ķªº¼Ò²Õ¡D °Ñ¨£ README.modules ¤¤ªº¸Ô²Ó»¡©ú¡D 10.2 Networking options (ºô¸ô¿ï¶µ) ºô¸ô¿ï¶µ¦b [20]NET-3-HOWTO (©Î¬O NET-¤°»ò-HOWTO)¤¤´y­z¡D 11. ¯¦³Z©M§Þ¥© 11.1 ­«¾É make ©Î¬O patch «ü¥Oªº¿é¥X ¦pªG§A·Q­n°O¿ý³o¨Ç `make' ©Î¬O `patch' «ü¥O¨ì©³°µ¤F¨Ç¤°»ò¡A §A¥i¥H§â¿Ã ¹õªº¿é¥X­«¾É¨ì¤@­ÓÀÉ®×¥h¡D­º¥ý¡A­nª¾¹D§A¥Îªº¬O¬O¨º¤@ºØ shell¡G `grep root /etc/passwd' µM«á´M§ä¬Ý°_¨Ó¹³ `/bin/csh' ¤@ÃþªºªF¦è¡D ¦pªG§A¨Ï¥Îªº¬O sh ©Î¬O bash¡A (command) 2>&1 | tee (output file) ±N·|§â¤@¥÷ (command) ªº¿é¥X©ñ¨ì `(output file)' ³o­ÓÀÉ®×¥h¡D ¦pªG¬O csh ©Î tcsh¡A¥Î (command) |& tee (output file) ³o­Ó»yªk¡D ¦pªG¬O rc (ª`·N¡G§AÀ³¸Ó¤£·|¬O¥Î rc)¡A»yªk¬O (command) >[2=1] | tee (output file) 11.2 ±ø¥ó¦¡ªº®Ö¤ß¦w¸Ë °£¤F¨Ï¥Î³nºÐ¤ù¡AÁÙ¦³¼ÆºØ¦b¤£°Ê®֤ߪº±¡ªp¤U´ú¸Õ·s®Ö¤ßªº¤èªk¡D ¤£¹³¨ä¥¦ ªº Unix ¨t²Î¡ALILO ¨ã¦³±q¥ô¦ó¦a¤è±Ò°Ê®Ö¤ßªº¯à¤O¡D (¤£¹L¦pªG§A¦³¤jªºµwºÐ ¡A¶W¹L 500 MB ªº¡A½Ð°Ñ¦Ò LILO ªº¤å¥ó»¡©ú±N¥i¯à¤Þ°_ªº°ÝÃD¡D) ¦]¦¹¡A¦pªG §A¦b LILO °t¸mÀɮפ¤¥Î¹³³o¼Ëªº image = /usr/src/linux/arch/i386/boot/zImage label = new_kernel §A¥i¥H¦b¤£°ÊÂÂ®Ö¤ß /vmlinuz ªº±¡ªp¤U¿ï¾Ü°õ¦æ·s½sĶªº®Ö¤ß(·íµM¡A¦b°õ¦æ§¹ lilo «á)¡D ¥s LILO ±Ò°Ê·s®Ö¤ß³Ì²³æªº¤èªk´N¬O¦b±Ò°Ê®É«ö¤U shift Áä(·í§A ¦b¿Ã¹õ¥u¬Ý¨ì LILO ®É)¡A ³o·|µ¹§A¤@´£¥Ü²Å¸¹¡D¦¹®É§A¥i¥HÁä¤J `new_kernel' ¨Ó±Ò°Ê·s®Ö¤ß¡D ¦pªG§A·Q¦b¨t²Î¤¤¦P®É«O¦³¼ÆºØ¤£¦Pªº®Ö¤ß­ì©lµ{¦¡½X(¤p¤ß¡A³o·|¥Î±¼¤j¶qªºµw ºÐªÅ¶¡)¡A ³Ì´¶³qªº¤èªk´N¬O±N¨ä©R¦W¬° /usr/src/linux-x.y.z¡A¨ä¤¤ x.y.z ¬O®Ö¤ßª©¥»¡D µM«á§A¥i¥H¥Î²Å¸¹³sµ²¨Ó``¿ï¾Ü''¤@¥÷­ì©l½X; ¨Ò¦p¡A¥Î `ln -sf linux-1.2.2 /usr/src/linux' ·|Åý 1.2.2 ¦¨¬°¥Ø«eªº®Ö¤ß¾ð¡D ¦ý¦b«Ø¥ß ²Å¸¹³sµ²¤§«e¡A¥ý½T©w ln «ü¥O³Ì«á¤@­Ó°Ñ¼Æ¤£¬O¤@­Ó¯u¥¿ªº¥Ø¿ý(ªº²Å¸¹³sµ² ¨S¦³Ãö«Y); §_«hµ²ªG¥i¯à¤£·|¬O§A©Ò¹w´Áªº¡D 11.3 ®Ö¤ß§ó·s Russell Nelson ( [21]nelson@crynwr.com) Á`µ²¤F·sª©®Ö¤ßªº§ïÅÜ¡D ³o¨Ç¬O² µuªº¡A¦Ó¥B§A¦b¤É¯Å«e¥i¯àÀ³¸Ó¥ý¬Ý¤@¤U¡D¥i¥H±q°Î¦W FTP ¯¸ ftp.emlist.com ªº [22]pub/kchanges¡A 12. ¨ä¥¦¥i¯à¬ÛÃö¦³¥Îªº HOWTOs * Sound-HOWTO: ­µ®Ä¥d»P¤u¨ã * SCSI-HOWTO: ©Ò¦³Ãö©ó SCSI ±±¨î¥d»P³]³Æªº¸ê°T * NET-2-HOWTO: ºô¸ô * PPP-HOWTO: ¯S§OÃö©ó PPP ºô¸ôªº * PCMCIA-HOWTO: µ§°O«¬¹q¸£ªºÅX°Êµ{¦¡ * ELF-HOWTO: ¤°»ò¬O ELF¡A¦p¦óÂà´«µ¥¡K * Hardware-HOWTO: ¤ä´©µwÅ骺·§­n * Module-HOWTO: §ó¦h»P®Ö¤ß¼Ò²Õ¦³Ãöªº * Kerneld mini-HOWTO: Ãö©ó kerneld * BogoMips mini-HOWTO: §A¥i¯à·|¦³¿³½ìªº 13. Âø¶µ 13.1 §@ªÌ Linux Kernel-HOWTO ªº§@ªÌ¤ÎºûÅ@¤H¬O Brian Ward ( [23]bri@blah.math.tu-graz.ac.at)¡D ½Ð±N¥ô¦óµû½×¡A¸É¥R»P§ó¥¿±Hµ¹§Ú(§ó¥¿ ¹ï§Ú¨Ó»¡¬O¯S§O­«­nªº)¡D §A¥i¥H±q³o¨Ç URL §ä¨ì§Úªººô­¶: [24]http://www.math.psu.edu/ward/ [25]http://blah.math.tu-graz.ac.at/~bri/ ÁöµM§Ú¾¨¥i¯à¦a¥h³B²z¹q¤l¶l¥ó¡A¦ý½Ð°O¦í§Ú¨C¤Ñ³£¦¬¨ì¤j¶qªº«H¥ó¡A©Ò¥H¥i¯à ­nªá¤@ÂI®É¶¡¤~·|¦^ÂЧA¡D ¯S§O¬O±H«H¨Ó°Ý§Ú°ÝÃDªº¡A½Ð¾¨¶q«D±`²M·¡»P¸ÔºÉ¦a ´y­z§Aªº°T®§¡D ¦pªG§A»¡ªº¬O¬Y­ÓµLªk¹B§@ªºµwÅé(©ÎÃþ¦üªº)¡A§Ú»Ý­nª¾¹D§Aªº µwÅé°t¸m¬O¤°»ò¡D ¦pªG§A­n¦^³ø¿ù»~¡A¤£­n¥u¬O»¡``§Ú³o¼Ë¸Õ¦ý¥¦µ¹§Ú·|¿ù»~°T ®§''; §Ú»Ý­nª¾¹D³o­Ó¿ù»~°T®§¬O¤°»ò¡D §Ú¥i¯à¤]·Qª¾¹D§Aªº®Ö¤ß¡Agcc¡Alibc ªºª©¥»¬O¤°»ò¡A¦pªG§A¥u¬O§i¶D§Ú§A¥Îªº¬O³o­Ó©Î¨º­Ó®M¥ó¡A¨º¨S¤°»ò¥Î¡D §Ú¤£ ¤¶·N§A°Ý§Ú²³æªº°ÝÃD; ½Ð°O¦í¡A¦pªG§A¤£°Ý¡A§A±N¥Ã»·¤£·|±o¨ì¸Ñµª¡D §Ú­n·P Á¨C­Óµ¹§Ú¦^õXªº¤H­Ì¡D ¦pªG§A¼g«Hµ¹§Ú¦ý¦b¤@¬q¦X²zªº®É¶¡¤º¨S¦³±o¨ì¦^À³(¤T¬P´Á©Î§ó¤[)¡A¨º»ò¥i¯à §Ú¤£¤p¤ß¬å±¼¤F§Aªº«H¥ó©Î½Ñ¦p¦¹Ãþªº(©êºp)¡D ½Ð¦A¸Õ¤@¦¸¡D §Ú¦¬¨ì³\¦h«H¥ó¬OÃö©óµwÅé°ÝÃDªº¡D³o¨S°ÝÃD¡A¦ý½Ð¤F¸Ñ§Ú¨Ã¤£¬O¼ô±x¥@¬É¤W©Ò ¦³µwÅ骺¤H¦Ó¥B§Ú¤]¤£ª¾¹D§Ú¯àÀ°¦h¤Ö¦£¡D §Ú­Ó¤H¨Ï¥Îªº¾÷¾¹¦³ IDE »P SCSI µwºÐ¡ASCSI ¥úºÐ¾÷¡A3Com »P WD ªº¤A¤Óºô¸ô¥d¡A¦ê¦C·Æ¹«¡A PCI ¥D¾÷ªO¡ANCR 810 SCSI ±±¨î¾¹¡AAMD 386DX40 w/Cyrix »²§U³B²z¾¹¡AAMD 5x86¡AAMD 486DX4 »P Intel 486DX4 ³B²z¾¹ (³o¥u¬O§Ú¦b¨Ï¥Î¦Ó¥B¼ô±xªºµwÅéºK­n¡A¨Ã¤£¬O«Øij¡A ¦ý¦pªG§A·Q­n¥Î¡AÅwªï¨Ó¸ß°Ý :-) )¡D 0.1 ª©§¹¦¨©ó 1994 ¦~¤Q¤ë¤T¤é¡D¥»¤å¥ó¥i¥H SGML, PostScript, TeX, roff »P ¯Â¤å¦r®æ¦¡¨ú±o¡D 13.2 ¹w©w¥Ø¼Ð ``¯¦³Z©M§Þ¥©'' ¤@¸`¤Ó¤Ö¤F¡D§Ú§Æ±æ¯à¥Î±q§O¤H±o¨ìªº«Øij¨ÓÂX¥R¡D ``ªþ¥[ªº®M¥ó'' ¤@¸`¤]¬O¡D Áٻݭn§ó¦hªº°»¿ù/·í¾÷¦^´_¸ê°T¡D 13.3 °^ÄmªÌ ¥]§t¤F¤@¤p³¡¥÷ Linus ªº README ÀÉ®× (kernel hacking ¿ï¶µ)¡D·PÁ Linus! uc@brian.lunetix.de (Ulrich Callmeier): patch -s and xargs. quinlan@yggdrasil.com (Daniel Quinlan): corrections and additions in many sections. nat@nat@nataa.fr.eu.org (Nat Makarevitch): mrproper, tar -p, many other things boldt@math.ucsb.edu (Axel Boldt): collected descriptions of kernel configuration options on the net; then provided me with the list lembark@wrkhors.psyber.com (Steve Lembark): multiple boot suggestion kbriggs@earwax.pd.uwa.edu.au (Keith Briggs): some corrections and suggestions rmcguire@freenet.columbus.oh.us (Ryan McGuire): makeables additions dumas@excalibur.ibp.fr (Eric Dumas): French translation simazaki@ab11.yamanashi.ac.jp (Yasutada Shimazaki): Japanese translation jjamor@lml.ls.fi.upm.es (Juan Jose Amor Iglesias): Spanish translation mva@sbbs.se (Martin Wahlen): Swedish translation jzp1218@stud.u-szeged.hu (Zoltan Vamosi): Hungarian translation bart@mat.uni.torun.pl (Bartosz Maruszewski): Polish translation donahue@tiber.nist.gov (Michael J Donahue): typos, winner of the ``sliced bread competition'' rms@gnu.ai.mit.edu (Richard Stallman): ``free'' documentation concept/distribution notice dak@Pool.Informatik.RWTH-Aachen.DE (David Kastrup): NFS thing esr@snark.thyrsus.com (Eric Raymond): various tidbits ´¿±H«Hµ¹§Ú°Ý°ÝÃDªº¤H¤]¦³«Ü¤jÀ°§U¡D 13.4 ª©ÅvÁn©ú¡A³\¥i¡A½Ñ¦p¦¹Ãþªº Copyright © Brian Ward, 1994-1997. Permission is granted to make and distribute copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the derived work is distributed under the terms of a permission notice identical to this one. Translations fall under the catagory of ``modified versions.'' Warranty: None. Recommendations: Commercial redistribution is allowed and encouraged; however, it is strongly recommended that the redistributor contact the author before the redistribution, in the interest of keeping things up-to-date (you could send me a copy of the thing you're making while you're at it). Translators are also advised to contact the author before translating. The printed version looks nicer. Recycle. References 1. mailto:bri@blah.math.tu-graz.ac.at 2. http://www.phys.ntu.edu.tw/~cwhuang/pub/ 3. http://ultima.ncnu.edu.tw/~asdchen/ 4. file://localhost/tmp/zh-sgmltools.24048/Hardware-HOWTO.html 5. ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus 6. ftp://ftp.edu.tw/OS/Linux/kernel 7. http://www.linux.org/ 8. file://localhost/tmp/zh-sgmltools.24048/Kernel-HOWTO.txt.html#other-options 9. file://localhost/tmp/zh-sgmltools.24048/HOWTO/SCSI-HOWTO.html 10. file://localhost/tmp/zh-sgmltools.24048/Kernel-HOWTO.txt.html#pitfalls 11. file://localhost/tmp/zh-sgmltools.24048/Sound-HOWTO.html 12. mailto:axel@uni-paderborn.de 13. http://math-www.uni-paderborn.de/~axel/config_help.html 14. ftp://sunsite.unc.edu/pub/Linux/kernel/config/krnl_cnfg_hlp.x.yz.tgz 15. mailto:faith@cs.unc.edu 16. mailto:util-linux@math.uio.no 17. ftp://sunsite.unc.edu/pub/Linux/system/misc 18. http://www.bitwizard.nl/sig11/ 19. file://localhost/tmp/zh-sgmltools.24048/HOWTO/PCI-HOWTO.html 20. file://localhost/tmp/zh-sgmltools.24048/HOWTO/NET-3-HOWTO.html 21. mailto:nelson@crynwr.com 22. ftp://ftp.emlist.com/pub/kchanges 23. mailto:bri@blah.math.tu-graz.ac.at 24. http://www.math.psu.edu/ward/ 25. http://blah.math.tu-graz.ac.at/~bri/