\documentclass[letterpaper,english]{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{±q·½¥N½X¥´³y¤@­Ó³Ì¤p¤ÆªºLinux¨t²Î¹ê§@½g}
\author{Greg O'Keefe, {\ttfamily gcokeefe@postoffice.utas.edu.au}}
\date{2000¦~09¤ë²Ä0.8ª©}
\abstract{¥H¤U´N¬O±q·½¥N½X¤¤¥´³y¤@­Ó³Ì¤p¤ÆªºLinux¨t²Îªº¾Þ§@»¡©ú¡D¥¦´¿¸g¬O\nameurl{http://www.linuxdoc.org/HOWTO/From-PowerUp-To-Bash-Prompt-HOWTO.html}{±q¥[¹q±Ò°Ê¨ìBash´£¥Ü²Å(From PowerUp to Bash Prompt)}ªº¤@³¡¤À¡D¦ý¬O§Ú±N¥¦­Ì¤ÀÂ÷¶}¨Ó¡A¥H«K¨Ï±o¥¦­Ì§óÂ²µu¦Ó§ó¬°¶°¤¤¤Æ¡D§Ú­Ì¦b¦¹©Ò­n¥´³yªº¨t²Î¬O{\itshape «D±`\/}¤pªº¡A¦Ó¥B¦}¤£­ã³Æ§@¬°¤u§@²£«~¨Ó¨Ï¥Î¡D¦pªG±z·Q±qÀY¶}©l¥´³y¤@­Ó¦³¹ê»Ú¥Î³~ªº¨t²Î¡A½Ð°Ñ¾\Gerard Beekmans©Ò¼¶¼gªº\nameurl{http://www.linuxfromscratch.org}{LinuxªÅ¤â¹D¹ê§@«ü«n½g (Linux From Scratch HOWTO)}¡D}


\begin{document}
\maketitle
\tableofcontents

\section{±z©Ò»Ý­n¨ã³Æªº±ø¥ó}

§Ú­Ì­º¥ý­n¦w¸Ë¤@­ÓLinuxµo¦æ®M¥ó¤ñ¦p¤p¬õ´U(RedHat)¨ì¤@­Ó¤À°Ï¤W¡AµM¦Z
¨Ï¥Î¥¦¨Ó¦b¥t¤@­Ó¤À°Ï¤W¥´³y¤@­Ó·sªºLinux¨t²Î¡D§Ú±N§Ú­Ì©Ò­n¥´³yªº¨t²Î
ºÙ¬°¥Ø¼Ð(target)¦Ó§â§Ú­Ì©Ò¨Ï¥Î¨Ó¥´³y·s¨t²Îªº¨t²ÎºÙ¬°·½ÀY(source)¡D
¥i§O§â³o­Ó·½ÀY(source)¦P§Ú­Ì¦P®É¨Ï¥Îªº{\itshape ·½½X(source code)\/}¬Û
²V²c¤F®@¡D:)



¦]¦¹¡A±z±o»Ý­n¤@¥x¨ã¦³¨â­Ó¿W¥ß¤À°Ïªº¾÷¾¹¡D¦pªG¥i¯à¡A½ÐºÉ¶q¨Ï¥Î¤@¥x
¨S¦³­«­n¸ê®Æ¦b¨½ÀYªº¾÷¾¹¡A¥H§K¼Æ¾Ú¨ü·l¡D±z¥i¥H¨Ï¥Î¤@­Ó¤w¸g¦s¦bªº
Linux¨t²Î§@¬°·½ÀY¨t²Î¡A¦ý¬O§Ú¦}¤£±À¯ò³oºØ¤è¦¡¡D¦pªG±z¤£·V¿òº|¤F§Ú­Ì
¥´³yªº«ü¥Oªº¬Y¨Ç°Ñ¼Æ¡A±z¦³¥i¯à·|·N¥~¦a¦b³o­Ó¨t²Î¤W¦w¸Ë¤F¤@¨Ç¨S¦³¥²­n
ªºªF¦è¡A¦³¥i¯à·|¾É­P¤£­Ý®e©M¨R¬ð¡D



ÂÂ«¬ªºPC¾÷µw¥ó¡A¤j³¡¤Àªº486¾÷¾¹©ÎªÌ§ó¦­ªº¾÷«¬¡A¨äBIOS³£¦³¤@¨Ç·¥¨ä
·Ð¤Hªº­­¨î¡D¥¦­Ì¨S¦³¿ìªkÅª¨úµw½L¶W¹L«e512¥ü¤§¦ZªºªÅ¶¡¡D·íµM¡A³o­Ó
¹ï¤_Linux¨Ó»¡¦}¤£¬O¤°¤\¤j°ÝÃD¡A¦]¬°¥u­nLinux¯à°÷¤Þ¾É±Ò°Ê¤F¡A±N¨Ï¥Î
Linux¦Û¤vªººÏ½LIO¡A²¤¹LBIOSªº½Õ¥Î¡D¦ý¬O¬°¤F¯à°÷Åý³o¨ÇÂÂ«¬¾÷¾¹¯à°÷
¤Þ¾ÉLinux¡A¨º¤\Linux¤º®Ö¥²¶·¦s©ñ¦bµw½Lªº«e512¥ü¤§«eªº¬Y­Ó¦ì¸m¡D¦pªG±z
¥¿¦n¦³³o¤\­ÓÂÂ«¬¾÷¾¹¡A±z±o­ã³Æ¦n¤@­Ó¿W¥ßªº¥B§¹¥þ¦b«e512¥ü­S³ò¤ºªº
µw½L¤À°Ï¡A¦}±N¨ä¬E¸ü¬°{\ttfamily /boot}¡D¨ä¥¦ªº¤À°Ï´N¥i¥H¦b¥ô¦ó¦ì¸m¡A
¥i¥H¥ô·N³B²z¦Ó¤£¥²¾á¤ß¬O¦bµw½Lªº¤°¤\¦ì¸m¤F¡D



¤W¤@¦¸§Ú¥´³y³o­Ó¨t²Î®É¡A©Ò¨Ï¥Îªº·½ÀY¨t²Î¬O¤p¬õ´U6.1(RedHat 6.1)¡A
§Ú¦w¸Ë¤F°ò¥»¨t²Î¡Aªþ¥[¦³¥H¤U³n¥ó¥]¡J

\begin{itemize}
\item cpp                       (C++½sÄ¶¾¹)
\item egcs                      (¼W±j«¬C½sÄ¶¾¹)
\item egcs-c++          (¼W±j«¬C++»y¨¥½sÄ¶¾¹)
\item patch             (¥´¸É¤Bµ{§Ç)
\item make                      (½sÄ¶§å³B²z¸ÑÄÀ¾¹)
\item dev86             (³]³Æ¤å¥ó¥])
\item ncurses-devel     (ncurses®w¶}µo¥])
\item glibc-devel       (glibc®w¶}µo¥])
\item kernel-headers(¤º®Ö·½½XÀY¤å¥ó¥])
\end{itemize}
 

§ÚÁÙ¦w¸Ë¤FX Windowµøµ¡¨t²Î©MMozillaºôµ¸ÂsÄý¾¹¥H«K§ó»´ªQ¦a¾\Åª¤åÀÉ¡A
¦Ó¹ê»Ú¤W³o¨â­ÓªFªF¦}¤£¬O¥²­nªº¡D¦b§Úµ¤¤u¤§®É¡A³o­Ó·½ÀY¨t²Î¤j·§¨Ï¥Î
¤F350¥üªººÏ½LªÅ¶¡(¬Ý°_¨Ó¬O¦h¤F¤@¨Ç¡A¥i¬O§ÚÁÙ¦b¯Ç´e¬°¤°¤\©O)¡D



µ¤¤u¤§®Éªº¥Ø¼Ð¨t²Î¥e¥Î¤F650¥üºÏ½LªÅ¶¡¡A¦ý¬O³o­Ó¼Æ­È¥]§t¤F©Ò¦³ªº·½½X
¥H¤Î¤¤³~¥´³y¥X¨Óªº¤å¥ó¡D¦pªGªÅ¶¡¤ñ¸ûºò´ê¡A±zÀ³¸Ó¦b¨C­Ó³n¥ó¥]³£¥´³y
§¹²¦¤§¦Z°õ¦æ¤@¤U{\ttfamily make clean}¨Ó²M°£Á{®É¤å¥ó¡D·íµM¤F¡A§Ú¹ï³o­Ó
¤]¬O¦³ÂI¦YÅåªº¡D



³Ì¦Z¡A±zªº­ã³Æ¦n§Ú­Ì©Ò­n¥Î¨Ó¥´³y¨t²Îªº·½½X¥]¡D³o¨Ç´N¬O§Ú¦b¥»¤å©Ò°Q½×
ªº³n¥ó¥]¡D³o¨Ç³n¥ó¥]³£¥i¥H±q·½½X½L¨½­±§ä¨ì¡A©ÎªÌ±q°ê»Ú¤¬Ápºô¤W§ä¨ì¡D
§Ú·|µ¹¥X¬ü°êªº¯¸ÂI©M¦ì¤_¿D¤j§Q¨ÈªºÃè¹³¯¸ÂIªº¦a§}¡D



\label{downloads}
\begin{itemize}
\item MAKEDEV (³]³Æ¥Í¦¨¾¹¥])
\nameurl{ftp://tsx-11.mit.edu/pub/linux/sources/sbin}{¬ü°ê}
¥t¤@­Ó¬O
\nameurl{ftp://sunsite.unc.edu/pub/Linux/system/admin}{¬ü°ê}
\item Lilo (Linux¤Þ¾É¾¹¥])
\nameurl{ftp://lrcftp.epfl.ch/pub/linux/local/lilo/}{¬ü°ê},
\nameurl{ftp://mirror.aarnet.edu.au/pub/linux/metalab/system/boot/lilo/}{¿D¤j§Q¨È}.
\item Linux¤º®Ö¥](Kernel)
¨Ï¥Î\nameurl{http://www.kernel.org}{¥D­¶}¤W©Ò¦CÁ|ªºÃè¹³¯¸ÂI
¦Ó³Ì¦n¤£­n¨Ï¥Î
\nameurl{ftp://ftp.kernel.org/pub/linux/kernel}{¬ü°ê}
¯¸ÂI¤U¸ü¡A¦]¬°³o¨Ç¦a¤è³q±`¬O¶W­t²ü¹BÂàªº¡D
\nameurl{ftp://kernel.mirror.aarnet.edu.au/pub/linux/kernel/}{¿D¤j§Q¨È} 
\item GNU libc®w¥]
¨ä¥»¨­¡A¥H¤Îliuxthreads½uµ{ªþ¥[®w¥i¦b¥H¤U¦a§}¤U¸ü¨ì¡J
\nameurl{ftp://ftp.gnu.org/pub/gnu/glibc}{¬ü°ê}©M 
\nameurl{ftp://mirror.aarnet.edu.au/pub/gnu/glibc}{¿D¤j§Q¨È} 
\item GNU libcªþ¥[®w¥]
±z¥i¯àÁÙ·|»Ý­nlinuxthreads½uµ{ªþ¥[®w©Mlibcrypt¥[±Kªþ¥[®w¡D
¦pªGlibcrypt¨S¦b¨º­Ó¦a¤è§ä¨ì¡A¨º´N¬O¦]¬°¬ü°ê¥X¤fªk«ß­­¨îªº­ì¦]¡A
¨º¤\±z´N¥i¥H±q³o¨½§Ë¨ì
\nameurl{ftp://ftp.gwdg.de/pub/linux/glibc}{libcrypt¥[±Kªþ¥[®w}¡D
³q±`linuxthreads½uµ{ªþ¥[®w¸òlibc®w¬O©ñ¦b¦P¤@­Ó¦a¤èªº¡D
\item GNU ncurses
\nameurl{ftp://ftp.gnu.org/gnu/ncurses}{¬ü°ê}
\nameurl{ftp://mirror.aarnet.edu.au/pub/gnu/ncurses}{¿D¤j§Q¨È}
\item SysVinit (ªì©l¤Æ¸}¥»¥])
\nameurl{ftp://sunsite.unc.edu/pub/Linux/system/daemons/init}{¬ü°ê} 
\nameurl{ftp://mirror.aarnet.edu.au/pub/linux/metalab/system/daemons/init}{¿D¤j§Q¨È} 
\item GNU Bash (©R¥O¸ÑÄÀ¾¹¥])
\nameurl{ftp://ftp.gnu.org/gnu/bash}{¬ü°ê} 
\nameurl{ftp://mirror.aarnet.edu.au/pub/gnu/bash}{¿D¤j§Q¨È} 
\item GNU sh-utils (©R¥O¸ÑÄÀ¾¹¤u¨ã¥])
\nameurl{ftp://ftp.gnu.org/gnu/sh-utils}{¬ü°ê} 
\nameurl{ftp://mirror.aarnet.edu.au/pub/gnu/sh-utils}{¿D¤j§Q¨È} 
\item util-linux (Linux±`¥Î¤u¨ã¥])
\nameurl{ftp://ftp.win.tue.nl/pub/linux/utils/util-linux/}{¥t¥~¬Y­Ó¦a¤è}
\nameurl{ftp://mirror.aarnet.edu.au/pub/linux/metalab/system/misc}{¿D¤j§Q¨È}¥»³n¥ó¥]¥]§t¦³{\ttfamily agetty}©M{\ttfamily login}¡D
\end{itemize}




Á`µ²¤@¤U¡A±z©Ò»Ý­nªº´N¬O¡J
\begin{itemize}
\item ¤@¥x¨ã¦³¨â­Ó¤À§O¬O400¥ü©M700¥ü¿W¥ß¤À°Ïªº¾÷¾¹¡A©Î³\±z¥i¯à·|»Ý­n¤Ö¤@¨Ç¡D
\item ¤@­ÓLinuxµo¦æ®M¥ó(Ä´¦p¤@­ÓRed Hat¥ú½L)©M¦w¸Ë¤è¦¡(Ä´¦p¤@­Ó¥úÅX)
\item ¥H¤W©Ò¦CÁ|ªº·½½Xªºtar¥]¡D
\end{itemize}




§Ú°²©w±z¥i¥H¦Û¤v¦w¸Ë·½ÀY¨t²Î¡A¦Ó¥Î¤£µÛ§Ú¨ÓÀ°¦£¡D±q³o¨½¶}©l¡A§Ú°²©w·½ÀY
¨t²Î¤w¸g¦w¸Ë¦n¤F¡D



¥»¤p¶µ¥Øªº²Ä¤@­Ó¨½µ{¸O´N¬O¨Ï±o¤º®Ö±Ò°Ê°_¨ÓµM¦Z¦ºÂ¼Â¼¡A¦]¬°¥¦¨S§ä¨ì
{\ttfamily init}ªì©l¤Æµ{§Ç¡D¤]´N¬O»¡§Ú­Ì±o¦w¸Ë¤@­Ó¤º®Ö©M¦w¸Ëlilo¡D¬°¤F
¶¶§Q¦w¸Ëlilo¡A§Ú­Ì­n¥Î¤W¦b¥Ø¼Ð¨t²Î¤W{\ttfamily /dev}¥Ø¿ý¤Uªº³]³Æ¤å¥ó¡D
lilo»Ý­n¥¦­Ì¨Ó¹ê²{©³¼h¥²»ÝªººÏ½L¦s¨ú¨Ó¼g¤J¤Þ¾É®°°Ï¡DMAKEDEV¥¿¬O¥Î¨Ó
³Ð«Ø³o¨Ç³]³Æ¤å¥óªº¸}¥»µ{§Ç(±z·íµM¥i¥H¥u»Ý­n±q·½ÀY¨t²Î·í¤¤´_¨î¥X¨Ó¡A
¤£¹L³o¥i¬O§@¹ú¤£³Ò¦ÓÀò®@)¡D¦ý¬O³Ì­«­nªº¨Æ±¡´N¬O¡A§Ú­Ì»Ý­n¤@­Ó¤å¥ó
¨t²Î¨Ó©ñ¸m©Ò¦³ªº³o¨ÇªF¦è¡D




\section{¤å¥ó¨t²Î}

§Ú­Ìªº·s¨t²Î¬O­n¦w¸Ë¦b¤å¥ó¨t²Î¤Wªº¡D¦]¦¹­º¥ý§Ú­Ì±o¨Ï¥Î©R¥O{\ttfamily mke2fs}¨Ó
³Ð«Ø¤å¥ó¨t²Î¡AµM¦Z±N¨ä¬E¸ü¨ì¬Y­Ó¦a¤è¡D§Ú«ØÄ³¬O¬E¸ü¨ì{\ttfamily /mnt/target}³o­Ó
¥Ø¿ý¤W¡D±µ¤U¨Óªº¾Þ§@¤¤¡A§Ú°²©w´N¥Î³o­Ó¥Ø¿ý¤F¡D¬°¤F¸`¬Ù±zªºÄ_¶Q®É¶¡¡A±z¥i¥H
¦b{\ttfamily /etc/fstab}¤å¥ó¨½­±²K¥[¤W³o¤@¶µ¡A¥H«K¨C¦¸·½ÀY¨t²Î±Ò°Êªº®É­Ô´N¯à°÷
¦Û°Ê±N³o­Ó¥Ø¿ý¬E¸ü¤W¡D



·í§Ú­Ì±Ò°Ê¤F¥Ø¼Ð¨t²Î¡A©ñ¸m¦b{\ttfamily /mnt/target}¤Wªº©Ò¦³ªF¦è´N·|³Q·í¦¨¤F
©ñ¸m¦b{\ttfamily /}®Ú¥Ø¿ý¤W¡D



§Ú­Ì»Ý­n¦b¥Ø¼Ð¨t²Î¤W«Ø¥ß©T©wªº¥Ø¿ýµ²ºc¡D½Ð°Ñ¾\"¤å¥ó¼h¦¸µ²ºc¼Ð­ã(Â²ºÙFHS¡A
File Heirarchy Standard)"¡A¨£¤_\ref{FHS} {(¤å¥ó¨t²Î)}¤@¸`¨Ó¤F¸Ñ
¸Ô±¡¡A©ÎªÌ¥u»Ý­n{\ttfamily cd}¤Á´«¥Ø¿ý¨ì¥Ø¼Ð¨t²Î©Ò¬E¸üªº¦a¤èµM¦ZºÉºÞ°õ¦æ¥H
¤U©R¥O¡J 

\begin{verbatim}
 
        mkdir bin boot dev etc home lib mnt root sbin tmp usr var
        cd var; mkdir lock log run spool  
        cd ../usr; mkdir bin include lib local sbin share src
        cd share/; mkdir man; cd man 
        mkdir man1 man2 man3 ... man9
\end{verbatim}


¦]¬°FHS¼Ð­ã©M¤j³¡¤Àªº³n¥ó¥]¦b¤â¥U­¶(man page)©ñ¸m¦ì¸m³B²z¤W¦}¤£¤@­P¡A
¦]¦¹§Ú­Ì»Ý­n°µ¤@­Ó²Å¸¹³s±µ¡J

\begin{verbatim}
 
        cd ..; ln -s share/man man
\end{verbatim}





\section{MAKEDEV(³]³Æ¥Í¦¨¾¹)}

§Ú­Ì­n§â·½¥N½X©ñ¸m¨ì¥Ø¼Ð¨t²Îªº{\ttfamily /usr/src}¥Ø¿ý¤U­±¡D¦]¦¹¡AÁ|­Ó¨Ò
¤l§a¡A¦pªG±zªº¥Ø¼Ð¨t²Î¬O¬E¸ü¦b{\ttfamily /mnt/target}³o­Ó¦a¤è¡A¥B±zªºtar
¥]¬O©ñ¦b{\ttfamily /root}¨½­±¡A¨º¤\±z­n°µªº´N¬O¡J

\begin{verbatim}
 
        cd /mnt/target/usr/src
        tar -xzvf /root/MAKEDEV-2.5.tar.gz
\end{verbatim}




µM¦Z´N§â³o¨Çtar¥]´_¨î¨ì±z­n¸Ñ¶}¥¦­Ìªº¦a¤è´N¦æ¤F¡D¤d¸U§O°g½k¤F®@¡D;-{$>$}



·í±z¦w¸Ë³n¥óªº®É­Ô¡A³q±`±¡ªp¤U±z·|§â¥¦­Ì¦w¸Ë¦b¥¿¦b¨Ï¥Îªº¨t²Î¤W¡D¦ý¬O§Ú­Ì
¦}¤£·Q³o¤\°µ¡A¦]¬°§Ú­Ì¬O­n§â{\ttfamily /mnt/target}·í°µ®Ú¤å¥ó¨t²Î(root 
filesystem)¡A´N¬O­n§â³o¨Ç³n¥ó¦w¸Ë¨ì³o­Ó¦a¤è¡D¤£¦Pªº³n¥ó¥]¦³¤£¦Pªº³B²z
¤è¦¡¡D¤ñ¦p»¡MAKEDEV³]³Æ¥Í¦¨¾¹¥]¡A±z­n°µªº¬O¡J

\begin{verbatim}
        ROOT=/mnt/target make install
\end{verbatim}




±z±o¥ý¦b³o­Ó¥]·í¤¤ªºREADME»¡©ú¤å¥ó©MINSTALL¦w¸Ë»¡©ú¤å¥ó·í¤¤¬d¥X³o¨Ç¿ï¶µ¡A
©ÎªÌ°õ¦æ©R¥O{\ttfamily ./configure --help}¬d¬ÝÀ°§U»¡©ú¡D



¬d¬Ý¤@¤UMAKEDEV¥]·í¤¤ªº{\ttfamily Makefile}¤å¥ó¡A¬Ý¬Ý¥¦¬O«ç¼Ë³B²z§Ú­Ì¦b©R¥O
¦æ·í¤¤³]¸mªº{\ttfamily ROOT}ÅÜ¶qªº¡D±µµÛ³q¹L°õ¦æ{\ttfamily man ./MAKEDEV.man}¨Ó
¬d¬Ý¤@¤U¥¦ªº¤â¥U­¶¡A¬Ý¬Ý¥¦¬O«ç¤\°_¨ì§@¥Îªº¡D±z·|µo²{¥Í¦¨§Ú­Ì¦Û¤vªº³]³Æªº
¤è¦¡´N¬O°õ¦æ{\ttfamily cd /mnt/target/dev}µM¦Z{\ttfamily ./MAKEDEV generic}¡D
½Ð¨Ï¥Î{\ttfamily ls}©R¥O¨Ó¬Ý¬Ý¥¦³£¬°§Ú­Ì¥Í¦¨¤F­þ¨Ç³]³Æ¤å¥ó§a¡D




\section{¤º®Ö}

¤U¤@¨B´N¬O¥Í¦¨¤º®Ö¤F¡D§Ú°²³]±z¥H«e¬O°µ¹L½sÄ¶¤º®Ö³oºØ¨Æªº¡A©Ò¥H§Ú´Nªø¸Üµu»¡
¤F¡D¦pªG­n±Ò°Êªº¤º®Ö¤w¸g­ã³Æ¦nªº¸Ü¡A¨º¤\­n¦w¸Ëlilo´N·|§ó®e©ö¡D½Ðªð¦^¨ì
¥Ø¼Ð¨t²Îªº{\ttfamily usr/src}¥Ø¿ý¡AµM¦Z¦b¨º¨à¸Ñ¶}Linux¤º®Ö·½½X¡D¶i¤JLinux
·½½X¾ð({\ttfamily cd linux})µM¦Z¨Ï¥Î±z³Ì³ßÅwªº¤è¦¡°t¸m¤º®Ö¡A¤ñ¦p{\ttfamily make
menuconfig}¡D¦pªG±z·QÅý¦Û¤vªº»´ªQ¤@¨Ç¡A¨º¤\±z¥i¥H¬°¦Û¤v°t¸m¤@­Ó¨S¦³
¼Ò¶ôªº¤º®Ö¡D¦pªG±z¤w¸g°t¸m¤F¼Ò¶ô¡A¨º¤\±z´N±o½s¿è{\ttfamily Makefile}¤å¥ó¡A
§ä¥X{\ttfamily INSTALL\_MOD\_PATH}¦}±N¨ä³]¸m¬°{\ttfamily /mnt/target}¡D



²{¦b±z¥i¥H°õ¦æ{\ttfamily make dep}¡A{\ttfamily make bzImage}¤F¡D¦pªG±z³]¸m¤F¼Ò¶ô
¶µ¡A¥i¥H¦A°õ¦æ{\ttfamily make modules}¡A{\ttfamily make modules\_install}¡D§â¤º®Ö
¬M¶H¤å¥ó{\ttfamily arch/i386/boot/bzImage}©M¨t²Î¨ç¼Æ¬M¶H¤å¥ó{\ttfamily System.map}
´_¨î¨ì¥Ø¼Ð¨t²Îªºboot±Ò°Ê¥Ø¿ý{\ttfamily /mnt/target/boot}¤U­±¡AµM¦Z­ã³Æ¦w¸Ë
¨t²Î¤Þ¾É¾¹lilo¤F¡D




\section{Lilo¨t²Î¤Þ¾É¾¹}

Lilo¥]¨½­±±a¦³¤@­Ó«Ü¤p¥©ªº¸}¥»¡A¦W¥s{\ttfamily QuickInst}¡D½Ð§âlilo·½½X¥]
¸ÑÀ£¨ì¥Ø¼Ð¨t²Îªº·½¥N½X¥Ø¿ý{\ttfamily /mnt/target/usr/src}¤U­±¡AµM¦Z°õ¦æ¸Ó
¸}¥»¡A¤èªk¬O¡J{\ttfamily ROOT=/mnt/target ./QuickInst}¡D¥¦·|¸ß°Ý±z¤@¨ÇÃö¤_
±z·Q«ç¼Ë¦w¸Ëliloªº°ÝÃD¡D



¤Á°O¡J¦]¬°§Ú­Ì¤w¸g³]¸m{\ttfamily ROOT}®Ú¨t²Î¬°¥Ø¼Ð¨t²Î¤À°Ï¤F¡A©Ò¥H±z¦^µª
´£°Ý®É©Òµ¹¥Xªº¤å¥ó¦W¦P¥¦¬O±K¤Á¬ÛÃöªº¡D¤ñ¦p·í¥¦¸ß°Ý±zÀq»{·Q±Ò°Ê­þ­Ó¤º®Ö
ªº®É­Ô¡A±zªº¦^µªÀ³¸Ó¬O{\ttfamily /boot/bzImage}¡A¦Ó{\itshape ¦}¤£¬O\/}
{\ttfamily /mnt/target/boot/bzimage}®@¡D§Úµo²{³o­Ó¸}¥»¨½­±¦³­Ó¤p¿ù»~¡A¥¦
·|´£¥Ü»¡¡J

\begin{verbatim}

        ./QuickInst: /boot/bzImage: no such file 
\end{verbatim}


¦ý¬O±z¬Ç²z³o­Ó´£¥Ü´N¬O¤F¡A¤£·|¦³¨Æªº¡D



§Ú­Ì¸ÓÅý{\ttfamily QuickInst}§â¤Þ¾É®°°Ï(boot sector)©ñ¦b¦ó³B¬°§´©O¡H
·í§Ú­Ì­«±Ò®É¡A§Ú­Ì§Æ±æ¥i¥H¿ï¾Ü¤Þ¾É¶i¤J·½ÀY¨t²Î©ÎªÌ¥Ø¼Ð¨t²Î©ÎªÌ
¨ä¥¦¦@¦s¤_¦P¤@¥x¾÷¾¹ªº¨ä¥¦¨t²Î¡D¦Ó¥B§Ú­ÌÁÙ§Æ±æ§Ú­Ì­n¨Ï¥Î©Ò½sÄ¶
ªºlilo¨Ó¤Þ¾É§Ú­Ì·s¨t²Îªº¤º®Ö¡D§Ú­Ì«ç¤\§â³o¨â¥ó¨Æ±¡¦X¦Ó¬°¤@©O¡H
Åý§Ú­Ì¥ý¶]¤@¤p·|¨àÃD¡A¬Ý¬Ýlilo¦b¤@­ÓÂù­«±Ò°ÊªºLinux¨t²Î¤W¬O«ç
¼Ë¤Þ¾ÉDOSªº¡D¦b³o¼Ëªº¤@­Ó¨t²Î¤Wªº{\ttfamily lilo.conf}¤å¥óªº¤º®e¬Ý
°_¨Ó¥i¯à·|¸ò¤U­±ªº®t¤£¦h¡J



\begin{verbatim}
 
prompt  
timeout = 50
default = linux

image = /boot/bzImage 
        label  = linux
        root   = /dev/hda1
        read-only

other = /dev/hda2
        label = dos
\end{verbatim}






¦pªG¾÷¾¹¬O³o¤\¦w¸Ë°_¨Óªº¡A¨º¤\¥D¤Þ¾É°O¿ý(MBR¡Amaster boot record)´N¥i¥H
³QBIOSÅª¨ú¦}¥[¸ü¡AµM¦ZMBR¥[¸ülilo±Ò°Ê¤Þ¾É¾¹¡A¦Ó¦ZªÌ«hµ¹¥X¤@­Ó´£¥Ü¡D¦pªG
±z¦b´£¥Ü¦Z­±¿é¤J{\ttfamily dos}¡Alilo´N·|±qhda2¥[¸ü¤Þ¾É°O¿ý¡A´N¥[¸ü¤FDOS¡D



§Ú­Ì©Ò­n°µªº¨Æ±¡¸ò¤WÀY¬O¤@¼Ëªº¡A°£¤F¦bhda2ªº¤Þ¾É°O¿ýÀ³¸Ó¬O¥t¥~¤@­Ólilo
¤Þ¾É°O¿ý¤§¥~¡A¤]´N¬O¦b{\ttfamily QuickInst}©Ò¸ß°Ý­n¦w¸Ëªº¨º­Ó¡D¦]¦¹¨Ó¦ÛLinux
µo¦æ®M¥óªºlilo·|¥[¸ü§Ú­Ì©Ò½sÄ¶¦w¸Ëªºlilo¡AµM¦Z§Ú­Ì©Ò½sÄ¶¦w¸Ëªºlilo´N·|
¥[¸ü§Ú­Ì©Ò½sÄ¶¦w¸Ëªº¤º®Ö¡D·í±z­«±Ò¦Z¡A±z·|¬Ý¨ì¨â¦¸liloªº´£¥Ü¡D



ªø¸Üµu»¡¡A·í{\ttfamily QuickInst}¸ß°Ý±z¸Ó§â¤Þ¾É®°°Ï(boot sector)©ñ¨ì¤°¤\¦a¤è
®É¡A±z´N¦^µª¥Ø¼Ð¨t²Î©Ò¦bªº¤À°Ï¡A¤ñ¦p»¡¬O¡J{\ttfamily /dev/hda2}¡D



²{¦b¨Ó­×§ï±zªº·½ÀY¨t²Î¤Wªº{\ttfamily lilo.conf}°t¸m¤å¥ó¡A¨º¤\¬Ý°_¨Ó·|¦³ÂI¹³
³o­Ó¼Ë¤l¡J

\begin{verbatim}
 
other = /dev/hda2
        label = target
\end{verbatim}


­×§ï§¹²¦¡A±µµÛ°õ¦ælilo¦w¸ËLILO¡D§Ú­ÌÀ³¸Ó¥i¥H²Ä¤@­Ó¤Þ¾É¶i¤J¥Ø¼Ð¨t²Î¤F¡D




\section{Glibc®w}

¤U¤@¨B§Ú­Ì­n¦w¸Ë{\ttfamily init}¡A¦ý¬O¦P¹B¦æ¦bLinux¤W¤L¥G¥þ³¡ªºµ{§Ç¤@¼Ë¡A
{\ttfamily init}¨Ï¥Î¤FGNU C»y¨¥®wglibc©Ò´£¨Ñ®w¨ç¼Æ¡A¦]¦¹§Ú­Ì¥ý±o§â³o­ÓªFªF
¦w¸Ë¤W¡D



Glibc®w¬O¤@­Ó«Ü¤j¦Ó¥B«Ü´_Âøªº³n¥ó¥]¡D¦b§Ú¨º­ÓÂÂ«¬ªº±a8¥ü¤º¦sªº386sx/16¾÷¾¹
¤W¡A±oªá±¼§Ú90­Ó¤p®É¨Ó§¹¦¨½sÄ¶¤u§@¡D¦ý¬O¦b§Ú¨º±a¦³64¥ü¤º¦sªºÁÉ·¨(Celeron)
433¤W¥uªá±¼¤F33¤ÀÄÁ¡D¦pªG±z¥u¦³8¥ü¤º¦s(©ÎªÌ¤Ö±oÅý¤H¥´Å¸ªº®e¶q)ªº¸Ü¡A¨º´N
°µ¦n­W¼õªº­ã³Æ§a¡D



glibcªº¦w¸Ë¤åÀÉ«ØÄ³¦b¤£¦Pªº¿W¥ß¤ÀÂ÷¥Ø¿ý¨½­±½sÄ¶¡D³o¼Ë°µ´N¯à°÷Åý±z«Ü»´ªQ
¦a¦A¦¸½sÄ¶¡A¦]¬°±z¥i¥H¸Ó¥Ø¿ý¤U­±±µµÛ½sÄ¶¡D±z¥i¯à¤]·|·Q³o¤\°µ¡A¦]¬°¥i¥H¬°
±z¸`¬Ù¤j¬ù265¥üªººÏ½LªÅ¶¡®@!



¸ò¥­±`¤@¼Ë¡A§â{\ttfamily glibc-2.1.3.tar.gz}(©ÎªÌ¨ä¥¦ª©¥»)³o­Ótar¥]¸ÑÀ£¨ì
{\ttfamily /mnt/target/usr/src}³o­Ó¥Ø¿ý¤U­±¡D±µ¤U¨Ó¡A§Ú­Ì±o§âªþ¥[®w¤]¸ÑÀ£
¨ìglibc®w¥Ø¿ý¤U­±¡D©Ò¥H¥ý{\ttfamily cd glibc-2.1.3}¡AµM¦Z±µµÛ¦b³o­Ó¥Ø¿ý¤U­±
§â{\ttfamily glibc-crypt-2.1.3.tar.gz}©M{\ttfamily glibc-linuxthreads-2.1.3.tar.gz}
³o¨â­Ótar¥]¸Ñ¶}¡D



²{¦b§Ú­Ì´N¥i¥H¥Í¦¨½sÄ¶¥Ø¿ý¡A³]¸m¿ï¶µ¡A°õ¦æmake½sÄ¶©M¦w¸Ëglibc®w¤F¡D³o¨Ç
³£¬O§Ú©Ò¨Ï¥Î¹Lªº©R¥O¡A¦ý¬O³Ì¦n±z¦Û¤v¾\Åª¤@¤U¤åÀÉ¡A½T»{³Ì¾A¦X±zªºª¬ªpªº
°µªk¡DµM¦Ó¦b±z¶}©l«e¡A±z¥i¯à»Ý­n°õ¦æ{\ttfamily df}©R¥O¨Ó¬d¬Ý¤@¤UÁÙ¦³¦h¤Ö
³Ñ§EªÅ¶¡¡D±zÁÙ¥i¥H¦b½sÄ¶¦}¦w¸Ë§¹²¦glibc®w¤§¦Z¦A°õ¦æ¤@¦¸¬Ý¬Ý³oª±·N¨à¨ì©³
±o¥e¦h¤j¦a¨à¡D



\begin{verbatim}
        cd ..
        mkdir glibc-build
        ../glibc-2.1.3/configure --enable-add-ons --prefix=/usr
        make
        make install_root=/mnt/target install
\end{verbatim}




ª`·N¤F¡A§Ú­ÌÁÙ¦³§Oªº¤èªk¨Ó§iª¾¤@­Ó³n¥ó¥]¸Ó¸Ë¨ì¤°¤\¦a¤è¡D




\section{SysVinitªì©l¤Æ¸}¥»¥]}

½sÄ¶¦}¦w¸ËSysVinit¥i°õ¦æ¥N½X¬O«D±`¤§Â²¼ä©ú¤Fªº¡D§Ú°½Ãi¤@¦¸¡A´Nµ¹±z
¾Þ§@©R¥O§a¡D°²©w±z¤w¸g¸ÑÀ£¦}¥B¶i¤JSysVinit·½½X¥Ø¿ý¤F¡J



\begin{verbatim}
 cd src
 make
 ROOT=/mnt/target make install
\end{verbatim}




¥t¥~ÁÙ¦³«Ü¦h»P{\ttfamily init}¬ÛÃöªº¸}¥»¡D¦bSysVinit¥]¨½­±¦³¤@¨Ç¤u§@
¥¿±`ªº­S¨Ò¸}¥»¡A¦ý¬O±z±o¦Û­Ó¨à¤â¤u¦w¸Ë¤F¡D¥¦­Ì¦bSysVinit·½½X¾ð¤¤
¬O¦³¼h¦¸¦a¥¬¸m¦b{\ttfamily debian/etc}¤U­±ªº¡D±z¥u»Ý­n°õ¦æÃþ¦ü³o¼Ëªº
©R¥O¡J{\ttfamily cd ../debian/etc; cp -r * /mnt/target/etc}¡Aª½±µ§â
¥¦­Ì´_¨î¨ì¥Ø¼Ð¨t²Îªº{\ttfamily etc}¥Ø¿ý¤U­±´N¦æ¤F¡D·íµM¤F¡A±z³Ì¦n¬O
¦b´_¨î¤§«e¬d¬Ý¤@¤U¡D



·í­«±Ò¤§¦Z¡A¥Ø¼Ð¨t²Îªº¤º®Ö´N·|¥[¸ü{\ttfamily init}¡A¤@¤Á³£¸Ó¦U´N¨ä¦ì¤F¡D
¦¹®Éªº°ÝÃD¥i¯à¬O¸}¥»¤£¯à¥¿±`¹B¦æ¡A¦]¬°¨S¦³©R¥O¸ÑÄÀ¾¹{\ttfamily bash}¨Ó
¸ÑÄÀ°õ¦æ³o¨Ç¸}¥»¡D¦Ó¥B{\ttfamily init}ÁÙ·|¹Á¸Õ°õ¦æ{\ttfamily getty}¡A¦ý¬O
®Ú¥»´N¨S¦³{\ttfamily getty}¥i¨Ñ¹B¦æ¡D½Ð­«·s±Ò°Ê¦}½T»{¨S¦³¨ä¥¦ªº¿ù»~¡D




\section{Ncurses®w}

§Ú­Ì©Ò»Ý­nªº¤U¤@­ÓªFªF¬O©R¥O¸ÑÄÀ¾¹Bash¡A¦Óbash»Ý­nncurses®w¡A©Ò¥H
§Ú­Ì±o¥ý¦w¸Ë³oª±·N¨à¡Dncurses®w¥i¥H¥N´Àtermcap³B²z¤å¥»«Ì¹õªº¬¡­p¡A
¦P®ÉÁÙ³q¹L¤ä«ùtermcap½Õ¥Î´£¨Ñ¤F¦V¦Z­Ý®e©Ê¡D¬°¤F¾Ö¦³¤@­ÓÂ²¼ä·s¼éªº
¨t²Î¡A§ÚÄ±±o³Ì¦n¬O¸T¤îÂÂ¦¡ªºtermcap¤èªk¡D¦pªG±z¦ZÀY­n½sÄ¶¨Ï¥Î¤F
termcapªº¸û¦ÑªºÀ³¥Îµ{§Ç¡A±z¥i¯à·|¤£Â_¦a»P³Â·Ð¬°¦ñ¤F¡D¦ý¬O±z¦Ü¤Ö·|
ª¾¹D¤°¤\ªFªF¨Ï¥Î¤F¤°¤\ªFªF¡D¦pªG±z¥²¶·­n¥Î¡A¨º¤\±z¥i¥H­«·s½sÄ¶
ncurses®w¡A¨Ï¨ä±a¦³termcap¤ä«ù¡D



§Ú©Ò¨Ï¥Îªº©R¥O¬O¡J



\begin{verbatim}
        ./configure --prefix=/usr --with-install-prefix=/mnt/target --with-shared --disable-termcap 
        make 
        make install
\end{verbatim}





\section{Bash©R¥O¸ÑÄÀ¾¹}

¬°¤F§âbash¦w¸Ë¨ì§Ú­ì¥H¬°¥¦¸Ó§bªº¦a¤è¡A§Úªá¶O¤F«Ü¦h®É¶¡°µ¤F¤j¶q¾\Åª©M
«ä¦Ò¥H¤Î¤£Â_¦a¹Á¸Õ©M¥X¿ù¡A¥i¿×¬O¾úºÉ¤d¨¯¸U­W°Ú¡D§Ú»¡¨Ï¥Îªº°t¸m¿ï¶µ¬O¡J



\begin{verbatim}
 ./configure --prefix=/mnt/target/usr/local --exec-prefix=/mnt/target --with-curses 
\end{verbatim}




¤@¥¹±z¤w¸g½sÄ¶¦}¦w¸Ë¤Fbash¤§¦Z¡A±z»Ý­n¥Í¦¨¤@­Ó²Å¸¹³s±µ¡A´N¶H³o¼Ë¡J
{\ttfamily cd /mnt/target/bin; ln -s bash sh}¡D³o¬O¦]¬°¸}¥»³q±`ÀY¤@¥y
¬O³o¤\¼gµÛªº¡J



\begin{verbatim}
#!/bin/sh
\end{verbatim}




¦pªG±z¨S¦³³o¤\¤@­Ó²Å¸¹³s±µ¡A¨º¤\±zªº¸}¥»´N¤£¯à¹B¦æ¡A¦]¬°¥¦­Ì·|¥h´M§ä
{\ttfamily /bin/sh}¦Ó«D{\ttfamily /bin/bash}¡D



¦pªG±zº@·N¡A±z¤]¥i¥H¨ì³o¨½®É­«·s±Ò°Ê¤@¦¸¡D±z·|ª`·N¨ì¸}¥»³o¤@¦¸½T¹ê¹B¦æ
¤F¡DÁöµM±zÁÙ¬O¨S¯àµn¿ý(login)¡A³o¬O¦]¬°ÁÙ¨S¦³¦w¸Ë{\ttfamily getty}©ÎªÌ
{\ttfamily login}³o¨Çµ{§Ç¡D




\section{Util-linux (getty ©Mlogin)}

³n¥ó¥]util-linux¥]§t¦³{\ttfamily agetty}©M{\ttfamily login}¡D§Ú­Ì»Ý­n³o¨â­Ó
µ{§Ç¤~¯àµn¿ý¨t²Î(log in)©M±o¨ì©R¥O¦æ´£¥Ü²Å(bash prompt)¡D¦b¦w¸Ë¤§¦Z¡A
½Ð¦b¥Ø¼Ð¨t²Îªº{\ttfamily /sbin}¥Ø¿ý¤U¬°{\ttfamily agetty}«Ø¥ß¤@­Ó²Å¸¹³s±µ¨ì
{\ttfamily getty}¡D{\ttfamily getty}¬O©Ò¦³UnixÃþ¨t²Î·í¤¤³Q»{¬°À³¸Ó§b¦b¨º­Ó
¦a¤èªºµ{§Ç¤§¤@¡A©Ò¥H¥Í¦¨³s±µªº¥D·N­n±j¤_§ï°Ê{\ttfamily inittab}¨Ó¹B¦æ
{\ttfamily agetty}¡D



¹ï¤_util-linux³o­Ó¥]¡A§Ú³Ñ¤Uªº¤@­Ó°ÝÃD´N¬O¸Ó¥]ªº½sÄ¶¡D³o­Ó¥]ÁÙ¥]§t
¦³{\ttfamily more}³o­Óµ{§Ç¡A¦Ó§Ú¨SªkÅý{\ttfamily make}¶iµ{µ¹{\ttfamily more}
¦b¥Ø¼Ð¨t²Î¤W°µ¤@­Ó«ü¦Vncurses 5®wªº³s±µ¡A¦Ó¤£¬O¦b·½ÀY¨t²Î¤W«ü¦V
ncurses 4®wªº³s±µ¡D§Ú·|§V¤O§JªA³o­Ó§xÃøªº¡D



±zÁÙ±o¦b¥Ø¼Ð¨t²Î¤W­ã³Æ¤@­Ó±K½X¤å¥ó{\ttfamily /etc/passwd}¡D{\ttfamily login}
µn¿ýµ{§Ç¥¿¬O³q¹L¬d¸ß¸Ó¤å¥ó¨Ó½T»{±z¬O§_¤¹³\µn¿ýªº¡D¦]¬°¦¹¦¸§Ú­Ì¥u¬O
¥´³y¤@­Óª±¨ã¨t²Î¡A©Ò¥H§Ú­Ì¥i¥H¥u³]¸m®Ú¨t²Î¥Î¤á´N°÷¤F¡A¦Ó¥B¤£»Ý­n¥ô¦ó
±K½X!! ¥u»Ý­n¦b¥Ø¼Ð¨t²Îªº±K½X¤å¥ó{\ttfamily /etc/passwd}¥[¤W¦p¤U¤@¦æ§Y¥i¡J



\begin{verbatim}
root::0:0:root:/root:/bin/bash
\end{verbatim}




©Ò¦³ªº°ì¬O³q¹L«_¸¹(:)¤À¹j¶}ªº¡A¦Û¥ª¦V¥k¤À§O¥Nªí¡J¥Î¤á¦WºÙ(user id)¡A
±K½X±K¦ê(password)¡A¥Î¤á¸¹½X(user number)¡A¥Î¤á¸s²Õ¸¹½X(group number)¡A
¥Î¤á¯u¹ê©m¦W(user's name)¡A¥Î¤á¥D¥Ø¿ý(home directory)©M¯Ê¬Ù©R¥O¸ÑÄÀ¾¹
(default shell)¡D




\section{Sh-utils}

§Ú­Ì©Ò¥²¶·ªº³Ì¦Z¤@­Ó³n¥ó¥]´N¬OGNU sh-utils¥]¡D§Ú­Ì¦¹®É©Ò»Ý­n±q³o­Ó¥]¨½­±
±o¨ìªº°ß¤@ªºµ{§Ç´N¬O{\ttfamily stty}¡A¥¦·|¦b{\ttfamily /etc/init.d/rc}¨½­±¥Î¨ì¡D
¦Ó¦ZªÌ¬O¥Î¤_§ïÅÜ¹B¦æ¯Å§O©M¶i¤Jªì©l¤Æ¹B¦æ¯Å§Oªº¸}¥»¡D¹ê»Ú¤W§Ú¦³¤@­Ó¦Ó¥B
¥Î¹L¶È¥]§t¦³{\ttfamily stty}ªº³n¥ó¥]¡A¦ý¬O«o§Ñ¤F¬O±q¦ó³B±o¨ìªº¤F¡D¨Ï¥ÎGNUªº
³n¥ó¥]¬O­Ó¦n¥D·N¡A¦]¬°¦b¨½ÀYÁÙ¦³¨ä¥¦±z»Ý­nªºªF¦è¡A¼W¥[¤F³o¨ÇªFªF·|¨Ï±o
¨t²Î¥i¥Î©Ê§ó¦n¡D



¦n¤F¡A¥´³y§¹²¦¡D±z²{¦bÀ³¸Ó¾Ö¦³¤@­Ó¥i¥H±Ò°Ê¦}¥B¯à°÷´£¥Ü±zµn¿ýªº¨t²Î¤F¡D
¿é¤J``root''¡A±z´N·|¶i¤J©R¥O¸ÑÄÀ¾¹¤F¡D¦ý¬O±z°µ¤£¤F«Ü¦h¨Æ±¡¡A¬Æ¦Ü¨S¦³
¤@­Ó{\ttfamily ls}©R¥Oµ¹±z¬Ý¬Ý±zªº§@«~¨½­±³£¦³¨Ç¤°¤\ªF¦è¡D½Ð³sÄò«ö¨â¦¸
TABÁä¡A±z´N·|¬Ý¨ì¥i¥Îªº©R¥O¤F¡D³o¤j·§¬O³o­Ó¨t²Î¤¤¡A§Ú©Òµo²{ªº³Ì¥O§Ú
º¡·Nªº¨Æ±¡¡D




\section{¥i¥Î©Ê°Óºe}

¬Ý°_¨Ó¦n¹³§Ú­Ì¥´³yªº¬O¤@­Ó²@µL¥Î³Bªº¨t²Î¡D»¡¯uªº¡A­nÅý¥¦¯à°÷¦³¹ê¥Î
»ù­È¤]¦}¤£¬O¤°¤\Ãø¨Æ¡D­º¥ý­n°µªº¨Æ±¡¤§¤@´N¬O±zÀ³¸Ó¨Ï±o®Ú¤å¥ó¨t²Î(root
filesystem)¥H¥iÅª¼g¤è¦¡¬E¸ü°_¨Ó¡DSysVinit³n¥ó¥]¨½­±¦³¤z³o¬¡¨àªº¸}¥»¡A
´N¦b{\ttfamily /etc/init.d/mountall.sh}¨½­±¡DÁÙ°õ¦æ¤F¤@¦¸{\ttfamily mount -a}
§â©Ò¦³¦b{\ttfamily /etc/fstab}·í¤¤ªº±ø¥Ø¥H±z©Ò«ü©wªº¤è¦¡¬E¸ü°_¨Ó¡D½Ð¦b
¥Ø¼Ð¨t²Îªº{\ttfamily etc/rc2.d}¥Ø¿ý¤U¥Í¦¨¤@­ÓÃþ¦ü{\ttfamily S05mountall}
ªº²Å¸¹³s±µ¡D



±z¥i¯à·|¬Ý¨ì³o­Ó¸}¥»·|¥Î¨ì±z©|¥¼¦w¸Ëªº©R¥O¡D¦pªG¯u¬O³o¼Ë¡A§ä¨ì¥]§t¸Ó
©R¥Oªº³n¥ó¥]¦}¦w¸Ë¤§¡D½Ð°Ñ¬Ý
\ref{finding} {(ÀH¾÷¤p§Þ¥©(Random Tips))}³o¤@¤p¸`¡A¤F¸Ñ¦p¦ó
¬d§ä³n¥ó¥]¡D



¬Ý¬Ý¦b{\ttfamily /etc/init.d}¨½­±ªº¨ä¥¦¸}¥»¡D¥¦­Ì¤j³¡¤À³£À³¸Ó¥]§t¦b¥ô¦ó
¥¿¸gªº¨t²Î¨½­±¡D¤@¦¸²K¥[¤@­Ó¡A§O§Ñ¤F­n½T©w²K¥[¤U¤@­Ó¤§«e­Ó­Ó³£¹B¦æ
µL»~¡D



½Ð¹ï·Ó¤å¥ó¼h¦¸µ²ºc¼Ð­ã(File Heirarchy Standard)¡A½Ð°Ñ¬Ý
\ref{FHS} {(¤å¥ó¨t²Î(Filesystem))}¤@¸`¡D
¨º¨½¦³¤@­Ó©R¥O¦Cªí¡A³£¬O¸Ó¦b{\ttfamily /bin}©M{\ttfamily /sbin}ªº©R¥O¡D½Ð
½T©w±z¤w¸g§â¨º¨½¦CÁ|ªº©Ò¦³©R¥O³£¦w¸Ë¦b¨t²Î¤W¤F¡D³Ì¦n´N¬O¦A§ä§ä¬ÛÃö
³oÃþ°ÝÃDªºPOSIX¤åÀÉ¨Ó¬Ý¬Ý¡D



±q¦¹¡A¦b³o­Ó¨t²Î¨½­±²K¥[§ó¦h¥²­nªº³n¥ó¥]´N¯u¬O­Ó¨Æ¨à¤F¡D¶V¬O¦­¨Ç§â½sÄ¶
¤u¨ã¡A¤ñ¦p»¡{\ttfamily gcc}©M{\ttfamily make}³o¨Ç²K¥[¶i¥h´N¶V¦n¡D¤@¥¹³o¨Ç³£
§¹¤u¤F¡A±z´N¥i¥H§Q¥Î¥Ø¼Ð¨t²Î¨Ó¦Û§Ú¥Í®§¡A´N·|¶V¨Ó¶VÂ²³æ¤F¡D




\section{§ó¦h«H®§}


\subsection{ÀH¾÷¤p§Þ¥©\label{finding}}

¦pªG±zªºLinux¨t²Î¤W´¿¸g¨Ï¥ÎRPM¦w¸Ë¹L¦³¤@­Ó¥s°µ{\ttfamily thingy}©R¥O¡A¦Ó±z
·QÀòª¾³o­Ó©R¥Oªº·½½X¨Ó·½¡A¨º¤\±z´N¨Ï¥Î¦p¤U©R¥O¡J

\begin{verbatim}
        rpm -qif `which thingy`
\end{verbatim}


¦pªG±z¦³¤p¬õ´URedHatªº·½½X¥ú½L¡A¨º¤\±z´N¥i¥H¨Ï¥Î¤U¦C©R¥O¦w¸Ë·½½X¥]¤F¡J

\begin{verbatim}
        rpm -i /mnt/cdrom/SRPMS/what.it.just.said-1.2.srpm
\end{verbatim}




³o­Ó©R¥O·|§âtar¥]¥H¤Î¥ô¦óRedHat¸É¤B¥]©ñ¨ì{\ttfamily /usr/src/redhat/SOURCES}
¥Ø¿ý¤U­±¡D




\subsection{¸ê·½Ãì±µ}

\begin{itemize}
\item  ¦³¤@­ÓÃö¤_±q·½¥N½X½sÄ¶³n¥óªº¤p«¬¹ê§@«ü«n(mini-howto)¡A´N¬O
\nameurl{http://www.linuxdoc.org/HOWTO/Software-Building.html}{³n¥ó¥´³y¤p¤p¹ê§@«ü«n(Software Building mini-HOWTO)}.
\item ¥t¥~ÁÙ¦³¤@­ÓÃö¤_±q¤@½a¤G¥ÕªÅ¤â°_®a¥´³y¤@­ÓLinux¨t²Îªº¹ê§@«ü«n¡D
¸Ó¤å§ó¬°¶°¤¤¤_¥´³y¤@­Ó¦³¹ê»ÚÀ³¥Î»ù­Èªº¨t²Î¡A¦Ó¤£¶È¶È¬O¤@­Ó¹ê²ß¡D
½Ð¬Ý¡J
\nameurl{http://www.linuxfromscratch.org}{Linux¨t²ÎªÅ¤â¹D¹ê§@«ü«n½g(The Linux From Scratch HOWTO)}¡D
\item   \label{FHS}
\nameurl{ftp://tsx-11.mit.edu/pub/linux/docs/linux-standards/fsstnd/}{Unix¤å¥ó¨t²Î¼Ð­ã(Unix File System Standard)} 
ÁÙ¦³¤@­ÓÃö¤_Unix¤å¥ó¨t²Î¼Ð­ãªº\nameurl{http://www.pathname.com/fhs/}{Ãì±µ}¡D³o­Ó¼Ð­ã´y­z¤F¦b¤@­ÓUnix¨t²Î¤¤¤°¤\ªFªF¸Ó§b¦b¤°¤\¦ì¸m
¥H¤Î­ì¦]¡D¥¦ÁÙ´y­z¤F¦b{\ttfamily /bin}¡A{\ttfamily /sbin}µ¥µ¥¥Ø¿ý¤¤³Ì¤p¤Æ
ªº­n¨D¡D¦pªG±zªº¥Ø¼Ð¬O­n¥´³y¤@­Ó¤p¦Ó¥þªº¨t²Î¡A¨º¤\³o­Ó¼Ð­ã¥¿¬O¤@­Ó
¦nªº°Ñ¦Ò¡D
\end{itemize}





\section{Administrivia}


\subsection{ª©ÅvÁn©ú(Copyright)}

¥»¤åª©Åv©Ò¦³¡AÂkÄÝGreg O'Keefe¡DÅwªï±z¦b¿í´`
\nameurl{http://www.gnu.org/copyleft/gpl.html}{GNU³q¥Î¤½¦@³\¥iµý(GNU General Public Licence)}ªº¦U¶µ±ø´Úªº
«e´£¤UµL»Ý¥I¶O¨Ó¨Ï¥Î¡A´_¨î¡A´²µo©ÎªÌ­×§ï¥»¤å¡D
¦pªG±z¦b¨ä¥¦¤åÀÉ¨½­±¨Ï¥Î¤F¥»¤åªº¥þ¤å©ÎªÌ³¡¤À¡A½Ð¦b»ïÁÂ¿ý´£´£§Ú´N¦æ¤F¡D

This document is copyright (c) 1999, 2000 Greg O'Keefe. You are welcome
to use, copy, distribute or modify it, without charge, under the terms of the 
\nameurl{http://www.gnu.org/copyleft/gpl.html}{GNU³q¥Î¤½¦@³\¥iµý(GNU General Public Licence)}.
Please acknowledge me if you use all or part of this in another document.




\subsection{¥D­¶}

¥»¤å³Ì·sªºª©¥»¥i¦b¦¹§ä¨ì¡J
\nameurl{http://learning.taslug.org.au/power2bash}{From Powerup To Bash Prompt} 

¥»¤åªº¤¤Ä¶ª©¥i¥H§ä
\nameurl{mailto:linuxrat@gnuchina.org}{Linuxrat}¯Á¨ú¡D






\subsection{±zªº¤ÏõX·N¨£}

§Ú«Ü¼Ö·N±qÅªªÌ±z¨º¨à±oª¾¥ô¦óµû½×¡A§ï¶i·N¨£©M«ØÄ³¡D½Ð¼g«Hµ¹§Ú¡J
\nameurl{mailto:gcokeefe@postoffice.utas.edu.au}{Greg O'Keefe}






\subsection{»ïÁÂ¿ý\label{acknowledge}}

¥»¤å©Ò´£¤Îªº²£«~¦WºÙ¬O¬ÛÀ³«ù¦³ªÌªº°Ó¼Ð¡A¦b¦¹§Ú¤@¦}­PÁÂ¡D



§Ú·Q¹ï¥H¤U¤H­û­PÁÂ¡A¦]¬°¥L­ÌªºÀ°§U¤~¦³¤F³o½g¹ê§@«ü«n¡D



\begin{description}
\item[Michael Emery] \mbox{}

¦]¨ä´£¿ô§Úª`·N¨ìUnios¡D

\item[Tim Little] \mbox{}

¦]¨ä´£¨Ñ¤FÃö¤_{\ttfamily /etc/passwd}ªº¤@¨Ç½u¯Á¡D

\item[sPaKr on \#linux in efnet] \mbox{}

¦]¨äµo²{syslogd»Ý­n{\ttfamily /etc/services}ªº¤ä«ù¥H¤Î¤¶²Ðµ¹§Ú
¨Ï¥Îµu»y``rolling your own''¨Óªí­z±q·½½X¥´³y¨t²Î¡D

\item[Alex Aitkin] \mbox{}

¦]¨ä¤Þ°_¤F§Ú¹ïVico¥H¤Î¥Lªº``verum ipsum factum''(¹ï½sÄ¶¶i¤@¨Bªº²z¸Ñ)
ªºª`·N¡D

\item[Dennis Scott] \mbox{}

¦]¨äªÈ¥¿¤F§Úªº¤Q¤»¶i¨î­pºâ¿ù»~¡D

\item[jdd] \mbox{}

¦]¨ä«ü¥X¤@¨Ç«÷¼g¿ù»~¡D

\end{description}





\subsection{­×­q¾ú¥v°O¿ý}


\subsubsection{0.8}

\begin{itemize}
\item  ³Ìªìª©¥»¡D¦Û"From PowerUp to Bash Prompt(±q¥[¹q±Ò°Ê¨ìBash´£¥Ü²Å)"¹ê§@
½g¤ÀÂ÷¿W¥ß¥X¨Ó¡D
\end{itemize}





\subsection{¥¼¨Ó­p¦E(TODO)}

\begin{itemize}
\item  Âà´«¬°docbook®æ¦¡¡D
\end{itemize}




\end{document}
