\documentclass[letterpaper]{article}
\nonstopmode
\akai
\usepackage{linuxdoc-sgml}
\usepackage{qwertz}
\usepackage{url}
\usepackage[latin1]{inputenc}
\usepackage{t1enc}
\usepackage[english]{babel}
\usepackage{epsfig}
\usepackage{null}
\def\addbibtoc{
\addcontentsline{toc}{section}{\numberline{\mbox{}}\relax\bibname}
}%end-preamble
\setcounter{page}{1}
\title{Kernel HOWTO ¤¤Ä¶ª©}
\author{§@ªÌ: Brian Ward {\ttfamily \onlynameurl{bri@blah.math.tu-graz.ac.at}}\\ 
Ä¶ªÌ: \onlynameurl{C.W.Huang}
\& \onlynameurl{Asd L. Chen}}
\date{v0.80, 26 May 1997.
Â½Ä¶¤é´Á: 25-29 August 1997}
\abstract{³o¬O¤@¥÷Ãö©ó¦p¦ó°t¸m¡B½sÄ¶¡B¤É¯Å®Ö¤ß¥H¤Î±ÆÃø¸Ñ¯Éªº¸Ô²Ó«ü¤Þ¡D}


\begin{document}
\maketitle
\tableofcontents

\section{Â²¤¶}

§A¬O§_»Ý­n¾\Åª³o¥÷¤å¥ó? ¦pªG§A¦³¤U¦C¥ô¦ó¯gª¬¤§¤@ªº¸Ü¡A¬Oªº¡G

\begin{itemize}
\item  ``«u§r¡I³o®M wizzo-46.5.6 ³nÅé»¡¥¦»Ý­n 1.8.193 ª©ªº®Ö¤ß¡A¦Ó§Ú«o¤´µM¥u¦³ 1.0.9 ª©¡I''
\item  ¤ñ¸û·sªº®Ö¤ß¤§¤@ùØ­±¦³§A¥¿¦n»Ý­nªº¤@­Ó³]³ÆÅX°Êµ{¦¡¡D
\item  §A¹ï©ó¦p¦ó½sÄ¶®Ö¤ß¯uªº¤@µL©Òª¾¡D
\item  ``¦b README ÀÉ®×¸Ì­±{\itshape ¯uªº\/}´N¬O¥þ³¡ªº¸ê®Æ¤F¶Ü?''
\item  §A¨Ó¡A§A¸Õ¡A¥¦ÁÙ¬O¤£°Ê¡D
\item  §A»Ý­n¬Y¨Æµ¹¤©¤@ª½­n¨D§A¬°¥L­Ì¦w¸Ë®Ö¤ßªº¤H­Ì¡D
\end{itemize}





\subsection{½Ð¥ý¬Ý¦¹!}

³o¥÷¤å¥ó¤¤ªº¬Y¨Ç½d¨Ò°²³]§A¦³ GNU {\ttfamily tar}¡A{\ttfamily find} ¥H¤Î {\ttfamily 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




\subsection{¤å³¹­·®æ»¡©ú}

¬Ý°_¨Ó¹³³o¼Ë {\ttfamily 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¥´ ``{\ttfamily make config}'' ®É¡A
§Ú·|¼g `{\ttfamily make config}'¡A¦Ó¤£¬O `{\ttfamily make config}.'¡D




\section{­«­n°ÝÃD»P¸Ñµª}




\subsection{¤£ºÞ«ç»ò¼Ë¡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




\subsection{§Ú¬°¤°»ò­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




\subsection{¸û·sªº®Ö¤ß¤ä´©¨º¨ÇµwÅé?}

½Ð¬Ý \onlynameurl{Hardware-HOWTO} ¤å¥ó¡D
¥t¤@­Ó¤èªk¬O¡A§A¥i¥H¬d¬Ý Linux ­ì©lµ{¦¡½X¤¤ªº `{\ttfamily config.in}' ÀÉ¡A
©ÎªÌ´N¦b·í§A¸ÕµÛ¥h `{\ttfamily make config}' ®É§ä¥X¨Ó¡D
`{\ttfamily 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




\subsection{§Ú»Ý­n¨º­Óª©¥»ªº gcc ©Î¬O libc ?}

Linus ¹ï³o­Ó°ÝÃDªº«ØÄ³©ñ¦b Linux ­ì©lµ{¦¡ªº {\ttfamily 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




\subsection{¤°»ò¬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




\subsection{§Ú»Ý­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§Ú¤£¯à¤£«ØÄ³§A¦A¶R¤@¥xºÏºÐ¾÷¡D)




\subsection{³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ªº«ØÄ³¬O¥h³Ü¤@ÂI©@°Ø¡A¬ÝÂI¹qµø¡AÂ´¨Ç¤ò½u¡A©Î¥ô¦ó§A³ßÅwªº¨Æ¡D
¦pªG§Aªº¾÷¾¹¯uªº«ÜºCªº¸Ü§A¤]¸Ó´«¥x¸û§Öªº¾÷¾¹¡D




\section{¦p¦ó¯u¥¿¶i¦æ®Ö¤ßªº°t¸m?}




\subsection{¨ú±o­ì©lµ{¦¡½X}

§A¥i¥H¸g¥Ñ°Î¦W ftp ¯¸±q {\ttfamily ftp.funet.fi} ªº {\ttfamily \onlynameurl{/pub/Linux/PEOPLE/Linus}}¡A
©Î¬O¨ä¥¦ MIRROR ¯¸¨ú±o¡D({[}{\ttfamily Ä¶µù}] ¥xÆW¥i±q {\ttfamily \onlynameurl{ftp.edu.tw}} ¨ú±o¡D)
ÀÉ®×¦WºÙ¤@¯ë¬O¥H¼Ð°O¦¨ {\ttfamily linux-x.y.z.tar.gz} ¬°¥Nªí¡A¨ä¤¤ªº {\ttfamily x.y.z} ¬Oª©¥»½s¸¹¡D
¸û·sªº(§ó¦nªº?)ª©¥»¥H¤Î­×¸ÉÀÉ¤@¯ë¬O©ñ¦bÃþ¦ü `{\ttfamily v1.1}' ¥H¤Î `{\ttfamily 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

{\itshape ±j¯P\/}«ØÄ³§A¥h§ä mirror ªº ftp ¸`ÂI¡A¦Ó¤£­nª½±µ¨ì {\ttfamily ftp.funet.fi} ¥h! 
©³¤U¬O¤@¨Ç mirrors ¥H¤Î¨ä¥L¸`ÂIªºÂ²­n¦Cªí:

\begin{verbatim}
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
\end{verbatim}


¤@¯ë¨Ó»¡¡A{\ttfamily sunsite.unc.edu} ªº mirror ¯¸¬O«Ü¦n§äªº¡D
ÀÉ®× {\ttfamily /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 {\ttfamily \onlynameurl{http://www.linux.org/}}¡D




\subsection{¸Ñ¶}­ì©lµ{¦¡½Xªº¥]¸Ë}

½T©w§A¬O¥H`{\ttfamily root}'ªº¨­¥÷Ã±¤J¡AµM«á {\ttfamily cd} ¨ì {\ttfamily /usr/src}¡D 
¦pªG§A¦w¸Ë Linux ®É¤w¸g¦w¸Ë¤F®Ö¤ß­ì©lµ{¦¡½X¡A¦b³o­Ó¥Ø¿ý©³¤UÀ³¸Ó¤w¸g¦s¦b¤@­Ó¥s°µ `{\ttfamily 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
`{\ttfamily uname -r}' ³o­Ó«ü¥O±N·|§i¶D§A¥Ø«eªº®Ö¤ßª©¥»¡D
©Ò¥H¡A¦pªG `{\ttfamily uname -r}' Åã¥Ü `{\ttfamily 1.0.9}'¡A§A´N¥i¥H§â `{\ttfamily linux}' §ï¦W(¥Î `{\ttfamily mv}')¬° `{\ttfamily 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{\ttfamily /usr/src} ¥Ø¿ý¤U¨S¦³ `{\ttfamily linux}' ³o­Ó¤l¥Ø¿ý´N¹ï¤F¡D



¦b {\ttfamily /usr/src} ¥Ø¿ý¤U¡A¥Î `{\ttfamily tar zxpvf linux-x.y.z.tar.gz}' ¨Ó¸Ñ¶}­ì©lµ{¦¡½Xªº¥]¸Ë
(¦pªG§A®³¨ìªº¬O {\ttfamily .tar} ªºÀÉ®×¡A«á­±¨S¦³¥[¤W {\ttfamily .gz}¡A¨º´N¥Î `{\ttfamily tar xpvf linux-x.y.z.tar}')¡D
§A±N·|¬Ý¨ì­ì©lµ{¦¡ªº¤º®e­¸³u¦Ó¹L¡D·í¥¦§¹¦¨¥H«á¡A¦b {\ttfamily /usr/src} ±N·|¥X²{¤@­Ó·sªº `{\ttfamily linux}' ¤l¥Ø¿ý¡D
{\ttfamily cd} ¨ì {\ttfamily linux} ¥Ø¿ý¤UµM«á¬d¬Ý {\ttfamily README} ÀÉ¡A
¸Ì­±À³¸Ó·|¦³¤@¬q¼ÐÃD¬° `{\ttfamily INSTALLING the kernel}' ©ÎÃþ¦üªº¤å¦r¡D
¦pªG¾A·íªº¸Ü¡A¥ý¨Ì·Ó»¡©ú¸Ìªº«ü¥Ü ¢w «Ø¥ß¸Ó¦³ªº²Å¸¹Ãìµ²¡A²¾°£¹L®Éªº .o ÀÉ®×µ¥µ¥µ¥½Ñ¦p¦¹Ãþªº¤u§@¡D




\subsection{°t¸m®Ö¤ß}

ª`·N¡G³o³¡¥÷¤º®e¦³¨Ç¬O­«ÂÐ Linus ªº {\ttfamily README} ÀÉ®×¤¤ªº¬ÛÀ³³¹¸`©Î¥[¥H­×­q¡D



¦b {\ttfamily /usr/src/linux} ¤U°õ¦æ `{\ttfamily 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 {\ttfamily /bin/bash}¡A{\ttfamily /bin/sh} ©Î {\ttfamily \$BASH}¡D



ÁÙ¦³¨ä¥¦ºØ `{\ttfamily make config}' ªº¤è¦¡§A¥i¯à·|Ä±±o§ó®e©ö¨Ï¥Î¡D
¹ï¨º¨Ç°õ¦æ X Window ªº¤H§A¦pªG¦³¸Ë Tk ªº¸Ü¥i¥H¸ÕµÛ¥Î `{\ttfamily make xconfig}'¡D
`{\ttfamily 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±`¥Î `{\ttfamily y}' ©Î `{\ttfamily n}' ´N¥i¥H¤F¡D
³]³ÆÅX°Êµ{¦¡³q±`·|¦³¤@­Ó `{\ttfamily 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
½Ð¨£``\ref{other-options} {(¨ä¥¦°t¸m¿ï¶µ)}''¤@¸`¹ï¨ä¤¤ªºÂ²µu»¡©ú¡D



¦b 2.0.x ©Î¥H«áªºª©¥»¤¤¦³¤@­Ó `?' ¿ï¶µ¡A´£¨Ñ¤F³o­Ó°t¸m°Ñ¼ÆªºÂ²µu´y­z¡D
³o¨Ç¸ê°TÀ³¸Ó³£¬O³Ì·sªº¡D




\subsubsection{Kernel math emulation (®Ö¤ßªº¼Æ¾Ç¹Bºâ¼ÒÀÀ)}

¦pªG§A¨S¦³¼Æ¾Ç»²§U¹Bºâ³B²z¾÷(§A¥u¦³¤@¥x³æ¯Âªº 386 ©Î 486SX)¡A¨º»ò§A¦b
³o¸Ì­n¦^µª `{\ttfamily y}'¡D¦pªG§A¤w¸g¦³¼Æ¾Ç»²§U¹Bºâ³B²z¾÷«oÁÙ¦^µª `{\ttfamily 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




\subsubsection{Normal (MFM/RLL) disk and IDE disk/cdrom support (¼Ð·ÇµwºÐ¤ä´©)}

§A¦b³o¸Ì®t¤£¦h³£±o¦^µª `{\ttfamily 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




\subsubsection{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¦^µª `{\ttfamily y}'¡D
µM¦Ó¡A¬Y¨Ç³nÅé®M¥ó(¨Ò¦p X Window ¨t²Î)»Ý­nºô¸ô¤ä´©¡A§Y¨Ï§Aªº¾÷¾¹¨Ã¤£¯u¥¿³s±µ¨ìºô¸ô¤W¡D³o±¡§Î§A¤]À³¸Ó¦^µª `{\ttfamily y}'¡D
µM«á¡A§A·|³Q°Ý¨ì¬O§_»Ý­n¤ä´© TCP/IP ºô¸ô¡A¦pªG§A¤£¤Q¤À½T©w¡A´N¦^µª `{\ttfamily y}'¡D




\subsubsection{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




\subsubsection{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¦^µª {\ttfamily n}¡D




\subsubsection{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




\subsubsection{SCSI support (SCSI ªº¤ä´©)}

¦pªG§A¦³ SCSI ³]³Æ¡A¨º»ò´N¦^µª `{\ttfamily y}'¡D
±µµÛ·|¦³´£¥Ü­n¨D§ó¶i¤@¨Bªº¸ê°T¡A¹³¬O§A¬O§_­n¤ä´©¥úºÐ¾÷¡AºÏºÐ¾÷¡AÁÙ¦³§A¨Ï¥Îªº¬O¨º¤@ºØ SCSI ¤¶­±¥d¡D
³o³¡¥÷½Ð°Ñ¾\ \onlynameurl{SCSI-HOWTO}¡A¦³§ó¸Ô²Óªº»¡©ú¡D




\subsubsection{Network device support (ºô¸ô³]³Æ¤ä´©)}

¦pªG§A¦³ºô¸ô¥d¡A©ÎªÌ§A·Q­n¨Ï¥Î SLIP¡APPP¡A©Î¬O¨Ã¦C°ð¬É­±¥d¡A¨º´N¦^µª `{\ttfamily y}'¡D
±µµÛ·|¦³´£¥Ü°Ý§A¨Ï¥Îªº¬O¨º¤@ºØºô¸ô¥d¡A©Î­n¨Ï¥Î¨º¤@ºØ³q°T¨ó©w¡D




\subsubsection{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¥²¶·¦^µª `{\ttfamily 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¦^µª `{\ttfamily 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¨ã(¹³ `{\ttfamily ps}')³£·|¥Î¨ì¥¦¡D
¦³®É¥i¥H¸ÕµÛ¥Î `{\ttfamily cat /proc/meminfo}' ©Î `{\ttfamily cat /proc/devices}'¡D
¬Y¨Ç shell (¯S§O¹³¬O rc) ¨Ï¥Î¤F {\ttfamily /proc/self/fd} (¦b¨ä¥¦¨t²Î¸Ì¥s°µ {\ttfamily /dev/fd}) ¨Ó°µ¿é¥X¿é¤J°Ê§@¡D
§A´X¥GÀ³¸Ó¦^µª `{\ttfamily y}'; ³\¦h­«­nªº Linux ¤u¨ã³£¨Ì¿à¥¦¨Ó¹B§@ªº¡D

NFS ¢w ¦pªG§A¦bºô¸ôÀô¹Ò¤U¦Ó¥B·Q­n¥Ñ NFS ¨Ó¨Ï¥Î¨ä¥¦¾÷¾¹ªºÀÉ®×¨t²Î¡A¦^µª `{\ttfamily y}'¡D

ISO9660 ¢w µ´¤j³¡¤Àªº¥úºÐ¤ù³£¨Ï¥Î³o­ÓÀÉ®×¨t²Î¡D¦pªG§A¦³¥úºÐ¾÷¦Ó¥B·Q¦b Linux ¤U¨Ï¥Î¡A¦^µª `{\ttfamily 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




\paragraph{¦ý¬O§Ú¤£ª¾¹D§Ú»Ý­n¨º¨ÇÀÉ®×¨t²Î!}

¦n§a¡AÁä¤J `{\ttfamily mount}'¡D¥¦¬Ý°_¨Ó·|¹³³o¼Ë¡G

\begin{tscreen}
\begin{verbatim}
    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)
\end{verbatim}
\end{tscreen}


¥J²Ó¬Ý¬Ý¨C¤@¦æ¡F¦b `{\ttfamily type}' «á­±ªº¨º­Ó¦r´N¬OÀÉ®×¨t²Îªº®æ¦¡¡D
¦b³o­Ó¨Ò¤l¤¤¡A§Úªº {\ttfamily /} ©M {\ttfamily /usr} ¤À³Î°Ï¬O second extended ®æ¦¡¡A
§Ú¨Ï¥Î¤F /proc ¡A¦Ó¥B±¾¦³¤@±i¥H msdos (bleah) ¬°ÀÉ®×¨t²Î®æ¦¡ªººÏ¤ù¡D

¦pªG§A¦³¨Ï¥Î {\ttfamily /proc}¡A¥i¥H¸Õ¸Õ `{\ttfamily cat /proc/filesystems}'¡D
¥¦·|µ¹§A¤@¥÷¥Ø«e¨Ï¥Îªº®Ö¤ß©Ò¤ä´©ªºÀÉ®×¨t²Î¦Cªí¡D

³o°t¸m¨Ã¤£±`¨Ï¥Î¡D¤£­«­nªºÀÉ®×¨t²Î·|¨Ï®Ö¤ßÅã±oÁs¸~; 
°Ñ¨£¥i¸ü¤J¼Ò²Õ¤@¸`ªº»¡©ú¥HÁ×§K¦¹±¡ªp¡A¥H¤Î``\ref{pitfalls} {(³´¨À)}''¤@¸`»¡©ú¬°¦óÁs¸~ªº®Ö¤ß¤£¦n¡D




\subsubsection{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¦^µª `{\ttfamily 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




\subsubsection{Sound card (­µ®Ä¥d)}

¦pªG§A·QÅ¥¨ì {\ttfamily biff} µ{¦¡¤j¥sªº¸Ü¡A¦^µª `{\ttfamily y}'¡D
µM«áµ¥¤@¤U·|½sÄ¶¥t¤@­Ó°t¸mµ{¦¡¨Ã¸Ô²Ó¸ß°Ý§A©Ò¦³Ãö©ó­µ®Ä¥dªº°ÝÃD¡D
(ª`·N: ·í¥¦°Ý§A¬O§_¦w¸Ë§¹¾ãª©¥»ªºÅX°Êµ{¦¡®É¡A§A¥i¥H¦^µª `{\ttfamily n}' ¥H´î¤Ö§A®Ö¤ß°O¾ÐÅé¨Ã¥u¿ï¥Î§A¯u¥¿»Ý­nªº¡D)
¦pªG§A¦³­µ®Ä¥d§Ú±j¯P«ØÄ³¬Ý¤@¤U \onlynameurl{Sound-HOWTO} ¥Hª¾¹D§ó¦hªº²Ó¸`¡D




\subsubsection{¨ä¥¦°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¥¦­Ì©ñ¨ì {\ttfamily Configure} «ü¥O½Zªº¤èªk)¥i¦b³o­Ó URL §ä¨ì(¥Ñ Axel Boldt {\ttfamily \onlynameurl{axel@uni-paderborn.de}} ©Ò¦¬¶°):
\begin{tscreen}
{\ttfamily \onlynameurl{http://math-www.uni-paderborn.de/\~{}axel/config\_help.html}}
\end{tscreen}

©Î¸g¥Ñ°Î¦W FTP ¯¸:
\begin{tscreen}
{\ttfamily \onlynameurl{ftp://sunsite.unc.edu/pub/Linux/kernel/config/krnl\_cnfg\_hlp.x.yz.tgz}}
\end{tscreen}

¨ä¤¤ {\ttfamily x.yz} ¬Oª©¥»¸¹½X¡D

¨ä«á¨Óªº®Ö¤ß¤¤(2.0.x ¤Î¨ä«áªº)¡A³o¤w³Q¾ã¦X¨ì­ì©lµ{¦¡½X¤¤¡D




\subsubsection{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




\subsection{²{¦b©O? (The Makefile) }

¦b§A§¹¦¨ {\ttfamily 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 {\ttfamily Makefile}¡D§AÀ³¸Ó¤£¥²§ïÅÜ¥¦¡A¦ý¬O¬Ý¬ÝµL§«¡D
¤@¥¹·s®Ö¤ß§¹¦¨¡A§A¤]¥i¥H¥Î `{\ttfamily rdev}' «ü¥O¨Ó§ïÅÜ¨ä¤¤ªº¿ï¶µ¡D




\section{½sÄ¶®Ö¤ß}






\subsection{²M°£»P½T»{}

·í¥Î¨Ó¶i¦æ°t¸mªº«ü¥O½Z°õ¦æ§¹¦¨®É¡A¥¦·|§i¶D§A¥h `{\ttfamily make dep}' ¥H¤Î `{\ttfamily clean}'¡D
©Ò¥H­n°õ¦æ`{\ttfamily 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ÁÙÀ³¸Ó°µ `{\ttfamily make clean}'¡D
³o·|²M°£®Ö¤ß½sÄ¶ªº©Ò¦³¥ØªºÀÉ¥H¤Î¨ä¥¦ªF¦è¡D¦b­««Ø¤@­Ó®Ö¤ß¤§«e{\itshape ¤£­n\/}§Ñ°O³o­Ó¨BÆJ¡D




\subsection{½sÄ¶®É´Á}

¦b§¹¦¨ `{\ttfamily make dep}' ¤Î `{\ttfamily make clean}' ¤u§@¤§«á¡A§A²{¦b¥i¥H°õ¦æ `{\ttfamily make zImage}' ©Î `{\ttfamily make zdisk}' (³o³¡¥÷»Ý­nªø®É¶¡)¡D
`{\ttfamily make zImage}' ±N·|½sÄ¶®Ö¤ß¡A¨Ã¥B¦b {\ttfamily arch/i386/boot} ¯dµ¹§A¤@­Ó¥s°µ `{\ttfamily zImage}' ªºÀÉ®×¡D³o´N¬O·sªºÀ£ÁY®Ö¤ß¡D
`{\ttfamily make zdisk}' °µªº¨Æ¤]¤@¼Ë¡A¦ý¬O¥¦·|§â®Ö¤ß©ñ¨ì§A©Ò§Æ±æªººÏ¤ù¥h¡A¥u­n§â³o±iºÏ¤ù©ñ¦b ``A:''¡D
`{\ttfamily 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¦³­Ó `{\ttfamily z}' ¦b¦W¦r«e­±¡DÀ£ÁY¹Lªº®Ö¤ß°õ¦æªº®É­Ô·|¦Û°Ê±N¦Û¤v¸ÑÀ£ÁY¡D




\subsection{¨ä¥L¥i¥H``make''ªºªF¦è}

`{\ttfamily make mrproper}' ±N·|°µ§ó¼sªxªº `²M°£' ¤u§@¡D
³o­Ó°Ê§@¦³®É­Ô¬O¥²¶·ªº¡A©Ò¥H§A¥i¯à·|§Æ±æ¦b¨C¦¸­×¸Éªº®É­Ô°õ¦æ¥¦¡D
`{\ttfamily make mrproper}' ÁÙ·|±N§Aªº°t¸mÀÉ®×±þ±¼¡A©Ò¥H¦pªG§A»{¬°¥¦­«­nªº¸ÜÀ³¸Ó¥ý°µ¤@³Æ¥÷(¦b {\ttfamily .config})¡D

`{\ttfamily make oldconfig}' ·|¹Á¸Õ¥Ñ¤@ÂÂªº°t¸mÀÉ®×¨Ó°t¸m§Aªº®Ö¤ß¡D¥¦·|¬°§A°õ¦æ `{\ttfamily 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¼Ò²Õ¤@¸`¹ï `{\ttfamily make modules}' ªº»¡©ú¡D






\subsection{¦w¸Ë®Ö¤ß}

¦b§A¤w¸gÀò±o¤@­Ó¬Ý°_¨Ó¯à°÷·Ó§A§Æ±æ¹B§@ªº·s®Ö¤ß¤§«á¡A²{¦b¬O¦w¸Ë¥¦ªº®É­Ô¤F¡D
¤j³¡¥÷ªº¤H¨Ï¥Î LILO (Linux Loader) ¨Ó°µ³o¥ó¨Æ¡D
`{\ttfamily 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({\ttfamily /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ÂÂª©ªº {\ttfamily /etc/lilo/config} ´N¬O·sª©ªº {\ttfamily /etc/lilo.conf})¡A¬Ý¬Ý¸Ì­±¦³¨Ç¤°»ò¡D
¥¦¬Ý°_¨Ó¹³³o¼Ë¤lªºªF¦è¡G

\begin{verbatim}
    image = /vmlinuz
        label = Linux
        root = /dev/hda1
        ...
\end{verbatim}


­º¥ý¡A`{\ttfamily image =}' ³]©w¬°¤w¸g¦w¸Ëªº®Ö¤ß¡D¤j³¡¥÷ªº¤H¦ü¥G³£¥Î {\ttfamily /vmlinuz}¡D
`{\ttfamily label}' «h¬Oµ¹ lilo ¥Î¨Ó¨M©w²{¦b­n±Ò°Êªº¬O¨º­Ó®Ö¤ß©Î§@·~¨t²Î¡A
¦Ó `{\ttfamily root}' «h¬O³o­Ó¯S§Oªº§@·~¨t²Îªº®Ú¥Ø¿ý {\ttfamily /}¡D
³Æ¥÷¤@¥÷ÂÂªº®Ö¤ß¡AµM«á±N§A°µªº {\ttfamily zImage} «þ¨©¶i¥h(¨Ò¦p¡A¦pªG§A¥Î `{\ttfamily /vmlinuz}' ªº¸Ü¡A´N¹³³o¼Ë `{\ttfamily cp zImage /vmlinuz}')¡D
µM«á¡A°õ¦æ `{\ttfamily lilo}'¡A¦ý¬O¦b¸ûÂÂªº¨t²Î¤W¡A§A¥i¯à¥²¶·°õ¦æ {\ttfamily /etc/lilo/install} ©Î¬Æ¦Ü¬O {\ttfamily /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) `{\ttfamily image = xxx}' «þ¨©¨ìÀÉ®×ªº³Ì©³ºÝ¡A
µM«á§â `{\ttfamily image = xxx}' §ï¦¨ `{\ttfamily image = yyy}' ¨ä¤¤ªº `{\ttfamily yyy}' ¬O§A³Æ¥÷ÂÂ®Ö¤ß©Ò¦sÀÉªº¦W¦r¡D
±µµÛ¡A§â `{\ttfamily label = zzz}' §ï¦¨¹³¬O `{\ttfamily label = linux-backup}' µM«á­«·s°õ¦æ {\ttfamily lilo}¡D
§A¥i¯à±o­n¥[¤W¤@¦æ `{\ttfamily 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




\section{­×¸É®Ö¤ß}






\subsection{¨Ï¥Î­×¸ÉÀÉ}

®Ö¤ßªº¤p´T§ó·s¬O¥H­×¸ÉÀÉªº¤è¦¡µo¦æ¡D¨Ò¦p¡A¦pªG§Aªºª©¥»¬O 1.1.45 ¡A
¦Ó¥B§Aª`·N¨ì¥X²{¤F¤@­Ó `{\ttfamily patch46.gz}' ¥i¥H¥Î¨Ó¤É¯Å¥¦¡A
³o¥Nªí§A¥i¥HÂÇ¥Ñ¨Ï¥Î³o­Ó­×¸ÉÀÉ±Nª©¥»¤É¯Å¨ì 1.1.46¡D
§A¤]³\·|·Q­n¥ý³Æ¥÷­ì©lµ{¦¡½X(`{\ttfamily make clean}' µM«á `{\ttfamily 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 `{\ttfamily patch46.gz}' ¨Ã©ñ¦b {\ttfamily /usr/src} ¤U¡D
{\ttfamily cd} ¨ì {\ttfamily /usr/src} µM«á°õ¦æ `{\ttfamily zcat patch46.gz $|$ patch -p0}' (¦pªG¨Ã¤£¬OÀ£ÁY¹Lªº­×¸ÉÀÉ¡A¨º»ò´N°õ¦æ `{\ttfamily 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 {\ttfamily patch} «ü¥O¤¤¥[¤W {\ttfamily -s} ¿ï¶µ¡A§i¶D {\ttfamily 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ªº¨Æ¡D{\ttfamily cd} ¨ì {\ttfamily /usr/src/linux} ¨Ã§ä´MÀÉ¦Wµ²§À¬° {\ttfamily .rej} ªºÀÉ®×¡D
¬Y¨Çª©¥»ªº {\ttfamily patch}¡]¤ñ¸ûÂÂªºª©¥»¡A¥¦­Ì¥i¯à¬O¦b¤ñ¸û¦­´ÁªºÀÉ®×¨t²Î¤W½sÄ¶ªº¡^·|§â³o¨Ç¨S¦³¦¨¥\ªº¾Þ§@°O¿ý¦bÀÉ¦W¦³ {\ttfamily \#} ªºÀÉ®×¸Ì¡D
§A¥i¥H¥Î `{\ttfamily find}' ¨Ó´À§A§ä¡F
\begin{verbatim}
    find .  -name '*.rej' -print
\end{verbatim}

·|±N²{¦æ¥Ø¿ý¤Î¤l¥Ø¿ý¤U©Ò¦³¨ã {\ttfamily .rej} µ²§ÀªºÀÉ¦W¦L¨ì¼Ð·Ç¿é¥X¡D

¦pªG¤@¤Á¥¿½TµL»~ªº¸Ü¡A°õ¦æ²Ä¤T¸`¸ò²Ä¥|¸`©Ò°Q½×ªº `{\ttfamily make clean}'¡A`{\ttfamily config}' ¥H¤Î `{\ttfamily dep}'¡D

Ãö©ó {\ttfamily patch} «ü¥O¥t¥~ÁÙ¦³¤@¨Ç¿ï¶µ¡D¦p«e©Ò­z¡A{\ttfamily patch -s} ±N·|§í¨î°£¤F¿ù»~¥H¥~ªº©Ò¦³¨ä¥L°T®§¡D
¦pªG§A§â®Ö¤ß­ì©lµ{¦¡½X©ñ¦b {\ttfamily /usr/src/linux} ¥H¥~ªº¦a¤è¡A¦b¸Ó¥Ø¿ý¤U¥Î {\ttfamily patch -p1} ¤]¥i¥H°®²b«W¸¨ªº°õ¦æ­×¸É¥ô°È¡D
¨ä¥¦ªº {\ttfamily patch} ¿ï¶µ¦b½u¤W¤â¥U(man page)¸Ì³£¦³«Ü¸Ô²Óªº´y­z¡D




\subsection{¦pªG¦³¿ù»~µo¥Í}

(ª`·N: ¥»¸`´£¨ìªº¤j³¡¥÷¬O«üÂÂª©ªº®Ö¤ß)

³q±`³Ì±`µo¥Íªº°ÝÃD¬O·í {\ttfamily patch} ­×§ï¤@­Ó¥s°µ `{\ttfamily 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¬Ý {\ttfamily config.in.rej} ³o­ÓÀÉ®×¸Ì¯d¤U¨Ç¤°»ò°T®§¡D
¦³­×§ï¹Lªº³¡¥÷¥¿±`¨Ó»¡·|¦b¨C¤@¦æ¶}©lªº¦a¤è¼Ð¤W `{\ttfamily +}' ©M `{\ttfamily -}'¡D
¬d¬Ý¦³¼Ð°Oªºªþªñ´X¦æ¡AµM«á°O±o¥¦­Ì¬O³]¦¨ `{\ttfamily y}' ©Î¬O `{\ttfamily n}'¡D
²{¦b½s¿è {\ttfamily config.in} ÀÉ¡AµM«á¦b¾A·íªº¦a
¤è§â `{\ttfamily y}' §ï¦¨ `{\ttfamily n}' ¥H¤Î `{\ttfamily n}' §ï¦¨ `{\ttfamily y}'¡D°õ¦æ
\begin{verbatim}
    patch -p0 < config.in.rej
\end{verbatim}

¦pªG¦¨¥\ªº¸Ü(¨S¦³¿ù»~)¡A¨º»ò§A´N¥i¥HÄ~Äò°t¸m»P½sÄ¶ªº¤u§@¡D
³o­Ó {\ttfamily 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 Åã¥Ü `{\ttfamily previously applied patch detected: Assume -R?}'¡A
§A¥i¯à¨Ï¥Î¤F¤@¨Ç¤ñ§A¥Ø«eªºª©¥»½s¸¹ÁÙ§Cªº­×¸ÉÀÉ; ¦pªG§A¦^µª `{\ttfamily 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°õ¦æ `{\ttfamily 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




\subsection{¬å±¼ .orig ÀÉ®×}

¥u­n°µ¹L´X¦¸­×¸É¥H«á¡A¨º¨Ç {\ttfamily .orig} ªºÀÉ®×±N·|¶}©l°ï¿n¡D
¨Ò¦p¡A§Úªº¤@­Ó 1.1.51 ª©ªºµ{¦¡½X³Ì«á¤@¦¸°µ²M±½¬O¦b 1.1.48 ª©¡]§Ú·Q¬O§a¡^¡D
§R°£³o¨Ç {\ttfamily .orig} ÀÉ®×·|¸`¬Ù³\¦hªººÏºÐªÅ¶¡¡D
\begin{verbatim}
    find .  -name '*.orig' -exec rm -f {} ';'
\end{verbatim}

±N·|´À§A·Ó®Æ³o¥ó¨Æ¡D¬Y¨Çª©¥»ªº {\ttfamily patch} ·|¥Î \~{} ¨Ó¥N´À {\ttfamily .orig}¡D

¦³¨ä¥¦§ó¦nªºªº¿ìªk¥i¬å±¼³o¨Ç {\ttfamily .orig} ÀÉ¡A´N¬O§Q¥Î GNU ªº {\ttfamily xargs}:
\begin{verbatim}
    find .  -name '*.orig' | xargs rm
\end{verbatim}

©Î¬O§ó¦w¥þ¦ý¦³¨ÇÅo¶Ûªº¤èªk:
\begin{verbatim}
    find . -name '*.orig' -print0 | xargs --null rm --
\end{verbatim}





\subsection{¨ä¥¦ªº­×¸ÉÀÉ}

¦³¤@¨Ç¨Ã¤£¬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




\section{ªþ¥[ªº®M¥ó}

§Aªº Linux ®Ö¤ß¦³³\¦h¦b­ì©lµ{¦¡½X¥»¨­¸Ì­±¨Ã¨S¦³»¡©úªº¯S©Ê¡F
³o¨Ç¯S©Ê¤@¯ë¬O¸g¥Ñ¥~¨Óªº³nÅé¨Ó§Q¥Î¡A¦b³o¸Ì¦C¥X¤@³¡¤À³Ì´¶¹Mªº¡G




\subsection{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




\subsection{util-linux}

Rik Faith ({\ttfamily \onlynameurl{faith@cs.unc.edu}}) ¦¬¶°¤F¤@¤j°ï Linux ªº¤u¨ã¡A¥s°µ util-linux¡D
²{¦b¬O¥Ñ Nicolai Langfeldt ({\ttfamily \onlynameurl{util-linux@math.uio.no}}) ©ÒºûÅ@¡D
¥i±q sunsite.unc.edu ªº {\ttfamily \onlynameurl{/pub/Linux/system/misc}} ¨ú±o¡D
¥¦¥]¬A¤F¹³ {\ttfamily setterm}¡A{\ttfamily rdev} ¥H¤Î {\ttfamily ctrlaltdel} »P®Ö¤ß¦³Ãöªº¤u¨ã¡D
´N¹³ Rik ©Ò»¡ªº¡A{\itshape ¤£­n·Q³£¤£·Q´N§â¥¦¸Ë¤W¥h!\/} §A¤£»Ý­n¦w¸Ë¦¹®M¥ó¤¤ªº¨C¤@­ÓªF¦è¡A¦Ó¥B¦pªG§A³o¼Ë°µªº¸Ü¥i¯à·|¤Þ°_ÄY­«ªº°ÝÃD¡D




\subsection{hdparm}

¹³«Ü¦h³nÅé¤@¼Ë¡A³o´¿¸g¬O¤@­Ó®Ö¤ß­×¸ÉÀÉ¤Î¨ä¤ä´©µ{¦¡¡D
³o¨Ç­×¸ÉÀÉ³Q©ñ¤J°Ó·~®Ö¤ß¤¤¡A¦Ó¥Î¨Ó³Ì¨Î¤Æ¥H¤Î½Õ¾A§AµwºÐªº¤ä´©µ{¦¡¤@¯ë¬O¤À¶}µo¦æªº¡D




\subsection{gpm}

gpm ¬O general purpose mouse ªºÂ²¼g¡D
³o­Óµ{¦¡¥i¥HÅý§A¨Ï¥Î¤£¦PºØÃþªº·Æ¹«¦bµêÀÀ±±¨î¥x¤§¶¡°Å¶K¡A¥H¤Î°µ¤@¨Ç¨ä¥¦ªº¨Æ±¡¡D




\section{¤@¨Ç³´¨À\label{pitfalls}}






\subsection{make clean }

¦pªG§Aªº·s®Ö¤ß·|°µ¤@¨Ç¯uªº«Ü©_©Çªº¨Æ¡A¦³¥i¯à¬O¦]¬°¦b½sÄ¶®Ö¤ß«e§A§Ñ¤F°µ²M°£ {\ttfamily make clean}¡D
¯gª¬±q§Aªº®Ö¤ß¤£¥¿±`¦a±Y¼ì¨ì©_©Çªº¿é¥X¤J°ÝÃD¡A¤@ª½¨ì¥i¼¦ªº°õ¦æ®Ä²vµ¥µ¥¤£¤@¦Ó¨¬¡A¥i¥H¬O¥ô¦ó¨Æ¡D
³Ì¦n¤]­n½T©w§A¦³°µ {\ttfamily make dep}¡D




\subsection{¥¨¤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«á´î±¼ {\ttfamily /proc/meminfo} ¸Ì­±ªº ``total mem'' ©Î `{\ttfamily free}' «ü¥O©Ò±oªº°O¾ÐÅé¼Æ¶q¨Ó±oª¾®Ö¤ß¨Ï¥Î¤F¦h¤Ö°O¾ÐÅé¡D
§A¤]¥i¥H°õ¦æ `{\ttfamily dmesg}' (©ÎªÌ¤]¥i¥H¬d¬Ý®Ö¤ßªº°O¿ýÀÉ¡A¥¦¤@©w¦b·|§Aªº¨t²Î¸Ì)¡D¬Ý°_¨Ó´N¹³³o¤@¦æ¡G

{\ttfamily Memory: 15124k/16384k available (552k kernel code, 384k reserved, 324k data)}

§Úªº 386 (°t¸m«Ü¤Ö©U§£)Åã¥Ü¦p¤U¡G

{\ttfamily Memory: 7000k/8192k available (496k kernel code, 384k reserved, 312k data)}

¦pªG§A`¥²¶·'±o¨ì¤@¤j«¬®Ö¤ß¦ý¨t²Î«o¤£Åý§A°µ¡A§A¥i¥H¸Õ¸Õ `{\ttfamily make bzimage}'¡D
§A¥i¯à¥²¶·¦w¸Ë·sª©ªº LILO ¨Ó°µ³o¥ó¨Æ¡D




\subsection{®Ö¤ßµ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 {\ttfamily 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°ïªº {\ttfamily xxxx undefined} ªº°T®§¡A³o¥i¯à¬O§Aªº°ÝÃD¡D
­×¥¿ªº¤èªk¤j³¡¥÷³£«ÜÂ²³æ¡D±N³o´X¦æ¥[¨ì {\ttfamily arch/i386/Makefile} ªº³»ºÝ:
{\ttfamily arch/i386/Makefile}:
\begin{verbatim}
AS=/usr/i486-linuxaout/bin/as
LD=/usr/i486-linuxaout/bin/ld -m i386linux
CC=gcc -b i486-linuxaout -D__KERNEL__ -I$(TOPDIR)/include
\end{verbatim}

µM«á­«·s°õ¦æ {\ttfamily make dep} »P {\ttfamily 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 {\ttfamily \onlynameurl{http://www.bitwizard.nl/sig11/}} §ä¨ì¡E




\subsection{·sª©ªº®Ö¤ß¦ü¥G¤£¯à±Ò°Ê}

§A¨S¦³°õ¦æ LILO ¡A©Î¬O¨S¦³¥¿½Tªº°t¸m¥¦¡D¦³¤@¦¸§Ú´¿¸g¸I¨ìªº°ÝÃD¬O¥X¦b°t¸mÀÉ¸Ì¡A
§Ú¥Î¤F `{\ttfamily boot = /dev/hda1}' ¦Ó¤£¬O `{\ttfamily boot = /dev/hda}'
(³o¦b­è¶}©l®É¯uªº¬O«Ü°Q¹½¡A¦ý¬O¤@¥¹§A¦³¤F¤@­Ó¥i¥H¥Îªº°t¸mÀÉ¡AÀ³¸Ó¤£»Ý­n¥h¦A¥h§ïÅÜ¥¦)¡D




\subsection{§A§Ñ¤F°õ¦æ LILO¡A©Î¨t²Î®Ú¥»¤£¯à±Ò°Ê}

¾¾¡I²{¦b³Ì¦nªº¿ìªk¬O¥ÎºÏ¤ù±Ò°Ê¡A¨Ã¥B·Ç³Æ¥t¤@±i¥i¥H±Ò°ÊªººÏ¤ù(¹³¬O`{\ttfamily make zdisk}'®É°µªººÏ¤ù)¡D
§A±oª¾¹D§Aªº®Ú¥Ø¿ý({\ttfamily /})©Ò¦bªº¤À³Î°Ï¥H¤Î¥¦ªº®æ¦¡(second extended, minix µ¥µ¥)¡D
¦b¤U­±ªº¨Ò¤l¤¤¡A§A¤]±oª¾¹D§Aªº {\ttfamily /usr/src/linux} ­ì©lµ{¦¡½X¦b¨º­Ó¤À³Î°Ï¡A¥¦ªº®æ¦¡¡A¥H¤Î¥¦¤@¯ë·|±¾¦b¨º¨à¡D

¦b³o­Ó¨Ò¤l¤¤¡A ®Ú¥Ø¿ý {\ttfamily /} ¬O {\ttfamily /dev/hda1}¡A¦Ó«ù¦³ {\ttfamily /usr/src/linux} ªº¤À³Î°Ï¬O {\ttfamily /dev/hda3}¡A¤@¯ë·|±¾¦b {\ttfamily /usr} ¤U¡D
¥¦­Ì³£¬O second extended ÀÉ®×¨t²Î¡D¥i¥H¹B§@ªº®Ö¤ß¬M¹³¥s°µ {\ttfamily zImage} ¡A©ñ¦b {\ttfamily /usr/src/linux/arch/i386/boot} ©³¤U¡D

³o­Ó¥D·N¬O³o¼Ëªº¡A°²­Y¦³¤@­Ó¥i¥H¹B§@ªº®Ö¤ß¬M¹³¥s°µ {\ttfamily 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

\begin{verbatim}
    mkdir /mnt
    mount -t ext2 /dev/hda3 /mnt
\end{verbatim}


¦pªG {\ttfamily mkdir} «ü¥OÅã¥Ü¸Ó¥Ø¿ý¤w¸g¦s¦b¡A©¿²¤±¼¤£¥²²z·|¥¦¡D
²{¦b¡A{\ttfamily cd} ¨ì«ù¦³¥i¹B§@®Ö¤ßªº¦a¤è¡Dª`·N:
\begin{verbatim}
/mnt + /usr/src/linux/arch/i386/boot - /usr = /mnt/src/linux/arch/i386/boot
\end{verbatim}

§â¤@±i®æ¦¡¤Æ¹LªººÏ¤ù©ñ¶i ``A:'' ºÏºÐ¾÷(½T©w¤£¬O§Aªº boot/root ºÏ¤ù!)¡A
§â¬M¹³ÀÉ¶É­Ë¨ìºÏ¤ù¸Ì¥h¡AµM«á°t¸m§Aªº®Ú¥Ø¿ý¤À³Î°Ï:

\begin{verbatim}
    cd /mnt/src/linux/arch/i386/boot
    dd if=zImage of=/dev/fd0
    rdev /dev/fd0 /dev/hda1
\end{verbatim}


{\ttfamily cd} ¨ì®Ú¥Ø¿ý {\ttfamily /} ¨Ã¥B¨ø¤U¼Ð·Ç {\ttfamily /usr} ¤À³Î°Ï:

\begin{verbatim}
    cd /
    umount /mnt
\end{verbatim}


§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 {\ttfamily /} (¨Ò¦p {\ttfamily /vmlinuz})¡A§A¤]¥i¥H¨Ï¥Î¥¦¡D
°²©w©Ò¦³ªº±ø¥ó³£¸ò¤W­±ªº¨Ò¤l¤@¼Ë¡A¦Ó§Úªº®Ö¤ß¬M¹³¬O {\ttfamily /vmlinuz}¡A¥u­n¹ï¤W­±ªº¨Ò¤l°µ³o¨Ç§ïÅÜ:
§â {\ttfamily /dev/hda3} §ï¦¨ {\ttfamily /dev/hda1} ({\ttfamily /} ¤À³Î°Ï)¡A
§â {\ttfamily /mnt/src/linux} §ï¦¨ {\ttfamily /mnt}¡A¨Ã¥B§â {\ttfamily if=zImage} §ï¦¨ {\ttfamily if=vmlinuz}¡D
¦Ü©ó«e­±¦³Ãöª`·N¦p¦ó±À¾É¥X {\ttfamily /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




\subsection{¨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°µ `{\ttfamily update}' ³Q¤É¯Å©Î¨ú¥N±¼¤F¡D
¨ú±o `{\ttfamily bdflush}' ªº­ì©lµ{¦¡½X(§AÀ³¸Ó¥i¥H±q§A¨ú±o®Ö¤ßªº¦a¤è§ä¨ì)¡A
µM«á½sÄ¶¥¦(§A¥i¯à·|§Æ±æ¦bÂÂª©ªº®Ö¤ß¤U°õ¦æ½sÄ¶¤Î¦w¸Ë)¡D
¥¦·|¥H `{\ttfamily update}' ¬°¦W¦w¸Ë¥¦¦Û¤v¨Ã¥B¦b­«¶}¾÷¥H«á¡A·s®Ö¤ßÀ³¸Ó·|¹B§@¨}¦n¡D




\subsection{¨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¦æ¥[¨ì {\ttfamily arch/i386/Makefile} ªº³»ºÝ:

\begin{verbatim}
AS=/usr/i486-linuxaout/bin/as
LD=/usr/i486-linuxaout/bin/ld -m i386linux
CC=gcc -b i486-linuxaout -D__KERNEL__ -I$(TOPDIR)/include
\end{verbatim}


³o·|¥H a.out µ{¦¡®w¨Ó½sÄ¶ 1.2.x ®Ö¤ß¡D




\subsection{µ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¾\Åª {\ttfamily drivers/block/README.ide} ÀÉ®×¡D
¨º¸Ì¦³§ó¦hªº¸ê°T»¡©ú¡D




\subsection{¨t²ÎÅã¥ÜÃö©ó obsolete routing requests ªº©_©Ç°T®§}

¨ú±o·sª©ªº {\ttfamily route} µ{¦¡¤Î¨ä¥¦»P route ¦³Ãöªºµ{¦¡¡D
{\ttfamily /usr/include/linux/route.h} (³o¬O {\ttfamily /usr/src/linux} ¤Uªº¤@­ÓÀÉ®×)¤w¸g°µ¤F­×§ï¡D




\subsection{¨¾¤õÀð¥\¯àµLªk¦b 1.2.0 ¤W¤u§@}

¦Ü¤Ö¤É¯Å¨ì 1.2.1 ª©¡D




\subsection{``Not a compressed kernel Image file'' («DÀ£ÁY®Ö¤ß¬M¹³ÀÉ)}

¤£­n¥Î¦b {\ttfamily /usr/src/linux} ²£¥Íªº {\ttfamily vmlinux} °µ¬°§Aªº±Ò°Ê®Ö¤ß¬M¹³;
{\ttfamily [..]/arch/i386/boot/zImage} ¤~¬O¥¿½Tªº¡D




\subsection{¤É¯Å¦Ü 1.3.x «á¦b±±¨î¥x²×ºÝ¾÷¤Wªº°ÝÃD}

±N±±¨î¥x³]©wÀÉ {\ttfamily /etc/termcap} ¤¤ªº {\ttfamily dumb} §ï¬° {\ttfamily linux}¡D
§A¥i¯à·|¥²¶·¼W¥[¤@¶µ terminfo¡D




\subsection{®Ö¤ß¤É¯Å«á¦ü¥GµLªk½sÄ¶ªF¦è}

Linux ªº®Ö¤ß­ì©lµ{¦¡½X¥]§t¤F³\¦hªº§t¤JÀÉ(´N¬O¥Î {\ttfamily .h} µ²§ÀªºÀÉ®×)¥²¶·¬°¼Ð·Çªº {\ttfamily /usr/include} ©Ò°Ñ¦Ò¡D
¥¦­Ì³q±`¥Î³oºØ¤èªk³Q°Ñ¦Ò(¨ä¤¤ {\ttfamily xyzzy.h} ¬O¦b {\ttfamily /usr/include/linux} ¤U):
\begin{verbatim}
    #include <linux/xyzzy.h>
\end{verbatim}

¥¿±`±¡ªp¤U¡A¦b {\ttfamily /usr/include} ¤U·|¦³¤@¥s°µ {\ttfamily linux} ªº³sµ²¨ì§Aªº®Ö¤ß­ì©l½Xªº {\ttfamily include/linux} ¥Ø¿ý(¤@¯ë¨t²Î¦b {\ttfamily /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ªº {\ttfamily root} ¹w³]¤£Åý¨ä¥¦¨Ï¥ÎªÌ¬Ý¨ì¥LªºÀÉ®×¡A
¦Ó¥B§A¸Ñ¶}®Ö¤ß­ì©l½X®É¨S¦³¥[¤W {\ttfamily p} («O¯dÀÉ®×¼Ò¦¡)¿ï¶µ¡A¨ä¥¦¨Ï¥ÎªÌ¤]·|µLªk¨Ï¥Î C ½sÄ¶¾¹¡D
ÁöµM§A¥i¥H¥Î {\ttfamily chmod} «ü¥O¨Ó­×¥¿¡A¤£¹L§ó®e©öªº¤èªk¬O­«·s¸Ñ¶}§t¤JÀÉ¡D
§A¥i¥H¤@¶}©l§A¸Ñ¶}¾ã­Ó­ì©l½Xªº¦P¼Ë¤èªk¡A¤£¹L¦h¥[¤F¤@­Ó°Ñ¼Æ:
\begin{verbatim}
    blah# tar zxvpf linux.x.y.z.tar.gz linux/include
\end{verbatim}

½Ðª`·N: ¦pªG {\ttfamily /usr/src/linux} ³sµ²¤£¦bªº¸Ü ``{\ttfamily make config}'' ·|­««Ø¤§¡D




\subsection{¼W¥[¤W­­}

¤U­±¤@¨Ç½d¨Ò«ü¥O§i¶D§A¦p¦ó¼W¥[®Ö¤ß´£¨Ñªº¤W­­:
\begin{verbatim}
echo 4096 > /proc/sys/kernel/file-max
echo 12288 > /proc/sys/kernel/inode-max
echo 300 400 500 > /proc/sys/vm/freepages
\end{verbatim}





\section{¤É¯Å¦Ü 2.0.x ªºª`·N¨Æ¶µ}

®Ö¤ß 2.0.x ª©¦b¦w¸Ë¤W¤Þ¤J¤F³\¦hªº§ïÅÜ¡D
¦b­ì©lµ{¦¡½X¸Ìªº {\ttfamily 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




\section{¥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




\subsection{¦w¸Ë¼Ò²Õ¤u¨ã}

¼Ò²Õ¤u¨ã¥i¥H±q§A¨ú±o®Ö¤ßªº¦a¤è§ä¨ì¡A¦p {\ttfamily modules-x.y.z.tar.gz};
¿ï¾Ü»P§A¥Ø«e®Ö¤ßª©¥»¬Ûµ¥©Îµy§Cªº³Ì±µªñªº {\ttfamily x.y.z}¡D
¥Î `{\ttfamily tar zxvf modules-x.y.z.tar.gz}' ¸Ñ¶}¡D
{\ttfamily cd} ¨ì¥¦²£¥Íªº¥Ø¿ý({\ttfamily modules-x.y.z})¡A¬Ý¤@¤U {\ttfamily README}¡AµM«á«ö·Ó¦w¸Ë«ü¥Ü°õ¦æ (³q±`«ÜÂ²³æ¡A´N¹³ {\ttfamily make install} ¤§Ãþªº)¡D
µM«á§A¦b {\ttfamily /sbin} À³¸Ó·|¦³³o¨Çµ{¦¡ {\ttfamily insmod}, {\ttfamily rmmod}, {\ttfamily ksyms}, {\ttfamily lsmod}, {\ttfamily genksyms}, {\ttfamily modprobe}, ¥H¤Î {\ttfamily depmod}¡D
¦pªG§A·Qªº¸Ü¡A¥i¥H¥Î {\ttfamily insmod} ¸Ìªº½d¨ÒÅX°Êµ{¦¡``hw''¨Ó´ú¸Õ³o¨Ç¤u¨ã;
°Ñ¨£ {\ttfamily INSTALL} ÀÉ¸Ìªº²Ó¸`»¡©ú¡D

{\ttfamily insmod} «ü¥O±N¤@­Ó¼Ò²Õ´¡¤J¹B¦æ¤¤ªº®Ö¤ß¡D¼Ò²Õ³q·|¥H {\ttfamily .o} ¬°µ²§À;
¤W­±´£¨ìªº½d¨Òµ{¦¡´N¥s°µ {\ttfamily drv\_hello.o}¡A¦]¦¹­n´¡¤J¦¹¼Ò²Õ¡A´N¥Î `{\ttfamily insmod drv\_hello.o}'¡D
­n¤F¸Ñ¥Ø«e®Ö¤ß¥¿¦b¨Ï¥Îªº¼Ò²Õ¡A¥Î {\ttfamily lsmod} «ü¥O¡D¿é¥X¬Ý°_¨Ó¹³³o¼Ë:
\begin{verbatim}
    blah# lsmod
    Module:        #pages:  Used by:
    drv_hello          1
\end{verbatim}

`{\ttfamily drv\_hello}' ¬O³o¼Ò²Õªº¦WºÙ¡A¥¦¥Î¤F¤@­¶ (4K) ªº°O¾ÐÅé¡A¦Ó¥B¥Ø«e¨S¦³¨ä¥¦ªº®Ö¤ß¼Ò²Õ¨Ì¿à©ó¥¦¡D
­n²¾°£¦¹¼Ò²Õ¡A¥Î `{\ttfamily rmmod drv\_hello}'¡Dª`·N {\ttfamily rmmod} »Ý­nªº¬O{\itshape ¼Ò²Õ¦WºÙ\/}¡A¦Ó¤£¬OÀÉ®×¦WºÙ; 
´N¬O§A±q {\ttfamily lsmod} «ü¥O¦C¥X¨Óªº¡D¨ä¾l¤u¨ãªº§@¥Î¦b½u¤W¤â¥U¤¤³£¦³»¡©ú¡D




\subsection{»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 `{\ttfamily make config}' ®É¤£¬O¦^µª {\ttfamily y}¡D
½sÄ¶·s®Ö¤ß¨Ã¥Î¥¦¨Ó¶}¾÷¡DµM«á¡A¦A¦¸ {\ttfamily cd} ¨ì {\ttfamily /usr/src/linux}¡AµM«á°õ¦æ `{\ttfamily make modules}'¡D
³o±N½sÄ¶©Ò¦³§A¥¼«ü©w¦b®Ö¤ß°t¸m¸Ìªº¼Ò²Õ¡A¨Ã±N¨ä³sµ²¨ì {\ttfamily /usr/src/linux/modules}¡D
§A¥i¥Hª½±µ¥Ñ¦¹¥Ø¿ý¨Ï¥Î¡A©Î¬O°õ¦æ `{\ttfamily make modules\_install}' ±N¨ä¦w¸Ë¨ì {\ttfamily /lib/modules/x.y.z}¡A¨ä¤¤ {\ttfamily 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§Ú·|¥Î {\ttfamily insmod /usr/src/linux/modules/msdos.o}¡A¨Ã¦b¨Ï¥Î§¹¦¨«á¥Î {\ttfamily 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À³¸Ó{\itshape Á`¬O\/}ª½±µ±N¥¦°t¸m¨ì®Ö¤ß¤¤¡D




\section{¨ä¥¦°t¸m¿ï¶µ\label{other-options}}

¥»¸`¥]¬A¤F¦b°t¸m¤@¸`¤¤¥¼¦C¥Xªº®Ö¤ß°t¸m¿ï¶µ(¦b {\ttfamily make config} ®É)¡D
¤j³¡¥÷ªº³]³ÆÅX°Êµ{¦¡¨Ã¥¼¦C¥X¡D




\subsection{General setup (¤@¯ë³]©w)}

{\ttfamily Normal floppy disk support} (¤@¯ë³nºÐ¤ä´©) - ´N¬O³o­Ó¡D
§A¥i¯à·|·Q¬Ý¤@¤U {\ttfamily drivers/block/README.fd} ³o­ÓÀÉ®×; ¹ï IBM Thinkpad ªº¨Ï¥ÎªÌ¨Ó»¡¯S§O­«­n¡D



{\ttfamily XT harddisk support} (XT µwºÐ¤ä´©) - ¦pªG§A·Q¥Î¦Ñ¥j¸³ªº¤K¦ì¤¸ XT ±±¨î¾¹ªº¸Ü¡D



{\ttfamily 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 \onlynameurl{PCI-HOWTO} ¸Ì§ä¨ì¡D



{\ttfamily Kernel support for ELF binaries} (®Ö¤ß¤ä´© ELF °õ¦æÀÉ) - ELF ¬O¤@ºØ·sªº¤G¶i¦ì°õ¦æÀÉ¡D
Linux ¦ü¥G¥¿´Â¦¹¤è¦V«e¶i¡A©Ò¥H§A¥i¯à·|­n³o­Ó¡D



{\ttfamily Set version information on all symbols for modules} - 
¦b¹L¥h¡A®Ö¤ß¼Ò²Õ»P¨C­Ó·s®Ö¤ß¤@°_³Q½sÄ¶¡D
¦pªG§A¦^µª {\ttfamily y}¡A¥¦¥i¯àÅý§A¨Ï¥Î¤£¦P patchlevel ¤U½sÄ¶ªº¼Ò²Õ¡D
°Ñ¨£ {\ttfamily README.modules} ¤¤ªº¸Ô²Ó»¡©ú¡D




\subsection{Networking options (ºô¸ô¿ï¶µ)}

ºô¸ô¿ï¶µ¦b \onlynameurl{NET-3-HOWTO} (©Î¬O NET-¤°»ò-HOWTO)¤¤´y­z¡D




\section{¯¦³Z©M§Þ¥©}






\subsection{­«¾É make ©Î¬O patch «ü¥Oªº¿é¥X}

¦pªG§A·Q­n°O¿ý³o¨Ç `{\ttfamily make}' ©Î¬O `{\ttfamily patch}' «ü¥O¨ì©³°µ¤F¨Ç¤°»ò¡A
§A¥i¥H§â¿Ã¹õªº¿é¥X­«¾É¨ì¤@­ÓÀÉ®×¥h¡D­º¥ý¡A­nª¾¹D§A¥Îªº¬O¬O¨º¤@ºØ shell¡G
`{\ttfamily grep root /etc/passwd}' µM«á´M§ä¬Ý°_¨Ó¹³ `{\ttfamily /bin/csh}' ¤@ÃþªºªF¦è¡D

¦pªG§A¨Ï¥Îªº¬O sh ©Î¬O bash¡A
\begin{verbatim}
    (command) 2>&1 | tee (output file)
\end{verbatim}

±N·|§â¤@¥÷ {\ttfamily (command)} ªº¿é¥X©ñ¨ì `{\ttfamily (output file)}' ³o­ÓÀÉ®×¥h¡D

¦pªG¬O csh ©Î tcsh¡A¥Î
\begin{verbatim}
    (command) |& tee (output file)
\end{verbatim}

³o­Ó»yªk¡D

¦pªG¬O rc (ª`·N¡G§AÀ³¸Ó¤£·|¬O¥Î rc)¡A»yªk¬O
\begin{verbatim}
    (command) >[2=1] | tee (output file)
\end{verbatim}





\subsection{±ø¥ó¦¡ªº®Ö¤ß¦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¼Ëªº
\begin{verbatim}
    image = /usr/src/linux/arch/i386/boot/zImage
        label = new_kernel
\end{verbatim}

§A¥i¥H¦b¤£°ÊÂÂ®Ö¤ß {\ttfamily /vmlinuz} ªº±¡ªp¤U¿ï¾Ü°õ¦æ·s½sÄ¶ªº®Ö¤ß(·íµM¡A¦b°õ¦æ§¹ {\ttfamily lilo} «á)¡D
¥s LILO ±Ò°Ê·s®Ö¤ß³ÌÂ²³æªº¤èªk´N¬O¦b±Ò°Ê®É«ö¤U shift Áä(·í§A¦b¿Ã¹õ¥u¬Ý¨ì {\ttfamily LILO} ®É)¡A
³o·|µ¹§A¤@´£¥Ü²Å¸¹¡D¦¹®É§A¥i¥HÁä¤J `{\ttfamily new\_kernel}' ¨Ó±Ò°Ê·s®Ö¤ß¡D

¦pªG§A·Q¦b¨t²Î¤¤¦P®É«O¦³¼ÆºØ¤£¦Pªº®Ö¤ß­ì©lµ{¦¡½X(¤p¤ß¡A³o·|¥Î±¼{\itshape ¤j¶q\/}ªºµwºÐªÅ¶¡)¡A
³Ì´¶³qªº¤èªk´N¬O±N¨ä©R¦W¬° {\ttfamily /usr/src/linux-x.y.z}¡A¨ä¤¤ {\ttfamily x.y.z} ¬O®Ö¤ßª©¥»¡D
µM«á§A¥i¥H¥Î²Å¸¹³sµ²¨Ó``¿ï¾Ü''¤@¥÷­ì©l½X; ¨Ò¦p¡A¥Î `{\ttfamily ln -sf linux-1.2.2 /usr/src/linux}' ·|Åý 1.2.2 ¦¨¬°¥Ø«eªº®Ö¤ß¾ð¡D
¦ý¦b«Ø¥ß²Å¸¹³sµ²¤§«e¡A¥ý½T©w {\ttfamily ln} «ü¥O³Ì«á¤@­Ó°Ñ¼Æ¤£¬O¤@­Ó¯u¥¿ªº¥Ø¿ý(ÂÂªº²Å¸¹³sµ²¨S¦³Ãö«Y);
§_«hµ²ªG¥i¯à¤£·|¬O§A©Ò¹w´Áªº¡D




\subsection{®Ö¤ß§ó·s}

Russell Nelson ({\ttfamily \onlynameurl{nelson@crynwr.com}}) Á`µ²¤F·sª©®Ö¤ßªº§ïÅÜ¡D
³o¨Ç¬OÂ²µuªº¡A¦Ó¥B§A¦b¤É¯Å«e¥i¯àÀ³¸Ó¥ý¬Ý¤@¤U¡D¥i¥H±q°Î¦W FTP ¯¸ {\ttfamily ftp.emlist.com} ªº {\ttfamily \onlynameurl{pub/kchanges}}¡A




\section{¨ä¥¦¥i¯à¬ÛÃö¦³¥Îªº HOWTOs}

\begin{itemize}
\item  Sound-HOWTO: ­µ®Ä¥d»P¤u¨ã
\item  SCSI-HOWTO: ©Ò¦³Ãö©ó SCSI ±±¨î¥d»P³]³Æªº¸ê°T
\item  NET-2-HOWTO: ºô¸ô
\item  PPP-HOWTO: ¯S§OÃö©ó PPP ºô¸ôªº
\item  PCMCIA-HOWTO: µ§°O«¬¹q¸£ªºÅX°Êµ{¦¡
\item  ELF-HOWTO: ¤°»ò¬O ELF¡A¦p¦óÂà´«µ¥¡K
\item  Hardware-HOWTO: ¤ä´©µwÅéªº·§­n
\item  Module-HOWTO: §ó¦h»P®Ö¤ß¼Ò²Õ¦³Ãöªº
\item  Kerneld mini-HOWTO: Ãö©ó kerneld
\item  BogoMips mini-HOWTO: §A¥i¯à·|¦³¿³½ìªº
\end{itemize}





\section{Âø¶µ}






\subsection{§@ªÌ}

Linux Kernel-HOWTO ªº§@ªÌ¤ÎºûÅ@¤H¬O Brian Ward ({\ttfamily \onlynameurl{bri@blah.math.tu-graz.ac.at}})¡D
½Ð±N¥ô¦óµû½×¡A¸É¥R»P§ó¥¿±Hµ¹§Ú(§ó¥¿¹ï§Ú¨Ó»¡¬O¯S§O­«­nªº)¡D



§A¥i¥H±q³o¨Ç URL §ä¨ì§Úªººô­¶:
\begin{tscreen}
{\ttfamily \onlynameurl{http://www.math.psu.edu/ward/}\\ 
\onlynameurl{http://blah.math.tu-graz.ac.at/\~{}bri/}}
\end{tscreen}


ÁöµM§Ú¾¨¥i¯à¦a¥h³B²z¹q¤l¶l¥ó¡A¦ý½Ð°O¦í§Ú¨C¤Ñ³£¦¬¨ì{\itshape ¤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«ØÄ³¡A¦ý¦pªG§A·Q­n¥Î¡AÅwªï¨Ó¸ß°Ý {\ttfamily :-) })¡D

0.1 ª©§¹¦¨©ó 1994 ¦~¤Q¤ë¤T¤é¡D¥»¤å¥ó¥i¥H SGML, PostScript, TeX, roff »P¯Â¤å¦r®æ¦¡¨ú±o¡D




\subsection{¹w©w¥Ø¼Ð}

``¯¦³Z©M§Þ¥©'' ¤@¸`¤Ó¤Ö¤F¡D§Ú§Æ±æ¯à¥Î±q§O¤H±o¨ìªº«ØÄ³¨ÓÂX¥R¡D

``ªþ¥[ªº®M¥ó'' ¤@¸`¤]¬O¡D

ÁÙ»Ý­n§ó¦hªº°»¿ù/·í¾÷¦^´_¸ê°T¡D




\subsection{°^ÄmªÌ}

¥]§t¤F¤@¤p³¡¥÷ Linus ªº README ÀÉ®× (kernel hacking ¿ï¶µ)¡D·PÁÂ Linus!

{\ttfamily uc@brian.lunetix.de} (Ulrich Callmeier): patch -s and xargs.

{\ttfamily quinlan@yggdrasil.com} (Daniel Quinlan): corrections and
additions in many sections.

{\ttfamily nat@nat@nataa.fr.eu.org} (Nat Makarevitch): mrproper, tar -p, many
other things

{\ttfamily boldt@math.ucsb.edu} (Axel Boldt): collected descriptions of
kernel configuration options on the net; then provided me with the list

{\ttfamily lembark@wrkhors.psyber.com} (Steve Lembark): multiple boot
suggestion

{\ttfamily kbriggs@earwax.pd.uwa.edu.au} (Keith Briggs): some corrections and
suggestions

{\ttfamily rmcguire@freenet.columbus.oh.us} (Ryan McGuire): makeables
additions

{\ttfamily dumas@excalibur.ibp.fr} (Eric Dumas): French translation

{\ttfamily simazaki@ab11.yamanashi.ac.jp} (Yasutada Shimazaki): Japanese translation

{\ttfamily jjamor@lml.ls.fi.upm.es} (Juan Jose Amor Iglesias): Spanish translation

{\ttfamily mva@sbbs.se} (Martin Wahlen): Swedish translation

{\ttfamily jzp1218@stud.u-szeged.hu} (Zoltan Vamosi): Hungarian translation

{\ttfamily bart@mat.uni.torun.pl} (Bartosz Maruszewski): Polish translation

{\ttfamily donahue@tiber.nist.gov} (Michael J Donahue): typos, winner of the
``sliced bread competition''

{\ttfamily rms@gnu.ai.mit.edu} (Richard Stallman):
``free'' documentation concept/distribution notice

{\ttfamily dak@Pool.Informatik.RWTH-Aachen.DE} (David Kastrup): NFS thing

{\ttfamily esr@snark.thyrsus.com} (Eric Raymond): various tidbits



´¿±H«Hµ¹§Ú°Ý°ÝÃDªº¤H¤]¦³«Ü¤jÀ°§U¡D






\subsection{ª©ÅvÁn©ú¡A³\¥i¡A½Ñ¦p¦¹Ãþªº}

Copyright \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.





\end{document}
