\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{The Linux BootPrompt-HowTo ÖÐÒë°æ}
\author{by Paul Gortmaker.}
\date{v1.14, 1 February 1998}
\abstract{  Õâ·ÝÎÄ¼þÊÇÆô¶¯ÌáÊ¾ËµÃ÷(BootPrompt-Howto)£¬  ËüÕûÀíÁËËùÓÐ¿ÉÒÔÔÚÆô¶¯Ê±ÆÚ´«¸ø Linux ºËÐÄµÄÆô¶¯Ê±ÆÚ²ÎÊý(arguments)¡£  °üº¬ËùÓÐºËÐÄÓëÉè±¸µÄ²ÎÊý¡£Ò²°üº¬¹Øì¶ºËÐÄÈçºÎÅÅÐò(sorts)
Æô¶¯Ê±ÆÚ²ÎÊýµÄÌÖÂÛ£¬  »¹ÓÐÒ»Ð©Æô¶¯ Linux ºËÐÄ³£ÓÃÈíÌå¸ÅÊö¡£}


\begin{document}
\maketitle
\tableofcontents

\section{¼ò½é\label{main-intro}}



ºËÐÄÓÐÄÜÁ¦ÔÚÆô¶¯Ê±ÒÔ`Ö¸ÁîÁÐ'·½Ê½½ÓÊÜÓÐÏÞµÄ²ÎÊý×ÊÑ¶£¬
ÀàËÆÖ´ÐÐ³ÌÊ½Ê±Ëù¸øÓèµÄÒ»Ð©²ÎÊý(argument list)¡£
Í¨³£ÕâÊÇÓÃÀ´Ìá¹©ºËÐÄÒ»Ð©ËüÃ»ÓÐ°ì·¨×Ô¼ºÈ·¶¨µÄÓ²Ìå²ÎÊý×ÊÑ¶£¬
»òÊÇ±ÜÃâ£¯±ä¸ü(override)ºËÐÄ×Ô¼ºÕì²âËù»ñµÃµÄÖµ¡£

È»¶ø£¬Èç¹ûÄãÖ±½Ó°ÑºËÐÄÓ³Ïñ(kernel image)¿½±´µ½ÈíµúÉÏ£¬
£¨ÀýÈç cp zImage /dev/fd0£©ÄÇ÷áÄã½«Ã»ÓÐ»ú»áÖ¸¶¨ÈÎºÎ²ÎÊý¸øºËÐÄ¡£
ËùÒÔ´ó²¿·ÝµÄ Linux Ê¹ÓÃÕß¶¼Ê¹ÓÃÏñÊÇ LILO »òÊÇ loadlin
Ò»ÀàÄÜ¹»°ÑÕâÐ©²ÎÊý´«¸øºËÐÄ£¬
È»ááÆô¶¯ËüµÄÈíÌå¡£

{\itshape Ä£×é(MODULE)Ê¹ÓÃÕßÇë×¢Òâ£º\/}
µäÐÍµÄÆô¶¯ÌáÊ¾²ÎÊýÖ»ÄÜÓÃì¶Ö±½Ó±àÒëµ½ºËÐÄÀïµÄÓ²ÌåÇý¶¯³ÌÊ½¡£
ËüÃÇ¶ÔÊ¹ÓÃÄ£×é·½Ê½ÔØÈëµÄÇý¶¯³ÌÊ½{\itshape Ã»ÓÐÓ°Ïì\/}¡£
´ó²¿·ÝµÄ·¢ÐÐÌ×¼þ(distributions) ¶¼Ê¹ÓÃÄ£×é¡£
Èç¹ûÄãÎÞ·¨È·¶¨£¬
¿ÉÒÔ¶ÔÕÕ {\ttfamily /etc/conf.modules} µÄÄÚÈÝ²éÔÄ {\ttfamily man depmod} ÒÔ¼°
{\ttfamily man modprobe}¡£

Ä¿Ç°Õâ°æËµÃ÷ÎÄ¼þº­¸Çµ½ v2.0.33 ÎªÖ¹µÄºËÐÄ¡£Í¬Ê±Ò²°üº¬²¿·Ýµ½ v2.1.84 ÎªÖ¹£¬
·¢Õ¹£¯²âÊÔ°æºËÐÄµÄÌØÐÔ¡£

Õâ·ÝÆô¶¯ÌáÊ¾ËµÃ÷µÄ×÷ÕßÊÇ£º

\begin{quotation}
Paul Gortmaker, {\ttfamily gpg109@rsphy1.anu.edu.au}
\end{quotation}


£ÛÇë×¢Òâ£¬ÌØ±ð¸ø·Ç i386 »úÆ÷»òÉè±¸£¨ÓÈÆäÊÇ Atari/Amiga£©ÓÃµÄ
Æô¶¯ÌáÊ¾²ÎÊýÄ¿Ç°²¢Ã»ÓÐÐ´½øÀ´¡££Ý




\subsection{ÐûÑÔÓë°æÈ¨\label{copyright}}



Õâ·ÝÎÄ¼þ{\itshape ²¢·Ç\/}¾ø¶ÔÕýÈ·µÄÕæÀí¡£È»¶øËü´ó¸ÅÊÇÄãËùÄÜÕÒµ½×îÐÂµÄ×ÊÑ¶¡£
Ã»ÓÐÈË±ØÐë¶ÔÄãÓ²ÌåËù·¢ÉúµÄÊÂ¸ºÔð£¬³ýÁËÄã×Ô¼ºÒÔÍâ¡£
Èç¹ûÄãµÄÓ²ÌåÃ°ÑÌÉÕµôÁË£¨£®£®£®Õâ¼¸ºõ²»¿ÉÄÜ£¡£©ÎÒÒ²Ã»ÓÐÔðÈÎ¡£
Ò²¾ÍÊÇËµ¸ù¾ÝÕâ·ÝÎÄ¼þÖÐËùÌá¹©µÄ×ÊÑ¶È¥ÊµÐÐ¶øÔì³ÉµÄÈÎºÎËðº¦×÷Õß¸Å²»¸ºÔð¡£

Õâ·ÝÎÄ¼þµÄ°æÈ¨ Copyright (C) 1995-1998 Êôì¶ Paul Gortmaker¡£

Õâ·ÝÎÄ¼þ¿ÉÒÀµÚ¶þ°æ GNU Í¨ÓÃ¹«¿ªÊÚÈ¨(General Public License)µÄÌõ¼þ£¬
°üÀ¨´ËÉùÃ÷£¬½øÐÐ¿½±´¡£
Ï¸½ÚÇë²ÎÔÄËæ¸½ì¶ Linux ºËÐÄµÄ {\ttfamily linux/COPYING} µµ°¸¡£

Èç¹ûÄãÏë°ÑÕâ·ÝÎÄ¼þ¼¯½á³ö°æ£¬ÇëÓëÎÒÁªÂç£¬ÎÒ»áÈ·ÈÏÄãÈ¡µÃµÄÊÇ·ñÎª×îÐÂµÄ×ÊÑ¶¡£
¹ýÈ¥Ôø¾­ÓÐ¹ýÊ±µÄ Linux ËµÃ÷ÎÄ¼þ°æ±¾³ö°æ£¬
Ôì³É·¢Õ¹ÕßÎªÁËÔÚÐÂ°æÎÄ¼þÖÐÒÑÓÐ´ð°¸µÄÎÊÌâÏëÆÆÍ·¿Ç¡£

This document is {\itshape not\/} gospel. However, it is probably the most
up to date info that you will be able to find. Nobody is responsible
for what happens to your hardware but yourself. If your
hardware goes up in smoke (...nearly impossible!)
I take no responsibility. ie. THE AUTHOR IS NOT RESPONSIBLE
FOR ANY DAMAGES INCURRED DUE TO ACTIONS TAKEN BASED ON THE
INFORMATION INCLUDED IN THIS DOCUMENT.

This document is Copyright (C) 1995-1998 by Paul Gortmaker.

This document may be copied according to the conditions
of the GNU General Public License, version 2, included herein
by reference. See the file {\ttfamily linux/COPYING} that comes
with the Linux kernel for full details.

If you are intending to incorporate this document into a
published work, please contact me, and I will make an effort
to ensure that you have the most up to date information
available. In the past, out of date versions of the Linux
howto documents have been published, which caused the developers
undue grief from being plagued with questions that were already
answered in the up to date versions.




\subsection{Ïà¹ØÎÄ¼þ}



×îÐÂ°æµÄÎÄ¼þÓÀÔ¶ÊÇºËÐÄµÄÔ­Ê¼³ÌÊ½Âë±¾Éí¡£µÈÒ»ÏÂ£¡ÏÈ²»Òªº¦ÅÂ¡£
ÔÄ¶ÁÔ­Ê¼µµÀïµÄ×¢½â²»ÐèÒª¶®ÈÎºÎ³ÌÊ½Éè¼Æ¡£
ÀýÈç£¬Èç¹ûÄãÒªÕÒ¿ÉÒÔ´«¸ø AHA1542 SCSI Çý¶¯³ÌÊ½µÄ²ÎÊý£¬
ÄÇ¾Íµ½ {\ttfamily linux/drivers/scsi} Ä¿Â¼ÏÂÈ¥¿´ {\ttfamily aha1542.c} Õâ¸öµµ£¬
ÔÚÇ°Ãæ 100 ÐÐÀï¾Í¿ÉÒÔÕÒµ½Ò»¶ÎÔ­ÎÄËµÃ÷´Ë 1542
Çý¶¯³ÌÊ½Ëù½ÓÊÜµÄÆô¶¯Ê±ÆÚ²ÎÊý¡£

ÏÂ¸ö¾ø¼ÑµÄ²Î¿¼ÊÇºËÐÄ±¾ÉíËæ¸½µÄÈÎºÎÎÄ¼þµµ¡£Ä¿Ç°²¢²»¶à£¬
´ó²¿·Ý¿ÉÒÔÔÚ {\ttfamily linux/Documentation} Ä¿Â¼¼°ÆäÏÂµÄ×ÓÄ¿Â¼ÖÐÕÒµ½¡£
{\ttfamily linux} Ä¿Â¼Í¨³£¿ÉÒÔÔÚ {\ttfamily /usr/src/} ÏÂÕÒµ½¡£
ÓÐÊ±ºòÒ²¿ÉÒÔÔÚÏà¹ØÇý¶¯³ÌÊ½Ä¿Â¼ÀïÕÒµ½ {\ttfamily README.foo} µµ°¸
£¨ÀýÈç {\ttfamily linux/drivers/XXX/} £¬ÆäÖÐµÄ {\ttfamily XXX} ¿ÉÄÜÊÇ
{\ttfamily scsi}, {\ttfamily char}, or {\ttfamily net}£©¡£

Èç¹ûÄãÒÑ¾­ÕÒµ½ÏëÒªÊ¹ÓÃµÄÆô¶¯²ÎÊý£¬¶øÏÖÔÚÏëÖªµÀÈçºÎ°ÑÕâÐ©×ÊÑ¶´«¸øºËÐÄµÄ»°£¬
ÄÇ¾Í¿´¿´ÄãÓÃÀ´Æô¶¯ºËÐÄµÄÈíÌå£¨ÀýÈç LILO »òÕßÊÇ loadlin £©ËùËæ¸½µÄÎÄ¼þ¡£
ÏÂÃæÓÐ¼ò¶ÌµÄ¸ÅÊö£¬µ«²»ÄÜÌæ´úÆô¶¯ÈíÌåËùËæ¸½µÄÎÄ¼þ¡£




\subsection{Linux ÐÂÎÅÈº×é\label{news}}



Èç¹ûÄãÓÐ¹Øì¶´«µÝ²ÎÊý¸øºËÐÄÕâ·½ÃæµÄÎÊÌâ£¬ÇëÏÈ¶ÁÒ»¶ÁÕâ·ÝÎÄ¼þ¡£
Èç¹ûËüÒÔ¼°Ç°ÃæËùÌáµ½µÄÏà¹ØÎÄ¼þ¶¼Ã»ÄÜ»Ø´ðÄãµÄÎÊÌâ£¬ÄÇ÷áÄã¿ÉÒÔÊÔÊÔ Linux
ÐÂÎÅÈº×é¡£
µ±È»£¬ÔÚÇáÂÊµÄÌù³öÄãµÄÎÊÌâÇ°Ó¦¸ÃÏÈÔÄ¶Á¸ÃÐÂÎÅÈº×é£¬
ÒòÎª¿ÉÄÜÒÑ¾­ÓÐÈËÎÊ¹ýÕâ¸öÎÊÌâ£¬»òÕßÕâ¿ÉÄÜÒÑ¾­ÊÇ¸ö³£¼ûÎÊÌâ(a FAQ)¡£
ÕÅÌùÖ®Ç°ÏÈ¿ìËÙä¯ÀÀ linux ³£¼ûÎÊÌâ»áÊÇ¸ö{\itshape ºÃ\/}Ï°¹ß¡£
ÄãÓ¦¸ÃÄÜ¹»ÔÚÁÚ½üÕâ·ÝÎÄ¼þµÄÄ³´¦ÕÒµ½³£¼ûÎÊÌâ¼¯¡£

¹Øì¶ÈçºÎÅäÖÃÏµÍ³µÄÒ»°ãÐÔÎÊÌâÓ¦¸ÃÖ±½ÓÌùµ½ comp.os.linux.setup ÐÂÎÅÈº×é¡£
{\itshape Çë\/}Äã×ðÖØÕâ¸öÓÐ¹ØÕÅÌùÄÚÈÝµÄÒ»°ã¹ßÀý£¬²¢ÇÒ£¬
²»Òª°ÑÄãµÄÐèÇó½»²æÕÅÌù(cross-post)µ½ÆäËüÈº×éÈ¥¡£




\subsection{ÐÂ°æÎÄ¼þ\label{new-doc}}



ÐÂ°æÎÄ¼þ¿ÉÓÉÄäÃûµµ°¸´«Êä·þÎñ(anonymous FTP)´Ó sunsite.unc.edu Õâ¸öÕ¾È¡µÃ£¬
ÔÚ {\ttfamily /pub/Linux/docs/HOWTO/} Ä¿Â¼Àï¡£
×¢Òâ£¬{\itshape SunSITE\/} µÄ¸ºÔØ¾­³£ºÜ´ó£¬
ËùÒÔ½¨ÒéÄã×îºÃÕÒ¸ö Linux µµ°¸´«ÊäÓ³Éä(mirror)½ÚµãÈ¡µÃ´ËÎÄ¼þ¡£
ÓÐÐÂµÄ×ÊÑ¶ÒÔ¼°£¯»òÊÇÇý¶¯³ÌÊ½Ê±¾Í»á²¹³ä×ÊÁÏ¡£
Èç¹ûÄãÏÖÔÚ¶ÁµÄÕâ·Ý¿½±´ÒÑ¾­ÓÐ¼¸¸öÔÂÖ®¾Ã£¬Äã¿ÉÄÜµÃÈ·ÈÏÒ»ÏÂÊÇ·ñÓÐÐÂµÄ¡£

Õâ·ÝÎÄ¼þÏµÊ¹ÓÃÒ»Ì×ÌØ±ðÎª Linux ËµÃ÷ÎÄ¼þ¼Æ»­ÐÞ¸ÄµÄ SGML ÏµÍ³Ëù²úÉúµÄ£¬
ÓÐ¸÷ÖÖ²»Í¬µÄÊä³ö¸ñÊ½£¬°üÀ¨ postscript, dvi, ascii, html,
ÒÔ¼°½«Òª³öÏÖµÄ Texinfo¡£
ÎÒ½¨ÒéÒÔ html£¨¾­ÓÉÈ«Çò×ÊÑ¶Íøä¯ÀÀÆ÷£©»ò Postscript/dvi ¸ñÊ½ÔÄ¶Á¡£
ÕâÁ½Õß¶¼°üº¬ ascii ×ª»»¹ý³ÌÖÐÊ§È¥µÄ½»»¥²Î¿¼(cross-references)¡£

Èç¹ûÄãÏë´Ó sunsite È¡µÃÕýÊ½µÄ¿½±´£¬Î»Ö·(URL)ÔÚ´Ë¡£
\nameurl{http://sunsite.unc.edu/mdw/HOWTO/BootPrompt-HOWTO.html}{BootPrompt-HOWTO}




\section{Æô¶¯ÌáÊ¾²ÎÊý¸Å¹Û\label{oview}}



ÕâÒ»½Ú½éÉÜÒ»Ð©¿ÉÒÔÓÃÀ´´«µÝÆô¶¯Ê±ÆÚ²ÎÊý¸øºËÐÄ±¾ÉíµÄÈíÌå¡õÀý¡£
Ò²¸øÄãÓÐ¹ØÕâÐ©²ÎÊýÏµÈçºÎ±»´¦Àí£¬Æô¶¯²ÎÊýÓÐÊ²÷áÑùµÄÏÞÖÆ£¬
ÒÔ¼°ËüÃÇÈçºÎ±»×ªËÍµ½¸÷¸öÊÊµ±Éè±¸µÄ¹ÛÄî¡£

ÓÐÒ»µã{\itshape ºÜÖØÒª\/}µÃ×¢ÒâµÄÊÇÔÚÆô¶¯²ÎÊýÖÐ{\itshape ²»\/}Ó¦¸ÃÊ¹ÓÃ¿Õ°×£¬
Ö»ÓÐÔÚ¸÷±ðµÄ²ÎÊýÖ®¼ä¿ÉÒÔ¡£
µ¥Ò»²ÎÊýÆäÖµµÄÁÐ±í(A list of values)ÊÇÔÚ¸÷ÖµÖ®¼äÒÔ¶ººÅ¸ñ¿ªµÄ£¬ÔÙÒ»´Î£¬
Ã»ÓÐÈÎºÎ¿Õ°×¡£²Î¼ûÏÂÃæµÄ¡õÀý¡£

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        ether=9,0x300,0xd0000,0xd4000,eth0  root=/dev/hda1
*RIGHT*
        ether = 9, 0x300, 0xd0000, 0xd4000, eth0  root = /dev/hda1
*WRONG*
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}





\subsection{LILO (LInux LOader)\label{lilo}}



×î³£ÓÃµÄÊÇ Werner Almesberger ËùÐ´µÄ LILO(LInux LOader) ³ÌÊ½¡£
ËüÓÐÄÜÁ¦Æô¶¯²»Í¬µÄºËÐÄ£¬¶øÇÒÅäÖÃ×ÊÑ¶´æ·ÅÔÚÒ»¸ö´¿ÎÄ×ÖµµÀï¡£
´ó²¿·ÝµÄ·¢ÐÐÌ×¼þ¶¼¸½ÓÐ LILO ×÷ÎªÔ¤ÉèµÄÆô¶¯ÔØÈë³ÌÊ½(boot-loader)¡£
LILO ¿ÉÒÔÒ»ÊÓÍ¬ÈÊµØÆô¶¯ DOS, OS/2, Linux, FreeBSD µÈµÈ£¬¶øÇÒÏàµ±ÓÐµ¯ÐÔ¡£

ÔÚÄã¿ª»úÖ®áá£¬µäÐÍµÄÅäÖÃ»áÈÃ LILO Í£×¡²¢Ó¡³ö {\ttfamily LILO:}¡£
È»ááµÈ¸ö¼¸Ãë¿´¿´Ê¹ÓÃÕßÓÐÃ»ÓÐÊäÈëÈÎºÎÑ¡Ïî£¬Ã»ÓÐµÄ»°¾ÍÆô¶¯Ô¤ÉèµÄÏµÍ³¡£
ÔÚ LILO ÅäÖÃµµÀïµäÐÍµÄÏµÍ³±êÇ©ÊÇ {\ttfamily linux} ÒÔ¼° {\ttfamily backup} ºÍ
{\ttfamily msdos}¡£
Èç¹ûÄãÏëÒªÊäÈëÆô¶¯²ÎÊý£¬¿ÉÒÔ´òÔÚÕâ£¬ÔÚÊäÈëÄãÒª LILO Æô¶¯µÄÏµÍ³Ö®±êÇ©ááÃæ£¬
ÏñÏÂÃæÕâ¸ö¡õÀýËùÏÔÊ¾µÄ¡£

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        LILO: linux root=/dev/hda1
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


LILO Ëæ¸½ÓÐ¾ø¼ÑµÄÎÄ¼þ£¬¶øÇÒÎªÁËÕâÀïËùÌÖÂÛµÄÆô¶¯²ÎÊýÖ®Ê¹ÓÃ£¬
µ±ÄãÏëÒª°ÑÆô¶¯Ê±ÆÚ²ÎÊý¼Óµ½ LILO ÅäÖÃµµÀïÓÀ¾ÃÊ¹ÓÃÊ± LILO µÄ
{\ttfamily append=} Ö¸Áî¾Í·Ç³£ÖØÒª¡£
Ö»Òª¼òµ¥µØÔÚ {\ttfamily /etc/lilo.conf} µµÖÐ¼ÓÈëÏñ
{\ttfamily append = "foo=bar"} ÕâÑùµÄ¶«¶«¼´¿É¡£
¿ÉÒÔ¼ÓÔÚ¸ÃµµµÄ×îÇ°Ãæ£¬Ê¹Ëü¶ÔÃ¿Ò»½ÚÇø(section)¶¼ÉúÐ§£¬
»òÊÇ¼ÓÔÚÄ³ {\ttfamily image=} ½ÚÇøÀïÊ¹Ëü¶Ô¸Ã½ÚÇøÉúÐ§¡£
Çë²ÎÔÄ LILO ÎÄ¼þÀï¸üÍêÕûµÄËµÃ÷¡£




\subsection{LoadLin\label{loadlin}}



ÁíÒ»¸ö³£ÓÃµÄ Linux ÔØÈë³ÌÊ½ `LoadLin' ÔòÊÇÒ»Ö§ÓÐÄÜÁ¦´Ó
DOS ÌáÊ¾·ûºÅ(prompt)ÏÂÆô¶¯ Linux ºËÐÄ£¨¿ÉÒÔ¸øÓèÆô¶¯²ÎÊý£©µÄ DOS ³ÌÊ½£¬
¼ÙÈçÄ³Ð©ÏµÍ³×ÊÔ´¿ÉÓÃµÄ»°¾ÍÐÐ¡£
Õâ¶ÔÊ¹ÓÃ DOS ²¢Ïë´Ó DOS ÏÂÆô¶¯½øÈë Linux µÄÈË¶øÑÔºÜºÃÓÃ¡£

Èç¹ûÄãÓµÓÐÒ»Ð©ÐèÒªÊ¹ÓÃÆäËùÌá¹©µÄ DOS Çý¶¯³ÌÊ½À´³õÊ¹»¯ÒÔ½øÈë¿ÉÓÃ×´Ì¬
(known state)µÄÓ²ÌåÄÇ÷áËüÒ²ºÜÓÐÓÃ¡£
Ò»¸ö³£¼ûµÄÀý×ÓÊÇÐèÒªÊ¹ÓÃ DOS Çý¶¯³ÌÊ½Éè¶¨(twiddle)
¼¸¸öÉñÃØµÄÔÝ´æÆ÷Ê¹Ëü½øÈëÉù°Ô¿¨ÏàÈÝÄ£Ê½µÄ¡±Éù°Ô¿¨ÏàÈÝ¡±ÒôÐ§¿¨¡£
Æô¶¯ DOS ÓëËù¸½µÄÇý¶¯³ÌÊ½£¬
È»áá´Ó DOS ÌáÊ¾·ûºÅÏÂÊ¹ÓÃ {\ttfamily LOADLIN.EXE} ÔØÈë Linux
ÒÔ±ÜÃâÖØÐÂÆô¶¯(reboot)»áÖØÖÃ(reset)¸Ã¿¨¡£
Èç´Ë¸Ã¿¨Î¬³ÖÔÚÉù°Ô¿¨ÏàÈÝÄ£Ê½Ò²¾ÍÄÜÔÚ Linux ÏÂÊ¹ÓÃ¡£

»¹ÓÐÒ»Ð©ÆäËü³ÌÊ½¿ÉÒÔÓÃÀ´Æô¶¯ Linux¡£
ÍêÕûµÄÁÐ±íÇëÕÒÕÒÔÚÄãµ±µØ Linux µµ°¸´«ÊäÓ³Éè½ÚµãÀïµÄ³ÌÊ½£¬
ÔÚ {\ttfamily system/Linux-boot/} ÏÂ¡£




\subsection{``rdev'' ¹«ÓÃ³ÌÊ½\label{rdev}}



ºËÐÄ±¾ÉíÀïÃæµÄÊý¸öÎ»Ôª×é´æÓÐÉÙÊý¼¸¸öºËÐÄÆô¶¯²ÎÊýµÄÔ¤ÉèÖµ¡£
ÔÚ´ó²¿·ÝµÄÏµÍ³Àï°²×°ÓÐÒ»Ö§³ÆÎª {\ttfamily rdev} µÄ¹«ÓÃ³ÌÊ½ÖªµÀÕâÐ©ÖµÔÚÄÇÀï£¬
ÒÔ¼°ÈçºÎ¸Ä±äËüÃÇ¡£
ËüÒ²ÄÜ¸Ä±äÁíÍâÒ»Ð©Ã»ÓÐÏà¶ÔÖ®ºËÐÄÆô¶¯²ÎÊýµÄ¶«Î÷£¬
ÏñÊÇÔ¤ÉèµÄÏÔÊ¾Ä£Ê½(video mode)¡£

´Ë rdev ¹«ÓÃ³ÌÊ½Í¨³£Ò²Áí³Æ(aliased to) swapdev, ramsize, vidmode ÒÔ¼°
rootflags¡£ËüÄÜ¹»¸Ä±äÎåÖÖ¶«Î÷£¬·Ö±ðÊÇ¸ùÄ¿Â¼Éè±¸(root device)£¬
ÖÃ»»Éè±¸(swap device)£¬¼ÇÒäÌå´Åµú(RAM disk)Ö®²ÎÊý£¬Ô¤ÉèµÄÏÔÊ¾Ä£Ê½£¬
¼°¸ùÄ¿Â¼Éè±¸µÄ´æÈ¡Éè¶¨(readonly/readwrite)¡£

¸ü¶àÓÐ¹Ø {\ttfamily rdev} µÄ×ÊÑ¶¿ÉÒÔ½åÓÉÊäÈë {\ttfamily rdev -h} »òÊÇ²ÎÔÄÆäÏßÉÏËµÃ÷Ò³
({\ttfamily man rdev})»ñµÃ¡£




\subsection{ºËÐÄÈçºÎÅÅÁÐ²ÎÊý}



´ó²¿·ÝµÄÆô¶¯²ÎÊý¸ñÊ½Îª£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        name[=value_1][,value_2]...[,value_11]
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


ÆäÖÐ `name' ÊÇÒ»¸öÓÃÀ´Î¨Ò»Ê¶±ð(unique)Ïà¹ØµÄÖµ£¨Èç¹ûÓÐµÄ»°£©
ÊÇÒª¸øºËÐÄµÄÄÇ¸ö²¿·ÝµÄ¹Ø¼ü×Ö¡£
¶à¸öÆô¶¯²ÎÊýÖ»ÊÇÉÏÊö¸ñÊ½ÒÔ¿Õ°×·Ö¸ôµÄÁÐ±í¡£
×¢ÒâÄÇ¸ö 11 ÊÇÕæÊµµÄÏÞÖÆ£¬
ÒòÎªÏÖÐÐµÄ³ÌÊ½Âë¶ÔÃ¿¸ö¹Ø¼ü×ÖÖ»´¦Àí 11 ¸öÒÔ¶ººÅ·Ö¸ôµÄ²ÎÊý¡£
£¨È»¶ø£¬ÔÚ·Ç±ÈÑ°³£¸´ÔÓµÄÇé¿öÏÂÄã¿ÉÒÔÖØ¸²Ê¹ÓÃÏàÍ¬µÄ¹Ø¼ü×Ö¼ÓÈë 11
¸öÒÔÉÏµÄ²ÎÊý£¬
¼ÙÈçÉè¶¨º¯Ê½Ö§Ô®ÕâÑù¸ãµÄ»°¡££©
Í¬Ê±Ò²Òª×¢Òâ£¬ºËÐÄ°ÑÁÐ±í·Ö³É(splits)×î¶à 10 ¸öµÄÕûÊý²ÎÊý£¬
ááÃæ²¢¸úÖøÒ»¸ö×Ö´®£¬ËùÒÔÄã²»ÄÜÕæµÄ¸øËü 11 ¸öÕûÊý£¬
³ý·ÇÄã×ÔÐÐÔÚÇý¶¯³ÌÊ½ÖÐ½«µÚ 11 ¸ö²ÎÊýÓÉ×Ö´®×ª»»³ÉÕûÊý¡£

´ó²¿·ÝÅÅÐòµÄ¶¯×÷ÊÇÔÚ {\ttfamily linux/init/main.c} ÀïÃæ¡£
Ê×ÏÈ£¬ºËÐÄ²é¿´²ÎÊýÊÇ·ñÎª `root=', `Ro', `Rw', or `Debug' ÕâÐ©ÌØ±ðµÄ²ÎÊý¡£
ÕâÐ©ÌØ±ð²ÎÊýµÄÒâÒå±¾ÎÄÖÐ»á½øÒ»²½ËµÃ÷¡£

È»ááËü×ß¹ý(walks)Ò»ÏµÁÐµÄÉè¶¨º¯Ê½£¨·ÅÔÚ {\ttfamily bootsetups} ÕóÁÐÀï£©
¿´¿´ËùÖ¸¶¨µÄ²ÎÊý×Ö´®£¨ÏñÊÇ
`foo'£©ÊÇ²»ÊÇÓëÆäÖÐµÄÒ»¸öÉè¶¨º¯Ê½£¨{\ttfamily foo\_setup()}£©Ïà¹Ø£¬
ÒÔÉè¶¨ÌØ¶¨Éè±¸»òºËÐÄµÄÒ»²¿·Ý¡£
Èç¹ûÄã´«¸øºËÐÄ {\ttfamily foo=3,4,5,6,bar} ÕâÑùÒ»ÐÐÄÇ÷áºËÐÄ»áËÑÑ°
{\ttfamily bootsetups} ÕóÁÐ¿´¿´ `foo' ÊÇ·ñÓÐ×¢²á¡£
Èç¹ûÓÐ£¬ÄÇ÷áËü»áºô½ÐÓë `foo' Ïà¹ØÁªµÄÉè¶¨º¯Ê½£¨{\ttfamily foo\_setup()}£©
²¢½»¸øËüÔÚºËÐÄÖ¸ÁîÁÐËù¸øµÄÕûÊý²ÎÊý 3, 4, 5, and 6£¬²¢½»¸øËü×Ö´®²ÎÊý
{\ttfamily bar}¡£




\subsection{Éè¶¨»·¾³±äÊý}



ÈÎºÎ²»±»½ÓÊÜµ±×÷ÉÏÊöÉè¶¨º¯Ê½µÄ `foo=bar'
ÐÍÊ½Ö®ÐðÊö»á±»½âÒëÎªÒªÉè¶¨µÄ»·¾³±äÊý¡£
Ò»¸ö£¨Ã»ÓÃµÄ£¿£©¡õÀýÊÇÒÔ `TERM=vt100' ×÷ÎªÆô¶¯²ÎÊý¡£




\subsection{´«µÝ²ÎÊý¸ø `init' ³ÌÊ½}



ÈÎºÎÊ£ÏÂµÄ£¬
ºËÐÄ²»¹Ü¶øÇÒ²»±»½âÒë³É»·¾³±äÊýÖ®²ÎÊý½ÓÏÂÀ´»á´«¸øµÚÒ»¸ö³ÌÐò(process)£¬
Í¨³£ÊÇ {\ttfamily init} ³ÌÊ½¡£
×î³£´«¸ø init ³ÌÐòµÄ²ÎÊýÊÇ {\itshape single\/} Õâ¸ö×Ö£¬
Ö¸Ê¾ {\ttfamily init} °ÑµçÄÔÆô¶¯ÔÚµ¥ÈËÄ£Ê½(single user mode)
²¢ÇÒ²»Æô¶¯ËùÓÐÒ»°ãµÄ×¤Áô³ÌÊ½(daemons) ¡£
²éÔÄÄãÏµÍ³Àï°²×°µÄ {\ttfamily init} °æ±¾Ö®ÏßÉÏÊÖ²á¿´¿´Ëü½ÓÊÜÄÇÐ©²ÎÊý¡£




\section{Ò»°ãÎÞ¹ØÉè±¸ÌØÐÔµÄÆô¶¯²ÎÊý\label{general}}



ÓÐÐ©Æô¶¯²ÎÊý²¢·ÇÓëÈÎºÎÉè±¸»òÖÜ±ßÏà¹Ø¡£
ËüÃÇÄËÊÇÓëÄ³¸öºËÐÄÄÚ²¿²ÎÊýÏà¹Ø£¬ÏñÊÇ¼ÇÒäÌåµÄ´¦Àí£¬¼ÇÒäÌå´ÅµúµÄ´¦Àí£¬
¸ùµµ°¸ÏµÍ³µÄ´¦ÀíÒÔ¼°ÆäËü¶«¶«¡£




\subsection{¸ùµµ°¸ÏµÍ³Ñ¡Ïî}



ÏÂÁÐÑ¡Ïî½ÔÓëºËÐÄÈçºÎÑ¡Ôñ¼°´¦Àí¸ùµµ°¸ÏµÍ³ÓÐ¹Ø¡£




\subsubsection{`root=' ²ÎÊý}



´Ë²ÎÊý¸æËßºËÐÄÆô¶¯Ê±ÒÔÄÇ¸öÉè±¸×÷Îª¸ùµµ°¸ÏµÍ³Ê¹ÓÃ¡£
´ËÉè¶¨µÄÔ¤ÉèÖµÎª½¨Ôì(bulid)ºËÐÄÊ±ÏµÍ³µÄ¸ùµµ°¸ÏµÍ³Éè±¸¡£
ÀýÈç£¬Èç¹ûºËÐÄÊÇÔÚÒ»¸öÒÔ `/dev/hda1' ×÷Îª¸ùµµ°¸ÏµÍ³·Ö¸îÇøµÄÏµÍ³ÉÏ½¨ÔìµÄ£¬
ÄÇ÷áÔ¤ÉèµÄ¸ùµµ°¸ÏµÍ³Éè±¸¾ÍÊÇ `dev/hda1'¡£
Òª±ä¸ü´ËÔ¤ÉèÖµ£¬²¢Ñ¡ÔñµÚ¶þÌ¨Èíµú»ú×÷Îª¸ùµµ°¸ÏµÍ³Éè±¸µÄ»°£¬
¿ÉÒÔÊ¹ÓÃ `root=/dev/fd1'¡£

¿ÉÓÃµÄ¸ùµµ°¸ÏµÍ³Éè±¸ÎªÏÂÁÐÉè±¸ÆäÖÐÖ®Ò»£º

(1) /dev/hdaN to /dev/hddN,
ÕâÊÇ ST-506 ÏàÈÝ´Åµú `a to d' ÉÏµÄµÚ N ¸ö·Ö¸îÇø¡£

(2) /dev/sdaN to /dev/sdeN,
ÕâÊÇ SCSI ÏàÈÝ´Åµú `a to e' ÉÏµÄµÚ N ¸ö·Ö¸îÇø¡£

(3) /dev/sdaN to /dev/xdbN,
ÕâÊÇ XT ÏàÈÝ´Åµú `a to b' ÉÏµÄµÚ N ¸ö·Ö¸îÇø¡£

(4) /dev/fdN,
ÕâÊÇÈíµú»úºÅÂë N¡£
N=0 Îª DOS ÏÂµÄ `A:' ´Åµú»ú£¬¶ø N=1 ÔòÎª `B:'¡£

(5) /dev/nfs,
Õâ²¢·ÇÕæµÄÊÇ¸öÉè±¸£¬
¶øÊÇÒ»¸ö¸æËßºËÐÄ¾­ÓÉÍøÂ·È¡µÃ¸ùµµ°¸ÏµÍ³µÄÆì±ê¡£

ÉÏÊö´ÅµúÉè±¸µÄÁíÒ»ÖÖÊý×Ö¸ñÊ½£¬
¸üÎª±¿×¾ÇÒ¸üÃ»ÓÐ¿ÉÐ¯ÐÔµÄÖ÷Òª£¯´ÎÒª(major/minor) ºÅÂëÒ²ÄÜ½ÓÊÜ¡£
£¨ÀýÈç /dev/sda3 µÄÖ÷ÒªºÅÂëÎª 8£¬´ÎÒªºÅÂëÎª 3£¬
ËùÒÔÄã¿ÉÒÔÊ¹ÓÃ {\ttfamily root=0x803} ×÷ÎªÁíÒ»ÖÖÖ¸¶¨·½Ê½¡££©

ÕâÊÇÉÙÊý¼¸¸öÔÚºËÐÄÖÐ´æÓÐÔ¤ÉèÖµ£¬
ËùÒÔ¿ÉÒÔÓÃ {\ttfamily rdev} ¹«ÓÃ³ÌÊ½¸Ä±äµÄºËÐÄÆô¶¯²ÎÊý¡£




\subsubsection{`ro' ²ÎÊý}



µ±ºËÐÄÆô¶¯Ê±ËüÐèÒªÓÐ¸ö¸ùµµ°¸ÏµÍ³ÒÔ¶ÁÈ¡Ò»Ð©»ù±¾µÄ¶«Î÷¡£
Õâ¾ÍÊÇ¹ÒÔÚ¸ùÄ¿Â¼µÄ¸ùµµ°¸ÏµÍ³¡£
È»¶ø£¬Èç¹û¸ùµµ°¸ÏµÍ³ÒÔ¿ÉÒÔÐ´ÈëµÄ·½Ê½¹ÒÉÏÀ´µÄ»°£¬
Äã¾ÍÎÞ·¨ÔÚÓÐµµ°¸Ð´µ½Ò»°ëµÄÇé¿öÏÂÈ·ÊµµØ¼ì²éµµ°¸ÏµÍ³µÄÍêÕûÐÔ¡£
´Ë `ro' Ñ¡Ïî¸æËßºËÐÄÒÔÎ¨¶ÁµÄ·½Ê½¹ÒÈë¸ùµµ°¸ÏµÍ³£¬
Èç´ËÈÎºÎµµ°¸ÏµÍ³Ò»ÖÂÐÔ¼ì²é³ÌÊ½(fsck)
ÔÚÖ´ÐÐ¼ì²éÊ±¶¼¿ÉÒÔ°²È«µØ¼ÙÉèÃ»ÓÐµµ°¸Ð´µ½Ò»°ëµÄÇé¿ö¡£
Ã»ÓÐÈÎºÎ³ÌÊ½»ò³ÌÐò¿ÉÒÔÐ´Èë´Ëµµ°¸ÏµÍ³Ö±µ½ËüÖØÐÂÒÔ¿É¶ÁÐ´µÄ·½Ê½¹ÒÈëÎªÖ¹¡£

ÕâÊÇÉÙÊý¼¸¸öÔÚºËÐÄÖÐ´æÓÐÔ¤ÉèÖµ£¬
ËùÒÔ¿ÉÒÔÓÃ {\ttfamily rdev} ¹«ÓÃ³ÌÊ½¸Ä±äµÄºËÐÄÆô¶¯²ÎÊý¡£




\subsubsection{`rw' ²ÎÊý}



ÕâÓëÉÏÒ»¸öÍêÈ«Ïà·´£¬Ëü¸æËßºËÐÄÒÔ¿É¶ÁÈ¡£¯Ð´ÈëµÄ·½Ê½¹ÒÈë¸ùµµ°¸ÏµÍ³¡£
ÎÞÂÛÈçºÎ£¬Ô¤ÉèÊÇÒÔ¿É¶ÁÐ´·½Ê½¹ÒÈë¸ùµµ°¸ÏµÍ³¡£
²»ÒªÔÚÒÔ¿É¶ÁÐ´·½Ê½¹ÒÈëµÄµµ°¸ÏµÍ³ÉÏÖ´ÐÐÈÎºÎµÄ `fsck' ³ÌÊ½¡£

´Ë²ÎÊýÊ¹ÓÃµÄÖµÓëÉÏÒ»¸ö´¢´æì¶ºËÐÄÓ³ÏñµÄ²ÎÊýÏàÍ¬£¬¿É¾­ÓÉ {\ttfamily rdev} ´æÈ¡¡£




\subsection{Óë¼ÇÒäÌå´Åµú(RAM Disk)¹ÜÀíÓÐ¹ØµÄÑ¡Ïî}



ÏÂÁÐÑ¡Ïî½ÔÓëºËÐÄÈçºÎ´¦Àí¼ÇÒäÌå´ÅµúÉè±¸ÓÐ¹Ø£¬
ÕâÖÖÐéÄâ´ÅµúÉè±¸Í¨³£ÔÚ°²×°½×¶ÎÆô¶¯»úÆ÷Ê±Ê¹ÓÃ£¬
»òÅäºÏÊ¹ÓÃÄ£×é»¯Çý¶¯³ÌÊ½ÒÔ´æÈ¡¸ùµµ°¸ÏµÍ³µÄ»úÆ÷ÉÏ¡£




\subsubsection{`ramdisk\_start=' ²ÎÊý}



ÎªÁËÊ¹ºËÐÄÓ³ÏñÄÜ¹»ÓëÑ¹ËõµÄ¼ÇÒäÌå´ÅµúÓ³Ïñ·ÅÔÚÒ»ÕÅÈíµúÄÚ£¬
ËùÒÔ¼ÓÈëÕâ¸ö `ramdisk\_start=$<$offset$>$' Ö¸Áî¡£
ºËÐÄ²»ÄÜ¹»·ÅÔÚÑ¹Ëõ¹ýµÄ¼ÇÒäÌå´ÅµúÖ®µµ°¸ÏµÍ³Ó³ÏñÀï£¬
ÒòÎªËüµÃ´Ó×î¿ªÊ¼µÄµÚÁã´ÅÇø¿ªÊ¼·ÅÖÃ£¬
Èç´Ë»ù±¾Êä³öÈëÏµÍ³(BIOS)²ÅÄÜÔØÈëÆô¶¯´ÅÇø¶øºËÐÄÒ²²ÅÄÜ¹»¿ªÊ¼Æô¶¯Ö´ÐÐ¡£

×¢Òâ£ºÈç¹ûÄãÊ¹ÓÃµÄÊÇÃ»ÓÐÑ¹ËõµÄ¼ÇÒäÌå´ÅµúÓ³Ïñ£¬
ÄÇ÷áºËÐÄ¿ÉÒÔÊÇÒªÔØÈë¼ÇÒäÌå´ÅµúÖ®µµ°¸ÏµÍ³Ó³ÏñµÄÒ»²¿·Ý£¬
ÇÒ¸ÃÈíµú¿ÉÒÔÓÉ LILO Æô¶¯£¬Á½ÕßÒ²¿ÉÒÔÈçÍ¬Ñ¹ËõÖ®Ó³Ïñ°ãÎª·Ö¿ªµÄÁ½²¿·Ý¡£

Èç¹ûÄãÊ¹ÓÃÆô¶¯£¯¸ù(boot/root)Á½ÕÅ´ÅÆ¬µÄ·½Ê½£¨ºËÐÄÒ»ÕÅ£¬
¼ÇÒäÌå´ÅµúÓ³Ïñ·ÅµÚ¶þÕÅ£©ÄÇ÷á¼ÇÒäÌå´Åµú»áÓÉµÚÁã´ÅÇø¿ªÊ¼£¬
²¢Ê¹ÓÃÁã×÷ÎªÆ«ÒÆÖµ(offset)¡£ÒòÎªÕâÊÇÔ¤ÉèÖµ£¬Äã¸ù±¾²»±ØÕæµÄÈ¥Ê¹ÓÃÕâ¸öÖ¸Áî¡£




\subsubsection{`load\_ramdisk=' ²ÎÊý}



´Ë²ÎÊý¸æËßºËÐÄÊÇ·ñÒªÔØÈëÒ»·Ý¼ÇÒäÌå´ÅµúÓ³Ïñ¡£
`load\_ramdisk=1' Ö¸¶¨ºËÐÄ½«ÈíµúÔØÈëÖÁ¼ÇÒäÌå´ÅµúÖÐ¡£
Ô¤ÉèÖµÎªÁã£¬±íÊ¾ºËÐÄ²»Ó¦¸ÃÊÔÖøÈ¥ÔØÈë¼ÇÒäÌå´Åµú¡£

Çë²ÎÔÄ {\ttfamily linux/Documentation/ramdisk.txt}
µµ°¸ÖÐÐÂµÄÆô¶¯²ÎÊýÓëÈçºÎÊ¹ÓÃËüÃÇµÄÍêÕûÐðÊö¡£
ËüÍ¬Ê±Ò²ËµÃ÷ÈçºÎ½åÓÉ `rdev' À´Éè¶¨¼°´¢´æÕâÐ©¸ö²ÎÊý¡£




\subsubsection{`prompt\_ramdisk=' ²ÎÊý}



´Ë²ÎÊý¸æËßºËÐÄÊÇ·ñÒª¸øÄã¸öÌáÊ¾ÒªÇó²åÈëº¬¼ÇÒäÌå´ÅµúÓ³ÏñµÄ´ÅÆ¬¡£

ÔÚÖ»ÓÃÒ»ÕÅÈíµúµÄÅäÖÃÏÂ¼ÇÒäÌå´ÅµúÓ³ÏñÓë¸Õ¸ÕÔØÈë£¯Æô¶¯µÄºËÐÄÔÚÏàÍ¬µÄÈíµúÉÏ¹Ê²»ÐèÒªÌáÊ¾¡£
ÕâÖÖÇé¿ö¿ÉÒÔÓÃ `prompt\_ramdisk=0'¡£
ÔÚÊ¹ÓÃÁ½ÕÅÈíµúµÄÅäÖÃÏÂÄãÐèÒªÓÐ¸ö³é»»´ÅÆ¬µÄ»ú»á£¬¹Ê¿ÉÒÔÊ¹ÓÃ
`prompt\_ramdisk=1'¡£
ÒòÎªÕâÊÇÔ¤ÉèÖµ£¬ËùÒÔ²»±ØÕæµÄÈ¥Ö¸¶¨Ëü¡£
£¨éóÎÅ£º´ÓÇ°ÈËÃÇÏ°¹ßÊ¹ÓÃ `vga=ask' Õâ¸ö
LILO Ñ¡ÏîÀ´ÔÝÊ±Í£Ö¹Æô¶¯³ÌÐòÒÔÈ¡µÃ³é»»Æô¶¯´ÅÆ¬¼°¸ù´ÅÆ¬µÄ»ú»á¡££©

Çë²ÎÔÄ {\ttfamily linux/Documentation/ramdisk.txt}
µµ°¸ÖÐÐÂµÄÆô¶¯²ÎÊýÓëÈçºÎÊ¹ÓÃËüÃÇµÄÍêÕûÐðÊö¡£
ËüÍ¬Ê±Ò²ËµÃ÷ÈçºÎ½åÓÉ `rdev' À´Éè¶¨¼°´¢´æÕâÐ©¸ö²ÎÊý¡£




\subsubsection{`ramdisk\_size=' ²ÎÊý}



ÒòÎª¼ÇÒäÌå´ÅµúÊµ¼ÊÉÏ»áÒÀÐèÇó¶¯Ì¬³É³¤£¬
ËùÒÔÆä´óÐ¡ÓÐ¸öÉÏÏÞ¼ÓÒÔÏÞÖÆÒÔÃâËüÓÃ¹âËùÓÐ¿ÉÓÃµÄ¼ÇÒäÌå¶ø»µÊÂ¡£
Ô¤ÉèÖµ 4096(i.e. 4MB) Ó¦¸Ã×ã¹»Âú×ã´ó²¿·ÝµÄÐèÇó¡£
Äã¿ÉÒÔÓÃÕâ¸öÆô¶¯²ÎÊý±ä¸ü´ËÔ¤ÉèÖµ¡£

Çë²ÎÔÄ {\ttfamily linux/Documentation/ramdisk.txt}
µµ°¸ÖÐÐÂµÄÆô¶¯²ÎÊýÓëÈçºÎÊ¹ÓÃËüÃÇµÄÍêÕûÐðÊö¡£
ËüÍ¬Ê±Ò²ËµÃ÷ÈçºÎ½åÓÉ `rdev' À´Éè¶¨¼°´¢´æÕâÐ©¸ö²ÎÊý¡£




\subsubsection{`ramdisk=' ²ÎÊý£¨¹ýÆøÁË£©}



£¨×¢Òâ£ºÕâ¸ö²ÎÊýÊÇ¾ÉµÄ£¬³ýÁË v1.3.47 °æÒÔ¼°¸ü¾ÉµÄµÄºËÐÄÖ®Íâ²»Ó¦¸ÃÊ¹ÓÃ¡£
Ó¦¸ÃÊ¹ÓÃµÄÊÇÇ°ÃæËùÊöµÄÖ¸Áî£©

Õâ¸ö²ÎÊýÒÔÇ§Î»Ôª×é(kB)Îªµ¥Î»Ö¸¶¨¼ÇÒäÌå´ÅµúÉè±¸µÄ´óÐ¡¡£
ÀýÈç£¬Èç¹ûÏëÒª°ÑÎ»ì¶Ò»ÕÅ 1.44MB ÈíµúÉÏµÄ¸ùµµ°¸ÏµÍ³ÔØÈëÖÁ¼ÇÒäÌå´ÅµúÉè±¸£¬
¿ÉÒÔÓÃ£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        ramdisk=1440
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


ÕâÊÇÉÙÊý¼¸¸öÔÚºËÐÄÖÐ´æÓÐÔ¤ÉèÖµ£¬ËùÒÔ¿ÉÒÔÓÃ {\ttfamily rdev}
¹«ÓÃ³ÌÊ½¸Ä±äµÄºËÐÄÆô¶¯²ÎÊý¡£




\subsubsection{`noinitrd'£¨ÆôÊ¼¼ÇÒäÌå´Åµú£©²ÎÊý}



v2.x ¼°¸üÐÂµÄºËÐÄÓÐ¸öÌØÐÔ£¬¸ùµµ°¸ÏµÍ³×î³õÊÇ¼ÇÒäÌå´Åµú£¬
È»ááºËÐÄÖ´ÐÐ¼ÇÒäÌåÓ³ÏñÉÏµÄ {\ttfamily /linuxrc}¡£
Õâ¸öÌØÐÔµäÐÍÏµÓÃì¶ÔØÈëÄ³Ð©¹ÒÈëÕæÕýµÄ¸ùµµ°¸ÏµÍ³ËùÐèÒªµÄÄ£×é
£¨ÀýÈç£¬ÔØÈë´¢´æì¶¼ÇÒäÌå´ÅµúÓ³ÏñÀïµÄ SCSI Çý¶¯³ÌÊ½£¬
È»áá¹ÒÈëÔÚÄ³ SCSI ´ÅµúÀïÕæÕýµÄ¸ùµµ°¸ÏµÍ³¡££©

Êµ¼ÊµÄ `noinitrd' ²ÎÊý¾ö¶¨ºËÐÄÆô¶¯Ö®ááÈçºÎ´¦Àí initrd ×ÊÁÏ¡£
Èç¹ûÓÐÖ¸¶¨£¬Ëü¿ÉÒÔ¾­ÓÉ {\ttfamily /dev/initrd} ´æÈ¡£¬
¿ÉÒÔÔÚ¼ÇÒäÌåÊÍ·Å»ØÏµÍ³Ö®Ç°¶ÁÈ¡Ò»´Î¡£
ÓÐ¹Ø³õÊ¼Ö®¼ÇÒäÌå´ÅµúµÄÍêÕûÏ¸½ÚÓëÊ¹ÓÃÇë²ÎÔÄ
{\ttfamily linux/Documentation/initrd.txt}¡£
´ËÍâ£¬×îÐÂ°æµÄ {\ttfamily LILO} ¼° {\ttfamily LOADLIN} Ó¦¸Ã»á°üº¬ÆäËüÓÐÓÃµÄ×ÊÑ¶¡£




\subsection{Óë¼ÇÒäÌå¹ÜÀíÓÐ¹ØµÄ²ÎÊý}



ÏÂÁÐ²ÎÊý»á¸Ä±ä linux Õì²â»ò´¦ÀíÏµÍ³ÊµÌå¼°ÐéÄâ¼ÇÒäÌåµÄ·½Ê½¡£




\subsubsection{`mem=' ²ÎÊý}



¡¡Õâ¸ö²ÎÊýÓÐÁ½¸öÄ¿µÄ£ºÔ­ÏÈµÄÄ¿µÄÊÇÖ¸¶¨»úÆ÷Ëù°²×°µÄ¼ÇÒäÌåÊýÁ¿
£¨Èç¹ûÄãÏëÏÞÖÆ linux ÄÜÊ¹ÓÃµÄ¼ÇÒäÌåÊýÁ¿¿ÉÒÔÖ¸¶¨Ò»¸ö½ÏÐ¡µÄÖµ£©¡£
µÚ¶þ¸ö£¨ºÜÉÙÓÃ£©Ä¿µÄÔòÊÇÖ¸¶¨ {\ttfamily mem=nopentium}
ÒÔ±ã¸æËß linux ºËÐÄ²»ÒªÊ¹ÓÃ 4MB ·ÖÒ³±í(page table)Õâ¸öÐ§ÄÜÌØÐÔ¡£

ÔÚ¸öÈËµçÄÔ¹æ¸ñÖÐ£¬
Ô­ÏÈ¶¨Òå»Ø´«°²×°¼ÇÒäÌåÊýÁ¿µÄ»ù±¾Êä³öÈëºô½Ð±»Éè¼Æ³É×î¶àÖ»ÄÜ»Ø±¨×î¶à 64MB¡£
£¨ÊÇµÄ£¬ÁíÒ»¸öÈ±·¦Ô¶¼ûµÄÉè¼Æ£¬¾ÍÏñ 1024 ´Å´ØµÄ´ÅµúÏÞÖÆ£®£®£®°¥¡££©
Linux ÔÚÆô¶¯Ê±»áÊ¹ÓÃ´Ë»ù±¾Êä³öÈëºô½ÐÒÔÈ·¶¨°²×°µÄ¼ÇÒäÌåÊýÁ¿¡£
Èç¹ûÄã°²×°µÄ¼ÇÒäÌå³¬¹ý 64MB£¬¿ÉÒÔÓÃÕâ¸öÆô¶¯²ÎÊý¸æËß Linux ÄãÓÐ¶àÉÙ¼ÇÒäÌå¡£
ÏÂÃæÒýÓÃ Linus ¶Ô {\ttfamily mem=} ²ÎÊýµÄËµÃ÷¡£

¡±ºËÐÄ»á½ÓÊÜÈÎºÎÄãËù¸øÓèµÄ `mem=xx' ²ÎÊý£¬¶øÈç¹ûËü·¢ÏÖÄãÆ­Ëü£¬
ÄÇËü³ÙÔçÒ»¶¨»áµ±µÄºÜÄÑ¿´¡£
Õâ¸ö²ÎÊýÖ¸Ê¾¿ÉÒÔ¶¨Ö·µÄ×î¸ß¼ÇÒäÌåÎ»Ö·£¬ËùÒÔ£¬
ÀýÈç `mem=0x1000000' ±íÊ¾ÄãÓÐ 16MB µÄ¼ÇÒäÌå¡£
¶ÔÓµÓÐ 96MB µÄ»úÆ÷¶øÑÔ´ËÖµÎª `mem=0x6000000'¡£

×¢Òâ×¢Òâ×¢Òâ£º

Ä³Ð©»úÆ÷¿ÉÄÜ»áÊ¹ÓÃ×îÉÏ²ã(top)µÄ¼ÇÒäÌå×÷Îª»ù±¾Êä³öÈëÏµÍ³µÄ¿ìÈ¡µÈµÈÒ»ÀàÓÃÍ¾£¬
ËùÒÔÄã¿ÉÄÜ²¢·ÇÊµ¼ÊÓµÓÐ 96MB µÄ¿É¶¨Ö·¿Õ¼ä¡£·´Ö®ÒàÈ»£º

Ä³Ð©¾§Æ¬×é»á½«»ù±¾Êä³öÈëÏµÍ³º­¸ÇµÄÊµÌå¼ÇÒäÌåÇøÓò¶ÔÓ¦(map)µ½×îÉÏ²ã¼ÇÒäÌåááÃæ£¬
ËùÒÔ¼ÇÒäÌå×îÉÏ²ãÊµ¼ÊÉÏ¿ÉÄÜÊÇ 96MB + 384kB¡£
Èç¹ûÄã¸æËß linux
µÄ¼ÇÒäÌå±ÈËüÊµ¼ÊÉÏÓµÓÐµÄ»¹¶à£¬ÄÇ¾Í»á³ö×´¿ö£ºÒ²Ðí²»»áÁ¢¿Ì³öÊÂ£¬
µ«×îááÒ»¶¨»á·¢Éú¡£¡±

×¢Òâ£¬´Ë²ÎÊý²¢·ÇÒ»¶¨µÃÊÇÊ®Áù½øÎ»ÐÍÌ¬£¬
¶øÇÒ¿ÉÒÔÊ¹ÓÃ `k' Óë `M'£¨´óÐ¡Ð´ÎÞ¹Ø£©×ÖÎ²·Ö±ðÖ¸¶¨Ç§Î»Ôª×éÒÔ¼°°ÙÍòÎ»Ôª×é¡£
£¨`k' »á°ÑÄã¸øµÄÖµÐý×ª(shift) 10 Î»Ôª£¬¶ø `M' »áÐý×ª 20 Î»Ôª¡££©
ÉÏÊö¾¯¸æÒÀÈ»Ã»±ä£¬ÑØÉÏÀý£¬
Ò»Ì¨ 96MB µÄ»úÆ÷Ò²Ðí¿ÉÒÔÉè {\ttfamily mem=97920k} ¶øÎÞ·¨Ê¹ÓÃ {\ttfamily mem=98304k}
»ò {\ttfamily mem=96M}¡£




\subsubsection{`swap=' ²ÎÊý}



ÕâÔÊÐíÊ¹ÓÃÕßµ÷ÕûÄ³Ð©Óë´ÅµúÖÃ»»(swapping)ÓÐ¹ØµÄÐéÄâ¼ÇÒäÌå²ÎÊý(VM)¡£
Ëü½ÓÊÜÏÂÁÐ°Ë¸ö²ÎÊý£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        MAX_PAGE_AGE
        PAGE_ADVANCE
        PAGE_DECLINE
        PAGE_INITIAL_AGE
        AGE_CLUSTER_FRACT
        AGE_CLUSTER_MIN
        PAGEOUT_WEIGHT
        BUFFEROUT_WEIGHT
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


ÓÐÐËÈ¤µÄÍæ¼Ò½¨ÒéÄãÔÄ¶Á {\ttfamily linux/mm/swap.c} ²¢×¢Òâ
{\ttfamily /proc/sys/vm}
ÀïÃæµÄ¶«Î÷¡£




\subsubsection{`buff=' ²ÎÊý}



ÀàËÆ `swap='
²ÎÊý£¬ÕâÔÊÐíÊ¹ÓÃÕßµ÷ÕûÄ³Ð©Óë»º³å¼ÇÒäÌå(buffer)Ö®¹ÜÀíÏà¹ØµÄ²ÎÊý¡£
Ëü½ÓÊÜÏÂÁÐÁù¸ö²ÎÊý¡£

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        MAX_BUFF_AGE
        BUFF_ADVANCE
        BUFF_DECLINE
        BUFF_INITIAL_AGE
        BUFFEROUT_WEIGHT
        BUFFERMEM_GRACE
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


ÓÐÐËÈ¤µÄÍæ¼Ò½¨ÒéÄãÔÄ¶Á {\ttfamily linux/mm/swap.c} ²¢×¢Òâ
{\ttfamily /proc/sys/vm}
ÀïÃæµÄ¶«Î÷¡£




\subsection{ÒÔÍøÂ·µµ°¸ÏµÍ³(NFS)×÷Îª¸ùµµ°¸ÏµÍ³Ê¹ÓÃµÄ²ÎÊý}



½åÓÉÍ¸¹ýÍøÂ·µµ°¸ÏµÍ³(NFS: Network FileSystem)
Ìá¹©¸ùµµ°¸ÏµÍ³ Linux Ö§Ô®ÎÞµú(diskless)¹¤×÷Õ¾ÕâÑùµÄÏµÍ³¡£
ÕâÐ©²ÎÊýÏµÓÃÀ´¸æËßÎÞµú¹¤×÷Õ¾Òª´ÓÄÇÒ»Ì¨»úÆ÷È¡µÃÆäÏµÍ³¡£
Í¬Ê±Òª×¢Òâ {\ttfamily root=/dev/nfs} ²ÎÊýÊÇ±ØÐèµÄ¡£
ÓÐ¹ØÊ¹ÓÃÍøÂ·µµ°¸ÏµÍ³×÷Îª¸ùµµ°¸ÏµÍ³Ö®Ï¸½ÚËµÃ÷ÔÚ
{\ttfamily linux/Documentation/nfsroot.txt} µµ°¸Àï¡£
ÄãÓ¦¸ÃÔÄ¶ÁÕâ¸öµµ°¸£¬
ÒòÎªÏÂÃæÖ»ÊÇ´ÓÄÇ¸öµµ°¸Ö±½ÓÄÃ¹ýÀ´µÄ¿ìËÙÕªÒª¡£




\subsubsection{`nfsroot=' ²ÎÊý}



Õâ¸ö²ÎÊý¸æËßºËÐÄÒÔÄÇÒ»Ì¨»úÆ÷£¬
ÄÇ¸öÄ¿Â¼ÒÔ¼°ÄÇÐ©¸öÍøÂ·µµ°¸ÏµÍ³Ñ¡Ïî×÷Îª¸ùµµ°¸ÏµÍ³Ê¹ÓÃ¡£
´Ë²ÎÊýµÄ¸ñÊ½ÈçÏÂ£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


Èç¹ûÖ¸ÁîÁÐÉÏÃ»ÓÐ¸ø¶¨ nfsroot ²ÎÊý£¬Ôò½«Ê¹ÓÃ `/tftpboot/\%s' Ô¤ÉèÖµ¡£
ÆäËüÑ¡ÏîÈçÏÂ£º

$<$server-ip$>$ --
Ö¸¶¨ÍøÂ·µµ°¸ÏµÍ³ËÅ·þ¶ËµÄÍø¼ÊÍøÂ·Î»Ö·(IP address)¡£
Èç¹ûÃ»ÓÐ¸ø¶¨´ËÀ¸Î»£¬ÔòÊ¹ÓÃÓÉ nfsaddrs ±äÊý£¨¼ûÏÂÃæ£©Ëù¾ö¶¨µÄÖµ¡£
´Ë²ÎÊýµÄÓÃÍ¾Ö®Ò»ÊÇÔÊÐíÊ¹ÓÃ²»Í¬»úÆ÷×÷Îª·´ÏòÎ»Ö·½âÎöÐ­¶¨(RARP)
¼°ÍøÂ·µµ°¸ÏµÍ³ËÅ·þ¶Ë¡£Í¨³£Äã¿ÉÒÔ²»¹ÜËü£¨ÉèÎª¿Õ°×£©¡£

$<$root-dir$>$ --
ËÅ·þ¶ËÉÏÒª×÷Îª¸ù¹ÒÈëµÄÄ¿Â¼Ãû³Æ¡£Èç¹û×Ö´®ÖÐÓÐ¸ö `\%s' ·û¼Ç(token)£¬
´Ë·û¼Ç½«´ú»»Îª¿Í»§¶ËÍø¼ÊÍøÂ·Î»Ö·Ö® ASCII ±íÊ¾·¨¡£

$<$nfs-options$>$ --
±ê×¼µÄÍøÂ·µµ°¸ÏµÍ³Ñ¡Ïî¡£ËùÓÐÑ¡Ïî¶¼ÒÔ¶ººÅ·Ö¿ª¡£
Èç¹ûÃ»ÓÐ¸ø¶¨´ËÑ¡ÏîÀ¸Î»ÔòÊ¹ÓÃÏÂÁÐµÄÔ¤ÉèÖµ£º

\begin{verbatim}
        port            = as given by server portmap daemon
        rsize           = 1024
        wsize           = 1024
        timeo           = 7
        retrans         = 3
        acregmin        = 3
        acregmax        = 60
        acdirmin        = 30
        acdirmax        = 60
        flags           = hard, nointr, noposix, cto, ac
\end{verbatim}





\subsubsection{`nfsaddrs=' ²ÎÊý}



Õâ¸öÆô¶¯²ÎÊýÉè¶¨ÍøÂ·Í¨Ñ¶ËùÐèµÄ¸÷ÖÖÍøÂ·½çÃæÎ»Ö·¡£Èç¹ûÃ»ÓÐ¸ø¶¨Õâ¸ö²ÎÊý£¬
ÔòºËÐÄ»áÊÔÖøÊ¹ÓÃ·´ÏòÎ»Ö·½âÎöÐ­¶¨ÒÔ¼°£¯»òÊÇÆô¶¯Ð­¶¨(BOOTP)ÒÔÕÒ³öÕâÐ©²ÎÊý¡£
Æä¸ñÊ½ÈçÏÂ£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        nfsaddrs=<my-ip>:<serv-ip>:<gw-ip>:<netmask>:<name>:<dev>:<auto>
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


$<$my-ip$>$ --
¿Í»§¶ËµÄÍø¼ÊÍøÂ·Î»Ö·¡£Èç¹ûÃ»Éè£¬
´ËÎ»Ö·½«ÓÉ·´ÏòÎ»Ö·½âÎöÐ­¶¨»òÆô¶¯Ð­¶¨À´¾ö¶¨¡£
Ê¹ÓÃºÎÖÖÐ­¶¨¶ËÊÓÅäÖÃºËÐÄÊ±´ò¿ªµÄÑ¡ÏîÒÔ¼° $<$auto$>$ ²ÎÊý¶ø¶¨¡£
Èç¹ûÉè¶¨´Ë²ÎÊý£¬¾Í²»»áÊ¹ÓÃ·´ÏòÎ»Ö·½âÎöÐ­¶¨»òÆô¶¯Ð­¶¨¡£

$<$serv-ip$>$ --
ÍøÂ·µµ°¸ÏµÍ³ËÅ·þ¶ËÖ®Íø¼ÊÍøÂ·Î»Ö·¡£
Èç¹ûÊ¹ÓÃ·´ÏòÎ»Ö·½âÎöÐ­¶¨À´¾ö¶¨¿Í»§¶ËÎ»Ö·²¢ÇÒÉè¶¨´Ë²ÎÊý£¬
ÔòÖ»½ÓÊÜ´ÓÖ¸¶¨Ö®ËÅ·þ¶Ë´«À´µÄ»ØÓ¦¡£
ÒªÊ¹ÓÃ²»Í¬µÄ»úÆ÷×÷Îª·´ÏòÎ»Ö·½âÎöÓëÍøÂ·µµ°¸ÏµÍ³ËÅ·þ¶ËµÄ»°£¬
ÔÚ´ËÖ¸¶¨ÄãµÄ·´ÏòÎ»Ö·½âÎöÐ­¶¨ËÅ·þ¶Ë£¨±£³Ö¿Õ°×£©²¢ÔÚ nfsroot ²ÎÊý£¨¼ûÉÏÊö£©
ÖÐÖ¸¶¨ÄãµÄÍøÂ·µµ°¸ÏµÍ³ËÅ·þ¶Ë¡£
Èç¹û´ËÏîÄ¿¿Õ°×ÔòÊ¹ÓÃ»Ø´ð·´ÏòÎ»Ö·½âÎöÐ­¶¨»òÆô¶¯Ð­¶¨Ö®ËÅ·þ¶ËµÄÎ»Ö·¡£

$<$gw-ip$>$ --
Õ¢µÀ(gateway)Ö®Íø¼ÊÍøÂ·Î»Ö·£¬ÈôËÅ·þ¶ËÎ»ì¶²»Í¬µÄ×ÓÍøÂ·ÉÏÊ±¡£
Èç¹û´ËÏîÄ¿¿Õ°×Ôò²»Ê¹ÓÃÈÎºÎÕ¢µÀ²¢¼ÙÉèËÅ·þ¶ËÔÚ±¾µØµÄ(local)ÍøÂ·ÉÏ£¬
³ý·ÇÓÉÆô¶¯Ð­¶¨½ÓÊÕµ½Öµ¡£

$<$netmask$>$ --
±¾µØÍøÂ·½éÃæµÄÍøÂ·ÕÚÕÖ¡£
Èç¹ûÎª¿Õ°×£¬ÔòÍøÂ·ÕÚÕÖÓÉ¿Í»§¶ËµÄÍø¼ÊÍøÂ·Î»Ö·µ¼³ö£¬³ý·ÇÓÉÆô¶¯Ð­¶¨½ÓÊÕµ½Öµ¡£

$<$name$>$ --
¿Í»§¶ËµÄÃû³Æ¡£
Èç¹û¿Õ°×£¬ÔòÊ¹ÓÃ¿Í»§¶ËÍø¼ÊÍøÂ·Î»Ö·Ö® ASCII-±ê¼Ç·¨£¬»òÓÉÆô¶¯Ð­¶¨½ÓÊÕµÄÖµ¡£

$<$dev$>$ --
ÒªÊ¹ÓÃµÄÍøÂ·Éè±¸Ãû³Æ¡£
Èç¹ûÎª¿Õ°×£¬ËùÓÐÉè±¸¶¼»áÓÃÀ´·¢³ö·´ÏòÎ»Ö·½âÎöÇëÇó£¬
Æô¶¯Ð­¶¨ÇëÇóÓÉ×îÏÈÕÒµ½µÄÉè±¸·¢³ö¡£
ÍøÂ·µµ°¸ÏµÍ³Ê¹ÓÃ½ÓÊÕµ½·´ÏòÎ»Ö·½âÎöÐ­¶¨»òÆô¶¯Ð­¶¨»ØÓ¦µÄÉè±¸¡£
Èç¹ûÄãÖ»ÓÐÒ»¸öÉè±¸ÄÇÄã¿ÉÒÔ²»¹ÜËü¡£

$<$auto$>$ --
ÓÃÒÔ×÷Îª×Ô¶¯ÅäÖÃµÄ·½·¨¡£
Èç¹ûÊÇ `rarp' »òÊÇ `bootp' ÔòÊ¹ÓÃËùÖ¸Ê¾µÄÐ­¶¨¡£
Èç¹û´ËÖµÎª `both' »ò¿Õ°×£¬ÈôÅäÖÃºËÐÄÊ±ÓÐ´ò¿ªÕâÁ½ÖÖÐ­¶¨Ôò¶¼Ê¹ÓÃ¡£
`none' ±íÊ¾²»Ê¹ÓÃ×Ô¶¯ÅäÖÃ¡£ÕâÖÖÇé¿öÏÂÄã±ØÐëÖ¸¶¨Ç°ÊöÀ¸Î»ÖÐËùÓÐ±ØÒªµÄÖµ¡£

´Ë $<$auto$>$ ²ÎÊý¿ÉÒÔ×÷Îª nfsaddrs µÄ²ÎÊýµ¥¶ÀÊ¹ÓÃ£¨Ç°ÃæÃ»ÓÐÈÎºÎ `:`
×ÖÔª£©£¬
ÕâÖÖÇé¿öÏÂ»áÊ¹ÓÃ×Ô¶¯ÅäÖÃ¡£È»¶ø£¬´ËÖÖÇé¿ö²»ÄÜÊ¹ÓÃ `none'×÷ÎªÖµ¡£




\subsection{ÆäËüÁíÍâµÄºËÐÄÆô¶¯²ÎÊý}



ÕâÐ©Æô¶¯²ÎÊýÈÃÊ¹ÓÃÕßµ÷ÕûÄ³Ð©ºËÐÄÄÚ²¿µÄ²ÎÊý¡£




\subsubsection{The `debug' Argument}



ºËÐÄ¾­ÓÉ {\ttfamily printk()}
º¯Ê½´«´ïÖØÒª£¨ÒÔ¼°Ã»ÄÇ÷áÖØÒª£©µÄÑ¶Ï¢¸ø¹ÜÀíÕß(operator)¡£
Èç¹ûÑ¶Ï¢ºÜÖØÒª£¬ {\ttfamily printk()} º¯Ê½Ò²»áÏÔÊ¾µ½Ö÷¿ØÌ¨(console)ÉÏ£¬
¾ÍÈçÍ¬¶ª¸ø {\ttfamily klogd()} ¼ÇÂ¼µ½´ÅµúÉÏÒ»°ã¡£
ÈçÍ¬¼ÇÂ¼µ½´ÅµúÉÏÒ»°ãÔÚÖ÷¿ØÌ¨ÉÏÏÔÊ¾ÖØÒªÑ¶Ï¢µÄÔ­ÒòÊÇÒòÎªÔÚ²»ÐÒµÄ×´¿öÏÂ
£¨ÀýÈç´ÅµúËð»µ£©Ñ¶Ï¢½«ÎÞ·¨´æÈë´Åµú¶øÂ©Ê§¡£

µ½µ×Ê²÷áÖØÒªÊ²÷á²»ÖØÒªÆäÃÅ¼÷½åÓÉ {\ttfamily console\_loglevel} ±äÊýÉè¶¨¡£
Ô¤ÉèÊÇ°ÑÈÎºÎ±È {\ttfamily DEBUG}£¨µÈ¼¶ 7£©ÖØÒªµÄ¶«Î÷¼ÇÂ¼µ½Ö÷¿ØÌ¨ÉÏÈ¥¡£
£¨ÕâÐ©µÈ¼¶¶¨ÒåÔÚ {\ttfamily kernel.h} º¬ÈëµµÖÐ£©Ö¸¶¨
{\ttfamily debug} Æô¶¯²ÎÊý½«Ê¹Ö÷¿ØÌ¨µÄ¼ÇÂ¼µÈ¼¶ÉèÎª 10£¬
ËùÒÔ{\itshape ËùÓÐ\/}ºËÐÄÑ¶Ï¢¶¼»á³öÏÖÔÚÖ÷¿ØÌ¨ÉÏ¡£

Ö÷¿ØÌ¨¼ÇÂ¼µÈ¼¶Í¨³£Ò²¿ÉÒÔÔÚÖ´ÐÐÆÚ¼ä¾­ÓÉ {\ttfamily klogd()} ³ÌÊ½Ñ¡ÏîÉè¶¨¡£
²é¿´ÄãÏµÍ³Ö®°²×°°æ±¾µÄÏßÉÏËµÃ÷Ò³¿´¿´¸ÃÔõ÷á×ö¡£




\subsubsection{`init=' ²ÎÊý}



ºËÐÄÆô¶¯Ê±Ô¤ÉèÖ´ÐÐ `init' ³ÌÊ½£¬ÕâÖ§³ÌÊ½½ÓÏÂÀ´¾­ÓÉÖ´ÐÐ getty ³ÌÊ½£¬
ÅÜ `rc' Ö¸Áî¸å(scripts)ÒÔ¼°ÖîÈç´ËÀàµÄ¶«¶«ÎªÊ¹ÓÃÕßÉè¶¨µçÄÔ¡£
ºËÐÄÊ×ÏÈÑ°ÕÒ {\ttfamily /sbin/init} £¬È»ááÊÇ {\ttfamily /etc/init}
(depreciated)£¬
¶ø×îááËü»áÈ¥ÊÔ {\ttfamily /bin/sh} £¨¿ÉÄÜÔÚ {\ttfamily /etc/rc} £©¡£
Èç¹ûËµ£¬ÀýÈç£¬Èç¹ûÄãµÄ init ³ÌÊ½»µµôÁË£¬Ö»ÒªÊ¹ÓÃ {\ttfamily init=/bin/sh}

Õâ¸öÆô¶¯²ÎÊý¾ÍÄÜÈÃÄãÔÚÆô¶¯Ê±Ö±½ÓÌøµ½½âÒë»·¾³(shell)£¬Ê¹ÄãÄÜ¹»»»µô»µµôµÄ³ÌÊ½¡£




\subsubsection{`no387' ²ÎÊý}



Ä³Ð© i387 Ð­Í¬´¦ÀíÆ÷¾§Æ¬ÓÐ³ô¡õ(bugs)£¬ÔÚ 32 Î»Ôª±£»¤Ä£Ê½ÏÂ»á³öÏÖ¡£
ÀýÈç£¬²¿·ÝÔçÆÚµÄ ULSI-387 ¾§Æ¬ÔÚÖ´ÐÐ¸¡µãÔËËãÊ±»áËÀµ±£¬
ÕâËÆºõÊÇÒòÎª FRSAV/FRRESTOR Ö¸ÁîµÄÒ»Ö»¡õ¡£
Ê¹ÓÃ `no387' Æô¶¯²ÎÊýÊ¹ Linux ¾ÍËãÄãÕæµÄÓÐÊýÖµ¸¨Öú´¦ÀíÆ÷Ò²ºöÂÔËüµÄ´æÔÚ¡£
µ±È»±àÒëºËÐÄÊ±Äã±ØÐë¼ÓÈëÊýÖµÄ£ÄâÖ§Ô®£¡
Èç¹ûÄãÓÐÄ³Ð©ÄÜ¹»Ê¹ÓÃ 80287 ¸¡µã´¦Àíµ¥Ôª(FPU)µÄ{\itshape ¹Å¶­¼¶\/} 386
»úÆ÷ÄÇÕâÒ²ºÜÓÐÓÃ£¬
ÒòÎª linux ÎÞ·¨Ê¹ÓÃ 80287¡£




\subsubsection{`no-hlt' ²ÎÊý}



i386£¨¼°Æäáá¼ÌÕß£©
¼Ò×åµÄÖÐÑë´¦ÀíÆ÷ÓÐ¸ö `hlt' Ö¸ÁîÓÃÀ´¸æËßÖÐÑë´¦ÀíÆ÷ÏÖÔÚ¡õ¡õÃ»ÊÂ×ö£¬
Ö±µ½Ä³¸öÍâ²¿Éè±¸£¨¼üÅÌ£¬Êý¾Ý»ú£¬´ÅµúµÈµÈ£©ºô½ÐÖÐÑë´¦ÀíÆ÷Ö´ÐÐÈÎÎñÎªÖ¹¡£
Õâ¸öÖ¸Áî»áÊ¹ÖÐÑë´¦ÀíÆ÷½øÈë¡®Ê¡µç¡¯Ä£Ê½£¬
Ïñ¸öËÀÈË(zombie)°ã×øÔÚÄÇÀïÖ±µ½ÓÐ¸öÍâ²¿Éè±¸½ÐËüÆðÀ´
£¨¾­ÓÉÖÐ¶Ï(interrupt) £¬Í¨³£ÊÇ£©¡£
²¿·ÝÔçÆÚµÄ i486DX-100 ¾§Æ¬´¦ÀíÕâ¸ö `hlt' Ö¸ÁîÓÐÎÊÌâ£¬
Ê¹ÓÃ¹ýÕâ¸öÖ¸ÁîááËüÃÇ²»ÄÜ¿É¿¿µØ»Øµ½ÔË×÷Ä£Ê½¡£
Ê¹ÓÃ `no-hlt' Õâ¸öÖ¸Áî¸æËß
Linuxµ±ÎÞÊÂ¿É×öÊ±ÅÜ¸öÎÞÇî»ØÈ¦¶ø{\itshape ²»\/}Í£×¡ÄãµÄÖÐÑë´¦ÀíÆ÷¡£
ÈÃÓÐÕâÐ©¾§Æ¬µÄÈËÃÇÄÜ¹»Ê¹ÓÃ Linux£¬È»¶ø»¹ÊÇ½¨ÒéÓÐ¿ÉÄÜµÄ»°¾Í»»µôÕâÐ©¾§Æ¬¡£




\subsubsection{`no-scroll' ²ÎÊý}



Æô¶¯Ê±Ê¹ÓÃÕâ¸ö²ÎÊý¿ÉÒÔ¹Ø±Õ¾íÒ³(scrolling)ÌØÐÔ£¬Õâ¸öÌØÐÔÊ¹µÃ Braille
ÖÕ¶Ë»úÄÑÒÔÊ¹ÓÃ¡£




\subsubsection{`panic=' ²ÎÊý}



ÔÚ²»Ì«¿ÉÄÜ·¢ÉúµÄºËÐÄÒì³£(kernel panic)ÊÂ¼þÏÂ£¨ÏñÊÇºËÐÄÕì²âµ½ÄÚ²¿´íÎó£¬
²¢ÈÏÎªÕâÑùµÄ´íÎóÑÏÖØµ½Ó¦¸Ã·¢³ö¾¯Ñ¶²¢Í£Ö¹ÈÎºÎ×÷Òµ£©£¬

Ô¤ÉèµÄ´¦Àí·½Ê½ÊÇ¾ÍÍ£ÔÚÄÇ¶ùÖ±µ½ÓÐÈË¹ýÀ´²¢×¢Òâµ½Ó©Ä»ÉÏµÄÒì³£¾¯Ñ¶È»ááÖØÐÂÆô¶¯»úÆ÷¡£

È»¶øÈç¹û»úÆ÷ÊÇÔÚÎÞ·¨´¥¼°£¬¸ôÀëµÄµØ·½ÅÜµÄ»°Ò²Ðí»áÏ£ÍûËüÄÜ×Ô¶¯ÖØÖÃ×Ô¼ºÈ»áá»Øµ½ÏßÉÏ¡£
ÀýÈç£¬Æô¶¯Ê±Ê¹ÓÃ {\ttfamily panic=30} »áÊ¹ºËÐÄÔÚ·¢ÉúºËÐÄÒì³£ 30
ÃëááÊÔÖøÖØÐÂÆô¶¯×Ô¼º¡£
Èô´ËÖµÎªÁãÔòÊ¹ÓÃÔ¤ÉèµÄ´¦Àí·½Ê½£¬¾ÍÊÇÒ»Ö±ÔÚÄÇ¶ùµÈ¡£

×¢Òâ£¬Õâ¸öÓâÊ±(timeout)Éè¶¨Ò²¿É¾­ÓÉ {\ttfamily /proc/sys/kernel/panic}
ÏµÍ³¿ØÖÆ
(sysctl)½éÃæ¶ÁÈ¡ÓëÉè¶¨¡£




\subsubsection{`profile=' ²ÎÊý}



ºËÐÄ·¢Õ¹ÕßÃÇ¿ÉÒÔ´ò¿ªÄ³¸öÑ¡ÏîÒÔµÃÖªºËÐÄÈçºÎÊ¹ÓÃÖÐÑë´¦ÀíÆ÷Ê±¼äÒÔ¼°ÓÃÔÚÄÇ¡õ£¬
ÒÔ±ã×î´ó»¯Ð§ÂÊ(efficiency)ÓëÐ§ÄÜ(performance)¡£
Õâ¸öÑ¡ÏîÈÃÄãÔÚÆô¶¯Ê±Éè¶¨¹Û²ì±ä»¯µÄ¼ÆÊý(the profile shift count)¡£
´ËÖµÒ»°ãÉèÎª¶þ¡£ÄãÒ²¿ÉÒÔÔÚ±àÒëºËÐÄÊ±´ò¿ª´Ë¹¦ÄÜ¡£ÎÞÂÛÄÇÖÖÇé¿ö£¬Äã¶¼ÐèÒªÏñ
{\ttfamily readprofile.c} ÕâÀà¿ÉÒÔ´¦Àí {\ttfamily /proc/profile} Êä³öµÄ¹¤¾ß¡£




\subsubsection{`reboot=' Ñ¡Ïî}



Õâ¸öÑ¡Ïî¿ØÖÆÖØÖÃµçÄÔÊ±
£¨µäÐÍÊÇ¾­ÓÉ {\ttfamily /sbin/init} ´¦ÀíµÄ Control-Alt-Delete ¶¯×÷£©
Linux Ëù×öµÄÖØÐÂÆô¶¯Ö®ÖÖÀà¡£
ÐÂµÄ v2.0 ºËÐÄÔ¤ÉèµÄ¶¯×÷ÊÇ×ö¡®Àä¡¯¿ª»ú
£¨ÍêÈ«ÖØÖÃ£¬»ù±¾Êä³öÈëÏµÍ³Ö´ÐÐ¼ÇÒäÌå¼ì²éµÈµÈ£©ÒÔ´úÌæ¡®Å¯¡¯¿ª»ú
£¨Ã»ÓÐÍêÈ«ÖØÖÃ£¬Ã»ÓÐ¼ÇÒäÌå¼ì²é£©¡£

¸ÄÎªÔ¤ÉèÀä¿ª»úÊÇÎªÁËÒªÔÚ±ãÒËµÄ£¯ÀÃÀÃµÄ£¬Å¯¿ª»úÇëÇóÃ»°ì·¨ÖØÐÂÆô¶¯µÄÓ²ÌåÉÏ¹¤×÷¡£
¿ÉÒÔÊ¹ÓÃ {\ttfamily reboot=w} ÉèÎªÔ­ÏÈµÄ·½Ê½£¨Å¯¿ª»ú£©£¬ÆäÊµ¿ÉÒÔÓÃÈÎºÎÒÔ
{\ttfamily w} ¿ªÍ·µÄ×ÖÀ´Éè¶¨¡£

ÎªÊ²÷áÕâ»áÔì³ÉÀ§ÈÅ£¿
Ä³Ð©¾ßÓÐ¼ÇÒäÌå¿ìÈ¡µÄ´Åµú¿ØÖÆÆ÷ÄÜ¹»¸Ð²âµ½Å¯¿ª»ú£¬
²¢ÇÒ°ÑËùÓÐÔÝ´æµÄ×ÊÁÏÐ´µ½´ÅµúÉÏ¡£
Àä¿ª»ú¿ÉÄÜ»áÖØÉè¸Ã¿¨£¬ÔÚ¿ìÈ¡¿¨¼ÇÒäÌåÀïÃæµÄ»ØÐ´(write-back)×ÊÁÏ¾Í»áÂ©Ê§¡£
ÒÑ¾­ÓÐÈË»Ø±¨ÏµÍ³¼ÇÒäÌå¼ì²éºÜ»¨Ê±¼äÒÔ¼°£¯»òÊÇÐ¡ÐÍµçÄÔÖÇ»Û½éÃæ»ù±¾Êä³öÈëÏµÍ³
(SCSI BIOSes)Àä¿ª»úÊ±»¨½Ï¾ÃµÄÊ±¼ä³õÊ¼»¯ÊÇÊ¹ÓÃÅ¯¿ª»úµÄºÃÀíÓÉ¡£




\subsubsection{`reserve=' ²ÎÊý}



ÕâÊÇÓÃÀ´{\itshape ±£»¤\/}Êä³öÈë²ºÇøÓò²»ÒªÕì²â¡£Õâ¸öÖ¸ÁîµÄ¸ñÊ½ÊÇ£º

\begin{tscreen}
reserve=iobase,extent{[},iobase,extent{]}...
\end{tscreen}


ÔÚÄ³Ð©»úÆ÷ÉÏÒ²Ðí±ØÐë±ÜÃâÉè±¸Çý¶¯³ÌÊ½È¥¼ì²é£¨×Ô¶¯Õì²â£©ÔÚÄ³Ð©ÌØÊâÇøÓòµÄÉè±¸¡£
Õâ¿ÉÄÜÊÇÒòÎªÓ²ÌåÉè¼ÆµÄ²»Á¼¶ø»áÊ¹µÃÆô¶¯{\itshape ÖÕÖ¹\/}£¨ÏñÊÇÄ³Ð©ÒÒÌ«ÍøÂ·¿¨£©£¬
»á±»ÎóÈÏµÄÓ²Ìå£¬×´Ì¬»áÒòÎª½ÏÇ°ÃæµÄÕì²â¶ø¸Ä±äµÄÓ²Ìå£¬
»òÕßÖ»ÊÇÄã²»ÏëÈÃºËÐÄ³õÊ¼»¯µÄÓ²Ìå¡£

´Ë {\ttfamily reserve}
Æô¶¯Ê±ÆÚ²ÎÊý½åÓÉÖ¸¶¨Ò»¶Î²»ÒªÕì²âµÄÊä³öÈë²º¡õÎ§ÒÔ½â¾ö´ËÎÊÌâ¡£
´Ë¶ÎÇøÓòÔÚºËÐÄµÄÊä³öÈë²º×¢²á±í¸ñµ±ÖÐ±»ÊÓÎªÒÑ¾­ÔÚ¸Ã´¦ÕÒµ½Éè±¸
£¨Ãû³ÆÎª {\ttfamily reserved} £©¶ø±£Áô¡£×¢Òâ£¬¾ø´ó²¿·ÝµÄ»úÆ÷¶¼²»ÐèÒª´Ë»úÖÆ¡£
Ö»ÓÐÕæµÄÓÐÎÊÌâ»òÌØÊâÇé¿ö²Å»áÐèÒªÓÃµ½Õâ¶«¶«¡£

Î»ì¶Ö¸¶¨Ö®ÇøÓòÖÐµÄÊä³öÈë²ºÄËÊÇ¿¿ÖøÔÚÕì²âÒ»¶ÎÊä³öÈëÇøÓòÖ®Ç°ÏÈÖ´ÐÐ
{\ttfamily check\_region()} ÒÔ±ÜÃâÉè±¸Õì²â¡£
ÕâÓÃì¶Ä³Ð©ÓöÉÏ NE2000 »á¹Òµô»òÕß»áÎóÈÏÆäËüÉè±¸µÄÇý¶¯³ÌÊ½¡£

ÕýÈ·µÄÉè±¸Çý¶¯³ÌÊ½²»Ó¦¸ÃÈ¥Õì²â±£ÁôÇøÓò£¬³ý·ÇÁíÒ»¸öÆô¶¯²ÎÊýÃ÷È·µØÖ¸Ê¾ËüÕâÑù×ö¡£
ÕâÒâÎ½Öø {\ttfamily reserve} ¾­³£ÓëÆäËüÆô¶¯²ÎÊýÒ»ÆðÊ¹ÓÃ¡£
Èç¹ûÄãÖ¸¶¨Ò»¶Î{\ttfamily ±£Áô}ÇøÓòÒÔ±£»¤Ä³ÌØ¶¨Éè±¸µÄ»°£¬
Äã±ØÐëÃ÷È·µØÖ¸¶¨´ËÉè±¸µÄÕì²â¡õÎ§£¬
´ó²¿·ÝµÄÇý¶¯³ÌÊ½Èç¹ûÓÐ¸øËüÃÇÃ÷È·µÄÎ»Ö·¾Í»áºöÂÔÊä³öÈë²º×¢²á±í¡£

ÀýÈç£¬´ËÆô¶¯ÁÐ

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        reserve=0x300,32  blah=0x300
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


±£Áô {\ttfamily 0x300-0x31f} ²»ÈÃ³ýÁË `blah'
µÄÉè±¸Çý¶¯³ÌÊ½ÍâµÄËùÓÐÇý¶¯³ÌÊ½È¥Õì²à¡£

ÈçÍ¬Ò»°ãÆô¶¯Ê±ÆÚËùÓÃµÄ¸ñÊ½£¬ËüÒ²ÓÐ 11 ¸ö²ÎÊýÖ®ÏÞÖÆ£¬
Òò´ËÃ¿¸ö {\ttfamily reserve} ¹Ø¼ü×ÖÖ»ÄÜÖ¸¶¨ 5 ¸ö±£ÁôÇøÓò¡£
Èç¹ûÄãÓÐÒì³£¸´ÔÓµÄÐèÇó£¬¿ÉÒÔÊ¹ÓÃ¶àÖØ {\ttfamily reserve} Ö¸¶¨¡£




\subsubsection{`vga=' ²ÎÊý}



×¢Òâ£¬Õâ²¢²»ÕæµÄÊÇ¸öÆô¶¯²ÎÊý¡£ËüÊÇÓÉ LILO ½âÒëµÄÑ¡Ïî£¬
ÓëËùÓÐÆäËüÓÉºËÐÄ´¦ÀíµÄÆô¶¯²ÎÊý²¢²»ÏàÍ¬¡£
È»¶øÒòÎªËüµÄÊ¹ÓÃ±äµÃÈç´ËÆÕ±é¹ÊÖµµÃÔÚ´Ë¼ÓÉÏÒ»±Ê¡£
Õâ¸öÑ¡ÏîÒ²¿ÉÒÔ¾­ÓÉÊ¹ÓÃ
{\ttfamily rdev -v} »òÏàÍ¬µÄ {\ttfamily vidmode} Ö¸Áî¶Ô vmlinuz µµ°¸×÷Éè¶¨¡£
ÕâÊ¹µÃÉè¶¨³ÌÊ½ÂëÄÜ¹»ÔÚÕæµÄÆô¶¯
Linux ºËÐÄÖ®Ç°Ê¹ÓÃÊÓÑ¶(video)»ù±¾Êä³öÈëÏµÍ³¸Ä±äÔ¤ÉèµÄÏÔÊ¾Ä£Ê½¡£
µäÐÍµÄÄ£Ê½ÊÇ 80x50, 132x44 µÈµÈ¡£
Ê¹ÓÃ´ËÑ¡Ïî×îºÃµÄ·½Ê½ÊÇÒÔ {\ttfamily vga=ask} Æô¶¯£¬
Èç´ËÔÚÆô¶¯ºËÐÄÇ°»áÓÐ¸öÁÐ±íÌáÊ¾ÄãµÄÏÔÊ¾¿¨¿ÉÒÔÊ¹ÓÃµÄ¸÷ÖÖÄ£Ê½¡£
Ò»µ©Äã´ÓÉÏÊöÁÐ±íµÃÖªÄãÏëÊ¹ÓÃµÄºÅÂë£¬ÒÔáá¾Í¿ÉÒÔ°ÑËü·ÅÔÚ `ask' µÄÎ»ÖÃ¡£
¸ü½øÒ»²½µÄ×ÊÑ¶Çë²ÎÔÄËæ¸½ì¶ËùÓÐÐÂ°æºËÐÄµÄ
{\ttfamily linux/Documentation/svga.txt} µµ°¸¡£

×¢Òâ£¬ÐÂµÄºËÐÄ£¨2.1 °æÒÔÉÏ£©ÓÐ¸Ä±äÏÔÊ¾Ä£Ê½µÄÉè¶¨³ÌÊ½ÂëÑ¡Ïî
{\itshape Video mode selection support\/}£¬
ËùÒÔÈç¹ûÄãÏëÊ¹ÓÃÕâ¸öÌØÐÔÄÇ÷áÄã¾ÍµÃ´ò¿ªÕâ¸öÑ¡Ïî¡£




\section{Ð¡ÐÍµçÄÔÖÇ»Û½éÃæ(SCSI)ÖÜ±ßµÄÆô¶¯²ÎÊý}



ÕâÒ»½Ú°üº¬ÓÃÀ´´«µÝÓÐ¹ØÐ¡ÐÍµçÄÔÖÇ»Û½éÃæ(SCSI)¿¨(host adapters)¼°
SCSI Éè±¸Ö®×ÊÑ¶µÄÆô¶¯²ÎÊýËµÃ÷¡£




\subsection{ÖÐ²ãÇý¶¯³ÌÊ½µÄ²ÎÊý}



ÖÐ²ãÇý¶¯³ÌÊ½´¦ÀíÏñ´Åµú£¬¹âµú¼°´Å´øµÈµÈ¶ø²»ÉîÈë½éÃæ¿¨µÄÌØÐÔ¡£




\subsubsection{×î´óÕì²âÂß¼­ºÅÂë(LUN)Êý(`max\_scsi\_luns=')}



Ã¿¸ö SCSI Éè±¸±¾ÉíÀïÃæ¶¼¿ÉÒÔ°üº¬Ò»¸ö¡®×ÓÉè±¸¡¯ºÅÂë¡£
×î³£¼ûµÄÀý×ÓÊÇÄÇÐ©Ò»´Î¿ÉÒÔ·ÅºÃ¼¸ÕÅÆ¬×ÓµÄÐÂÐÍ SCSI ¹âµú»ú¡£
Ã¿ÕÅ¹âµúÓÉÖ¸¶¨Ö®Éè±¸µÄ¡®Âß¼­ºÅÂë(Logical Unit Number: LUN)¡¯¶¨Ö·¡£
µ«´ó²¿·ÝµÄÉè±¸£¬ÏñÓ²µú»ú£¬´Å´ø»úµÈµÈ¶¼ÊÇµ¥Ò»¸öµÄÉè±¸£¬
¶øÂß¼­ºÅÂëÉèÎªÁã¡£

Ö»ÓÐÒ»¸öÂß¼­±àºÅµÄÉè±¸ÈôéíÌåÐ´µÃ²»ºÃ¾Í»á³öÎÊÌâ¡£
Ä³Ð©Éè¼Æ²»Á¼µÄ
SCSI
Éè±¸£¨¾ÉµÄÒÔ¼°¾ÍÄÇ÷áÇÉ±»ÄãÅöÉÏµÄÐÂÉè±¸£©ÎÞ·¨½ÓÊÜ²»ÎªÁãµÄÂß¼­±àºÅÕì²â¡£
ËüÃÇ»á¹ÒÔÚÄÇ£¬¶øÇÒÓÐ¿ÉÄÜ°ÑÕû¸ö SCSI »ãÁ÷ÅÅ(bus)¶¼´øÖøÒ»ÆðÅãÔá¡£

½ÏÐÂµÄºËÐÄÓÐÒ»¸öÅäÖÃÑ¡Ïî¿ÉÒÔÈÃÄãÉè¶¨ËùÒªÕì²âÖ®×î´óÂß¼­±àºÅ¡£
Ô¤ÉèÖ»Õì²âµ½Âß¼­±àºÅÁãÒÔ±ØÃâÉÏÊöÎÊÌâ¡£

ÔÚÆô¶¯Ê±Ö¸¶¨ÒªÕì²âµÄÂß¼­ºÅÂë¿ÉÒÔ¼üÈë `max\_scsi\_luns=n' ×÷ÎªÆô¶¯²ÎÊý£¬
ÆäÖÐ n ÊÇ½éì¶Ò¼µ½°ÆµÄÊý×Ö¡£
Òª±ÜÃâÉÏÊöÎÊÌâ¿ÉÒÔÊ¹ÓÃ n=1 ÒÔ±ÜÃâÕâÐ©¸öÀÃÉè±¸²»¸ßÐË¡£




\subsubsection{SCSI ´Å´øÇý¶¯³ÌÊ½µÄ²ÎÊý(`st=')}



SCSI  ´Å´øÇý¶¯³ÌÊ½µÄÄ³Ð©Æô¶¯Ê±ÆÚÅäÖÃ¿ÉÒÔ½åÓÉÊ¹ÓÃÏÂÁÐ²ÎÊý´ï³É£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        st=buf_size[,write_threshold[,max_bufs]]
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


Ç°ÃæÁ½¸öÊý×ÖµÄµ¥Î»ÊÇÇ§Î»Ôª×é¡£Ô¤ÉèµÄ {\ttfamily buf\_size} ÊÇ 32kB¡£
×î¶à¿ÉÒÔÖ¸¶¨Îª 16384kB£¬´óµÄ»ÄÃý¡£
{\ttfamily write\_threshold} »º³åÇøÈ·ÈÏËÍÖÁ´Å´øµÄÖµ£¬Ô¤ÉèÎª 30kB¡£
×î´ó»º³åÇø¸öÊýÊÓÕì²âµ½µÄ×°ÖÃÊýÁ¿¶ø¶¨£¬Ô¤ÉèÖµÎª¶þ¡£Ê¹ÓÃ¡õÀýÈç£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        st=32,30,2
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


ÍêÕûµÄÏ¸½Ú¿ÉÒÔÔÚ {\ttfamily README.st} µµ°¸ÖÐÕÒµ½£¬
Î»ì¶ºËÐÄÔ­Ê¼³ÌÊ½Âë½á¹¹(tree)µÄ {\ttfamily scsi} Ä¿Â¼Àï¡£




\subsection{SCSI ¿¨µÄ²ÎÊý}



±¾½ÚµÄ³£¼û±ê¼Ç£º

{\ttfamily iobase} --
SCSI ¿¨½ø×¤µÄµÚÒ»¸öÊä³öÈë²º¡£
ÒÔÊ®Áù½øÖÆ±íÊ¾·¨Ö¸¶¨£¬¶øÇÒÍ¨³£ÂäÔÚ {\ttfamily 0x200}  µ½ {\ttfamily 0x3ff} Ö®¼ä¡£

{\ttfamily irq} --
½éÃæ¿¨Éè¶¨Ê¹ÓÃµÄÓ²ÌåÖÐ¶Ï¡£
Æä¿ÉÓÃµÄÖµÓë½éÃæ¿¨ÓÐ¹Ø£¬
µ«Í¨³£ÊÇ 5, 7, 9, 10, 11, 12, ÒÔ¼° 15¡£ÆäËüÖµÍ¨³£ÓÉÒ»°ãµÄÖÜ±ßÉè±¸Ê¹ÓÃ£¬
ÏñÊÇ IDE Ó²µú£¬Èíµú£¬´®ÁÐ²ºµÈµÈ¡£

{\ttfamily dma} --
½éÃæ¿¨Ê¹ÓÃµÄÖ±½Ó¼ÇÒäÌå´æÈ¡(Direct Memory Access:DMA)Í¨µÀ¡£
µäÐÍÖ»ÓÃì¶¾ß»ãÁ÷ÅÅÖ÷¿Ø(bus-mastering)ÄÜÁ¦µÄ¿¨¡£
PCI ¼° VLB ½éÃæ¿¨±¾¼´¾ß»ãÁ÷ÅÅÖ÷¿Ø£¬ÇÒ²»ÐèÒªÈÎºÎ ISA Ö±½Ó¼ÇÒäÌå´æÈ¡Í¨µÀ¡£

{\ttfamily scsi-id} --
ÔÚ SCSI »ãÁ÷ÅÅÉÏ£¬½éÃæ¿¨ÓÃÀ´Ê¶±ðËü±¾ÉíµÄÊ¶±ðºÅÂë¡£
Ö»ÓÐÄ³Ð©½éÃæ¿¨ÔÊÐíÄã¸Ä±äÕâ¸öÖµ£¬´ó²¿·ÝÔò¶¼ÄÚ¶¨ÇÒÓÀ¾Ã²»±ä¡£
Í¨³£Ô¤ÉèÖµÊÇÆß£¬µ«Î÷½Ý(Seagate)ÒÔ¼° Future Domain TMC-950 ¿¨Ê¹ÓÃÁù¡£

{\ttfamily parity} --
SCSI ½éÃæ¿¨ÊÇ·ñÆÚÍûËùÁ¬½ÓµÄÉè±¸½»»»×ÊÑ¶Ê±Ìá¹©Í¬Î»¼ì²éÂë¡£
Ö¸¶¨Ò»±íÊ¾´ò¿ªÍ¬Î»¼ì²é£¬ÁãÔòÎª¹Ø±Õ¡£
Í¬ÑùµØ£¬²¢·ÇËùÓÐµÄ½éÃæ¿¨¶¼Ö§Ô®Ñ¡ÓÃÍ¬Î»¼ì²éÕâ¸öÆô¶¯²ÎÊý¡£




\subsubsection{Adaptec aha151x, aha152x, aic6260, aic6360, SB16-SCSI (`aha152x=')}



aha ±àºÅ¶ÔÕÕ¿¨¶ø aic ±àºÅ¶ÔÕÕÕâÐ©¿¨ÉÏÊµ¼ÊµÄ SCSI ¾§Æ¬£¬
°üº¬ Soundblaster-16 SCSI¡£

Õì²âÕâÐ© SCSI ¿¨µÄ³ÌÊ½ÂëÑ°ÕÒ´Ó¿¨ÉÏ°²×°½øÀ´µÄ»ù±¾Êä³öÈëÏµÍ³£¬
Èç¹ûÃ»ÓÐ£¬¾ÍÕÒ²»µ½ÄãµÄ¿¨¡£È»ááÄã¾ÍµÃÊ¹ÓÃÕâÖÖÐÍÊ½µÄÆô¶¯²ÎÊý£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}

aha152x=iobase[,irq[,scsi-id[,reconnect[,parity]]]]
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


×¢Òâ£¬Èç¹û´ËÇý¶¯³ÌÊ½±àÒëÊ±ÓÐ´ò¿ª´íÎóÕì²â£¬Ôò¿ÉÒÔÖ¸¶¨µÚÁù¸öÖµÒÔÉè¶¨Õì´í²ã¼¶¡£

ËùÓÐ²ÎÊý¶¼Èç±¾½Ú×îÇ°ÃæËùÊö£¬¶ø {\ttfamily reconnect}
ÖµÈç¹û²»ÎªÁãÔòÔÊÐíÉè±¸ÀëÏß£¯ÖØÐÂÁ¬Ïß¡£
Ê¹ÓÃ¡õÀýÈçÏÂ£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        aha152x=0x340,11,7,1
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


×¢Òâ£¬²ÎÊý±ØÐëÒÀÐòÖ¸¶¨£¬ÒâÎ½Èç¹ûÄãÏëÖ¸¶¨Í¬Î»¼ì²é£¬
ÄÇ÷áÄãÒ²µÃÖ¸¶¨ iobase, irq, scsi-id ÒÔ¼° reconnect Öµ¡£




\subsubsection{Adaptec aha154x (`aha1542=')}



ÕâÐ©ÊÇ aha154x ÏµÁÐµÄ¿¨¡£
aha1542 ÏµÁÐµÄ¿¨°å×ÓÉÏÓÐÒ»¸ö i82077 Èíµú¿ØÖÆÆ÷£¬¶ø aha1540 ÏµÁÐµÄ¿¨Ã»ÓÐ¡£

ÕâÐ©¿¨ÊÇ»ãÁ÷ÅÅÖ÷¿Ø¿¨£¬¶øÇÒÓÐ¿ÉÒÔÉè¶¨¡±¹«Æ½ÐÔ¡±µÄ²ÎÊý£¬ÓÃÀ´ÓëÆäËüÉè±¸¹²ÓÃ»ãÁ÷ÅÅ¡£
ÆäÆô¶¯²ÎÊý¿´ÆðÀ´ÏñÏÂÃæÕâÑù¡£

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        aha1542=iobase[,buson,busoff[,dmaspeed]]
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


¿ÉÓÃµÄ {\ttfamily iobase} ÖµÍ¨³£ÊÇ£º
{\ttfamily 0x130, 0x134, 0x230, 0x234, 0x330, 0x334} ÆäÖÐÖ®Ò»¡£
·Â(Clone)¿¨¿ÉÄÜÔÊÐíÊ¹ÓÃÆäËüÖµ¡£

{\ttfamily buson, busoff}
µÄÖµÊÇ¸Ã¿¨Õ¼ÓÃ¹¤Òµ±ê×¼¼Ü¹¹(ISA)»ãÁ÷ÅÅµÄºÁÃëÊý(microsecond)¡£
Ô¤ÉèÖµÊÇ 11us on, and 4us off£¬Èç´ËÆäËüµÄ¿¨
£¨ÏñÊÇ¹¤Òµ±ê×¼¼Ü¹¹½éÃæµÄ LANCE
ÒÒÌ«ÍøÂ·¿¨£©¾ÍÓÐ»ú»á´æÈ¡¹¤Òµ±ê×¼¼Ü¹¹»ãÁ÷ÅÅ¡£

{\ttfamily dmaspeed} µÄÖµÊÇ½øÐÐÖ±½Ó¼ÇÒäÌå´æÈ¡µÄËÙÂÊ£¨ÒÔ°ÙÍòÎ»Ôª×éÃ¿ÃëÎªµ¥Î»£©¡£
Ô¤ÉèÎª 5MB/s¡£
ÐÂ°æµÄ¿¨¿ÉÒÔÈÃÄã´ÓÈíÌåÅäÖÃ(soft-configuration)ÖÐÑ¡ÔñÕâ¸öÖµ£¬
½Ï¾ÉµÄ¿¨ÔòÊ¹ÓÃÌø½Ó(jumpers)¡£¼ÙÉèÄãµÄÖ÷»ú°å¹»Á¦µÄ»°¿ÉÒÔÊ¹ÓÃ 10MB/s¡£
Èç¹ûÊ¹ÓÃ 5MB/s ÒÔÉÏµÄÖµÇëÐ¡ÐÄÊÔÑé¡£




\subsubsection{Adaptec aha274x, aha284x, aic7xxx (`aic7xxx=')}



ÕâÐ©¿¨¿ÉÒÔ½ÓÊÜ´ËÖÖ¸ñÊ½µÄ²ÎÊý¡£

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        aic7xxx=extended,no_reset
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


Èç¹û {\ttfamily extended}
µÄÖµ²»ÎªÁãÔò±íÊ¾´ò¿ª¶Ô´óÈÝÁ¿´ÅµúµÄÑÓÉì×ª»»(extended translation)¡£
{\ttfamily no\_reset} ÖµÈç¹û²»ÎªÁãÔòÊÇ¸æËßÇý¶¯³ÌÊ½Æô¶¯Ê±£¬
Éè¶¨½éÃæ¿¨µÄÊ±ºò²»ÒªÖØÖÃ SCSI »ãÁ÷ÅÅ¡£




\subsubsection{AdvanSys SCSI Host Adaptors (`advansys=')}



AdvanSys  Çý¶¯³ÌÊ½×î¶àÄÜ½ÓÊÜËÄ¸öÊä³öÈëÎ»Ö·ÒÔÕì²â AdvanSys SCSI
¿¨¡£×¢Òâ£¬ÕâÐ©Öµ£¨ÈôÊ¹ÓÃµÄ»°£©ÍêÈ«²»»áÓ°Ïì EISA »òÊÇ PCI  µÄ
Õì²â¡£ËüÃÇ½öÓÃÀ´Õì²â ISA  ÒÔ¼° VLB  ½éÃæ¿¨¡£»¹ÓÐ£¬Èç¹û´ËÇý¶¯
³ÌÊ½±àÒëÊ±ÓÐ´ò¿ª´íÎóÕì²âµÄ»°£¬ÄÇ÷á´íÎóÕì²âµÄÊä³öÊä³ö²ã¼¶¿ÉÒÔ
½åÓÉ¼ÓÈë 0xdeb{[}0-f] ²ÎÊýÀ´Éè¶¨¡£




\subsubsection{Always IN2000 ½éÃæ¿¨ (`in2000=')}



¸úÆäËü SCSI ¿¨µÄÆô¶¯²ÎÊý²»Í¬£¬
IN2000 Çý¶¯³ÌÊ½Ê¹ÓÃÓÉÃÀ¹ú±ê×¼½»»»Âë(ASCII)
Ëù×é³ÉµÄÇ°ÖÃ(prefix)×Ö´®´ú±í´ó²¿·ÝµÄÕûÊý²ÎÊý¡£
ÕâÊÇÒ»·ÝÖ§Ô®ÁÐ±í£º

ioport:addr --
ÆäÖÐ addr ÊÇ¿¨£¨Í¨³£Ã»ÓÐÎ¨¶Á¼ÇÒäÌå£©µÄÊä³öÈëÎ»Ö·¡£

noreset --
Ã»ÓÐÑ¡ÓÃµÄ²ÎÊý¡£Õâ±ÜÃâÆô¶¯Ê±ÆÚµÄ SCSI »ãÁ÷ÅÅÖØÖÃ¶¯×÷¡£

nosync:x --
x ÊÇ¸öÎ»ÔªÕÚÕÖ(bitmask)£¬ÆäÖÐÇ°ÃæÆß¸öÎ»Ôª¶ÔÓ¦µ½Æß¸ö SCSI
Éè±¸
£¨µÚÁã¸öÎ»ÔªÊÇµÚÁãºÅÉè±¸£¬âÅÀàÍÆ£©¡£

Éè¶¨ÆäÖÐµÄÎ»ÔªÒÔ±ÜÃâ¶Ô¸ÃÉè±¸½øÐÐÍ¬²½(sync)Ð­ÉÌ(negotiation)¡£
Çý¶¯³ÌÊ½Ô¤ÉèÊÇ¹Ø±ÕËùÓÐÉè±¸Ö®Í¬²½¡£

period:ns --
ns ÊÇÒÔÄÎÃë(nanoseconds)Îªµ¥Î»Ö®×îÐ¡ SCSI ×ÊÁÏ´«ÊäÊ±¼äÇø¶Î
(period)¡£Ô¤ÉèÎª 500; ¿É½ÓÊÜµÄÖµÊÇ 250 µ½ 1000¡£

disconnect:x --
x = 0 ¼´¾ø²»ÔÊÐíÀëÏß£¬2 ¼´Ò»¶¨¿ÉÒÔÀëÏß¡£
x = 1 ÔòÎª¡¯ÊÊµ±¡¯Ê±¿ÉÀëÏß£¬ÕâÊÇÔ¤ÉèÖµ£¬
¶øÇÒÊÇÒ»°ãÇé¿öµÄ×î¼ÑÑ¡Ôñ¡£

debug:x
Èç¹û¶¨ÒåÁË `DEBUGGING\_ON' Ôò x
¾ÍÊÇÉè¶¨²»Í¬´íÎóÕì²âÊä³öµÄÎ»ÔªÕÚÕÖ
£­²Î¼û in2000.h ÖÐ¶¨ÒåµÄ DB\_xxx¡£

proc:x --
Èç¹û¶¨ÒåÁË `PROC\_INTERFACE' Ôò x ¾ÍÊÇ¾ö¶¨ /proc
½éÃæÔË×÷·½Ê½¼°¹¦ÄÜµÄÎ»ÔªÕÚÕÖ£­²Î¼û in2000.h ÖÐ¶¨ÒåµÄ
PR\_xxx¡£

ÏÂÃæÁÐ³öÒ»Ð©Ê¹ÓÃ¡õÀý£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        in2000=ioport:0x220,noreset
        in2000=period:250,disconnect:2,nosync:0x03
        in2000=debug:0x1e
        in2000=proc:3
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}





\subsubsection{Ê¹ÓÃ AMD AM53C974 µÄÓ²Ìå (`AM53C974=')}



ÓëÆäËüÇý¶¯³ÌÊ½²»Í¬£¬ÕâÒ»¸ö²»Ê¹ÓÃÆô¶¯²ÎÊýÀ´´«´ïÊä³öÈë²º£¬
Ó²ÌåÖÐ¶Ï»òÖ±½Ó¼ÇÒäÌå´æÈ¡Í¨µÀ¡£
£¨¼ÈÈ» AMD53C974 ÊÇ¸ö PCI Éè±¸£¬ÆäÊµÒ²²»ÐèÒª×÷ÕâÐ©Éè¶¨¡££©
È¡¶ø´úÖ®µÄÊÇÓÃÀ´´«´ï½éÃæ¿¨ÓëÉè±¸¼ä´«ÊäÄ£Ê½Óë´«ÊäÂÊµÄ²ÎÊý¡£
Õâ×îºÃÓÃ¡õÀýÀ´½âÊÍ£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        AM53C974=7,2,8,15
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


Õâ»á±»½âÊÍ³ÉÕâÑù£º¡®¶Ôì¶ SCSI-ID 7 µÄ¿ØÖÆÆ÷Óë SCSI-ID 2 µÄÉè±¸¼äÖ®Í¨Ñ¶£¬
Ê¹ÓÃ×î´ó 8MHz Ö®Í¬²½Ä£Ê½´«ÊäÂÊ¡£Ó¦Ð­ÉÌ 15 Î»Ôª×éµÄÆ«ÒÆÖµ¡£¡¯
ÏêÏ¸×ÊÁÏ¿ÉÔÚ {\ttfamily linux/drivers/scsi/README.AM53C974} µµ°¸ÀïÕÒµ½¡£




\subsubsection{BusLogic SCSI ½éÃæ¿¨Óë v1.2 µÄºËÐÄ (`buslogic=')}



ÔÚ¾É°æµÄºËÐÄÖÐ£¬ buslogic Çý¶¯³ÌÊ½Ö»½ÓÊÜÒ»¸ö²ÎÊý£¬¾ÍÊÇÊä³öÈëÎ»Ö·¡£
ËüÄÜ½ÓÊÜÏÂÁÐÖµ£º{\ttfamily 0x130, 0x140, 0x230, 0x234, 0x330, 0x334}¡£




\subsubsection{BusLogic SCSI ½éÃæ¿¨Óë v2.x µÄºËÐÄ (`BusLogic=')}



ÔÚ v2.x ºËÐÄÖÐ£¬BusLogic Çý¶¯³ÌÊ½½ÓÊÜÐí¶à²ÎÊý¡£
£¨×¢ÒâÉÏÃæµÄ´óÐ¡Ð´£»ÊÇ´óÐ´µÄ B  ÒÔ¼° L!!! £©¡£
ÏÂÃæµÄÏ¸½ÚÊÇÖ±½Ó´Ó v2.0 ºËÐÄÖÐµÄ Leonard N. Zubkoff's Çý¶¯³ÌÊ½ÄÃ¹ýÀ´µÄ¡£

Õâ¸ö BusLogic Çý¶¯³ÌÊ½µÄºËÐÄÃüÁîÁÐÊÇÓÉ "BusLogic" Çý¶¯³ÌÊ½Ê¶±ð×Ö£¬
¼ÓÉÏ¸÷¸öÒÔ¶ººÅ¸ñ¿ªµÄÑ¡ÓÃÐÔÕûÊýÐòÁÐ£¬ááÃæ¸úÖø¸÷¸öÑ¡ÓÃÐÔµÄ×Ö´®ÐòÁÐËù×é³É¡£
Ã¿ÐÐÃüÁîÁÐ¶¼ÓÃì¶Ò»ÕÅ BusLogic ¿¨£¬
ÔÚÊ¹ÓÃ¶àÕÅ BusLogic ¿¨µÄÏµÍ³ÉÏ¿ÉÒÔÊ¹ÓÃ¶à¸öÃüÁîÁÐÀ´Éè¶¨¡£

µÚÒ»¸öÕûÊýÖ¸¶¨½éÃæ¿¨ËùÔÚµÄ I/O Î»Ö·¡£Èç¹û²»Ö¸¶¨ÔòÔ¤ÉèÖµÎªÁã£¬
±íÊ¾°ÑÕâ¸ö²ÎÊýÉèÎªÔ¤ÉèÕì²âË³ÐòÖÐÕÒµ½µÄµÚÒ»ÕÅ BusLogic ¿¨¡£
Èç¹ûÔÚÃüÁîÁÐÉÏÖ¸¶¨ÁËÈÎºÎµÄ I/O Î»Ö·²ÎÊý£¬Ô¤ÉèÕì²âË³Ðò¾Í»á±»ºöÂÔ¡£

µÚ¶þ¸öÕûÊýÖ¸¶¨ÓÃì¶Ö§Ô®ØùÁÐÔË×÷(Tagged Queuing)µÄÄ¿±êÉè±¸Ö®ØùÁÐÉî¶È¡£
ØùÁÐÉî¶ÈÊÇÈÝÐíÍ¬Ê±ËÍ³öµÄ SCSI Ö¸ÁîÊý¡£Èç¹ûÃ»ÓÐÖ¸¶¨ÔòÔ¤ÉèÖµÎªÁã£¬
±íÊ¾Ê¹ÓÃ¸ù¾Ý½éÃæ¿¨µÄ×ÜØùÁÐÉî¶È¼°ÊýÄ¿£¬ÖÖÀà£¬ËÙ¶È£¬
ÒÔ¼°Õì²âÄ¿±êÉè±¸µÄÄÜÁ¦Ëù×Ô¶¯ÅÐ¶ÏµÄÖµ¡£
¶Ôì¶ÐèÒªÊ¹ÓÃ ISA ´íÎó»º³åÇø(Bounce Buffers)µÄ½éÃæ¿¨£¬
ØùÁÐÉî¶È×Ô¶¯ÉèÎª BusLogic\_TaggedQueueDepth\_BB ÒÔ±ÜÃâ DMA
´íÎó»º³å¼ÇÒäÌåµÄ¹ýÔØ¡£
²»Ö§Ô®ØùÁÐÔË×÷µÄÄ¿±êÉè±¸Ê¹ÓÃ BusLogic\_UntaggedQueueDepth ¶¨ÒåµÄØùÁÐÉî¶È¡£

µÚÈý¸öÕûÊýÖ¸¶¨»ãÁ÷ÅÅÍ£ÖÃ(Settle)Ê±¼ä£¬ÒÔÃëÎªµ¥Î»¡£
ÕâÄËÊÇÖØÖÃ½éÃæ¿¨Ê¹ SCSI »ãÁ÷ÅÅÖØÖÃµ½·¢³ö SCSI Ö¸ÁîÖ®¼äµÄÊ±¼ä¡£
Èç¹ûÃ»ÓÐÖ¸¶¨ÔòÔ¤ÉèÖµÎªÁã£¬±íÊ¾Ê¹ÓÃ BusLogic\_DefaultBusSettleTime µÄÖµ¡£

µÚËÄ¸öÕûÊýÖ¸¶¨ÇøÓòÑ¡Ïî¡£Èç¹ûÃ»ÓÐÖ¸¶¨ÔòÔ¤ÉèÖµÎªÁã¡£
×¢Òâ£¬ÇøÓòÑ¡ÏîÖ»ÓÃì¶ÌØ¶¨µÄ½éÃæ¿¨¡£

µÚÎå¸öÕûÊýÖ¸¶¨È«ÓòÑ¡Ïî¡£Èç¹ûÃ»ÓÐÖ¸¶¨£¬Ô¤ÉèÖµÎªÁã¡£
×¢Òâ£¬È«ÓòÑ¡ÏîÓ¦ÓÃì¶ËùÓÐµÄ½éÃæ¿¨¡£

×Ö´®Ñ¡ÏîÓÃÀ´Ìá¹©¶ÔØùÁÐÔË×÷£¬´íÎó»Ø¸´£¬ÒÔ¼°½éÃæ¿¨Õì²âÖ®¿ØÖÆ¡£

ØùÁÐÔË×÷µÄÖ¸¶¨ÒÔ "TQ:"  ¿ªÍ·£¬
¿ÉÒÔÃ÷È·µØÖ¸¶¨ÊÇ·ñÔÊÐíÓÐ´ËÖ§Ô®µÄÄ¿±êÉè±¸Ê¹ÓÃØùÁÐÔË×÷¡£
ÏÂÃæÊÇ¿ÉÓÃµÄÖ¸¶¨Ñ¡Ïî£º

TQ:Default --
ØùÁÐÔË×÷µÄÔÊÐíÓë·ñÒÔ BusLogic
¿¨µÄéíÌå°æ±¾ÒÔ¼°ØùÁÐÉî¶ÈµÄÖµÊÇ·ñÔÊÐí¶àÖØÖ¸Áî×÷ÎªÅÐ¶Ï»ù´¡¡£

TQ:Enable --
¶ÔËùÓÐ½ÓÔÚÕâÕÅ¿¨ÉÏµÄÄ¿±êÉè±¸´ò¿ªØùÁÐÔË×÷£¬ºöÂÔ½éÃæ¿¨éíÌå°æ±¾Ëù¼ÓÖîµÄÏÞÖÆ¡£

TQ:Disable --
¶ÔËùÓÐ½ÓÔÚÕâÕÅ¿¨ÉÏµÄÄ¿±êÉè±¸¹Ø±ÕØùÁÐÔË×÷¡£

TQ:$<$Ã¿¸öÄ¿±êµÄÉè¶¨$>$ --
¸÷±ð¿ØÖÃ¶ÔÃ¿¸öÄ¿±êÉè±¸µÄØùÁÐÔË×÷¡£
$<$Ã¿¸öÄ¿±êµÄÉè¶¨$>$ÊÇÓÉ "Y", "N", and "X"  ×ÖÔª×é³ÉµÄ´®ÁÐ¡£
"Y" ´ò¿ªØùÁÐÔË×÷£¬"N" ¹Ø±ÕØùÁÐÔË×÷£¬¶ø "X"  ½ÓÊÜÒÔéíÌå°æ±¾Îª»ù´¡µÄÔ¤ÉèÖµ¡£
µÚÒ»¸ö×ÖÔª´ú±íÄ¿±êÉè±¸ 0£¬µÚ¶þ¸ö´ú±íÉè±¸ 1£¬ÒÀ´ËÀàÍÆ£»
Èç¹û "Y", "N" and "X" ×ÖÔª´®ÁÐ²¢Î´º­¸ÇËùÓÐµÄÄ¿±êÉè±¸£¬
Î´Ö¸¶¨µÄ×ÖÔª½«±»¼ÙÉèÎª "X"¡£

×¢Òâ£¬Ã÷È·µØÖ¸¶¨ÒªÊ¹ÓÃØùÁÐÔË×÷¿ÉÄÜ»á³öÎÊÌâ£»
ÕâÖ÷ÒªÊÇ·½±ãÓÃÀ´¹Ø±Õ¶ÔÄ³Ð©Ã»ÄÜÕýÈ·Êµ×÷´Ë¹¦ÄÜÖ®Ä¿±êÉè±¸µÄØùÁÐÔË×÷¡£

´íÎó»Ø¸´²ßÂÔµÄÖ¸¶¨ÒÔ "ER:"  ¿ªÍ·£¬¿ÉÒÔÃ÷È·µØÖ¸¶¨Òò SCSI Ö¸ÁîÊ§°Ü£¬
ÎÞ·¨³É¹¦Íê³É¶øºô½Ð ResetCommand Ê±Ö´ÐÐµÄ´íÎó»Ø¸´¶¯×÷¡£
ÏÂÃæÊÇ¿ÉÓÃµÄÖ¸¶¨Ñ¡Ïî¡£

ER:Default --
´íÎó»Ø¸´ÒÀ SCSI ×ÓÏµÍ³µÄ½¨ÒéÑ¡ÔñÇ¿ÖÆÖØÖÃ(Hard
Reset)Óë»ãÁ÷ÅÅÉè±¸ÖØÖÃÆäÖÐÖ®Ò»¡£

ER:HardReset --
´íÎó»Ø¸´½«»áÆôÊ¼½éÃæ¿¨µÄÇ¿ÖÆÖØÖÃ£¬ÕâÒ²»áÒýÆð SCSI  »ãÁ÷ÅÅµÄÖØÖÃ¡£

ER:BusDeviceReset --
´íÎó»Ø¸´½«ËÍ³ö»ãÁ÷ÅÅÉè±¸ÖØÖÃÑ¶Ï¢¸øÒýÆð´íÎóµÄÄ¿±êÉè±¸¡£

Èç¹û¸ÃÄ¿±êÉè±¸ÔÙ´ÎÔì³É´íÎó»Ø¸´¶øÇÒËÍ³ö»ãÁ÷ÅÅÉè±¸ÖØÖÃÑ¶Ï¢Ö®áá¸ÃÄ¿±êÉè±¸Ã»ÓÐÒ»´Î³É¹¦Íê³É
SCSI Ö¸ÁîµÄ»°£¬
Ôò³¢ÊÔ½øÐÐÇ¿ÖÃÖØÖÃ¡£

ER:None --
´íÎó»Ø¸´½«±»¶³½á¡£
Õâ¸öÑ¡ÏîÓ¦¸ÃÖ»ÓÃì¶ SCSI
»ãÁ÷ÅÅÖØÖÃ»ò»ãÁ÷ÅÅÉè±¸ÖØÖÃ»áÊ¹Ä¿±êÉè±¸ÎÞ·¨»Ø¸´µÄÇé¿ö¡£

ER:$<$Ã¿¸öÄ¿±êµÄÉè¶¨$>$ --
´íÎó»Ø¸´½«¶ÔÃ¿¸öÄ¿±êÉè±¸½øÐÐ¸÷±ð¿ØÖÆ¡£
$<$Ã¿¸öÄ¿±êµÄÉè¶¨$>$ÊÇÓÉ "D", "H", "B", and "N" ×ÖÔªËù×é³ÉµÄ´®ÁÐ¡£
"D" Ñ¡ÔñÔ¤ÉèÖµ£¬"H" Ñ¡ÔñÇ¿ÖÃÖØÖÃ£¬"B" Ñ¡Ôñ»ãÁ÷ÅÅÉè±¸ÖØÖÃ£¬¶ø
"N"Ñ¡Ôñ²»ÖØÖÃ¡£
µÚÒ»¸ö×ÖÔª´ú±íÄ¿±êÉè±¸ 0£¬µÚ¶þ¸ö´ú±íÉè±¸ 1£¬ÒÀ´ËÀàÍÆ£»
Èç¹û "D", "H" , "B" and "N" ×ÖÔª´®ÁÐ²¢Î´º­¸ÇËùÓÐµÄÄ¿±êÉè±¸£¬
Î´Ö¸¶¨µÄ×ÖÔª½«±»¼ÙÉèÎª "X"¡£

½éÃæ¿¨Õì²âµÄÖ¸¶¨°üº¬ÏÂÁÐ×Ö´®£º

NoProbe --
²»Ö´ÐÐÈÎºÎÒ»ÖÖÕì²â£¬Òò´Ë²»»áÕì²âµ½ BusLogic ½éÃæ¿¨¡£

NoProbeISA --
²»Õì²â±ê×¼ ISA I/O Î»Ö·£¬Òò´ËÖ»»áÕì²âµ½ PCI ½éÃæ¿¨¡£

NoSortPCI --
ÒÀ PCI BIOS ËùÌá¹©µÄË³ÐòÁÐ¾Ù PCI ½éÃæ¿¨£¬
ºöÂÔÈÎºÎ AutoSCSI "Use Bus And Device \# For PCI Scanning Seq."
Ñ¡ÏîµÄÉè¶¨¡£




\subsubsection{EATA SCSI ½éÃæ¿¨ (`eata=')}



ÐÂµÄ v2.0 ºËÐÄÖ® EATA Çý¶¯³ÌÊ½ÄÜ½ÓÊÜÒ»¸öÆô¶¯²ÎÊýÖ¸¶¨ËùÒªÕì²âµÄÊä³öÈëÎ»Ö·¡£
¸ñÊ½Îª£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}

eata=iobase1[,iobase2][,iobase3]...[,iobaseN]
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


´ËÇý¶¯³ÌÊ½»áÒÀËùÁÐË³ÐòÕì²âÕâÐ©Î»Ö·¡£




\subsubsection{Future Domain TMC-8xx, TMC-950 (`tmc8xx=')}



Õì²âÕâÐ© SCSI ¿¨µÄ³ÌÊ½ÂëÑ°ÕÒ´Ó¿¨ÉÏ°²×°½øÀ´µÄ»ù±¾Êä³öÈëÏµÍ³£¬
Èç¹ûÃ»ÓÐ£¬¾ÍÕÒ²»µ½ÄãµÄ¿¨¡£
»òÕß£¬Èç¹û BIOS µÄÇ©ÕÂ(signature)×Ö´®²»±»ÈÏ¿ÉÄÇ÷áÒ²»áÕÒ²»µ½¡£
²»¹ÜÊÇÄÇÒ»ÖÖÇé¿ö£¬Äã¶¼µÃÊ¹ÓÃÕâÖÖÐÍÊ½µÄÆô¶¯²ÎÊý£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        tmc8xx=mem_base,irq
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


{\ttfamily mem\_base} µÄÖµÊÇ½çÃæ¿¨Ê¹ÓÃµÄ¼ÇÒäÌå¶ÔÓ³(memory mapped)Êä³öÈëÇøÓòµÄÖµ¡£
´ËÖµÍ¨³£»áÊÇÏÂÁÐÆäÖÐÖ®Ò»£º
{\ttfamily 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000}¡£




\subsubsection{Future Domain TMC-16xx, TMC-3260, AHA-2920 (`fdomain=')}



Õâ¸öÇý¶¯³ÌÊ½¸ù¾ÝÒ»·ÝÒÑÖª»ù±¾Êä³öÈëÏµÍ³Î¨¶Á¼ÇÒäÌåÇ©ÕÂÁÐ±íÕì²âÕâÐ©½éÃæ¿¨¡£
ÍêÕûµÄÁÐ±íÇë²Î¼û {\ttfamily linux/drivers/scsi/fdomain.c}£¬
¸ÃµµÇ°ÃæÓÐÐí¶à×ÊÑ¶¡£
Èç¹û´ËÇý¶¯³ÌÊ½²»ÈÏµÃÄãµÄ»ù±¾Êä³öÈëÏµÍ³£¬Äã¿ÉÒÔÊ¹ÓÃÕâÖÖ¸ñÊ½±ä¸ü£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        fdomain=iobase,irq[,scsi_id]
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}





\subsubsection{IOMEGA Parallel Port / ZIP drive (`ppa=')}



Õâ¸öÇý¶¯³ÌÊ½ÓÃì¶ IOMEGA ZIP ´Åµú¸½µÄ IOMEGA ²¢ÁÐ²º SCSI ¿¨¡£
ËüÒ²¿ÉÒÔÅäºÏÔ­ÏÈµÄ IOMEGA PPA3 Éè±¸Ê¹ÓÃ¡£
´ËÇý¶¯³ÌÊ½µÄÆô¶¯²ÎÊý¸ñÊ½Îª£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        ppa=iobase,speed_high,speed_low,nybble
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


³ýÁË iobase Ö®ÍâÆäâÅ½ÔÎªÑ¡ÓÃÖµ¡£Èç¹ûÄãÏë¸Ä±äÕâÈý¸öÑ¡ÓÃ²ÎÊýÖÐµÄÈÎºÎÒ»¸ö£¬
½¨ÒéÄã¶Á¶Á {\ttfamily linux/drivers/scsi/README.ppa}
ÖÐÓÐ¹ØËüÃÇ¿ØÖÆÐ©Ê²÷áµÄÏ¸½Ú¡£




\subsubsection{NCR5380 based controllers (`ncr5380=')}



¸úÄãµÄ½éÃæ¿¨ÓÐ¹Ø£¬ 5380 µÄÐÍÊ½¿ÉÒÔÊÇÊä³öÈë¶ÔÓ¦»ò¼ÇÒäÌå¶ÔÓ¦¡£
£¨µÍì¶ 0x400 µÄÎ»Ö·ÒâÎ½ÖøÊä³öÈë¶ÔÓ¦£¬
µ« PCI ÒÔ¼° EISA Ó²ÌåÊ¹ÓÃ 0x3ff ÒÔÉÏµÄÊä³öÈëÎ»Ö·¡££©²»¹ÜÊÇÄÇÒ»ÖÖÇé¿ö£¬
Äã¶¼ÊÇÖ¸¶¨Î»Ö·£¬Ó²ÌåÖÐ¶ÏÒÔ¼°Ö±½Ó¼ÇÒäÌå´æÈ¡Í¨µÀµÄÖµ¡£
Êä³öÈë¶ÔÓ¦½éÃæ¿¨µÄ¡õÀýÏñÊÇ£º {\ttfamily ncr5380=0x350,5,3}¡£
Èç¹û¸Ã¿¨²»Ê¹ÓÃÖÐ¶Ï£¬ÄÇ÷á 255({\ttfamily 0xff})Õâ¸öÓ²ÌåÖÐ¶ÏÖµ»á¹Ø±ÕÖÐ¶ÏµÄÊ¹ÓÃ¡£
254 Õâ¸öÓ¦ÌåÖÐ¶ÏÖµ±í×Ô¶¯Õì²â¡£
¸üÏ¸½ÚµÄ×ÊÑ¶¿ÉÒÔÔÚ {\ttfamily linux/drivers/scsi/README.g\_NCR5380}
Õâ¸öµµ°¸ÀïÕÒµ½¡£




\subsubsection{NCR53c400 based controllers (`ncr53c400=')}



±ê×¼ 53c400 µÄÖ§Ô®ÊÇÓÉÓëÉÏÊö±ê×¼ 5380 Ö®Ö§Ô®ÏàÍ¬µÄÇý¶¯³ÌÊ½ËùÌá¹©¡£
Æô¶¯²ÎÊýÓëÉÏÊöÍêÈ«ÏàÍ¬£¬³ýÁË 53c400 ²»Ê¹ÓÃÖ±½Ó¼ÇÒäÌå´æÈ¡Ö®Íâ¡£




\subsubsection{NCR53c406a based controllers (`ncr53c406a=')}



´ËÇý¶¯³ÌÊ½Ê¹ÓÃÕâÖÖ¸ñÊ½µÄÆô¶¯²ÎÊý£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        ncr53c406a=PORTBASE,IRQ,FASTPIO
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


ÆäÖÐ IRQ ÒÔ¼° FASTPIO ²ÎÊýÎªÑ¡ÓÃÏî¡£ÖÐ¶ÏÖµÁã¹Ø±ÕÖÐ¶ÏÖ®Ê¹ÓÃ¡£
Ê¹ÓÃÒ»Óë FASTPIO ²ÎÊýÆôÓÃ {\ttfamily insl} ÒÔ¼° {\ttfamily outsl} Ö¸ÁîÒÔÈ¡´úÒ»¸öÎ»Ôª×éµÄ
{\ttfamily inb} ÒÔ¼° {\ttfamily outb} Ö¸Áî¡£
´ËÇý¶¯³ÌÊ½Ò²¿ÉÒÔÓÉ±àÒëÊ±ÆÚÑ¡ÏîÉè¶¨Ê¹ÓÃÖ±½Ó¼ÇÒäÌå´æÈ¡¡£




\subsubsection{Pro Audio Spectrum (`pas16=')}



PAS16 Ê¹ÓÃ NCR5380 SCSI ¾§Æ¬£¬ÐÂ¿î»¹Ö§Ô®ÎÞÌø½ÓÅäÖÃ¡£Æô¶¯²ÎÊýµÄ¸ñÊ½Îª£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        pas16=iobase,irq
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


Î¨Ò»µÄ²»Í¬ÊÇÄã¿ÉÒÔÖ¸¶¨ 255 Õâ¸öÓ²ÌåÖÐ¶ÏÖµ£¬
Õâ»á¸æËßÇý¶¯³ÌÊ½²»ÒªÊ¹ÓÃÖÐ¶Ï£¬È»Ð§ÄÜ»á½µµÍ¡£
{\ttfamily iobase} Í¨³£ÊÇ {\ttfamily 0x388}¡£




\subsubsection{Seagate ST-0x (`st0x=')}



Õì²âÕâÐ© SCSI ¿¨µÄ³ÌÊ½ÂëÑ°ÕÒ´Ó¿¨ÉÏ°²×°½øÀ´µÄ»ù±¾Êä³öÈëÏµÍ³£¬
Èç¹ûÃ»ÓÐ£¬¾ÍÕÒ²»µ½ÄãµÄ¿¨¡£»òÕß£¬Èç¹û BIOS
µÄÇ©ÕÂ×Ö´®²»±»ÈÏ¿ÉÄÇ÷áÒ²»áÕÒ²»µ½¡£
²»¹ÜÊÇÄÇÒ»ÖÖÇé¿ö£¬Äã¶¼µÃÊ¹ÓÃÕâÖÖÐÍÊ½µÄÆô¶¯²ÎÊý£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        st0x=mem_base,irq
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


{\ttfamily mem\_base} µÄÖµÊÇ½çÃæ¿¨Ê¹ÓÃµÄ¼ÇÒäÌå¶ÔÓ³(memory mapped)Êä³öÈëÇøÓòµÄÖµ¡£
´ËÖµÍ¨³£»áÊÇÏÂÁÐÆäÖÐÖ®Ò»£º
{\ttfamily 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000}¡£




\subsubsection{Trantor T128 (`t128=')}



ÕâÐ©½éÃæ¿¨Ò²ÊÇÒÔ NCR5380 ¾§Æ¬Îª»ù´¡£¬½ÓÊÜÏÂÁÐÑ¡Ïî£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        t128=mem_base,irq
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


The valid values for {\ttfamily mem\_base} are as follows:
{\ttfamily 0xcc000, 0xc8000, 0xdc000, 0xd8000}.
¿ÉÓÃì¶ {\ttfamily mem\_base} µÄÖµÈçÏÂ£º
{\ttfamily 0xcc000, 0xc8000, 0xdc000, 0xd8000}¡£




\subsubsection{Ultrastor SCSI cards (`u14-34f=')}



×¢Òâ£¬´Ë¿¨ÓÐÁ½¸ö»¥Ïà¶ÀÁ¢µÄÇý¶¯³ÌÊ½£¬ÃûÎª {\ttfamily CONFIG\_SCSI\_U14\_34F} ÕßÊ¹ÓÃ
{\ttfamily u14-34f.c} ¶ø {\ttfamily CONFIG\_SCSI\_ULTRASTORE} Ê¹ÓÃ {\ttfamily ultrastor.c}¡£
u14-34f ÕâÒ»¸ö£¨ÐÂµÄ v2.0 ºËÐÄÓÃËü£©½ÓÊÜÒ»¸ö¸ñÊ½ÈçÏÂµÄÆô¶¯²ÎÊý£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}

u14-34f=iobase1[,iobase2][,iobase3]...[,iobaseN]
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


´ËÇý¶¯³ÌÊ½»áÒÀËùÁÐË³ÐòÕì²âÕâÐ©Î»Ö·¡£




\subsubsection{Western Digital WD7000 cards (`wd7000=')}



Õâ¸öÇý¶¯³ÌÊ½Ñ°ÕÒËüËùÖªµÀµÄ»ù±¾Êä³öÈëÏµÍ³Î¨¶Á¼ÇÒäÌå×Ö´®À´Õì²â
wd7000 ²¢ÇÒÖªµÀÊý¸ö±ê×¼µÄÅäÖÃÉè¶¨¡£
Èç¹ûËüÃ»ÄÜÓÃÕýÈ·µÄÖµ¶¯ÆðÀ´£¬»ò²»ÈÏµÃÄãµÄ»ù±¾Êä³öÈëÏµÍ³°æ±¾£¬
ÄÇ÷áÄã¿ÉÒÔÊ¹ÓÃÕâÖÖ¸ñÊ½µÄÆô¶¯²ÎÊý¡£

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        wd7000=irq,dma,iobase
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}







\subsection{²»½ÓÊÜÆô¶¯²ÎÊýµÄ SCSI ¿¨}



Ä¿Ç°ÎªÖ¹£¬ÏÂÁÐ SCSI ½éÃæ¿¨²»Ê¹ÓÃÈÎºÎÆô¶¯Ê±ÆÚ²ÎÊý¡£ÔÚÄ³Ð©Çé¿öÏÂ£¬
Äã¿ÉÒÔÖ±½Ó±à¼­Çý¶¯³ÌÊ½±¾Éí°ÑÖµ{\itshape Ð´ËÀ(hard-wire)\/}½øÈ¥£¬Èç¹ûÕæµÄ±ØÒªµÄ»°¡£

\begin{verbatim}
        Adaptec aha1740 (EISA probing),
        NCR53c7xx,8xx (PCI, both drivers)
        Qlogic Fast (0x230, 0x330)
        Qlogic ISP (PCI)
\end{verbatim}





\section{Ó²µú»ú}



ÕâÒ»½ÚÁÐ³öËùÓÐÓë±ê×¼ MFM/RLL, ST-506, XT, ÒÔ¼° IDE  ´Åµú»úÏà¹ØµÄÆô¶¯²ÎÊý¡£
×¢Òâ£¬IDE ÒÔ¼°ÏÈÇ°µÄ ST-506 Ó²µúÇý¶¯³ÌÊ½¶¼½ÓÊÜ `hd=' Ñ¡Ïî¡£




\subsection{IDE ´Åµú£¯¹âµúÇý¶¯³ÌÊ½²ÎÊý}



IDE Çý¶¯³ÌÊ½½ÓÊÜ¼¸¸ö²ÎÊý£¬
º­¸Ç¡õÎ§´Ó´Åµú¹æ¸ñ(geometry)µ½ÏÈ½ø»ò²»Á¼Ö®¿ØÖÆÆ÷µÄÖ§Ô®¡£
µ×ÏÂÊÇËùÓÐ¿ÉÓÃÖ®Æô¶¯²ÎÊýµÄÕªÒª¡£
ÒªÖªµÀÍêÕûµÄÏ¸½Ú£¬
Äã{\itshape ÕæµÄ\/}Ó¦¸ÃÈ¥²éÔÄÔÚ {\ttfamily linux/Documentation}
Ä¿Â¼ÏÂµÄ {\ttfamily ide.txt} µµ£¬
Õâ¸öÕªÒªÊÇ´ÓÖÐÕªÂ¼³öÀ´µÄ¡£

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}

 "hdx="  ´Ó "a" µ½ "h" ËùÓÐµÄ "x" ¶¼³ÐÈÏ£¬ÏñÊÇ "hdc" ¡£
 "idex=" ´Ó "0" µ½ "3" ËùÓÐµÄ "x" ¶¼³ÐÈÏ£¬ÏñÊÇ "ide1"¡£

 "hdx=noprobe"          : Ò²ÐíµÄÈ·ÓÐ¸ö´ÅµúÔÚÄÇ¶ù£¬µ«²»ÒªÈ¥Õì²â
 "hdx=none"             : ÕâÀïÃ»ÓÐ´Åµú£¬ºöÂÔ cmos ÇÒ²»ÒªÈ¥Õì²â
 "hdx=nowerr"           : ºöÂÔÕâ¸ö´ÅµúµÄ WRERR_STAT Î»Ôª
 "hdx=cdrom"            : ÕâÀïÓÐ¸ö´Åµú£¬¶øÇÒÊÇ¸ö¹âµú»ú
 "hdx=cyl,head,sect"    : ÕâÀïÓÐ¸ö´Åµú£¬²¢Ö¸¶¨´Åµú¹æ¸ñ
 "hdx=autotune"         : Çý¶¯³ÌÊ½½«ÊÔÖø°Ñ½éÃæËÙ¶Èµ÷µ½Ö§Ô®Ö®
                                ×î¿ì¿É³ÌÊ½»¯Êä³öÈë(PIO) Ä£Ê½
                                £¬´Ë´ÅµúÄÜ½ÓÊÜ²ÅÐÐ¡£²¢·ÇËùÓÐ
                                ¾§Æ¬×éÖÖÀà¶¼ÓÐÍêÕûÖ§Ô®£¬²¢ÇÒ
                                ºÜ¿ÉÄÜÊ¹¾ÉµÄ£¯Ææ¹ÖµÄ IDE  ´Å
                                µú³öÎÊÌâ¡£
 "idex=noprobe"         : ²»Òª³¢ÊÔ´æÈ¡£¯Ê¹ÓÃÕâ¸ö½éÃæ
 "idex=base"            : ÔÚÖ¸¶¨µÄÎ»Ö·Õì²â½éÃæ£¬ÆäÖÐ "base"
                                Í¨³£ÊÇ 0x1f0  »òÊÇ 0x170  ÇÒ
                                ¼ÙÉè "ctl"  ÊÇ "base"+0x206
 "idex=base,ctl"        : Ö¸¶¨ base ÒÔ¼° ctl
 "idex=base,ctl,irq"    : Ö¸¶¨ base, ctl, ÒÔ¼° irq  ÊýÖµ
 "idex=autotune"        : Çý¶¯³ÌÊ½½«ÊÔÖø°Ñ½éÃæËÙ¶Èµ÷µ½Ö§Ô®Ö®
                                ×î¿ì¿É³ÌÊ½»¯Êä³öÈë(PIO) Ä£Ê½
                                £¬´Ë´ÅµúÄÜ½ÓÊÜ²ÅÐÐ¡£²¢·ÇËùÓÐ
                                ¾§Æ¬×éÖÖÀà¶¼ÓÐÍêÕûÖ§Ô®£¬²¢ÇÒ
                                ºÜ¿ÉÄÜÊ¹¾ÉµÄ£¯Ææ¹ÖµÄ IDE  ´Å
                                µú³öÎÊÌâ¡£
 "idex=noautotune"      : Çý¶¯³ÌÊ½½«²»»áÊÔÖøµ÷Õû½éÃæËÙ¶È¡£³ý
                                ÁË cmd640 Ö®Íâ£¬ÕâÊÇ´ó²¿·Ý¾§
                                Æ¬×éµÄÔ¤ÉèÖµ¡£
 "idex=serialize"       : ²»ÖØµþ¶Ô(overlap) idex ¼° ide(x^1)
                                µÄ²Ù×÷
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


ÏÂÁÐ²ÎÊýÖ»ÔÊÐíÓÃì¶ ide0£¬
ÇÒÔ¤ÉèµÄ base, ctl ÒÔ¼° ports ²»ÄÜÐÞ¸Ä¡£

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}

 "ide0=dtc2278"         : Õì²â£¯Ö§Ô® DTC2278 ½éÃæ
 "ide0=ht6560b"         : Õì²â£¯Ö§Ô® HT6560B ½éÃæ
 "ide0=cmd640_vlb"      : Ê¹ÓÃ CMD640 ¾§Æ¬µÄ VLB  ½éÃæ¿¨
                          £ª±ØÐë£ª¼ÓÈëÕâ¸ö²ÎÊý£¨PCI µÄÔò
                          ²»±Ø -- ×Ô¶¯Õì²â£©
 "ide0=qd6580"          : Õì²â£¯Ö§Ô® qd580 ½éÃæ
 "ide0=ali14xx"         : Õì²â£¯Ö§Ô® ali14xx ¾§Æ¬×é (ALI M1439/M1445)
 "ide0=umc8672"         : Õì²â£¯Ö§Ô® umc8672 ¾§Æ¬×é
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


Ê¹ÓÃÈÎºÎÆäËüµÄ¶«¶«¶¼»á±»¾Ü¾ø²¢µÃµ½Ò»¸ö "BAD OPTION" Ñ¶Ï¢¡£




\subsection{±ê×¼ ST-506 ´ÅµúÇý¶¯³ÌÊ½Ñ¡Ïî(`hd=')}



±ê×¼´ÅµúÇý¶¯³ÌÊ½¿ÉÒÔ½ÓÊÜ´ÅµúÂß¼­¹æ¸ñ²ÎÊý£¬
ÕâÓë IDE Çý¶¯³ÌÊ½ÏàËÆ¡£×¢Òâ£¬
ÎÞÂÛÈçºÎËüÖ»Ï£Íû½ÓÊÜÈý¸öÖµ (C/H/S) -- ¹ý¶à»ò¹ýÉÙËü¶¼»áÄ¬Ä¬µØºöÂÔµô¡£
Í¬Ê±ËüÖ»½ÓÊÜ `hd=' ²ÎÊý£¬Ïñ `hda', `hdb=' ÕâÀàµÄÔÚ´Ë¶¼²»±»ÔÊÐí¡£
Æä¸ñÊ½ÈçÏÂ£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        hd=cyls,heads,sects
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


Èç¹û×°ÓÐÁ½¸ö´Åµú£¬¾ÍÊ¹ÓÃµÚ¶þ¿Å´ÅµúµÄ¹æ¸ñÖØ¸²ÉÏÊöÖ¸Áî¡£




\subsection{XT Disk Driver Options (`xd=')}



Èç¹ûÄã²»ÐÒµ½µÃÒªÊ¹ÓÃÕâÐ©¾ÉµÄ¡¢8 Î»Ôª¡¢
ÒÔ¾ªÈËµÄ 125kb/s ËÙ¶È°áÒÆ×ÊÁÏµÄ½éÃæ¿¨ÄÇ÷áÕâ½ÚÊÇÄãµÄ¶ÀÃÅ½âÒ©¡£
Õì²âÕâÐ©¿¨µÄ³ÌÊ½ÂëÑ°ÕÒ´Ó¿¨ÉÏ°²×°½øÀ´µÄ»ù±¾Êä³öÈëÏµÍ³£¬
Èç¹ûÃ»ÓÐ£¬¾ÍÕÒ²»µ½ÄãµÄ¿¨¡£»òÕß£¬Èç¹û BIOS
µÄÇ©ÕÂ×Ö´®²»±»ÈÏ¿ÉÄÇ÷áÒ²»áÕÒ²»µ½¡£
²»¹ÜÊÇÄÇÒ»ÖÖÇé¿ö£¬Äã¶¼µÃÊ¹ÓÃÕâÖÖÐÍÊ½µÄÆô¶¯²ÎÊý£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        xd=type,irq,iobase,dma_chan
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


ÆäÖÐ {\ttfamily type} ÖµÖ¸Ê¾¸Ã½éÃæ¿¨µÄÖÆÔìÉÌ£¬
ÈçÏÂ£º 0=generic; 1=DTC; 2,3,4=Western Digital, 5,6,7=Seagate; 8=OMTI¡£
Í¬Ò»¼ÒÖÆÔìÉÌÖÖÀàÖ®¼äµÄ²»Í¬½öÖ¹ì¶ÓÃÀ´Õì²âµÄ»ù±¾Êä³öÈëÏµÍ³×Ö´®£¬
Õâ¸ö¶«¶«ÈôÖ¸¶¨ type ¾Í»á²»Ê¹ÓÃ¡£

ÕâÐ©Öµ {\ttfamily xd\_setup()} º¯Ê½²»»áÈ¥¼ì²é£¬²¢ÇÒ¼ÙÉèÄãÊäÈëËùÓÐ¹²ËÄ¸öÖµ¡£
±ðÈÃËüÊ§Íû¡£Õâ¶ùÓÐ¸ö¡õÀýÊ¹ÓÃ WD1002 ¿ØÖÆÆ÷²¢¹Ø±Õ£¯°Îµô»ù±¾Êä³öÈëÏµÍ³£¬
Ê¹ÓÃ¡®Ô¤ÉèµÄ¡¯XT ¿ØÖÆÆ÷²ÎÊý£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        xd=2,5,0x320,3
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}





\section{¹âµú»ú (Non-SCSI/ATAPI/IDE)}



ÕâÒ»½ÚÁÐ³öÊôì¶¹âµúÉè±¸ËùÓÐ¿ÉÄÜµÄÆô¶¯²ÎÊý¡£
×¢Òâ£¬Õâ²»°üº¬ SCSI »òÊÇ IDE/ATAPI ¹âµú»ú¡£
ÕâÐ©¹âµú»úÇë²ÎÔÄÆäËüÊÊµ±µÄÕÂ½Ú¡£

×¢Òâ£¬´ó²¿·Ý¹âµú»ú¶¼ÓÐÐ©ÎÄ¼þµµ{\itshape ÖµµÃ\/}Ò»¶Á£¬
¶øÇÒËüÃÇ¶¼·ÅÔÚÒ»¸öºÜÈÝÒ×È¡µÃµÄµØ·½£º{\ttfamily linux/Documentation/cdrom}¡£




\subsection{Aztech ½éÃæ (`aztcd=')}



ÕâÖÖ½éÃæ¿¨µÄÓï·¨ÊÇ£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        aztcd=iobase[,magic_number]
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


Èç¹ûÄã½« {\ttfamily magic\_number} ÉèÎª {\ttfamily 0x79}
ÄÇ÷á´ËÇý¶¯³ÌÊ½²»¹ÜÈýÆß¶þÊ®Ò»¶¼»áÊÔÖøÔÚÎ´ÖªµÄéíÌå°æ±¾ÉÏÅÜ¡£
ËùÓÐÆäËüµÄÖµ¶¼»á±»ºöÂÔ¡£




\subsection{CDU-31A ÒÔ¼° CDU-33A Sony ½éÃæ (`cdu31a=')}



´Ë¹âµú»ú½éÃæ³öÏÖÔÚ²¿·Ý Pro Audio Spectrum ÒôÐ§¿¨ÒÔ¼°ÆäËü Sony
³ö²úµÄ½éÃæ¿¨ÉÏ¡£Óï·¨ÈçÏÂ£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        cdu31a=iobase,[irq[,is_pas_card]]
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


Ö¸¶¨Áã×÷Îª IRQ Öµ¸æËß´ËÇý¶¯³ÌÊ½²»Ö§Ô®Ó²ÌåÖÐ¶Ï£¨Ä³Ð© PAS µÄ¿¨£©¡£
Èç¹ûÄãµÄ¿¨Ö§Ô®ÖÐ¶Ï£¬Ó¦¸ÃÊ¹ÓÃÖ®ÒÔ½µµÍ´ËÇý¶¯³ÌÊ½µÄÖÐÑë´¦ÀíÆ÷Ê¹ÓÃÂÊ¡£

Èç¹ûÊ¹ÓÃ Pro Audio Spectrum µÄ½éÃæ¿¨Ôò `is\_pas\_card' À¸Ó¦¸ÃÊäÈë `PAS'£¬
Èô·ñ¾Í²»Ó¦¸ÃÊ¹ÓÃ¡£




\subsection{CDU-535 Sony ½éÃæ (`sonycd535=')}



ÕâÖÖ¹âµú»ú½éÃæ¿¨µÄÓï·¨ÊÇ£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        sonycd535=iobase[,irq]
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


Èç¹ûÄãÏëÖ¸¶¨ IRQ Öµ£¬Êä³öÈëÎ»Ö·¿ÉÒÔÌîÈëÁãÀ´Õ¼Î»ÖÃ(placeholder)¡£




\subsection{GoldStar ½éÃæ (`gscd=')}



ÕâÖÖ¹âµú»ú½éÃæ¿¨µÄÓï·¨ÊÇ£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        gscd=iobase
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}





\subsection{ISP16 ½éÃæ (`isp16=')}



ÕâÖÖ¹âµú»ú½éÃæ¿¨µÄÓï·¨ÊÇ£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}

isp16=[port[,irq[,dma]]][[,]drive_type]
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


Ê¹ÓÃÁã×÷Îª {\ttfamily irq} or {\ttfamily dma} ±íÊ¾²»Ê¹ÓÃ¸Ã¹¦ÄÜ¡£
¿ÉÓÃì¶ {\ttfamily drive\_type} µÄÖµÊÇ {\ttfamily noisp16, Sanyo, Pansonic, Sony,}
and {\ttfamily Mitsumi}¡£Ê¹ÓÃ {\ttfamily noisp16} »á³¹µ×¹ØµôÕâ¸öÇý¶¯³ÌÊ½¡£




\subsection{Mitsumi ±ê×¼½éÃæ (`mcd=')}



ÕâÖÖ¹âµú»ú½éÃæ¿¨µÄÓï·¨ÊÇ£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        mcd=iobase,[irq[,wait_value]]
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


ÆäÖÐ {\ttfamily wait\_value} ÊÇ×÷ÎªÄÚ²¿µÄÓâÊ±Éè¶¨£¬ÓÃÔÚÄÇÐ©²»Ìý»°µÄ»ú×ÓÉÏ£¬
Õâ¸ö¹¦ÄÜÊÇ·ñÓÐÊµ×÷ÊÇÒÀ±àÒëÊ±ÆÚµÄ{\ttfamily ¶¨ÒåÖµ}¶ø¶¨¡£




\subsection{Mitsumi XA/MultiSession ½éÃæ (`mcdx=')}



Ä¿Ç°ÎªÖ¹£¬´Ë¡®ÊµÑéÐÔ¡¯µÄÇý¶¯³ÌÊ½ÓÐ¸öÉè¶¨º¯Ê½£¬
µ«²¢Î´Êµ×÷ÈÎºÎ²ÎÊý(as of 1.3.15)¡£ËüÓÃì¶ÓëÉÏÊöÇý¶¯³ÌÊ½ÏàÍ¬µÄÓ²Ìå£¬
µ«´ËÇý¶¯³ÌÊ½¾ßÓÐ¸ü¶à¹¦ÄÜ¡£




\subsection{Optics Storage ½éÃæ (`optcd=')}



ÕâÖÖ½éÃæ¿¨µÄÓï·¨ÊÇ£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        optcd=iobase
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}





\subsection{Phillips CM206 ½éÃæ (`cm206=')}



ÕâÖÖ½éÃæ¿¨µÄÓï·¨ÊÇ£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        cm206=[iobase][,irq]
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


Õâ¸öÇý¶¯³ÌÊ½¼ÙÉè½éì¶ 3 µ½ 11 Ö®¼äÊý×ÖÊÇ IRQ Öµ£¬
¶ø {\ttfamily 0x300} µ½ {\ttfamily 0x370} Ö®¼äµÄÊý×ÖÔòÊÇÊä³öÈë²º£¬
ËùÒÔÄã¿ÉÒÔÖ»Ö¸¶¨Ò»¸öÖµ»ò¶þ¸ö¶¼Ö¸¶¨£¬Ë³ÐòËæÒâ¡£
ËüÒ²½ÓÊÜ `cm206=auto' ÒÔ´ò¿ª×Ô¶¯Õì²â¡£




\subsection{Sanyo ½éÃæ (`sjcd=')}



ÕâÖÖ½éÃæ¿¨µÄÓï·¨ÊÇ£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        sjcd=iobase[,irq[,dma_channel]]
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}





\subsection{SoundBlaster Pro ½éÃæ (`sbpcd=')}



ÕâÖÖ½éÃæ¿¨µÄÓï·¨ÊÇ£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        sbpcd=iobase,type
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


ÆäÖÐµÄ {\ttfamily type} ÊÇÏÂÁÐÖ®×Ö´®Ò»£¨´óÐ¡Ð´ÓÐ²î£©£º
`SoundBlaster', `LaserMate', or `SPEA'¡£
Êä³öÈëÎ»Ö·ÊÇ¹âµú»úµÄÊä³öÈëÎ»Ö·£¬²»ÊÇ¸Ã¿¨ÒôÐ§²¿·ÝµÄÊä³öÈëÎ»Ö·¡£




\section{ÆäËüÓ²ÌåÉè±¸}



ÆäËüÈÎºÎ²»ÊÊºÏ·ÅÔÚÉÏÃæ·ÖÀàÖÐµÄÉè±¸¶¼¶ÑÔÚÕâÀï¡£




\subsection{ÒÒÌ«ÍøÂ·Éè±¸ (`ether=')}



²»Í¬µÄÇý¶¯³ÌÊ½Ê¹ÓÃ²»Í¬µÄ²ÎÊý£¬
µ«ËüÃÇÖÁÉÙ¶¼¹²ÓÃ IRQ, I/O ²ºÎ»Ö·ÖµÒÔ¼°Ãû³Æ¡£×î±ê×¼µÄ¸ñÊ½¿´ÆðÀ´Ïñ£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}

ether=irq,iobase[,param_1[,param_2,...param_8]]],name
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


µÚÒ»¸ö²»ÊÇÊý×ÖµÄ²ÎÊý±»µ±×÷Ãû³Æ¡£{\ttfamily param\_n}
µÄÖµ£¨Èç¹ûÅäµÃÆðÀ´£©¶ÔÃ¿ÕÅ²»Í¬µÄ½éÃæ¿¨£¯Çý¶¯³ÌÊ½Í¨³£¶¼´ú±í²»Í¬µÄÒâÒå¡£
µäÐÍµÄ {\ttfamily param\_n} ÖµÊÇÓÃÀ´Ö¸¶¨Ïñ¹²Ïí¼ÇÒäÌåÎ»Ö·£¬½éÃæµÄÑ¡Ôñ£¬
DMA Í¨µÀµÈµÈÖîÈç´ËÀàµÄ¶«¶«¡£

´Ë²ÎÊý×î³£¼ûµÄÓÃ·¨ÊÇÔÚÔ¤ÉèÖµ½öÕì²âµ½Ò»ÕÅÍøÂ·¿¨µÄÊ±ºòÇ¿ÖÆÕì²âµÚ¶þÕÅÒÒÌ«ÍøÂ·¿¨¡£
¿ÉÒÔÓÃÕâ¸ö¼òµ¥µÄÖ¸Áî´ï³É£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        ether=0,0,eth1
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


×¢Òâ£¬ÉÏÊö¡õÀýÖÐ IRQ Óë I/O Î»Ö·Áã¸æËßÇý¶¯³ÌÊ½×Ô¶¯È¥Õì²â¡£

Ä£×éÊ¹ÓÃÕßÕßÇë×¢Òâ£º
Èç¹ûÇý¶¯³ÌÊ½×÷ÎªÖ´ÐÐÆÚ¼ä¿ÉÔØÈëÄ£×é£¨²»±àÒëµ½ºËÐÄÀï£©
Ê¹ÓÃÔòÉÏÊöÖ¸Áî{\itshape ²»»á\/}Ç¿ÖÆÕì²âµÚ¶þÕÅ½éÃæ¿¨¡£
´ó²¿·ÝµÄ Linux
·¢ÐÐÌ×¼þ¶¼Ê¹ÓÃÒ»¸ö»ù±¾µÄºËÐÄÅäºÏÐíÐí¶à¶à×ö³ÉÄ£×éµÄÇý¶¯³ÌÊ½¡£
´Ë {\ttfamily ether=} ²ÎÊýÖ»¶ÔÖ±½Ó±àÒëÔÚºËÐÄÀïµÄÇý¶¯³ÌÊ½ÓÐÐ§¡£

ÔÚÒÒÌ«ÍøÂ·ËµÃ÷(Ethernet-HowTo)ÖÐ¶ÔÊ¹ÓÃ¶àÕÅÍøÂ·¿¨ÒÔ¼° {\ttfamily param\_n}
ÖµµÄÊ¹ÓÃ³¡ºÏ£¬ÍøÂ·¿¨£¯Çý¶¯³ÌÊ½¶ÔÕâÐ©ÖµµÄÊµ×÷µÈµÈÓÐ¸üÍêÕû¡¢¸ü¹ã·ºµÄÎÄ¼þ¡£
ÓÐÐËÈ¤µÄ¶ÁÕßÓ¦¸Ã²Î¿¼¸ÃÎÄ¼þÖÐÓÐ¹Ø×Ô¼ºÍøÂ·¿¨µÄÕÂ½Ú¡£
\nameurl{http://sunsite.unc.edu/mdw/HOWTO/Ethernet-HOWTO.html}{Ethernet-HowTo}




\subsection{ÈíµúÇý¶¯³ÌÊ½ (`floppy=')}



ÈíµúÇý¶¯³ÌÊ½ÓÐÐí¶àÑ¡Ïî£¬
È«²¿¶¼ÁÐÔÚ {\ttfamily linux/drivers/block} ÀïµÄ {\ttfamily README.fd} ÖÐ¡£
ÕâÊÇÖ±½Ó´Ó¸ÃµµÈ¡µÃµÄ×ÊÑ¶¡£

floppy=mask,allowed\_drive\_mask

Éè¶¨ÔÊÐíÊ¹ÓÃÖ®´Åµú»úÎ»ÔªÕÚÕÖÎª {\ttfamily mask} ¡£
ÒÀÔ¤Éè£¬Ö»ÔÊÐíÃ¿¸öÈíµú¿ØÖÆÆ÷µÄµÚÁã¼°µÚÒ»¸öµ¥Ôª¡£
ÕâÑù×öÊÇÒòÎªÓÐÐ©·Ç±ê×¼µÄÓ²Ìå£¨»ªË¶µÄ PCI Ö÷»ú°å£©
ÔÚ´æÈ¡µÚ¶þ»òµÚÈý¸öµ¥ÔªÊ±»áµ±µô¼üÅÌ¡£´ËÑ¡Ïî²î²»¶àÒÑ¾­±» cmos Ñ¡Ïî¸øÈ¡´úÁË¡£

floppy=all\_drives

Éè¶¨ÔÊÐíÊ¹ÓÃÖ®´Åµú»úÎ»ÔªÕÚÕÖÎªËùÓÐ´Åµú»ú¡£
Èç¹ûÄãÔÚÈíµú¿ØÖÆÆ÷ÉÏ½ÓÁËÁ½¸öÒÔÉÏµÄ´Åµú»úµÄ»°¿ÉÒÔÊ¹ÓÃ¡£

floppy=asus\_pci

Éè¶¨Î»ÔªÕÚÕÖÎªÖ»ÔÊÐíµÚÁã¼°µÚÒ»¸öµ¥Ôª¡££¨Ô¤ÉèÖµ£©

floppy=daring

¸æËßÈíµúÇý¶¯³ÌÊ½ÄãÓÐ¸öÐÐÎªÁ¼ºÃµÄÈíµú¿ØÖÆÆ÷¡£
ÕâÑùÔË×÷ÉÏ»á±È½ÏÓÐÐ§ÂÊ¡¢±È½ÏÆ½Ë³£¬µ«ÓÐÐ©¿ØÖÆÆ÷¿ÉÄÜÎÞ·¨Ê¹ÓÃ¡£
Õâ¿ÉÒÔ¼ÓËÙÄ³Ð©²¿·ÝµÄÔË×÷¡£

floppy=0,daring

¸æËßÈíµúÇý¶¯³ÌÊ½ÄãµÄÈíµú¿ØÖÆÆ÷µÃÐ¡ÐÄ¿´¹Ü¡£

floppy=one\_fdc

¸æËßÈíµúÇý¶¯³ÌÊ½ÄãÖ»ÓÐÒ»¸öÈíµú¿ØÖÆÆ÷¡££¨Ô¤ÉèÖµ£©

floppy=two\_fdc {\itshape or\/} floppy=address,two\_fdc

¸æËßÈíµúÇý¶¯³ÌÊ½ÄãÓÐÁ½¸öÈíµú¿ØÖÆÆ÷¡£
µÚ¶þ¸öÈíµú¿ØÖÆÆ÷¼ÙÉèÎ»ì¶ address Ö¸¶¨µÄµØ·½¡£
Èç¹ûÃ»ÓÐ¸ø address£¬¼ÙÉèÎª 0x370 ¡£

floppy=thinkpad

¸æËßÈíµúÇý¶¯³ÌÊ½ÄãÓÐÒ»Ì¨ Thinkpad¡£
Thinkpads µÄ´Åµú±ä¸üÕì²âÏßÂ·(disk change line)Ö®Ê¹ÓÃÓëÒ»°ãÏà·´¡£

floppy=0,thinkpad

¸æËßÈíµúÇý¶¯³ÌÊ½ÄãÃ»ÓÐ Thinkpad¡£

floppy=drive,type,cmos

Éè¶¨ {\ttfamily drive} µÄ cmos ÀàÐÍÎª {\ttfamily type}¡£
Ìõ¼þÊÇ£¬Õâ¸ö´Åµú»úÔÚÎ»ÔªÕÚÕÖÖÐ±ØÐëÊÇ¿ÉÓÃµÄ¡£
Èç¹ûÄãÓÐÁ½¸öÒÔÉÏµÄ´Åµú»ú£¨ÊµÌå cmos Ö»ÄÜÖ¸¶¨Á½¸ö£©
»òÊÇÄãµÄ»ù±¾Êä³öÈëÏµÍ³Ê¹ÓÃ·Ç±ê×¼µÄ CMOS ÀàÐÍÄÇÕâ¾ÍÓÐÓÃÁË¡£
°ÑÇ°Á½¸ö´Åµú»úµÄ cmos ÉèÎª 0£¨Ô¤ÉèÖµ£©
»áÊ¹µÃÈíµúÇý¶¯³ÌÊ½ÎªÕâÐ©´Åµú»ú¶ÁÈ¡ÊµÌå cmos¡£

floppy=unexpected\_interrupts

½ÓÊÕµ½·ÇÔ¤ÆÚÖ®ÖÐ¶ÏÊ±Ó¡³ö¾¯¸æÑ¶Ï¢£¨Ô¤Éè£©

floppy=no\_unexpected\_interrupts {\itshape or\/} floppy=L40SX

½ÓÊÕµ½·ÇÔ¤ÆÚÖ®ÖÐ¶ÏÊ±²»Ó¡³ö¾¯¸æÑ¶Ï¢¡£
IBM L40SX Ï¥ÉÏÐÍµçÄÔÔÚÄ³Ð©ÏÔÊ¾Ä£Ê½ÏÂÐèÒªËü¡£
£¨Õâ¿´À´ÊÇÓ°ÏñÓëÈíµúÖ®¼äµÄÄ³ÖÖÏà»¥¹ØÏµ¡£
´Ë·ÇÔ¤ÆÚÖ®ÖÐ¶ÏÖ»»áÓ°ÏìÐ§ÄÜ£¬¿ÉÒÔ°²È«µØºöÂÔ¡££©




\subsection{ÒôÐ§Çý¶¯³ÌÊ½ (`sound=')}



ÒôÐ§Çý¶¯³ÌÊ½Ò²¿ÉÒÔ½ÓÊÜÆô¶¯²ÎÊýÒÔ±ä¸ü±àÒëÊ±µÄÖµ¡£
²»¹ý²¢²»½¨ÒéÕâÑù×ö£¬ÒòÎªÕâÑù»á¸ü¸´ÔÓ¡£
Ïà¹ØËµÃ÷·ÅÔÚ£¨Ôø¾­£¿£©Readme.Linux ÖÐ£¬
Î»ì¶ {\ttfamily linux/drivers/sound} Àï¡£Ëü½ÓÊÜÕâÖÖÐÍÊ½µÄ²ÎÊý£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}

sound=device1[,device2[,device3...[,device11]]]
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


ÆäÖÐÃ¿¸ö {\ttfamily deviceN} ÖµµÄ¸ñÊ½ÎªÏÂÁÐµÄ {\ttfamily 0xTaaaId}
¶øÃ¿¸öÎ»Ôª×éµÄÊ¹ÓÃÈçÏÂ£º

T - Éè±¸ÖÖÀà: 1=FM, 2=SB, 3=PAS, 4=GUS, 5=MPU401, 6=SB16,
7=SB16-MPU401

aaa - Ê®Áù½øÎ»µÄÊä³öÈëÎ»Ö·¡£

I - Ê®Áù½øÎ»Ö®ÖÐ¶ÏÏß (i.e 10=a, 11=b, ...)

d - ¼ÇÒäÌåÖ±½Ó´æÈ¡Í¨µÀ¡£

ÈçÄãËù¼û£¬ÕâÏàµ±ÔÓÂÒ£¬½¨ÒéÄã×îºÃ°Ñ×Ô¼ºÉè±¸µÄÖµ±àÒë½øÈ¥¡£
Ê¹ÓÃÆô¶¯²ÎÊý `sound=0' ½«»áÍæÈ«¹Ø±ÕÒôÐ§Çý¶¯³ÌÊ½¡£




\subsection{»ãÁ÷ÅÅ»¬ÊóÇý¶¯³ÌÊ½ (`bmouse=')}



»ãÁ÷ÅÅ»¬ÊóÇý¶¯³ÌÊ½Ö»½ÓÊÜÒ»¸ö²ÎÊý£¬¾ÍÊÇÓ²ÌåËùÊ¹ÓÃµÄ IRQ Öµ¡£




\subsection{Î¢Èí»ãÁ÷ÅÅ»¬ÊóÇý¶¯³ÌÊ½ (`msmouse=')}



Î¢Èí»¬ÊóÇý¶¯³ÌÊ½Ö»½ÓÊÜÒ»¸ö²ÎÊý£¬¾ÍÊÇÓ²ÌåËùÊ¹ÓÃµÄ IRQ Öµ¡£




\subsection{Ó¡±í»úÇý¶¯³ÌÊ½ (`lp=')}



ÔÚ¸ßì¶ 1.3.75
ÒÔÉÏµÄºËÐÄÉÏÄã¿ÉÒÔ¸æËßÓ¡±í»úÇý¶¯³ÌÊ½Ê¹ÓÃÄÇ¸ö²ºÒÔ¼°{\itshape ²»\/}Ê¹ÓÃÄÇ¸ö²º¡£
Èç¹ûÄã²»ÏëÈÃÓ¡±í»úÇý¶¯³ÌÊ½ÄÃµ½ËùÓÐ¿ÉÓÃµÄ²¢ÁÐ²ºÄÇ÷áááÕßºÜ·½±ã£¬
ÕâÑùÆäËüµÄÇý¶¯³ÌÊ½(e.g. PLIP, PPA)¾Í¿ÉÒÔÊ¹ÓÃËüÃÇ¡£

Õâ¸ö²ÎÊýµÄ¸ñÊ½ÊÇ¶à¸ö i/o, IRQ µÄ×éºÏ¡£
ÀýÈç£¬
{\ttfamily lp=0x3bc,0,0x378,7} »áÒÔ²»Ðè IRQ(polling) µÄÄ£Ê½Ê¹ÓÃÎ»ì¶ 0x3bc µÄ²º£¬
²¢ÇÒ¶ÔÎ»ì¶ 0x378 µÄ²ºÊ¹ÓÃ IRQ 7¡£
Î»ì¶ 0x278 µÄ²º£¨Èç¹ûÓÐµÄ»°£©½«²»»á±»Õì²âµ½£¬
ÒòÎª×Ô¶¯Õì²âÖ»ÓÃì¶Ã»ÓÐ `lp=' ²ÎÊýµÄÇé¿öÏÂ¡£
¿ÉÒÔÊ¹ÓÃ {\ttfamily lp=0} ¹Ø±ÕÕû¸öÓ¡±í»úÇý¶¯³ÌÊ½¡£




\subsection{ICN ÕûÌå·þÎñÊýÎ»ÍøÂ·(ISDN)Çý¶¯³ÌÊ½ (`icn=')}



Õâ¸öÕûÌå·þÎñÊýÎ»ÍøÂ·Çý¶¯²ÎÊýµÄÆô¶¯²ÎÊý¸ñÊ½Îª£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        icn=iobase,membase,icn_id1,icn_id2
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


ÆäÖÐ {\ttfamily iobase} ÊÇ¸Ã¿¨µÄÊä³öÈë²ºÎ»Ö·£¬
{\ttfamily membase} ÊÇ¸Ã¿¨µÄ¹²Ïí¼ÇÒäÌå»ùµ×Î»Ö·£¬
¶øÄÇÁ½¸ö {\ttfamily icn\_id} ÊÇÎ¨Ò»Ê¶±ðµÄ ASCII ±æÊ¶×Ö´®¡£




\subsection{PCBIT ISDN Çý¶¯³ÌÊ½ (`pcbit=')}



Õâ¸öÆô¶¯²ÎÊý¸ñÊ½Ê¹ÓÃÒ»¶ÔÕûÊý²ÎÊý£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        pcbit=membase1,irq1[,membase2,irq2]
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


ÆäÖÐ {\ttfamily membaseN} ÊÇµÚ N ÕÅ¿¨µÄ¹²Ïí¼ÇÒäÌå»ùµ×£¬
¶ø {\ttfamily irqN} ÊÇµÚ N ÕÅ¿¨µÄÖÐ¶ÏÉè¶¨¡£
Ô¤ÉèÖµÊÇ IRQ 5 ÒÔ¼° membase {\ttfamily 0xD000}¡£




\subsection{Teles ISDN Çý¶¯³ÌÊ½ (`teles=')}



Õâ¸ö ISDN Çý¶¯³ÌÊ½µÄÆô¶¯²ÎÊý¸ñÊ½Îª£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        teles=iobase,irq,membase,protocol,teles_id
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


ÆäÖÐ {\ttfamily iobase} ÊÇ¸Ã¿¨µÄ i/o ²ºÎ»Ö·£¬
{\ttfamily membase} ÊÇ¸Ã¿¨µÄ¹²Ïí¼ÇÒäÌå»ùµ×Î»Ö·£¬{\ttfamily irq} ÊÇ¸Ã¿¨Ê¹ÓÃµÄÖÐ¶Ï£¬
¶ø {\ttfamily teles\_id} ÊÇÎ¨Ò»Ê¶±ðµÄ ASCII ±æÊ¶×Ö´®¡£




\subsection{DigiBoard Çý¶¯³ÌÊ½ (`digi=')}



DigiBoard Çý¶¯³ÌÊ½½ÓÊÜÓÉÁù¸ö¶ººÅ¸ô¿ªÖ®µÄ±æÊ¶×Ö´®»òÕûÊý¡£
Áù¸öÖµÒÀÐòÎª£º

\begin{verbatim}
        ´ò¿ª£¯¹Ø±Õ¸Ã¿¨
        ¿¨µÄÖÖÀà£º PC/Xi(0), PC/Xe(1), PC/Xeve(2), PC/Xem(3)
        ´ò¿ª£¯¹Ø±ÕÆäËüÕë½ÅÅÅÁÐ(alternate pin arrangement)
        ¸Ã¿¨ÉÏµÄ²ºÊý
        ¸Ã¿¨Éè¶¨µÄÊä³öÈë²º£¨Èç¹ûÒÔ×Ö´®Ö¸¶¨ÔòÎªÊ®Áù½øÎ»£©
        ¼ÇÒä´°µÄ»ùµ×£¨Èç¹ûÒÔ×Ö´®Ö¸¶¨ÔòÎªÊ®Áù½øÎ»£©
\end{verbatim}


ÕýÈ·µÄÆô¶¯²ÎÊýÖ®¡õÀý£¨×Ö´®ÒÔ¼°ÕûÊý¸ñÊ½£©Èç£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        digi=E,PC/Xi,D,16,200,D0000
        digi=1,0,0,16,512,851968
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


×¢Òâ£¬Õâ¸öÇý¶¯³ÌÊ½ÈôÎÞ {\ttfamily digi=} Æô¶¯²ÎÊýÆäÔ¤ÉèÊä³öÈëÎª {\ttfamily 0x200} £¬
¹²Ïí¼ÇÒäÌå»ùµ×Îª {\ttfamily 0xD0000} ¡£²»Ö´ÐÐ×Ô¶¯Õì²â¡£
¸ü½øÒ»²½µÄÏ¸½Ú¿ÉÒÔÔÚ {\ttfamily linux/Documentation/digiboard.txt}
µµ°¸ÀïÕÒµ½¡£




\subsection{RISCom/8 ¶à²º´®ÁÐ¿¨Çý¶¯³ÌÊ½ (`riscom8=')}



Up to four boards can be supported by supplying four
unique i/o port values for each individual board installed.
Other details can be found in the file
{\ttfamily linux/Documentation/riscom8.txt}.

¿ÉÒÔÖ§Ô®´ïËÄÕÅ¿¨£¬ÐëÌá¹©ËÄ¸öÎ¨Ò»µÄÊä³öÈë²º¸øÃ¿ÕÅ¿¨¡£
ÆäâÅÏ¸½Ú¿ÉÒÔÔÚ {\ttfamily linux/Documentation/riscom8.txt} µµ°¸ÀïÕÒµ½¡£




\subsection{Baycom ´®ÁÐ£¯²¢ÁÐÎÞÏßÊý¾Ý»ú (`baycom=')}



ÕâÐ©Éè±¸µÄÆô¶¯²ÎÊý¸ñÊ½ÈçÏÂ¡£

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        baycom=modem,io,irq,options[,modem,io,irq,options]
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


Ê¹ÓÃ modem=1 ±íÊ¾ÄãÓÐ ser12 Éè±¸£¬modem=2 ±íÊ¾ÄãÓÐ par96 Éè±¸¡£
Ê¹ÓÃ options=0 ±íÊ¾Ê¹ÓÃÓ²Ìå DCD£¬options=1 Ôò±íÊ¾Ê¹ÓÃÈíÌå DCD¡£
{\ttfamily io} ÒÔ¼° {\ttfamily irq} ¸úÍù³£Ò»ÑùÊÇÊä³öÈë²ºÒÔ¼°ÖÐ¶ÏÉè¶¨¡£
ÔÚ {\ttfamily /linux/drivers/char/} Ä¿Â¼ÏÂµÄ {\ttfamily README.baycom}
µµ°¸ÀïÓÐ¸ü¶àµÄÏ¸½Ú¡£




\section{½áÊø}



Èç¹ûÄã·¢ÏÖÕâ·ÝÎÄ¼þÀïÓÐÈÎºÎÐÑÄ¿µÄ´ò×Ö´íÎó£¬»ò¹ýÊ±µÄ×ÊÑ¶£¬ÇëÈÃ
ÎÒÖªµÀ¡£ÕâºÜÈÝÒ×¾Í»á¿´Â©ÁË¡£

Ð»Ð»£¬

Paul Gortmaker, {\ttfamily gpg109@rsphy1.anu.edu.au}



\end{document}
