\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{Linux Remote-Boot mini-HOWTO:
        Ê¹ÓÃ Red-Hat Linux, DOS, Windows 3.1 ¼° Windows 95/98 ¼° Windows NT Ô¶¶Ë¿ª»ú¹¤×÷Õ¾Éè¶¨}
\author{×÷Õß: Marc Vuilleumier St\"uckelberg, David Clerc {\ttfamily \onlynameurl{mvuilleu@rembo.com}}\\ 
ÒëÕß: ÔøÔªÓÓ {\ttfamily \onlynameurl{yytseng@ms16.hinet.net}}}
\date{v3.26, ¶þÔÂ 2000
·­ÒëÈÕÆÚ: ÁùÔÂ 2000}
\abstract{Õâ·ÝÎÄ¼þ½«ËµÃ÷ÈçºÎÉè¶¨³öÒ»ÖÖ, Ê¹Ò»Èº PC ¾ßÓÐÒÔËÅ·þÆ÷Îª»ù´¡µÄÎÈ¶¨ÇÒ°²È«µÄ¼Ü¹¹,
´Ë·¨¿ÉÊ¹Ã¿Ì¨ÓÃ»§¶Ë PC ÔÚ¿ª»úÊ±Ñ¡ÔñÊ¹ÓÃºÎÖÖ×÷ÒµÏµÍ³.
¶ø´ËÖÖ¼Ü¹¹µÄ¾«ÒªÊÇÊ¹ÓÃÒÔ BootPROM Îª»ù´¡µÄ³ÌÊ½,
ÈÃÊ¹ÓÃÕßÔÚ¿ª»úÊ±, Ñ¡Ôñ²»Í¬µÄ¿ª»úÇø¿é.
ÎÒÃÇÊÇÓÃ Bootix µÄ TCP/IP BootPROM (¿É¸½¼Óì¶´ó²¿·ÝµÄÍøÂ·¿¨),
»òÕßÆäËûÓë PXE ÏàÈÝµÄ Boot ROM (ÒÑÔÚ½üÆÚ³öÏÖµÄÄÚ½¨ÍøÂ·¿¨µÄ PC ÉÏÊ¹ÓÃ).
´Ë·ÝÎÄ¼þµÄ×îÐÂ°æ±¾, °üº¬³¬ÎÄ¼þÁ¬½áµ½¿É¹©ÏÂÔØµÄÈíÌå¼°ÆäËûÏà¹ØµÄ×ÊÑ¶,
¶¼¿ÉÒÔÔÚÕâ¸öÍøÖ·ÕÒµ½{\ttfamily \onlynameurl{http://cuiwww.unige.ch/info/pc/remote-boot/howto.html}}.
\onlynameurl{Linuxdoc-SGML},
\onlynameurl{DVI},
\onlynameurl{PostScript} ¼°\onlynameurl{PDF}
µÈ°æ±¾¶¼ÔÚÕâ¸öÄ¿Â¼ÏÂ.
Èç¹ûÄúÏë»ñµÃ×îÐÂµÄ·¢Õ¹×ÊÑ¶, ¿ÉÒÔËÍÒ»·âÐÅ¸ø{\ttfamily \onlynameurl{info@bpbatch.org}}.}


\begin{document}
\maketitle
\tableofcontents

\section{ÃâÔðÉùÃ÷¼°°æÈ¨}

{\bfseries ÔÚÊ¹ÓÃÕâÐ©ÈíÌåÇ°, Çë×ÐÏ¸ÔÄ¶Á}.

±¾½Ú¶¨ÒåÄã¶Ô±¾ÈíÌåËùÄÜ×öÓë²»ÄÜ×öµÄÊÂ, ¼°ÎÒÃÇËùµ£±£Óë²¹³¥µÄÏÞÖÆ.

°²×°, ¸´ÖÆ, »òÊ¹ÓÃÈíÌå¶¼±íÊ¾ÄãÒÑ³ÐÈÏ, ²¢¶Á¹ýÕâ¸ö°æÈ¨ÇÒÒÑ½ÓÊÜÕâÐ©ÌõÎÄ.

Çë×¢ÒâÕâ·Ý°æÈ¨Ö»¶Ô¸öÈËµÄÊ¹ÓÃÓÐÐ§, ¾ÍÈçÔÚÍ¨ÓÃÌõÎÄµÄµÚ 1 ÏîËù¶¨ÒåµÄ.



Í¨ÓÃÌõÎÄ

1. ÊÚÈ¨Ö´ÕÕ

BpBatch, MrBatch, MrZip ¼° Ïà¹Ø¹¤¾ß³ÌÊ½ (ÒÔÏÂÖ¸ "ÈíÌå") µÄ×÷Õß, ÔÊÐíÄãÓÐÒ»·Ý
²»¿É¶ÀÕ¼, ²»¿É´«µÝ, ÃâÈ¨Àû½ðµÄÖ´ÕÕ,
ÓÃÒÔÏÂÔØ²¢Ê¹ÓÃÕâÐ©ÈíÌåµ«±ØÐëÊÇÔÚÏÂÁÐÌõÎÄËùÔ¼ÊøÏÂ.

Õâ·ÝÖ´ÕÕÖ»ÊÚÈ¨¸öÈËµÄÈíÌåÊ¹ÓÃ. ÊÇ·ñÊÓÎª¸öÈËµÄÊ¹ÓÃ,
ÄËÊÇÒÔÈíÌåÊÇ·ÅÔÚ¸öÈË, ¹«Ë¾»òÑ§Ð£ËùÓµÓÐµÄµçÄÔÀ´ÈÏ¶¨.

ÈíÌåµÄÉ¢²¼, ··Âô»ò×âÁÞ, ²»¹ÜÊÇ "ÕÕÔ­ÐÎÊ½" »òµ±³É²úÆ·µÄ¸½¼þ,
»ò°ÑËü°²×°µ½Êôì¶µÚÈýÕßµÄµçÄÔÉÏ¶¼ÊÇ½ûÖ¹µÄ,
³ý·ÇµÃµ½×÷ÕßÈºµÄÉÌÒµÐÍÌ¬ÊÚÈ¨»òËûÃÇËùÈÏ¶¨µÄ´úÀíÈËµÄÊÚÈ¨.

ÇëÍ¸¹ý
{\ttfamily \onlynameurl{info@rembo.com}}
ÁªÂçÒÔµÃµ½¸ü¶à×ÊÑ¶.
ÎÒÃÇÌá¹©Äú¸¶µÃÆðµÄÉÌÒµÐÍÌ¬ÊÚÈ¨.



2. ÃâÔðµ£±£

ÕâÐ©ÈíÌå¹æ¶¨ "ÕÕÔ­ÐÎÊ½", ²»¾ßÈÎºÎÖ±½Ó»ò¼ä½ÓµÄµ£±£.
Ò²ÎÞ·¨µ£±£»òÔ¤ÆÚÊÇ·ñÓÐÈÎºÎ´íÎó.

Ê¹ÓÃÕâ¸ö²úÆ·Ëùµ¼ÖÂµÄ½á¹ûÓë·çÏÕ¶¼±ØÐëÓÉÄã³Ðµ£.
ÌØ±ðÊÇ, ×÷ÕßÈºËùÌáÐÑÄãµÄ, Õâ¸öÈíÌåÄÜÔÚÃ»ÓÐÈÎºÎ¾¯¸æÏÂ, °ÑÓ²µúÄÚÈÝÇå³ýµô.

×÷ÕßÈº²»ÂÛÔÚÈÎºÎÇé¿öÏÂ, ¶¼²»Ðè¶ÔÄã¸ºÔð.
ÇÖÈ¨ÐÐÎª»òÆõÔ¼, ÔÚ¾­¼ÃÉÏµÄÓ°Ïì»òÈÎºÎÐÎÊ½µÄ·ÇÖ±½ÓÐÔËðº¦,
°üº¬Î´ÏÞÖÆµ½µÄ, ²ÆÎñ»ò»ñÀûÉÏµÄËðÊ§, »òÕßÎÞ·¨Ê¹ÓÃ,
ÏûÊ§»òËðº¦µ½×ÊÁÏ»òµ¼ÖÂÖÐ¶ÏÉúÒâ, Ê¹ÓÃÕâÐ©»òÆäËüÈíÌåËùµ¼ÖÆ»òÓëÆäÓÐ¹ØµÄÎÊÌâ,
ÉõÖÁËù½¨ÒéµÄ¿ÉÄÜµÄËðº¦ÒÔÖÁÔ¤ÆÚ·¢ÉúµÄËðº¦.



3. °æÈ¨

ÕâÐ©ÈíÌåÊÇÓÐ°æÈ¨µÄ²¢ÊÜµ½¹ú¼Ê·¨µÄ°æÈ¨·¨¼°ÌõÔ¼Ëù±£»¤.
Äã±ØÐëÍ¬Òâ±ÜÃâÈÎºÎ·Ç¾­ÊÚÈ¨µÄÈíÌå¸´ÖÆ.
Äã²»¿ÉÒÔ°Ñ°æÈ¨Ðû¸æ»ò×¨ÀûÈ¨, ×ÔÈíÌåÖÐÒÆÈ¥»òÊ¹ÆäëüëÊ²»Çå.

Äã²»¿ÉÒÔÈÎºÎ·½Ê½¶ÔÈíÌå×ö·´±àÒë, ·´×éÒë, »òÄæÏò¹¤³Ì.



4. ÌõÎÄ¿É·Ö¸î

ÕâÐ©Í¨ÓÃÌõÎÄµÄ·Ö¸îÉùÃ÷. Èç¹ûÕâÐ©ÌõÎÄÖÐÈÎÒ»ÏîÄ¿»ò¹æ¶¨,
ÒòÎªÈÎºÎÒòËØ¶øÊ§Ð§»ò²»¾ßÈ¨Á¦, ÔòÆäËûÏîÄ¿»òÌõÎÄÒÀÈ»ÓÐÐ§²¢¾ßÈ¨Á¦.



5. ÊÊÓÃ·¨ÂÉ

ÕâÐ©Óë´ËÈíÌåÓÐ¹ØµÄÍ¨ÓÃÌõÎÄÒÔ¼°ËùÓÐµÄÈ¨Àû»òÒåÎñ,
½«Ò»ÂÉÔÚÈðÊ¿µÄ·¨ÂÉÏÂ¹ÜÀíÓëÊÍÒâ, ÊÊÓÃì¶ ÈÕÄÚÍß.



6. ¶ÀÕ¼Ë¾·¨È¨

ÈÎºÎÉæ¼°ÓëÕâ¸öÈíÌåÓÐµÄÕùÒé¶¼±ØÐë·þ´Óì¶ÈðÊ¿ÈÕÄÚÍß·¨Í¥µÄ¶ÀÕ¼Ë¾·¨È¨,
±£ÁôÉÏËßµ½ÈðÊ¿µÄÁªºÏ×î¸ß·¨Í¥.






\section{ÓÐÄÇÐ©±ä¸ü...}




\subsection{...´Ó 2.x °æáá ?}

Ö±½ÓµÄËµ, È«²¿¶¼¸ÄÁË. Ö»ÓÐ»ù±¾µÄ¸ÅÄîÊÇÏàÍ¬µÄ,
ÓÐ¹ØÈíÌåµÄ²¿·ÝÒÑÈ«²¿ÖØÐÂÉè¼ÆÒÔ¿Ë·þÏÈÇ°°æ±¾µÄÒ»Ð©ÏÞÖÆ.
ÐÂ¹¦ÄÜµÄÖØµãÓÐ:
\begin{itemize}
\item ËùÓÐµÄ¹¦ÄÜ (BpMenu, BpClean, BpUnzip) ÒÑÕûºÏÔÚÍ¬Ò»¸ö³ÌÊ½.
\item ´Ë³ÌÊ½²»Ö»¿ÉÒÔÓÉ BootPROM ÀïÖ´ÐÐ, ²¢¿ÉÒÔÔÚ DOS, Windows 95/98 ¼° Linux ÏÂÖ´ÐÐ.
\item ´Ë³ÌÊ½ÏÖÔÚÒÑ¿ÉÒÔ»Ø´æ FAT16, FAT32 ¼° EXT2FS µÄ·Ö¸îÇø.
Èç¹ûÓÐÈËÏëÐ´Ö§Ô® NTFS µÄ²¿·Ý, ÇëÈÃÎÒÖªµÀ...
Ä¿Ç°, NT Ê¹ÓÃÕß»¹ÊÇµÃÓÃ FAT16.
\item ´Ë³ÌÊ½²»½ö¿ÉÒÔ»Ø´æ´ÅµúÓ³Ïñµµ,
»¹¿ÉÒÔ¸½¼Ó»ò¸üÐÂµ¥¶ÀµÄµµ°¸ÓÃÒÔ¸Ä±äÓÃ»§¶ËµÄ¹¦ÄÜÌØÐÔ.
\item ´ÅµúÓ³Ïñµµ²»ÔÙÓÐ 87 MB µÄÏÞÖÆ. ËûÃÇÏÖÔÚÊÇÓëµµ°¸ÏµÍ³ÎÞ¹ØµÄ³ÌÊ½.
\item ÎÒÃÇ´òËãÈÃËüÔÚÍ¬Ò»Ê±¼äÄÚÒÔ×Ô¶¯µÄ·½Ê½ÏÂÔØ´ÅµúÓ³Ïñµµµ½Ò»¶ÑÓÃ»§¶Ë
(²ÉÍøÂ·¹ã²¥µÄ¼¼Êõ).
\item ÏÖÔÚÄã¿ÉÒÔ×ÔÐÐ×«Ð´¸ü¿É¿¿µÄ¿ª»ú³ÌÐò, ÔÚÕæÕý¿ª»úÇ°Ëü½«¾ö¶¨»úÆ÷ËùÒªµÄ¹¦ÄÜ.
\item ÏÖÔÚÄã¿ÉÒÔÓÃÈÎºÎÒ»ÖÖ Linux Kernel ¿ª»ú, ²»ÐèÔÙ¼ÓÉÏÐÞÕýµµ.
ÒàÄÜ¼ÓÉÏÃüÁîÁÐ¿ØÖÆ¼° ramdisk Ó³Ïñµµ.
\item Äã¿ÉÒÔ²ÉÓÃ Unix, NT »ò Radius ËÅ·þÆ÷×ö¿ª»úÇ°µÄÊ¹ÓÃÕßÉí·ÝÈÏÖ¤,
²¢ÄÜ¾Ü¾ø·Ç·¨Ê¹ÓÃÕßÊ¹ÓÃ.
\item ÒÑ°üº¬ÍêÕûµÄ¹ú¼Ê»¯ÓïÏµÖ§Ô®.
\item »¹ÓÐÐí¶à, Ðí¶àÆäËûÐÂµÄ¹¦ÄÜ...
\end{itemize}

\begin{description}
\item[ÊÇ·ñÓÐÄÇ¸ö³ÌÊ½ÄÜ°Ñ¾ÉµÄÓ³Ïñµµ¸ñÊ½×ª»»³ÉÐÂ¸ñÊ½ ?] \mbox{}

Ã»ÓÐ, ÒòÎªºËÐÄµÄ¸ñÊ½¸ù±¾¾Í²»ÏàÍ¬. µ«Äã¿ÉÒÔÇáÒ×µØ×ÔÐÐ×ª»»: 
\begin{enumerate}
\item ÒÔ¾ÉµÄÓ³Ïñµµ¿ª»ú (°ÑËü½âµ½ÄãµÄÓ²µú)
\item ÒÆµô½ÐÓÃ¾ÉµÄ {\ttfamily unzipreg} ¹¤¾ß³ÌÊ½, ¸ÄÒÔÊÊµ±µÄ {\ttfamily patch} Ö¸Áî
(²ÎÕÕÒÔÏÂµÄ²½Öè, ËüÏàµ±ÈÝÒ×Ê¹ÓÃ)
\item Ö´ÐÐÐÂµÄ {\ttfamily MrZip} ³ÌÊ½ÒÔ²úÉúÒ»¸öÐÂ¸ñÊ½µÄ´ÅµúÓ³Ïñµµ.
\end{enumerate}


\end{description}



\subsection{...´Ó 3.0 °æÒÔáá ?}

3.0 °æ: Ô­±¾ÊÇÒ»¸ö²âÊÔ°æ±¾. ÔÚ¾­¹ýÒ»¸öÔÂµÄÊ±¼ä,
È«Çò¸÷µØÊ¹ÓÃÕßµÄÊµ¼Ê²âÊÔ¼°Ñ°ÕÒ³ÌÊ½ÀïµÄ³ô¡õ²¢Ìá¹©¸üºÃµÄÒâ¼û.
¸ÐÐ»ËûÃÇËùÓÐÈËµÄÄÍÐÄ, ÌØ±ðÊÇ Maciek Uhlig, Dick Velders ¼° Jeff Teeters.

3.01 °æ: áá¿ªÊ¼Ôö¼ÓÒ»Ð©Ï¸²¿µÄ¹¦ÄÜ, ±ÈÈçÎÞ´Åµú»úµÄ Linux ¿ª»ú (½åÓÉ¹Øµô¿ìÈ¡¹¦ÄÜ).

3.10 °æ: ¿ªÊ¼Óë Intel µÄ {\itshape Wired for Management 1.1a\/} NetPC ±ê×¼ÏàÈÝ.
ÕâÐ©¹¤¾ß³ÌÊ½ÒÑÄÜÔÚÏÖ½ñÈÎºÎ PXE ÏàÈÝµÄ BootPROM
(ËüÍ¨³£ÊÇÖ±½Ó¸½ÔÚÖ÷»ú°åÉÏµÄ BootPROM) ÉÏ¹¤×÷.
¸ÐÐ» \onlynameurl{Bootix GmbH}
Ìá¹©ÎÒÃÇ PXE BootPROM ÒÔ·¢Õ¹ÕâÏî¹¦ÄÜ.
¶øÎÒÃÇÒ²³É¹¦µØÍê³É¸÷Ïî¹¤¾ß³ÌÊ½ÓëÎÒµÄ Dell µçÄÔÉÏ¸½ì¶Ö÷»ú°åµÄÍøÂ·¿¨
(³ÆÎª LanDesk Service Agent) µÄ PXE BootPROM ²âÊÔ.

3.11 °æµ½ 3.12 °æ: Ôö¼Ó UNIX ËÅ·þÆ÷¶Ë¹¤¾ß³ÌÊ½
(¿ÉÔÚ Solaris ¼° Linux ÏÂÅÜµÄ PXE Proxy DHCP ËÅ·þÆ÷,
¼°Ò»¸öÔöÇ¿ÐÍµÄ TFTP ËÅ·þÆ÷¸ø Linux Ö´ÐÐ),
¸üÏêÏ¸µÄ×ÊÑ¶ÒÔËµÃ÷ËÅ·þÆ÷¶ËµÄÉè¶¨·½·¨¼° PXE ¿ª»ú²½Öè.

3.13 °æ: Ôö¼Ó¶Ô Advanced Power Management µÄÖ§Ô® (¹ØµçÔ´µÄÖ¸Áî).

3.14 °æ: Ôö¼ÓÏ¸²¿¹¦ÄÜÇ¿»¯¼°ÐÞÕý. ÎÒÃÇÐÞÕýÒ»¸ö RedHat 5.1 terminal µÄÎÊÌâ,
¼°ÁíÒ»¸ö¹Øì¶ "if" Ö¸ÁîµÄÓï·¨ÎÊÌâ.
ÎÒÃÇÔö¼ÓÒ»Ð©ÓÉ
Laboratori de C¡õcul de la Facultat d'Inform¡õica de Barcelona (LCFIB)
Ëù½¨ÒéµÄÐÂ¹¦ÄÜ:

\begin{itemize}
\item Ò»¸öÐÂµÄ APM ±äÊýÊ¹ÄãÖªµÀÏµÍ³ÊÇ·ñÖ§Ô® Advanced Power Management
(¼´ Ö§Ô®¹Ø±ÕµçÔ´µÄÖ¸Áî).
\item "beep" Ö¸Áî.
\item  DrawWindow µÄÐÂ²ÎÊý, ¿ÉÒÔÔÚ²úÉúÊÓ´°Í¬Ê±¼ÓÈë±êÌâ.
Äã¿ÉÒÔÓÃ DrawWindow 200 200 400 200 "ÊÓ´°±êÌâ".
\end{itemize}


3.15 °æ: ÐÂÔö VESA µÄÍêÕûÖ§Ô®. BpBatch ÏÖÔÚÖ§Ô®¶àÖÖÏÔÊ¾Ä£Ê½,
ÒÔÈÃÄÇÐ©²»ÄÜÏÔÊ¾ 800x600 Í¼ÐÎµÄ¾ÉµçÄÔÒ²¿ÉÒÔÊ¹ÓÃ.
InitGraph ¼ÓÈëÒ»¸öÐÂ²ÎÊýÒÔÖ¸Ã÷ËùÊ¹ÓÃµÄÏÔÊ¾Ä£Ê½,
²¢¿ÉÓÉÐÂµÄ VESA-Modes ±äÊýÈ¡µÃËùÕì²â³ö¿ÉÓÃµÄÏÔÊ¾Ä£Ê½.

3.16 °æ: ÐÞÕýÏÂÁÐµÄ³ÌÊ½³ô¡õ:
\begin{itemize}
\item µ± Fullunzip ´¦Àí»ìÂÒ¸´ÔÓµÄÓ°ÏñµµÊ±²úÉúµÄ "Malloc failed" Ñ¶Ï¢.
Ïàµ±¸ÐÐ» Christian Meyer µÄÐ­Öú.
\item ÔÚ MrBatch µÄ Linux °æ±¾ÓÐ¸ö³ÌÊ½³ô¡õÊ¹ÆäÎÞ·¨ÍêÕûµÄ°ÑÓ³Ïñµµ½âÑ¹Ëõ,
Õâ¸ö³ÌÊ½³ô¡õÊÇ³öÏÖÔÚ MrBatch µÄµ×²ãº¯Ê½,
Òò´Ë»áÒ»²¢ÐÞÕýÆäËû MrBatch ÔÚ {\itshape Linux\/} °æ±¾ÏÂµÄÎÊÌâ.
Ïàµ±¸ÐÐ» Jeff Teeters µÄÐ­Öú.
\item ÔÚ codepage ×ª»»±íÖÐµÄ´íÎó.
Õâ¸ö³ÌÊ½³ô¡õÓÉ
Laboratori de C¡õcul de la Facultat d'Inform¡õica de Barcelona (LCFIB)
·¢ÏÖ. ÔÚ BpBatch ÌÖÂÛÈº×éÖÐ, ÄãÄÜÕÒµ½´Ë³ÌÊ½³ô¡õµÄ±¨¸æ.
\end{itemize}


3.17 °æ: ÐÂÔöµÄÏ¸²¿¹¦ÄÜ¼°ÐÞÕýµÄ³ÌÊ½³ô¡õ:
\begin{itemize}
\item Fullunzip ³ÌÊ½»á°ÑÑÓÉì¼ÇÒäÌå¹Øµô.
\item ÒÔ RedHat ¿ª»úÆ¬¿ª»ú, ÒÑ¿ÉÒÔÕý³£¹¤×÷.
\item µ±Ëù½â¿ªµÄÓ³Ïñµµº¬ÓÐÌ«¶àÄ¿Â¼Ê±, FAT µµ°¸ÏµÍ³»á³öÏÖµÄÎÊÌâÒÑÐÞÕýÁË.
\item ÎÒÃÇ¼ÓÈëÒÔ TFTP Í¨Ñ¶Ð­¶¨´«ËÍ×ÊÁÏÊ±µÄÖØ·¢¹¦ÄÜ.
BpBatch »áÔÚ "Could not transfer the file" ³öÏÖÇ°ÖØËÍ×ÊÁÏÈý´Î.
\item Timestamps ¿ÉÒÔÕýÈ·µØÔÚ FAT ÏÂ¸üÐÂ. (¸ÐÐ» Francis Chan)
\end{itemize}


3.18 °æ: ÐÞÕý IncrUnzip ¹¦ÄÜÉÏµÄ³ÌÊ½³ô¡õ. ¸ÐÐ» Gary Pike µÄÐ­Öú.

3.19 °æ: ÐÞÕýÔÚ Ext2fs ÏÂ {\ttfamily delete} Ö¸ÁîµÄ´íÎó´¦Àí·½Ê½,
½â¾öÔÚ Linux ÏÂ¶Ô A: µÄ²»ºÏÒË´¦Àí. ²¢¼ÓÈëÏÂÁÐ¹¦ÄÜ:
\begin{itemize}
\item ÐÂµÄ {\ttfamily if valid Ó²µú»ú:·Ö¸îÇø} Óï·¨ÓÃÒÔ¼ì²é·Ö¸îÇøÊÇÒÑ·ñ±»¸ñÊ½»¯
\item FAT32 ´ÅµúÓ³ÏñµµÏÖÒÑ¹¦ÄÜÍêÕû (ÒÑ¿ÉÕý³£¿ª»ú).
\item Linux EXT2 ÒÑ¿ÉÖ§Ô®³¬¹ý 2 GB.
\item Linux Swap ·Ö¸îÇøÒÔ¿ÉÖ§Ô®³¬¹ý 128 MB (´Ë¹¦ÄÜÐèÓÃ 2.1.x ÒÔÉÏµÄ Kernel).
\item FullUnzip ÏÖÔÚÒ²¿ÉÒÔ²»ÓÃ¿ìÈ¡·Ö¸îÇø,
Ö»ÒªÉè¶¨ {\ttfamily CacheNever} Îª {\ttfamily "ON"}.
Õâ¶ÔÃ¿Ì¨ÓÃ»§¶ËµÄ°²×°¶¼²»Ò»ÖÁÊ±»¹ÂúÓÐÓÃµÄ,
µ«Í¨³£²»½¨ÒéÊ¹ÓÃ, ÒòÎªÕâ»áÊ¹µÃÍøÂ·¸ºÔØ¼ÓÖØ.
\end{itemize}

¸ÐÐ» Ruben Schattevoy µÄÐ­Öú¼°¶Ô´Ë°æ±¾µÄ¹±Ï×.

3.20 °æ: ÎÒÃÇ¼ÓÈë Peter Schmitt ËùÐ´µÄÎÄ¼þ.

3.21 °æ: ÎÒÃÇÒÑÐÞ¶©±¾ÎÄµÄ²¿·ÝÕÂ½ÚÒÔÎÇºÏ PXE 2.0 µÄ¹æ¡õ.
×îÖ÷ÒªµÄ¸Ä½øÊÇ BpBatch µÄÃüÁîÁÐÄ£Ê½ÏÂ²ÎÊýÉè¶¨¸ÄÓÃ DHCP Ñ¡Ïî 135 È¡´úÔ­À´µÄ 155
(155 ÈÔÈ»Ö§Ô®ÒÔÏòÏÂÏàÈÝ).
3.22 °æ:ÒýÈëÐÂµÄ°æÈ¨ÌõÎÄ. ÇëÔÚÊ¹ÓÃ BpBatch Ö®Ç°,ÏêÏ¸ÔÄ¶Á.

3.24 °æ: ÓÉ Tellurian Pty Ltd, {\ttfamily \onlynameurl{http://www.tellurian.com.au}} , ¼ÓÈë Watchdog ½éÃæ¿¨µÄÖ§Ô®. ÎÒÃÇÒ»²¢ÐÞÕýÔØÈëÆ÷¶ÔÃû³ÆµÄÓïÒâ·¨Ôò, ÒÔÔÊÐí Intel ¼° Bootware TFTP ËÅ·þÆ÷µÄÊ¹ÓÃ. ²Î¿¼ what's new µµÒÔÁË½â½øÒ»²½µÄÏ¸½Ú.

3.25 °æ: ÎÒÃÇ¼ÓÈëÒ»Ð©Ð¡¼¼ÇÉ
(¸ø Windows 98 Ê¹ÓÃµÄ¹ýÂËÆ÷¼°ÈçºÎÈ¡ÏûÃÜÂë´«ÊäÇ°¼ÓÃÜ¹¦ÄÜ) À´×Ô BpBatch ÃÔ.

3.26 °æ: ÐÞÕýÐí¶àÓ¡Ë¢µÄ´íÎó, ¸ÐÐ» Herman Bruninckx ³¤ÆÚ·´¸´µÄÉóÔÄ. ÎÒÃÇÒ²¼ÓÈëÒ»½ÚÀ´ËµÃ÷ Solaris TFTP ËÅ·þÆ÷.




\section{¼ò½é}

ÕâÀïËùÃèÊöµÄ¼Ü¹¹ÊÇ´Ó 1996 ÏÄ¼¾¿ªÊ¼ÔÚ ÈÕÄÚÍß´óÑ§, CUI Ëù·¢Õ¹µÄ.
Õâ¸ö×ÊÑ¶ÏµÓÐÐí¶àµÄËÅ·þÆ÷, ¼°Ò»Ð©¸öÈËµçÄÔ, ¿ÉÒÀÓÃÍ¾·ÖÎªÁ½Àà: 
\begin{itemize}
\item Ñ§ÉúÊ¹ÓÃ
\item ÑÐ¾¿Óë¸¨Öú½ÌÑ§
\end{itemize}

ÒÔÏÂÊÇÎÒÃÇ·¢Õ¹ÕâÖÖ¼Ü¹¹µÄÄ¿±ê:
\begin{itemize}
\item ÈÎºÎÒ»Ì¨µçÄÔ¶¼¿ÉÒÔÖ´ÐÐ Linux, DOS, Windows 3.1, Windows 95/98,
»ò Windows NT. Ã¿´Î¿ª»úÊ±¿ÉÒÔÑ¡ÔñËùÐèÒªµÄ×÷ÒµÏµÍ³. 
\item ËùÓÐµÄÈíÌå, °üº¬×÷ÒµÏµÍ³, ¿ÉÒÔ·ÅÔÚËÅ·þÆ÷ÉÏ, ±ãì¶°²×°Óë¸üÐÂ. 
\item ÓÃ»§¶ËµçÄÔ, ¿ÉÒÔÔÚ²»¶ÔËÅ·þÆ÷×öÐ´ÈëµÄ×´Ì¬ÏÂÕý³£¹¤×÷ (ÎªÁË°²È«ÐÔ),
³ýÁËÓÃ»§×Ô¼ºµÄ home Ä¿Â¼.
\item ¾¡¿ÉÄÜ¼õÉÙÓÃ»§¶ËµçÄÔµÄÉè¶¨. ÓÃ»§¶ËµçÄÔ¿ÉÒÔ×Ô¶¯ÓÉËÅ·þÆ÷È¡µÃ IP ×éÌ¬Éè¶¨,
ÕâÐ©×ÊÑ¶·ÅÔÚÒ»¸öÐ¡µµ°¸, ¿É¹©¸÷ÖÖ×÷ÒµÏµÍ³Ê¹ÓÃ.
\item ´ó²¿·ÝµÄµçÄÔ¶¼¸÷×ÔÓµÓÐÓ²µú,
ÓÃ»§¶ËµçÄÔ¿ÉÒÔ¿¿ÕâÓÅµãÀ´½µµÍÍøÂ·¸ºÔØÓë´æ·ÅÊ¹ÓÃÕßµÄÔÝ´æµµ. 
\item ËùÓÐµÄÊ¹ÓÃÕß¶¼ {\itshape ±ØÐë\/} µÇÈë²ÅÄÜÊ¹ÓÃµçÄÔ.
\item µÇÈëµÄ×ÊÑ¶±ØÐëËùÓÐµÄ×÷ÒµÏµÍ³¶¼ÏàÍ¬.
¶øÊ¹ÓÃÕß¿ÉÒÔ´æÈ¡¸öÈËµÄÄ¿Â¼, ²¢¶øÔÚ¸÷ÖÖ×÷ÒµÏµÍ³¶¼Ò»ÖÁ.
\item Ñ§Éú (ÒÔ¼°ÃØÊé :-) ËùÊ¹ÓÃµÄµçÄÔÔÚÃ¿´ÎÆô¶¯Ê±±ØÐëÇåÀíÒ»´Î.
Ò²¾ÍÊÇÏñ¸Õ°²×°ÍêµÄÑù×Ó. 
\item Ã¿Ì¨µçÄÔ¿ÉÒÔ·À¶¾.
\end{itemize}

ÕâÐ©ÏÞÖÆÌõ¼þ, Ê¹µÃÎÒÃÇ°ÑËùÓÐµÄ×éÌ¬¶¼ÒÔ BootPROM ¹¤¾ß³ÌÊ½Îª»ù´¡.
ÎÒÃÇÏÈÊÇÕë¶ÔÀ´×Ô
\onlynameurl{Bootix GmbH}
µÄ \onlynameurl{TCP/IP BootPROM} ·¢Õ¹. ¶øÏÖÔÚ¸ü¼ÓÈë¶Ô preboot execution environments ±ê×¼µÄÖ§Ô®.
ÎÒÃÇÈÃÕâÐ©¹¤¾ß³ÌÊ½Ò²¿ÉÒÔÓëÈÎºÎ PXE ÏàÈÝµÄ BootPROM Ò»ÆðÊ¹ÓÃ.
PXE BootPROM, Ò²³ÆÎª LanDesk Service Agent,
ÒÑ¸úËæÖø´ó²¿·ÝÄÚ½¨ÍøÂ·¿¨µÄÖ÷»ú°åÒ»ÆðÉ¢²¼.
ÆäËû¹Øì¶ PXE ¼° Intel {\itshape Wired for Management\/} µÄ±ê×¼, ¿ÉÍ¸¹ý
{\ttfamily \onlynameurl{http://developer.intel.com/ial/wfm/tools/index.htm}} È¡µÃ.




\subsection{BootPROM ¼° Ó²µú»ú}

BootPROM ÒÑ³öÏÖºÜ³¤Ò»¶ÎÊ±¼ä, ÔÚ´ËÖ®Ç°ÎÒÃÇ°ÑËüµ¥¶ÀÓÃì¶ÎÞ´Åµú»úµÄµçÄÔ(²ÉÓÃÍøÂ·Îª»ù´¡µÄ´ÅµúÄ£Äâ»òÕßÏÂÔØÒ»·Ý ramdisk).
´Ó 1996 ÄêÆð, Õâ·Ý How-to Ìá³öÊ¹ÓÃ BootPROM ÔÚ×ÔÉí¾ßÓÐÓ²µú»úµÄµçÄÔÏÂÊ¹ÓÃ,
½«¸üÓÐÈ¤. ÓÉì¶ÕâÑù½«¿ÉµÃµ½Ë«ÖØµÃÓÅµã:
\begin{itemize}
\item BootPROM Ê¹µÃ´Ë¼Ü¹¹¸ü¼ÓÎÈ¶¨, ÓÃËü¿ÉÒÔ±£Ö¤Ã¿Ì¨µçÄÔ¶¼»áÒÔÍ¬Ñù·½Ê½¿ª»ú.
²»¹ÜÖÐÁËÈÎºÎ²¡¶¾»òÔÚ·Ö¸îÇøÒÑ»ÙËðµÄ×´¿ö. ¾ÍÈçÎÒÃÇÒÑÍê³ÉµÄ,
Ëü¿ÉÒÔ×öµ½ÔÚÔØÈë×÷ÒµÏµÍ³Ç°ÇåÀíÓ²µú×ÊÁÏ.
\item ×ÔÉí¾ßÓÐÓ²µú»ú, Ê¹µÃ´Ë¼Ü¹¹¸üÓÐÐ§ÂÊ. ÒòÎªÕâÑù¿ÉÒÔ¾­ÓÉ¿ìÈ¡·½Ê½½µµÍÍøÂ·¸ºÔØ.
¸üÄÜ»ñµÃ½ÏÓÐÐ§ÂÊµÄ swap.
\end{itemize}

ÖÁ½ñ, ÎÒÃÇÏàµ±¸ßÐË¼ûµ½ËùÓÐµÄµçÄÔÖÆÔìÉÌÒÑ³¯ÏòÍ¬ÑùµÄÄ¿±ê.
²¢°Ñ BootPROM ÁÐÎªÐÂµçÄÔ±ê×¼µÄÒ»²¿·Ý.

ÄãÈÔÈ»¿ÉÒÔÕÕ {\itshape ¾É\/} µÄ·½Ê½, Ê¹ÓÃÏÂÁÐËùÐðÊöµÄ¹¤¾ß³ÌÊ½.
ÕâÐ©¹¤¾ß³ÌÊ½¶ÔÎÞ´Åµú»úµÄµçÄÔ¶øÑÔ, ÆäÊµ¾ÍÊÇÒ»¸öÐ¡µÄ Kernel/ramdisk ÔØÈëÆ÷.
µ«ÎÒÃÇ²»¹ÄÀøÈç´ËÊ¹ÓÃ.




\subsection{ÍøÂ·}

ÈÕÄÚÍß´óÑ§ ÓµÓÐ B ¼¶ÍøÓò, ·Ö¸î³ÉÐí¶à×ÓÍøÂ·.
CUI ¹²Ê¹ÓÃÁËËÄ¸ö×ÓÍøÂ·, ÆäÖÐÖ®Ò»¹©Ñ§ÉúÊ¹ÓÃ.

Ô­±¾,ÎÒÃÇµÄ¸öÈËµçÄÔÊ¹ÓÃÁ½ÖÖÍøÂ·Í¨Ñ¶Ð­¶¨: IPX Óë IP.
IPX ÕâÒ»Àà, ÎÒÃÇÓÉÒ»Ì¨ Novell Netware 3 µÄËÅ·þÆ÷¹²ÓÃ DOS Óë WindowsµÄÈíÌå.
IP ÕâÒ»Àà, ÎÒÃÇÓÉÒ»Ì¨ SUN ËÅ·þÆ÷¿¿ NFS ¹²ÓÃ Linux ÈíÌå¼°¸öÈËµÄ·Ö¸îÇø.

ÔÚÎÒÃÇ×îÐÂµÄ¼Ü¹¹ÖÐ, ÒÑ²»ÔÙÊ¹ÓÃ IPX Í¨Ñ¶Ð­¶¨. ¸ÄÓÉÒ»Ì¨ Unix ËÅ·þÆ÷
(¿ÉÒÔÊÇ Linux »ò SUN) À´µ£ÈÎ, Linux ÓÃ»§¶Ë¿ÉÍ¸¹ý NFS,
¶ø DOS Óë Windows ÔòÓÉ SMB (NetBIOS) over TCP/IP ¹²ÓÃÈíÌå¼°Ê¹ÓÃÕßµÄµµ°¸.
Òò´Ë, ÎÒÃÇ¶ÔËùÓÐµÄ×÷ÒµÏµÍ³¶¼Ê¹ÓÃµ¥Ò»¸ö home Ä¿Â¼.




\subsection{ËüÊÇÈçºÎ¹¤×÷}

\begin{enumerate}
\item ÓÃ»§¶Ë¸öÈËµçÄÔ¿ª»úáá, ÔÚ TCP/IP BootPROM »ò PXE Boot ROM
»ñµÃ¿ØÖÆÈ¨Ö®Ç°ÏÈ×ö×ÔÎÒ²âÊÔ.
\item BootPROM ·¢³ö BOOTP/DHCP ÒªÇó, ÒÔÈ¡µÃ IP ×éÌ¬²ÎÊý.
\item Èç¹ûËÅ·þÆ÷ÊÕµ½¸öÈËµçÄÔËùËÍ³öµÄÒªÇó, ¾Í»áËÍ»Ø BOOTP/DHCP »ØÓ¦,
ÄÚÈÝ°üÀ¨ÓÃ»§¶ËµÄ IP Î»Ö·, Ô¤ÉèÍ¨Ñ¶Õ¢µÀ, ¼°¿ª»úÓ³Ïñµµ.
·ñÔò, ËÅ·þÆ÷»áºöÂÔÕâ¸öÒªÇó. 
\item ¶øÔÚ PXE Boot ROM µÄ»·¾³ÏÂ, ½«ÓÐ¸ü¶àµÄÑ¶Ï¢ÔÚÓÃ»§¶ËÓëËÅ·þÆ÷Ö®¼ä×÷Ó¦´ð,
ÓÃÒÔ¾ö¶¨°²×°²ÎÊý.
\item BootPROM ÓÉ TFTP Í¨Ñ¶Ð­¶¨´ÓËÅ·þÆ÷ÏÂÔØ¿ª»úÓ³Ïñµµ,
Õâ¸öÓ³ÏñµµÆäÊµ¾ÍÊÇÒ»¸öÃûÎª {\ttfamily BpBatch} µÄÐ¡³ÌÊ½,
Ò²¾ÍÊÇÎÒÃÇµÄ¿ª»úÊ±ÆÚÅú´Îµµ°¸µÄ½âÒëÆ÷.
\item Æô¶¯Åú´Îµµ½âÒëÆ÷Ö®áá. ¼¸ºõÊÇÖ»ÓÐËüµ¥¶À´æÔÚ¼ÇÒäÌåÖÐ.
³ýÁË preboot execution environment (ÓÉ Boot ROM Ìá¹©)Íâ,
ÕâÊ±×÷ÒµÏµÍ³ÉÐÎ´ÔØÈë. 
\item Õâ¸öÅú´Îµµ½âÒëÆ÷»á¼ì²é BOOTP/DHCP ¸øÃüÁîÁÐµÄËùÓÐÑ¡Ïî,
ÌØ±ðÊÇ BpBatch Òª´¦ÀíµÄ.
BpBatch ÒÔ DHCP Ñ¡Ïî 155 È¡µÃÃüÁîÁÐ²ÎÊý.
Èç¹ûÑ¡Ïî 155 ÊÇ¿ÕµÄ,
Ëü»á¸ÄÓÉ DHCP Ñ¡Ïî 135 È¡µÃ²ÎÊý (PXE 2.0 BootPROM Ö»ÄÜÊÕµ½ 128-135 µÄÑ¡Ïî).
\item Í¸¹ýÅú´Î×÷Òµµµ, ÎÒÃÇ¿ÉÒÔ×öÒ»Ð©ÊÂÈç:
\begin{enumerate}
\item ÔØÈë¶à¹úÓïÏµ¼üÅÌ¶ÔÓ¦.
\item Í¸¹ýÔ¶¶ËËÅ·þÆ÷ (Unix, Radius »ò Windows NT) ×öÊ¹ÓÃÕßÉí·ÝÈÏÖ¤.
\item ÈÃÊ¹ÓÃÕß¾ö¶¨Ê¹ÓÃ, ÄÄÖÖ¿ÉÓÃµÄ×÷ÒµÏµÍ³.
\item ¾ö¶¨×÷ÒµÏµÍ³áá, ×Ô¶¯ÖØÐÂ·Ö¸îÓ²µú²¢¿ìËÙ¸ñÊ½»¯²¿·Ý·Ö¸îÇø.
\item ¼ì²éÆäÓ²µúÄÚµÄ×ÊÁÏÊÇ·ñÓëÆäÑ¡¶¨µÄ×÷ÒµÏµÍ³µÄ×îÐÂÉè¶¨Ò»ÖÆ,
Èç¹û²»ÊÇ, Ëü»áÍ¸¹ý TFTP Í¨Ñ¶Ð­¶¨ÏÂÔØ×îÐÂÓ³Ïñµµ.
\item ½âÑ¹ËõËùÑ¡¶¨µÄ×÷ÒµÏµÍ³µÄÓ³Ïñµµµ½Ö÷·Ö¸îÇø.
\item Èç¹ûÑ¡Ôñ Linux, ÔØÈë Kernel ²¢Æô¶¯Ëü.
\item Èç¹ûÑ¡Ôñ DOS »ò Windows, ¾Í¸üÐÂÓ²µú×ÊÁÏ²¢Æô¶¯µçÄÔ.
\end{enumerate}

¶Ô {\bfseries DOS and Windows 3.1},
ÎÒÃÇÊ¹ÓÃÃâ·ÑµÄ Microsoft LanManager for DOS
(ËÑÑ°ÍøÂ·ÉÏÓëÄã×î½üµÄÓ³ÉäÕ¾Ì¨;
Ó¦¸ÃÊÇÓÐËÄ¸öÃûÎª {\ttfamily disk1} µ½ {\ttfamily disk4} µÄµµ°¸)
Îª SMB ÓÃ»§¶Ë. Microsoft LanManager ¿ÉÒÔÍ¸¹ý DHCP ¶¯Ì¬Éè¶¨×éÌ¬.
ÔÚµÇÈëáá, Ê¹ÓÃÕßÃæ¶ÔµÄÊÇ DOS, ÇÒÖ»Òª´ò {\ttfamily win} Ö¸Áî¾Í¿ÉÆô¶¯ Windows 3.1 ÁË.
ÓÐÒ»µã, ÔÚÕâÒªÌØ±ð×¢Òâ DOS ¼° Windows 3.1 ¿´ÆðÀ´ÏñÊÇ°²×°ÔÚÓÃ»§¶ËµÄ×ÔÉíµçÄÔ.

¶Ô {\bfseries Windows 95}98 ¼° Windows NT/,
ÎÒÃÇÒ²Ê¹ÓÃ Microsoft SMB ÓÃ»§¶Ë (³ÆÎª {\itshape Client for the Microsoft Network\/}),
ËüÒ²Ö§Ô®Í¸¹ý DHCP ¶¯Ì¬Éè¶¨×éÌ¬. ÎªÁË½µµÍÍøÂ·¸ºÔØÎÒÃÇ²ÉÓÃÁË
\onlynameurl{Shared LAN Cache},
ÕâÊÇÒ»¸öÇ¿¶øÓÐÁ¦µÄÍøÂ·µ½Ó²µúÖ®¼äµÄ¿ìÈ¡³ÌÊ½.
\end{enumerate}

Ñ§ÉúËùÊ¹ÓÃµÄµçÄÔ¿ÉÒÔ{\itshape ºÜ±©Á¦µÄ\/}Ö±½Ó¹ØµôµçÔ´¶ø²»»áÓÐÈÎºÎÎÊÌâ,
ÒòÎªÓ²µúµÄ×ÊÁÏÔÚÃ¿´Î¿ª»úÊ±¶¼»áÖØÐÂ½¨Á¢.

¶Ôì¶±È½Ï "°²È«µÄ" µçÄÔ (Èç Öú½ÌµÄµçÄÔ), Èç¹ûµçÄÔÒÑÓÃÉÏÊöÏµÍ³¿ª»ú¹ýÒ»´Î,
Ôò¿ª»ú½Å±¾Ö»»á¸ÄÓÉ±¾»úÓ²µú¿ª»ú, ¶ø²»ÔÙÇåÀíÓ²µú.
ÕâÑù¿ÉÒÔÔÊÐíÊ¹ÓÃÕß±£Áô×ÊÁÏÔÚÓ²µúÖÐ. ¶øµ±Õû¸ö¼Ü¹¹ÀÃµôÁË,
Ê¹ÓÃÕßÖ»Ðè´Ó¿ª»úÑ¡µ¥ÌôÑ¡ËùÒªµÄÏµÍ³, ÔòÓÖÄÜµÃµ½Ò»¸öÈ«ÐÂµÄ°²×°.




\subsection{Ïà¹ØµÄ·ÇÉÌÒµÎÄ¼þ}

ÕâÖÖ×éÌ¬ÒÑ¾­³É¹¦µÄÒÆÖ³µ½ÊÀ½çÉÏµÄÐí¶àµØ·½.
ÉÙÊýÈËÒÑ¾­¿ªÊ¼×­Ð´Ò»Ð©¼¼ÇÉÓëÌáÊ¾À´Íê³ÉÕâ·Ý How-To.
Èç¹ûÄúÒ²Ôø×ö¹ý, µ«ÔÚ±¾ÎÄÖÐÎ´±»ÒýÓÃ»¶Ó­ËÍÒ»·Ý e-mail ¸ø
{\ttfamily mvuilleu@bpbatch.org}.
Èç¹ûÄúÔÚÖØ½¨ÕâÖÖ×éÌ¬ÖÐÓöµ½ÎÊÌâ, ÇëÔÙÏêÏ¸¿´Ò»´ÎÎÄ¼þ !
\begin{itemize}
\item {\ttfamily \onlynameurl{http://www.ph-ludwigsburg.de/nutzer/schmitt$\backslash$\_peter/}},
ÓÉÔÚµÂ¹ú, Ludwigsburg µÄ Carl-Schaefer-Schule µÄ Peter Schmitt ËùÐ´.
´ËÎÄÊÇ BpBatch µÄÓÅÖÊ²Î¿¼×ÊÁÏ, ÊÊºÏµÂÓïµÄÊ¹ÓÃÕß.
\item {\ttfamily \onlynameurl{http://www.br.fgov.be/RESEARCH/INFORMATICS/info/bootp.html}},
ÓÉÔÚ±ÈÀûÊ±¹ú¼ÒÖ²ÎïÔ°µÄ Alain Empain ËùÐ´.
ÓÐÐí¶àÓÐÓÃµÄ¡õÀý½Å±¾³ÌÐò,ÒÔ¼°Ò»¸öºÜ°ôµÄ PERL ³ÌÊ½ÓÃÀ´×Ô¶¯²úÉúÍ¼ÐÎ»¯µÄÑ¡µ¥²¢ÄÜÍ¸¹ý¸ß½×µÄÐðÊö×ª³É HTML ÎÄ¼þ.
\item {\ttfamily \onlynameurl{http://www.katedral.se/system/elevsyst}},
ÓÉÈðµä Uppsala ½Ì»áÑ§Ð£µÄ Johan Carlstedt ËùÐ´.
{\itshape ÖÁ½ñ, ÔÚÕâµÄ×éÌ¬Éè¶¨»¹Í£ÁôÔÚ¾É°æµÄÔ¶¶Ë¿ª»ú¹¤¾ß³ÌÊ½.
´óÖÂÉÏ, Ö»ÒªÒ»µãµãÐÞÕý, ËùÓÐµÄ¶«Î÷¶¼»¹¿ÉÒÔÊÊÓÃ\/}.
\item {\ttfamily \onlynameurl{http://vitoria.upf.tche.br/\~{}fred/}},
ÆÏÌÑÑÀÎÄ, ÓÉ Brasil µÄ Passo Fundo ´óÑ§µÄ Frederico Goldschmidt.
\item {\ttfamily \onlynameurl{http://www.etse.urv.es/\~{}larinyo}}, Î÷°àÑÀÎÄ,
ÓÉÎ÷°àÑÀ, Escola Tecnica Superio d'Enginyeria µÄ Lluis Arino ËùÐ´.
\end{itemize}


ÄãÒ²¿ÉÒÔ¼Ä¸øÎÒÄãµÄ BpBatch ½Å±¾³ÌÐòµµ, Èç¹ûÄãÏëÈÃËü·ÅÔÚ\onlynameurl{¡õÀý½Å±¾³ÌÐò¾«Ñ¡}ÖÐ.




\section{ÈçºÎÉè¶¨}

Ê×ÏÈ, µ÷Õû»úÆ÷Î»ÖÃÊ¹ÊÖ±ßÓÐÏÂÁÐÁ½Ì¨»úÆ÷: 
\begin{itemize}
\item {\bfseries ËÅ·þÆ÷}, ÎÒÃÇÊÇÓÃÒ»Ì¨ Unix Ö÷»ú»ò Windows NT.
\item {\bfseries ÓÃ»§¶Ë}, Ò»Ì¨ÒÑ¾­Æô¶¯ BootPROM µÄ¸öÈËµçÄÔ, Ó²µúÄÚ²»ÒªÓÐÖØÒª×ÊÁÏ.
\end{itemize}

Èç¹ûÄãÏëÒª²âÊÔÄúµÄ×éÌ¬Éè¶¨¶øÄú»¹Ã»ÓÐ BootPROM,
Äã¿ÉÒÔµ½
{\ttfamily \onlynameurl{http://www.bootix.com}}
ÏÂÔØ²âÊÔ°æ´ÅÆ¬. Õâ¸ö´ÅÆ¬¿ÉÒÔÊ¹ÄúµÄµçÄÔ¾ÍºÃÏñÊÇ²åÉÏ TCP/IP BootPROM Ò»°ã.

Èç¹ûÄãÒÑÓÐ Boot ROM, ÄãÒªÏÈÆô¶¯Ëü. Èç¹ûÄúÊ¹ÓÃ Bootix µÄ TCP/IP BootPROM,
Äã¿ÉÒÔÓÃÍøÂ·¿¨ÖÆÔìÉÌËùÌá¹©µÄÌØÊâ³ÌÊ½À´ÆôÓÃËü.
Èç¹ûÄãÓÃ PXE BootPROM, ÄãÖ»Òª¾­ÓÉ BIOS Éè¶¨, ¸Ä±äÔ¤ÉèµÄ¿ª»ú×°ÖÃ
(default boot device) ¾Í¿ÉÒÔÁË.

Ñ§ÉúËùÊ¹ÓÃµÄµçÄÔ, ÎÒÃÇÉè¶¨ÓÉÍøÂ·¿ª»ú, ¶ø²»ÄÜÍ¸¹ýÓ²µú¼°Èíµú¿ª»ú.
Öú½ÌµÄµçÄÔ, ÎÒÃÇÉè¶¨ÏÈÓÉÍøÂ·¿ª»ú, µ«Ò²ÔÊÐíÓ²µúÓëÈíµú¿ª»ú.




\subsection{ËÅ·þÆ÷¶ËµÄÉè¶¨}

ÔÚËÅ·þÆ÷¶Ë, Ö»ÐèÒªÏÂÁÐµÄ·þÎñ:
\begin{enumerate}
\item Ò»¸ö BOOTP/DHCP ËÅ·þÆ÷.
\item »òÐíÒ²ÒªÒ»¸ö Proxy DHCP ËÅ·þÆ÷.
\item Ò»¸ö TFTP ËÅ·þÆ÷.
\end{enumerate}

{\bfseries Ê¹ÓÃ PXE Boot ROM ±ØÐë×¢Òâ:} ÄãÒªÈ·¶¨ÊÇÊ¹ÓÃ×îÐÂ°æµÄ PXE.
ÔÚÐ´±¾ÎÄµÄÊ±ºò, ×îÐÂµÄ°æ±¾ÊÇ PXE 2.0 µ« PXE 0.99x bootrom Ò²Ö§Ô®,
²»¹ýÓÐ²¿·ÝµÄ DHCP Ñ¡Ïî½«²»»áÍ¸¹ý DHCP ËÅ·þÆ÷ËÍ³ö. ÌØ±ðÊÇ,
Èç¹û DHCP Ñ¡Ïî 135 ¶Ô BpBatch Ê§Ð§ (BpBatch ì¶Æô¶¯Ê±, ÏÔÊ¾ "Cannot load file"),
Äã¾ÍÒªÉý¼¶µ½ PXE 2.0 .
Èç¹ûÄãµÄÍøÂ·¿¨Êôì¶ Intel EPRO100 ×åÏµ, Äã¿ÉÒÔÈ¡µÃ×îÐÂµÄ
Intel PXE Product Development Kit (PDK) ÆÀ¹À°æ,
Ëü»¹°üº¬Ò»¸öÓÃÀ´¸üÐÂ BootPROM µÄ¿ìÉÁ¼ÇÒäÌå¹¤¾ß³ÌÊ½.
Õâ¸ö PDK ·ÅÔÚ {\ttfamily \onlynameurl{http://developer.intel.com/ial/wfm/tools/pxepdk20/index.htm}}.




\subsubsection{Éè¶¨ DHCP ËÅ·þÆ÷}

DHCP ËÅ·þÆ÷Ëù°éÑÝµÄ½ÇÉ«ÊÇ´«ËÍ IP Î»Ö·¸øÓÃ»§¶Ë²¢ÈÃËü×Ô TFTP ËÅ·þÆ÷ÏÂÔØ,
ÃûÎª {\ttfamily bpbatch.P} µÄµµ°¸. DHCP ÊÇÖØµþì¶ BOOTP µÄÍ¨Ñ¶Ð­¶¨.
Èç¹ûÄãÓÃ Bootix µÄ TCP/IP BootPROM, Äã¿ÉÒÔ²»ÓÃ DHCP ËÅ·þÆ÷ (ÓÃ¾ÉµÄ BOOTP ËÅ·þÆ÷).

ÔÚ Windows NT, ÄãÒ²ÐèÒªÀàËÆµÄÔ­Éú DHCP ËÅ·þÆ÷.
Èç¹ûÄãÓÃ Bootix µÄ TCP/IP BootPROM, ÄãÔòÒªÓÃÒ»¸öÐ¡¼¼ÇÉÀ´¶¨Òå¿É¿ª»úµµµÄµµÃû
(¿ÉÓÉ Bootix µÄ WWW ÍøÒ³»ñµÃ¸ü¶à×ÊÑ¶). Èç¹ûÄãÓÃ PXE BootPROM,
Äã»¹ÐèÒªÒ»¸öÓÃ DHCP Ñ¡Ïî 67 ¶¨Òå¿É¿ª»úµµµÄµµÃû.
»¹ÒªÉè¶¨ VendorClass (DHCP Ñ¡Ïî 60) Îª "PXEClient" ¼°
VendorOptions (DHCP Ñ¡Ïî 43) Îª {\ttfamily 01,04,00,00,00,00,ff}
(²Î¿¼ÏÂÎÄ).

ÔÚ Linux, ×î¼ÑµÄÑ¡ÔñÊÇÀ´×Ô Íø¼ÊÍøÂ·ÈíÌåÐ­»á (Internet Software Consortium)
µÄ±ê×¼ DHCP ËÅ·þÆ÷.
Èç¹ûÄãÓÃ PXE BootPROM, ÔòÔÚ³£¼ûµÄÉè¶¨Íâ, Äã»¹Òª¶à¼ÓÏÂÃæÁ½¸öÉè¶¨:
\begin{itemize}
\item {\ttfamily option dhcp-class-identifier "PXEClient"}.
\item {\ttfamily option vendor-encapsulated-options 01:04:00:00:00:00:ff;}.
\end{itemize}


Èç¹ûÄãÊ¹ÓÃ ISC DHCP 3.0, ÔòÓï·¨ÉÏÓÐÐ©Î¢³öÈë. ÒÔÏÂÊÇ DHCP 3.0 ÏàÈÝµÄÉè¶¨µµ:

\begin{verbatim}
# DHCP ISC 3.0 & BpBatch ÓÃµÄ DHCP Éè¶¨µµ
#

# È«ÓòÑ¡Ïî
option subnet-mask 255.255.255.0;
default-lease-time -1;

# ¶¨Òå PXE ¹æ¡õµÄÑ¡Ïî
# Code 1: Ö¸µ½¿ª»úµµËùÔÚÎ»ÖÃ»úÆ÷µÄ IP Î»Ö·
# Code 2: ÓÃ»§¶ËµçÄÔ¼à¿Ø MTFTP »ØÓ¦µÄ UDP ²ººÅ
# Code 3: MTFTP ËÅ·þÆ÷ÓÃÀ´¼àÌý MTFTP »ØÓ¦µÄ UDP ²ººÅ
# Code 4: ÓÃ»§¶ËµçÄÔÔÚÊÔÖøÆô¶¯Ò»¸öÐÂµÄ MTFTP ´«ÊäÖ®Ç°µÄµÈ´ýÃëÊý
# Code 5: ÓÃ»§¶ËµçÄÔÔÚÊÔÖøÖØÐÂÆô¶¯Ò»¸öÐÂµÄ MTFTP ´«ÊäÖ®Ç°µÄµÈ´ýÃëÊý
option space PXE;
option PXE.mtftp-ip    code 1 = ip-address;
option PXE.mtftp-cport code 2 = unsigned integer 16;
option PXE.mtftp-sport code 3 = unsigned integer 16;
option PXE.mtftp-tmout code 4 = unsigned integer 8;
option PXE.mtftp-delay code 5 = unsigned integer 8;

# ¹æ¡õ×ÓÍøÓòµÄÑ¡Ïî
subnet 192.168.1.0 netmask 255.255.255.0 {
  option routers 192.168.1.1;

# ¹æ¡õÖ÷»úµÄÑ¡Ïî
  host pctest {
        hardware ethernet 00:01:02:03:04:05;
        filename "bpbatch.P";
        next-server 192.168.1.2;
        fixed-address 192.168.1.100;
        # BpBatch ÃüÁîÁÐ²ÎÊý: -i == ½»Ì¸Ê½
        # ÄãÒ²¿ÉÒÔ¶¨ÒåÒ»½Å±¾³ÌÊ½µµÃû (²»Òª°Ñ¸±µµÃû .bpb Ð´½øÈ¥)
        option option-135 "-i";
        # PXE ¹æ¡õµÄÑ¡Ïî
        class "pxeclients"
        {
         match if substring (option vendor-class-identifier, 0, 9) =
                "PXEClient";
         option vendor-class-identifier "PXEClient";
         # ÖÁÉÙÉè¶¨Ò»¸ö vendor-specific Ñ¡Ïî.
         # ÎÒÃÇÉè¶¨ MCAST IP Î»Ö·Îª 0.0.0.0 Ò²¾Í¸æËß BootPROM ¼ÌÐøÊ¹ÓÃ
         # TFTP Í¨Ñ¶Ð­¶¨ (Î»Ö· 0.0.0.0 ÒâÎ½Öø "Ã»ÓÐÎ»Ö·")
         option PXE.mtftp-ip 0.0.0.0;
         vendor-option-space PXE;
        }
  }
}
\end{verbatim}




ÔÚ Solaris ÉÏ, ÄãÒÀÈ»¿ÉÒÔÊ¹ÓÃ Íø¼ÊÍøÂ·ÈíÌåÐ­»á µÄ DHCP ËÅ·þÆ÷
(¿ÉÒÔÔÚ Web ÉÏÕÒµ½), »òÊ¹ÓÃ Solaris µÄ DHCP ËÅ·þÆ÷ (Solaris 2.5 °æÒÔáá¶¼ÓÐ¸½).
È»¶ø, ÓÃ Solaris DHCP ËÅ·þÆ÷ËÆºõÎÞ·¨ÔÚ DHCP Éè¶¨ÖÐÌá¹©, ÓÃ»§Àà±ðµÄ±æÊ¶Âë.
Äã±ØÐë°²×°Ò»¸ö Proxy DHCP ËÅ·þÆ÷.
²»¹ý, Õâ¸ö Proxy DHCP ËÅ·þÆ÷±ØÐë°²×°ÔÚÁíÒ»Ì¨µçÄÔÉÏ,
ÒòÎª Solaris DHCP ËÅ·þÆ÷»áËø×¡ DHCP ²º.

ÎÒÃÇ½¨ÒéÄúÉè¶¨ÓÃ»§¶ËµçÄÔµÄ DHCP ²ÎÊýÎªÎÞÏÞÖÆµÄÊ¹ÓÃÖÜÆÚ.
±ðÍüÁË BOOTP/DHCP µÄÒªÇóÑ¶ºÅÊÜÏÞì¶×ÓÍøÓòÄÚ´«ËÍ.
Èç¹ûÓÃ»§¶ËÓëËÅ·þÆ÷²»ÔÚÍ¬Ò»¸ö×ÓÍøÓòÄã¾Í±ØÐë°²×°Ò»¸ö BOOTP/DHCP Relay
´úÀí³ÌÊ½ÔÚÁ½¸ö×ÓÍøÓòÖ®¼ä. µ«ÏÖÔÚ, ÏÈ¼ÙÉèÁ½Ì¨»úÆ÷¶¼ÔÚÍ¬Ò»¸ö×ÓÍøÓò.



Èç¹ûÄúÊ¹ÓÃ PXE 2.0 BootPROM, ÄúÖ»ÄÜÊ¹ÓÃ site-specific Ñ¡ÏîµÚ 128 ÖÁ 135
ÒÔ´«µÝÑ¶Ï¢¸ø BpBatch. ´óì¶ 135 µÄÑ¡Ïî»á±» PXE 2.0 BootPROM ºöÂÔµô.
Ñ¡Ïî 135 ÓÃÀ´´«µÝ BpBatch µÄÃüÁîÁÐ²ÎÊý. ËùÒÔÄã»¹ÓÐ 6 ¸öÑ¡Ïî¿ÉÒÔÓÃÀ´×Ô¶©.




\subsubsection{Éè¶¨ Proxy DHCP ËÅ·þÆ÷}

Proxy DHCP ËÅ·þÆ÷Ëù°éÑÝµÄ½ÇÉ«ÊÇÓÃÀ´¿Ë·þ DHCP ËÅ·þÆ÷µÄÏÞÖÆ²¢Ìá¹©
PXE ¹æ¡õµÄÑÓÉìÑ¶Ï¢. Proxy DHCP ËÅ·þÆ÷Ö»ÎªÁËÓë PXE BootPROM ´îÅäÊ¹ÓÃ.
Òò´Ë, Proxy DHCP ËÅ·þÆ÷²»ÊÇ±ØÒªµÄ. Èç¹ûÄãµÄ DHCP ËÅ·þÆ÷ÄÜ»ØÓ¦ËùÓÐ PXE BootPROM
ÒªÇóµÄÑ¡Ïî, Ôò PXE BootPROM ¾Í²»»áÈ¥Ñ°ÕÒ Proxy DHCP ËÅ·þÆ÷ (aka BINL).
¶øÎÒÃÇËùËµµÄ "ËùÓÐ PXE BootPROM ÒªÇóµÄÑ¡Ïî", ÊÇÖ¸
IP Ñ¡Ïî (IP Î»Ö·, Õ¢µÀÆ÷, ×ÓÍøÓò, Ö÷»úÃû,...) ÒÔ¼° PXE vendor-specific Ñ¡Ïî
(vendor-class -- Ñ¡Ïî 60 -- ÓÃÒÔÉè¶¨ "PXEClient" ¶ø vendor-encapsulated-options
Éè¶¨Ò»Ð©ÓÐÒâÒåµÄ×ÊÑ¶¸ø PXE BootPROM.
Äã¿ÉÒÔÓÃ 01:04:00:00:00:00:ff Èç¹ûÄã²»ÖªµÀ¶Ô PXE BootPROM
¶øÑÔÄÇÒ»¸ö×ÊÑ¶ÊÇÓÐÒâÒåµÄ). ¸üÍêÕûµÄÐðÊöÇë¿´ÏÂÃæµÄËµÃ÷.

BpBatch ±¾Éí¹¦ÄÜ¾ÍºÜÍêÕû, Äã²»ÐëÊ¹ÓÃÈÎºÎ PXE ¹æ¡õµÄ DHCP ÑÓÉì²ÎÊý (Ñ¡µ¥, µÈ.).
È»¶ø, Èç¹ûÄúµÄ DHCP ËÅ·þÆ÷²»ÄÜÌá¹©×îµÍÏÞ¶ÈµÄ PXE ÏàÈÝ,
ÔòÄú¾ÍÐèÒªÒ»Ì¨ Proxy DHCP ËÅ·þÆ÷, ·ñÔòÄúµÄ PXE BootPROM ÎÞ·¨¼ÌÐøÊ¹ÓÃ.
×îµÍÏÞ¶ÈµÄÏàÈÝ, ÊÇÖ¸ÔÊÐíÉè¶¨ VendorClass ¼° VendorOptions (Ñ¡Ïî 60 ¼° 43 ).

ÔÚ Windows NT ÏÂ, Äú¿ÉÒÔÊÔÖøÓÃ Intel WfM PDK (¿ÉÔÚËûÃÇµÄÍøÒ³ÕÒµ½),
µ«Ëü²¢²»ÈÝÒ×²Ù×÷. ÎÒÃÇ½¨ÒéÄúÕÒÒ»Ì¨ÔÚ×ÓÍøÓòÖÐ,
ÅÜ Linux µÄ»úÆ÷°²×°ÎÒÃÇµÄÐ¡ÐÍ Proxy DHCP ËÅ·þÆ÷.
ÎÒÃÇµÄ Proxy DHCP ËÅ·þÆ÷¶Ô BpBatch µÄ×î´óÓÅµãÊÇ,
ÈÃÄã¿ÉÒÔ×Ô¶©Ñ¡Ïî 155 vendor ±êÇ©ÈÃ BpBatch ½âÊÍÎªÃüÁî.

ÔÚ Linux ¼° Solaris ÏÂ, Äú¿ÉÒÔÊ¹ÓÃÎÒÃÇµÄ Proxy DHCP ËÅ·þÆ÷³ÌÊ½,
ÄãÖ»ÐèÉè¶¨ºÃ TFTP ËÅ·þÆ÷µÄ IP Î»Ö·, ¿É¿ª»úµµµµÃû¼°ÆäËü¸½¼Ó²ÎÊý,
¾Í¿ÉÒÔÍê³ÉËùÓÐµÄ¹¤×÷. Èç¹ûÔÚËÅ·þÆ÷ÉÏµÄ DHCP Í¨Ñ¶²ºÒÑ±»ÆäËüËÅ·þ³ÌÊ½Ê¹ÓÃ,
Ôò Proxy DHCP ËÅ·þÆ÷»á¸ÄÔÚ 4011 ²ºÉÏÖ´ÐÐ.
ÔÚÕâÖÖ×´¿öÏÂ, Ê¹ÓÃ DHCP Í¨Ñ¶²ºµÄ³ÌÊ½±ØÐë»ØÓ¦
{\ttfamily PXEClinet} ¸ø client class.
ÕâÑù PXE ÓÃ»§¶Ë²Å»áÖªµÀÒªÈ¥ÊÔÖøÔÚ 4011 ²ºÉÏÍ¨Á¬.

Èç¹ûÄãÏë¸üÁË½â PXE ¶Ô DHCP µÄÑÓÉì¹¦ÄÜ,
¿ÉÒÔÔÚ Intel µÄÍøÒ³ÉÏÕÒµ½¸ü¶àËµÃ÷. µ«ÊÇÕâÐ©ÎÄÕÂÓÐµã¹Ö¹ÖµÄ,
Õâ¸öÍ¨Ñ¶Ð­¶¨¾¹È»Éè¶¨ÔÚ¶îÍâµÄÎ»ÖÃºÅÂëÉÏ, ÓÃÒÔµÃµ½¸ü´óµÄµ¯ÐÔ.
¶ÔÕâ¸öÎÊÌâÎ¨Ò»µÄ½âÊÍÊÇ PXE ÓÃ»§¶ËÐèÒªÍêÕûµÄ
{\itshape ÔöÇ¿ÐÍµÄ DHCP »ØÓ¦\/}. Èç¹ûËüÖ»ÊÕµ½±ê×¼µÄ DHCP ÒªÇó,
Ëü»áÒ»Ö±µÈµ½ÊÕµ½²ÅÍ£×¡.
\begin{enumerate}
\item Ò»¸ö client class (T60) Éè¶¨Îª {\ttfamily PXEClient}.
\item vendor encapsulated options (T43).
(²»¿ÉÒÔÊÇ¿ÕµÄ×Ö´®, µ«Äã¿ÉÒÔÉèÎª 16 ½øÖÆµÄ {\ttfamily 01:04:00:00:00:00},
Õâ¿ÉÒÔ±» PXE BootPROM Ëù½ÓÊÜ)
\item Ò»¸ö·Ç¿Õ°×µÄ¿É¿ª»úµµµµÃû.
\item Ò»¸öÓÐÐ§µÄÖ÷»úÃû.
\end{enumerate}

PXE ¹æ¡õÐ­µ÷µÄ¹¤×÷»áÔÚËùÓÐµÄ×ÊÑ¶¶¼È¡µÃáá²Å½áÊø,
Èç¹ûÈ±ÁËÄ³Ò»²¿·ÝµÄ×ÊÑ¶, ½«Òý·¢Ïàµ±¸´ÔÓµÄ×÷Òµ³ÌÐò (Ñ°ÕÒ°²×°ËÅ·þÆ÷, µÈÎÊÌâ.).




\subsubsection{Éè¶¨ TFTP ËÅ·þÆ÷}

TFTP ËÅ·þÆ÷ÊÇÏàµ±¼òµ¥µÄµµ°¸ËÅ·þÆ÷. ×î»ù±¾µÄ°æ±¾ÖÐ,
TFTP Í¨Ñ¶Ð­¶¨ÄËÊÇ²ÉÓÃÃ¿¸öÇø¿é 512 Î»Ôª×é, Õâ¸ö×÷·¨Ïàµ±Ã»Ð§ÂÊ.
Bootix µÄ TCP/IP BootPROM ¼° PXE BootPROM ÔÊÐíÊ¹ÓÃ½Ï´óµÄÇø¿éÀ´´«ËÍ
(1408 Î»Ôª×é), ´Ë·¨¿ÉÒÔ´ó·ù¼ÓËÙ´«ÊäËÙ¶È. µ«, ÕâÖ»ÄÜÔÚÔöÇ¿ÐÍµÄ TFTP ËÅ·þÆ÷ÉÏ¹¤×÷.

ÔÚ Windows NT »·¾³ÏÂ, ÎÒÃÇ½¨Òé²ÉÓÃ Intel µÄ TFTP ËÅ·þÆ÷,
¿ÉÒÔÔÚ Intel PXE Product Development Kit for Windows ÕÒµ½.
Äã¿ÉÒÔÔÚÕâÕÒµ½Õâ¸ö PDK {\ttfamily \onlynameurl{http://developer.intel.com/ial/wfm/tools/pxepdk20/index.htm}}.
¼«ÖØÒªµÄÎÊÌâ: Èç¹ûÄã¼Æ»­ÔÚ Windows NT ÉÏÊ¹ÓÃ Intel µÄ TFTP ËÅ·þÆ÷,
±ðÍü¼Ç±ØÐëÖØÐÂÃüÃûÄãµÄ BpBatch ÔØÈëÆ÷Ãû³Æ, ÓÉ bpbatch.P ¸ÄÎª bpbatch.B.
Õâ½«¸æÖª BpBatch ²ÉÓÃÓë Intel ÏàÈÝµÄ TFTP Ñ¡Ïî.

Intel µÄ PXE PDK »¹°ü»¹º¬ÁËÆÀ¹À°æµÄ PXE BootPROM ³ÌÊ½Âë,
¸ø Intel µÄ EPRO100 ×åÏµÍøÂ·¿¨Ê¹ÓÃ,
Òà°üº¬ÁËÓÃÀ´¸üÐÂ¿ìÉÁ¼ÇÒäÌåµÄ¹¤¾ß³ÌÊ½ÒÔÉý¼¶Îª BootPROM ÄÚÈÝÎª×îÐÂ°æµÄ PXE.



ÔÚ Linux »·¾³ÏÂ, Äã¿ÉÒÔÊ¹ÓÃ´ó²¿·ÝÌ×¼þÖÐËùº¬µÄ tftp daemon,
µ«²»¾ß±¸ÔöÇ¿µÄ TFTP Ä£Ê½ (1408 Î»Ôª×éµÄ·â°ü).
ÎÒÃÇ½¨ÒéÊ¹ÓÃ Bootix µÄÔöÇ¿ÐÍ TFTP ËÅ·þÆ÷, ¿ÉÒÔÔÚÎÒÃÇµÄÄ¿Â¼ÏÂÕÒµ½
({\ttfamily \onlynameurl{http://cuiwww.unige.ch/info/pc/remote-boot/soft/}}),
µµÃûÎª {\ttfamily incomtftpdlx.tar.gz}.

ÔÚ Solaris »·¾³ÏÂ, Äã¿ÉÒÔÊ¹ÓÃ Bootix ÔöÇ¿ÐÍ TFTP ËÅ·þÆ÷,
Ò²¿ÉÒÔÔÚÎÒÃÇµÄÄ¿Â¼ÏÂÕÒµ½ (µµÃûÎª {\ttfamily incomtftpdsun.tar.gz}).
ÁíÒ»ÖÖ¿ÉÓÃµÄÑ¡Ôñ:
John Martin ({\ttfamily j.martin@abdn.ac.uk}) ÒÑ°Ñ Linux ÉÏµÄ
{\ttfamily tftpd} ÒÆÖ³µ½ Solaris ÉÏ. Äã¿ÉÒÔÔÚÕâÕÒµ½ {\ttfamily \onlynameurl{http://www.csd.abdn.ac.uk/\~{}jmartin/tftpd.tar.gz}}.



{\bfseries Èç¹ûÄã½ÏÏ²»¶Ê¹ÓÃ±ê×¼µÄ TFTP ËÅ·þÆ÷, °ÑËùÓÐ¿É¿ª»úÓ³ÏñµµµµÃûµÄ¸±µµÃû {\ttfamily P}
ÄÃµô, ÕâÑù¿ÉÒÔ¸æÖª BootPROM ²ÉÓÃ±ê×¼µÄ TFTP Í¨Ñ¶²ºÍ¨Ñ¶.
(Õâ¸öÐ¡¼¼ÇÉÊÇ Bootix ¸ø TCP/IP BootPROM Ê¹ÓÃ. ÎÒÃÇÒ²¿ÉÒÔÓÃÕâ¸ö¼òµ¥µÄ·½·¨À´Ñ¡Ôñ
Ô¤ÉèµÄ TFTP Í¨Ñ¶²º¸ø PXE BootPROM Ê¹ÓÃ).}



ÕªÒªÀ´Ëµ, Èç¹ûÄã¼Æ»­Ê¹ÓÃ±ê×¼µÄ TFTP ËÅ·þÆ÷,
Ôò°Ñ BpBatch ÔØÈëÆ÷µµÃûµÄ¸±µµÃû ÒÆÈ¥ (Ò²¾ÍÊÇ¸ÄÎª bpbatch).
Èç¹ûÄã¼Æ»­Ê¹ÓÃ Bootix Ö§Ô®ÔÚ 59 ²º, ÒÔ 1408 Î»Ôª×é·â°üµÄ TFTP ËÅ·þÆ÷,
ÔòÄãµÄÔØÈëÆ÷µµÃû±ØÐëÓÐ¸±µµÃû {\ttfamily .P} . ×îáá,
Èç¹ûÄã¼Æ»­Ê¹ÓÃ Intel µÄ TFTP ËÅ·þÆ÷ (»ò Bootware µÄÄÇ¸öËÅ·þÆ÷),
Ôò°ÑÔØÈëÆ÷ÃüÃûÎª {\ttfamily bpbatch.B}.




\subsection{ÓÃ»§¶ËµÄÉè¶¨}

Ê×ÏÈ, ÎÒÃÇ°ÑËùÓÐ×÷ÒµÏµÍ³ÏàÍ¬µÄ²¿·ÝÉè¶¨ºÃ.
Èç: Åú´ÎµµµÄ½âÒëÆ÷. È»áá, ÔÙÕë¶Ô¸÷ÖÖ×÷ÒµÏµÍ³À´Íê³É, ÎÒÃÇÐèÒªÏÂÁÐµÄ²½Öè:
\begin{enumerate}
\item Éè¶¨µ¥Ò»µÄÓÃ»§¶Ë.
\item ´¢´æÆäÉè¶¨µ½ËÅ·þÆ÷.
\item ²âÊÔËüÊÇ·ñ¿ÉÒÔÎªÔ¶¶Ë¿ª»úµÄÓÃ»§¶ËµçÄÔËùÊ¹ÓÃ.
\item µ÷ÕûËüµÄÉè¶¨ÒÔÊÊÓÃì¶ÆäËûÓ²ÌåÅä±¸ÀàËÆµÄÓÃ»§¶Ë»úÆ÷.
\end{enumerate}

Èç¹ûÕâÐ©¶¼Íê³ÉÁË, ÄãÒª¼ÓÒ»Ì¨ÓÃ»§¶Ë, ÔòÖ»Òª²åÉÏ Boot ROM
(»òÂòÌ¨¾ß Wired for Management µÄµçÄÔ...)
È»ááÔÙ¼ÓÒ»ÐÐÉè¶¨µ½ DHCP ËÅ·þÆ÷µÄÉè¶¨µµ.
Òë×¢: Wired for Management Ó¦¸ÃÊÇÖ¸±¾Éí¾ß±¸ PXE ¹¦ÄÜµÄÆ·ÅÆµçÄÔ.

ÎÒÃÇµÄ¡õÀýÊÇ¼ÙÉèÄãµÄÓÃ»§¶ËµçÄÔµÄÓ²µú¿Õ¼äÖÁÉÙÓÐ 1.4 G ÒÔÉÏ.
Èç¹ûµÍì¶Õâ¸öÖµ, ÄÇ¾ÍÒªËõÐ¡·Ö¸îÇø, µ«Çë¼Ç×¡ÄãÒª±£Áô¼¸°Ù MB ¿Õ¼ä²»±»¶ÔÓ¦µ½
(Ò²¾ÍÊÇ, ²»ÒªÁ¬×îááÒ»¸ö·Ö¸îÇø¶¼ÒÑ»­·Öµ½×îááÒ»¸ö´ÅÖù)
ÒÔ±£Áô¿Õ¼ä¸øÌØ±ðµÄ¿ìÈ¡·Ö¸îÇø. È»¶ø, ¿ìÈ¡ÇøÍ¨³£½ÓÔÚ×îááÒ»¸ö¶ÔÓ¦µ½µÄ´ÅÖù¿ªÊ¼¶ÔÓ¦,
Èç¹ûÄã²»ÏëÓÃÏàÍ¬´óÐ¡À´×ö²âÊÔ, Äã½«ÏÂÔØÍ¬ÑùµÄµµ°¸Êý´Î (¿ìÈ¡Çø»á±»×Ô¶¯Çå³ý).

±ð»ÒÐÄ. Èç¹ûÄãÒ»Ö±ÎÞ·¨ÈÃËüÕý³£¹¤×÷, ÏÈ²Î¿¼ {\itshape ÎÊÌâ¼¯\/} ÄÇÒ»½Ú,
¸ã²»ºÃÄãµÄÎÊÌâÒÑ±»½â¾ö¹ýÁË (Çë×ÔÍøÒ³È¡µÃ×îÐÂ°æ±¾).
ÔÙ²»ÐÐ, ²éÒ»ÏÂ BpBatch ÌÖÂÛÇø. »òÐíÓÐÈË¸úÄãÓöµ½Í¬ÑùµÄÎÊÌâ,
¶ø½â´ð¿ÉÒÔÔÚÌÖÂÛÇøÕÒµ½. ÌÖÂÛÇøµÄÍøÖ·ÊÇ: 
{\ttfamily \onlynameurl{http://cuiwww.unige.ch/info/pc/remote-boot/forum/}}. 
Èç¹û»¹ÊÇÎÞ·¨Õý³£¹¤×÷, ¿¼ÂÇ¿´¿´¼à¿ØÒ»ÏÂÍøÂ·Á÷Á¿ÊÇ·ñÊÇÍøÂ·±¾ÉíµÄÎÊÌâ
(ÔÚ Linux »·¾³ÏÂ, ¿ÉÒÔÓÃ {\ttfamily tcpdump} ¶ø Solaris »·¾³, ¿ÉÒÔÓÃ {\ttfamily snoop} ).
Èç¹ûÄãÒÀÈ»ÎÞ·¨ÈÃËüÕý³£¹¤×÷, ËÍÒ»·â E-mail µ½ {\ttfamily support@bpbatch.org}. 
Èç¹ûÄãµÄÎÊÌâÓëÔ¶¶Ë¿ª»úµÄÉè¶¨ÓÐÃÜÇÐ¹ØÏµ, ÎÒÃÇ»áÊÔÖø½â¾öÄãµÄÎÊÌâ.




\subsection{Éè¶¨¿ª»úÁ÷³Ì}

È¡µÃ {\ttfamily BpBatch} ÈíÌå, ²»¹ÜÊÇ {\ttfamily .zip} »ò {\ttfamily .tar.gz} ¸ñÊ½.
¿ÉÖ´ÐÐµµ¶¼·ÅÔÚ
\begin{itemize}
\item {\ttfamily \onlynameurl{http://cuiwww.unige.ch/info/pc/remote-boot/soft/bpb-exe.zip}}.
\item {\ttfamily \onlynameurl{http://cuiwww.unige.ch/info/pc/remote-boot/soft/bpb-exe.tar.gz}}.
\end{itemize}


ÔÚËÅ·þÆ÷ÉÏµÄ {\ttfamily /tftpboot} Ä¿Â¼ÏÂ, ·ÅÈëÏÂÃæÈý¸öÌØ±ðµÄ¿É¿ª»úÓ³Ïñµµ.
ËûÃÇÊÇÓÃÀ´Íê³É¿ª»úÇ°µÄÅú´Îµµ°¸½âÒë¹¦ÄÜ (ÏÂÃæÎÒÃÇÓÃ {\ttfamily bpbatch.P}
ÎªÔØÈëÆ÷µÄµµÃû. Èç¹ûÄã²»ÊÇÓÃ Bootix µÄ TFTP ËÅ·þÆ÷,
Ôò±ä¸üÔØÈëÆ÷µµÃûÎª {\ttfamily bpbatch} (±ê×¼ÐÍ TFTP ËÅ·þÆ÷)
»ò {\ttfamily bpbatch.B} (Intel/Bootware µÄ TFTP ËÅ·þÆ÷):
\begin{itemize}
\item {\ttfamily bpbatch.P}, ¶¯Ì¬ÔØÈëÆ÷ (×¢Òâ´óÐ¡Ð´²¢²Î¿¼ Éè¶¨ TFTP ËÅ·þÆ÷ÄÇ½Ú,
ÒÔÑ¡ÔñÊÊµ±µÄ¸½µµÃû).
\item {\ttfamily bpbatch.ovl}, ÖÐ¶ÏÖØµ¼µµ
\item {\ttfamily bpbatch.hlp}, ÏßÉÏËµÃ÷µµ
\end{itemize}

È»ááÎªÄãµÄÓÃ»§¶Ë¼ÓÒ»Ð© DHCP µÄÉè¶¨¹¤×÷, ÆäÖÐ: ¿É¿ª»úµµµµÃûÉè¶¨Îª
{\ttfamily "bpbatch.P"}. ¶¨Òå vendor Ñ¡Ïî±êÇ© 155 (Ê®½øÖÆ) Îª
{\ttfamily "-i"} (ÔÚ±ê×¼ÐÍµÄ DHCP ËÅ·þÆ÷, ¿ÉÒÔÓÃÒÔÏÂµÄÖ¸ÁîÍê³É:
{\ttfamily option option-155 "-i";}). Ëü»á±» {\ttfamily bpbatch} ½âÊÍÎªÃüÁîÁÐ,
¶ø {\ttfamily -i} ÒâÎ½Öø "½»Ì¸Ä£Ê½".

Æô¶¯ÓÃ»§¶ËµçÄÔ. ÄãÓ¦¸Ã¿´µ½
\begin{itemize}
\item BootPROM µÄ°æÈ¨Ðû¸æ.
\item µ±ÓÃ»§¶ËÔÚµÈ´ý DHCP »ØÓ¦Ê±, »á³öÏÖ {\ttfamily DHCP} ×Ö´®.
\item µ±ÓÃ»§¶ËÔÚµÈ´ýµÚÒ»¸ö TFTP ·â°üÊ±, »á³öÏÖ {\ttfamily TFTP} ×Ö´®.
\item µ±ÔØÈëÆ÷ÏÂÔØ½âÒëÆ÷Ê±, »á³öÏÖ {\ttfamily Loading BpBatch} ×Ö´®.
\item ×îááÊÇÎÒÃÇµÄÆìÖÄ, ËæÖøÒ»¸ö {\itshape ¼«´óµÄ\/} ÌáÊ¾·û.
\end{itemize}

¹§Ï² ! ÄãÒÔ¾­Æô¶¯ÁËÅú´Îµµ½âÒëÆ÷... Èç¹ûÄãºÜ¼±ì¶ÖªµÀÔÚÕâ»·¾³ÏÂÄã¿ÉÒÔ×öÉáÊÂ,
ÄÇ¾Í¼ÌÐøÔÄ¶ÁÏÂÒ»½Ú. Èç¹ûÄã²»¼±, Ìø¹ýËüÖ±½Ó°²×°ÄãËùÑ¡ÔñµÄ×÷ÒµÏµÍ³.
Èç¹ûÄãÓÐÈÎºÎ¹Øì¶½âÒëÆ÷Ö¸ÁîµÄÒÉÎÊ, ÊäÈë {\ttfamily help}.

¼Ç×¡Äã¿ÉÒÔÔÚ DOS ¼° Linux ÏÂÖ´ÐÐÏàÍ¬µÄ½âÒëÆ÷, Ö»ÒªÖ´ÐÐ {\ttfamily MrBatch} ³ÌÊ½.
Ö»ÓÐÒ»µãµãµÄ²îÒì (Linux °æ±¾²»Ö§Ô®Í¼ÐÎ»¯µÄ¹¦ÄÜ,
¶ø DOS °æ±¾Èç¹ûÔÚ BootPROM Î´±»×÷ÒµÏµÍ³Òþ²ØÖ®Ç°,
Ö»ÄÜËÍ³ö BOOTP ¼° TFTP µÄÒªÇóÑ¶ºÅ).

ÏÖÔÚÊÇÔÄ¶Á {\ttfamily BpBatch} {\itshape Óï·¨\/} µÄÊ±ºòÁË,
ÓÈÆäÊÇ {\itshape ²Î¿¼µµ°¸\/} ¼° {\itshape ¿ìÈ¡µµ°¸ÏµÍ³\/} ÕâÁ½¶Î. Õâ½«°ïÖúÄãÁË½â¡õÀý.

µ±ËùÓÐµÄ×÷ÒµÏµÍ³¶¼Éè¶¨ºÃ,
ÄãÒªÖÆ×÷Ò»¸öÑ¡µ¥ÈÃÊ¹ÓÃÕßÈ¥Ñ¡ÔñËüËùÒªµÄÊÇÄÄÒ»ÖÖ×÷ÒµÏµÍ³.
Äã¿É×ÔÐÐÌ½¾¿ÈçºÎÈ¥²úÉúÄÇÖÖÑ¡µ¥. ¶øËùÐèµÄÖ¸Áî¶¼ÔÚ±¾ÎÄÄ©¶Ë.




\subsubsection{Ì½ÌÖ BpBatch}

ÊÔÖøÊäÈë {\ttfamily LogVars}. ÄãÓ¦¸Ã¿ÉÒÔ¿´µ½´óÔ¼ÈýÊ®¼¸¸ö±äÊý±»ÁÐ³öÀ´.
¸ÅÀ¨À´Ëµ, ÏÈ³öÏÖ BpBatch µÄ±äÊýÉè¶¨, È»ááÊÇ×Ô BOOTP/DHCP Í¨Ñ¶Ð­¶¨È¡µÃµÄ»ØÓ¦,
×îááÊÇÓ²µú´óÐ¡µÄ±äÊý, ÒÔ°ÙÍòÎ»Ôª×éÎªµ¥Î».

ÊäÈë {\ttfamily GetPartitions part}, ÔÙÊäÈë {\ttfamily LogVars} Ò»´Î.
¾ÍÓ¦¸Ã¿´µ½ÔÚÄãµÚÒ»¸öÓ²µú»úÄÚµÄ·Ö¸îÇø¶¨Òå×ÊÑ¶.
¼ÙÉèµÚÒ»¸ö·Ö¸îÇøÓÐ BIGDOS, FAT32 »ò LINUX-EXT2,
ÊÔÖø´ò {\ttfamily LogDir "$\{$:1$\}$"} ÒÔÈ¡µÃ¸ùÄ¿Â¼µÄÄÚÈÝ,
È»ááÊäÈë {\ttfamily LogDir "$\{$:1$\}$/usr"} Èç¹ûÓÐ
{\ttfamily usr} Ä¿Â¼µÄ»°. ÄãÒ²¿ÉÒÔÊÔÖø´ò
{\ttfamily LogTree "$\{$:1$\}$/etc"} ÒÔÈ¡µÃÊ÷×´Ä¿Â¼.

·ÅÒ»¸ö GIF µµ (¸ñÊ½ÊÇ GIF-87a, ½»´í»ò·Ç½»´íµÄ¶¼ÐÐ, µ«²»¿ÉÊÇ GIF-89a)
µ½ÄãµÄ TFTP ËÅ·þÆ÷. ÎÒÃÇ¼ÙÉèµµÃûÊÇ {\ttfamily image.gif}.
Äã¿ÉÒÔÓÃÏÂÁÐµÄÖ¸Áî°ÑËü¸´ÖÆµ½ÈÎºÎµØ·½:
{\ttfamily copy "image.gif" "$\{$:1$\}$/temp/image.gif"}.
»òÕß, Äã¿ÉÒÔ×ÔËÅ·þÆ÷ÉÏÖ±½ÓÊ¹ÓÃ. ÏÖÔÚÊäÈë {\ttfamily Logvars "V*"}
²¢¼ìÊÓ {\ttfamily VESA} ±äÊýÖµ. Èç¹ûËüÏÔÊ¾ {\ttfamily On}, ÄÇ¾ÍÏàµ±¿ÉÄÜÒâÎ½Öø,
ÄãµÄÏÔÊ¾¿¨ÓÐ VESAÏàÈÝµÄ¹¦ÄÜ.
Äã¿ÉÒÔÓÃ {\ttfamily Echo "\$VESA-Modes"} ÁÐ³öÓÐÐ§µÄÏÔÊ¾Ä£Ê½.
ÒªÐã³öÄãµÄÍ¼µµÖ»ÒªÊÔÖøÊäÈëÒÔÏÂµÄÖ¸Áî: {\ttfamily DrawGif "image.gif"}.
Õâ¸öÍ¼µµÓ¦¸ÃÏÔÊ¾ÔÚÓ©Ä»×óÉÏ½Ç. Äã¿ÉÒÔÔÚµµÃûáá±ê¶¨ X ¼° Y Öá,
°ÑËü°ÚÔÚÆäËûµØ·½.
ÄãÒ²¿ÉÒÔÓÃ {\ttfamily DrawText 200 200 "Hello world" yellow} »­³öÎÄ×Ö.
»òÓÃ {\ttfamily DrawWindow 200 200 300 150} »­³öÒ»¸ö¿ÕµÄÊÓ´°.
¶øÒªÔÚ²úÉúÐÂÊÓ´°Ê±²åÈëÖ÷Ìâ, ¿ÉÒÔÊÔÖøÓÃ
{\ttfamily DrawWindow 200 200 300 150 "My Window"}.
Èç¹ûÄã¶ÔÍ¼ÐÎ»¯Ä£Ê½¸Ðµ½Ñá·³Ö»Òª´ò {\ttfamily CloseGraph}.

ÔÚÍ¼ÐÎ»¯Ä£Ê½ÏÂÒª×¢Òâ: Ô¤ÉèÇé¿öÏÂ, ËùÓÐµÄÍ¼ÐÎ¹¦ÄÜÔÚ 800x600 VESA Ä£Ê½ÏÂ¹¤×÷
(ÓÐ 256 É«½×), ÕâÊÇÔÚ {\ttfamily VESA-Modes} ±äÊýÏÂµÄµÚÒ»¸öÀ¸Î».
Èç¹ûÄãÒªÊ¹ÓÃ²»Í¬µÄÏÔÊ¾Ä£Ê½, Ôò±ä¸üµÚÒ»¸öÀ¸Î»ÎªÄãËùÒªµÄÏÔÊ¾Ä£Ê½.

ÏÖÔÚÓÃÎÄ×Ö±à¼­Æ÷, ÔÚ {\ttfamily tftpboot} Ä¿Â¼ÏÂ, ½¨Ò»¸öÃûÎª {\ttfamily test.bpb}
µÄµµ°¸ÄÚÈÝÊÇ:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
:again
DrawWindow 150 200 400 160 "Identity check"
TextAttr Black LightGray
At 15,20 Print "Username : "
Input username 8
At 17,20 Print "Password : "
Getpasswd userpass 8
if "$username" != "smith" goto again
if not "$userpass" match-passwd "BpR8oiIlRR9bo" goto again
#
clear
DrawWindow 200 200 150 100 green blue "Congratulations"
DrawText 220 250 "You got it !" yellow
WaitForKey 3
CloseGraph
interact
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}

ÔÚÄãµÄ BOOTP/DHCP ËÅ·þÆ÷µÄÉè¶¨µµÖÐ, ±ä¸ü Ñ¡Ïî-155 ÓÉ
{\ttfamily "-i"} Îª {\ttfamily "test"}, ²¢°ÑÓÃ»§¶ËµçÄÔÖØÐÂ¿ª»ú.
Õâ¸öÐ¡ÐÍµÄ½Å±¾³ÌÐò¿ÉÒÔ×Ô¶¯Ö´ÐÐ, ²¢»áÑ°ÎÊÄãµÄÊ¹ÓÃÕßÃû³Æ (username) ¼°
ÅÐÐÐÃÜÂë (password). Èç¹ûÄã²»ÊäÈë {\ttfamily smith} ¼° {\ttfamily justdoit},
Äã¾Í²»ÄÜÊ¹µçÄÔ¿ª»ú. ½ÓÖøÄã½«Ñ§µÃÈçºÎÓÃ Unix, NT »ò Radius
ËÅ·þÆ÷ÒÔ±æÖ¤ÓÐÐ§µÄÊ¹ÓÃÕß.




\subsection{Éè¶¨ Linux}

ÎªÁË°²×° Linux, ÄãÐèÒª RedHat Linux Ì×¼þËùÌá¹©µÄ¿É¿ª»úÈíµú.
BpBatch º¬ÓÐÒ»¸ö¿ÉÒÔÖ¸ÏòÈíµú¿ª»úµÄÖ¸Áî: {\ttfamily FloppyBoot}.

°²×° \onlynameurl{RedHat Linux} µ½ÄãµÄÓÃ»§¶ËµçÄÔ, ±ØÐè¾ß±¸ÍøÂ·Ö§Ô®¹¦ÄÜ.
ÒÔ¼°ÄãËùÐèÒªµÄÌ×¼þÈíÌå. Äã»òÐíÐèÒªÖØÐÂ±àÒëÒ»¸ö Kernel ÒÔºÏì¶ÄãµÄÓ²ÌåÅä±¸,
µ«Õâ²»ÊÇ±ØÐèµÄ.




\subsubsection{Éè¶¨ÓÃ»§¶ËµçÄÔ}

ÔÚ Kernel ÖÐ¼ÓÈë¶Ô BOOTP Í¨Ñ¶Ð­¶¨µÄÖ§Ô®½«»áÊÇÒ»¸öºÃÖ÷Òâ,
ÕâÑùÄã¾Í²»ÓÃÊÖ¶¯È¥Éè¶¨ÓÃ»§¶ËµÄ IP Î»Ö·.

ÎªÁË½µµÍÍøÂ·¸ºÔØ, ÄãÓ¦¸Ã°²×° {\ttfamily file cache} ÒÔ¿ìÈ¡ÓÉ NFS ËùÔØÈëµÄµµ°¸µ½Ó²µúÖÐ.
¼òµ¥µÄËµ, file cache µÄ¹¦ÄÜÊÇµ±ÓÐÀ´×Ô {\ttfamily cache} ×ÓÄ¿Â¼ÏÂµÄ·ûºÅÁ¬½áÐÎ³ÉÊ±,
Ëü»á±»ËüµÄÄ¿±êËùÈ¡´ú. Èç¹ûÄ¿±ê±¾ÉíÊÇ×ÓÄ¿Â¼,
ÔòÔÚ×ÓÄ¿Â¼ÏÂµÄËùÓÐ¶«Î÷¶¼»á±ä³É·ûºÅÁ¬½á, ²¢Ö¸ÏòÍâÔÚµµ°¸ÏµÍ³µÄÔ­Ê¼×ÊÁÏ.
Õâ¸ö file cache ÓÉ Unifix GmbH ËùÐ´, ÒÑ³ÉÎª Unifix Linux 2.0 µÄÒ»²¿·Ý.
Ëü¿ÉÒÔ×ÔÓÉÉ¢²¼, Äã¿ÉÒÔÔÚ
{\ttfamily \onlynameurl{http://cuiwww.unige.ch/info/pc/remote-boot/soft/filecache.tar.gz}}
È¡µÃ±ØÒªµÄµµ°¸.
ÎªÁËÊ¹ÓÃÕâ¸ö file cache, Äã±ØÐëÒª
\begin{itemize}
\item ¶Ô Kernel ¼ÓÈëÒ»Ð©ÐÞÕý (µµ°¸ÊÇ {\ttfamily patch-filecache}),
Í¸¹ý {\ttfamily make config} »òÄãËùÏ²»¶µÄ·½Ê½À´ÆôÓÃÕâ¸ö¹¦ÄÜ, ²¢ÖØÐÂ±àÒë kernel.
\item ¸´ÖÆ file cache µÄ¿ÉÖ´ÐÐµµµ½ {\ttfamily /sbin}.
\item ½¨Ò»¸ö¿ÉÒÔ¹ÒÉÏµÄµã½Ð {\ttfamily /mnt/nfs} (Ê¹ÓÃ {\ttfamily mkdir} Ö¸Áî).
\item ¸´ÖÆ {\ttfamily filecache.conf} µ½ {\ttfamily /etc}. ´ËµµµÄÄÚÈÝ°üº¬ÒÔÏÂ¼¸ÐÐ:
\begin{verbatim}
Max 100 MB 50 % #
Cache /mnt/nfs/usr /usr
Cache /mnt/nfs/opt /opt
\end{verbatim}
\item ¸´ÖÆ {\ttfamily /usr} ¼° {\ttfamily /opt} ÄÚµÄ×ÊÁÏµ½ËÅ·þÆ÷,
ÒÔ {\ttfamily anon=0} (ÔÊÐíroot ´æÈ¡) Éè¶¨ÎªÎ¨¶ÁÊôÐÔµÄ·ÖÏí²¢°ÑËü¹ÒÔÚ {\ttfamily /mnt/nfs} ÏÂ (¼ÓÈëÒ»ÐÐµ½ {\ttfamily /etc/fstab})
\item ¸üÃû {\ttfamily /usr} Îª {\ttfamily /usr.orig}.
\item ½¨Á¢Á¬½á {\ttfamily /usr} Ö¸µ½ {\ttfamily /mnt/nfs/usr}.
\item ¸üÃû {\ttfamily /opt} Îª {\ttfamily /opt.orig}.
\item ½¨Á¢Á¬½á {\ttfamily /opt} Ö¸µ½ {\ttfamily /mnt/nfs/opt}.
\item È·¶¨ {\ttfamily /usr} ¼° {\ttfamily /opt} Ä¿Â¼²»ÊÇ¿ÕµÄ²¢Ó¦¸Ã°üº¬ÕýÈ·µÄÄ¿Â¼×ÊÁÏ.
\item ÒÔµÝ»ØµÄ·½Ê½ÒÆ³ý {\ttfamily /usr.orig} ¼° {\ttfamily /opt.orig}.
\item ¸´ÖÆ {\ttfamily filecache.init} µ½ {\ttfamily /etc/rc.d/init.d}.
\item ×îáá½¨Á¢Á¬½á {\ttfamily /etc/rc.d/rc3.d/S35filecache}
Ö¸µ½ {\ttfamily /etc/rc.d/init.d/filecache.init}.
\end{itemize}

Èç¹ûÄãÍê³ÉÉÏÊöµÄ²½Öè, ÄãÓ¦¸ÃÔÚÏÂ´Î¿ª»úÊ±ÒÑ¾ß±¸ file cache ¹¦ÄÜ,
Ö»ÒªÄãÃ»Íü¼ÇÐÞÕýÄãµÄ Kernel.




\subsubsection{²âÊÔÉè¶¨µµ}

¸´ÖÆÄãµÄÑ¹Ëõ Kernel Ó³Ïñµµ ({\ttfamily zImage}, {\ttfamily bzImage},
{\ttfamily vmlinuz} »òÆäËüµÄÃüÃû) µ½ËÅ·þÆ÷µÄ {\ttfamily /tftpboot} Ä¿Â¼ÏÂ,
¸üÃûÎª {\ttfamily linux.krn}. Èç¹ûÄãÒÑ¾­°Ñ BootPROM ´ÓÄãµÄ PC °ÎÆðÀ´ÁË,
ÄÇÏÖÔÚ±ØÐëÖØ²å»ØÈ¥. µ± {\ttfamily BpBatch} Æô¶¯, ÊäÈë
{\ttfamily LinuxBoot "linux.krn" "root=/dev/hda1 BOOT\_IMAGE=linux"}
(¼ÙÉè ¸ùµÄ ext2 µµ°¸ÏµÍ³ÔÚµÚÒ»¸ö·Ö¸îÇø). ÁíÒ»ÖÖ×´¿ö,
Èç¹ûÄãÒªÔÚÎÞ BootPROM µÄµçÄÔÉÏÉè¶¨ÄãµÄ×éÌ¬,
Ö»ÒªÓÃÄãËù°²×°µÄÔØÈëÆ÷ (lilo, ...) À´¿ª»ú¾Í¿ÉÒÔ.
µ«ÔÚááÃæµÄÇé¿öÏÂ, Èç¹ûÄãÒªÊ¹ file cache Õý³£¹¤×÷,
Äã¾Í±ØÐë°Ñ file cache µÄÖ§Ô®¹¦ÄÜÕýÈ·µÄ°²×°µ½ÄãµÄ Kernel.

µÈµ½ÏµÍ³¿ª»úÍê³É. Èç¹ûÄãÒÑ°²×° file cache, Äã¿ÉÒÔ¼ì²é {\ttfamily /usr} Ä¿Â¼ÏÂ,
ÒÑ¾­Ö±½Ó±ä³ÉÒ»Ð©Ä¿Â¼ÐÍÊ½µÄ·ûºÅÁ¬½áµ½ÒÑ»®·ÖºÃµÄÄ¿Â¼. ÏÖÔÚÆô¶¯Ê¹ÓÃÕß³£ÓÃµÄ³ÌÊ½,
°ïËûÃÇ°ÑËùÐèµÄ×ÊÁÏÔØµ½Ó²µúÖÐ.

Äã»¹¿ÉÒÔµ÷ÕûÄãµÄÉè¶¨, ÈÃËü¸üÏñÆäËû¶ÀÁ¢ÔË×÷µÄ Linux ¹¤×÷Õ¾.




\subsubsection{½¨Á¢´ÅµúÓ³Ïñµµ}

µ±Äã¾õµÃÄãµÄÉè¶¨ÓÃÆðÀ´ºÜ°ôÁË, ¾Í¿ÉÒÔÓÃ {\ttfamily root} µÇÈë,
²¢µ½ {\ttfamily /tmp} Ä¿Â¼ÏÂ, Ö´ÐÐÎÒÃÇµÄ {\ttfamily mrzip} ³ÌÊ½.
{\ttfamily MrZip} ÊÇÒ»¸öÏñ {\ttfamily BpBatch} µÄÃüÁî½âÒëÆ÷,
µ«Ëü¿ÉÒÔÁË½â±È {\ttfamily BpBatch} ¸ü¶àµÄÃüÁî. ÌØ±ðÊÇ, Ëü¿ÉÒÔÁË½âÏÂÁÐµÄÃüÁî:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
showlog
filter -"tmp/*"
filter -"var/log/*"
fullzip "/" "/tmp/linux.imz"
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}

Õâ½«²úÉúÒ»¸ö´ÅµúÓ³Ïñµµµ½ {\ttfamily /tmp/linux.imz}.
°ÑËüÒÆµ½ËÅ·þÆ÷µÄ {\ttfamily /tftpboot} Ä¿Â¼ÏÂ. È»áá¸´ÖÆÏÂÁÐµÄÅú´ÎÖ´ÐÐµµµ½
{\ttfamily /tftpboot/linux.bpb}:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
hidelog
setpartitions "linux-ext2:992 linux-swap:32"
fullunzip "linux.imz" 1
clean 2
linuxboot "linux.krn" "root=/dev/hda1 BOOT_IMAGE=linux"
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}


Õâ¸ö {\ttfamily BOOT\_IMAGE} ²ÎÊýÊÇÓÃÀ´±íÊ¾ÏàÈÝì¶ RedHat 5.1 µÄ
{\ttfamily lilo} ¼°Ö®ááµÄ {\ttfamily rc.sysinit}.

ÄãµÄ Linux Ô¶¶Ë¿ª»úÉè¶¨×éÌ¬ÒÑ¾­¾ÍÐø! ÄãÏÖÔÚÖ»ÒªÉè¶¨ BOOTP-option-155 Îª
{\ttfamily "linux"}, »òÔÚ BpBatch ÏÂÊäÈë {\ttfamily include "linux.bpb"} ¾Í¿ÉÒÔ²âÊÔËüÁË.




\subsubsection{ÏµÍ³Î¬»¤ÓëÉý¼¶}

Èç¹ûÄãÒÔááÒª¸üÐÂÈíÌå, °²×°³ÌÊ½³ô¡õÐÞÕý»ò°²È«ÐÔµÄÐÞÕý, ´¦Àí³ÌÐòÈçÏÂ:
\begin{itemize}
\item ÒÔÔ¶¶Ë¿ª»ú·½Ê½Æô¶¯Ò»Ì¨ÓÃ»§¶ËµçÄÔÒÔµÃµ½Ò»¸öÈ«ÐÂµÄ Linux.
\item Íê³ÉÄãÐèÒªµÄ¸Ä±ä.
\item ÖØÖÆ´ÅµúÓ³Ïñµµ.
\item ¸´ÖÆÐÂµÄ´ÅµúÓ³Ïñµµµ½ËÅ·þÆ÷ÒÔÈ¡´ú¾ÉµÄ.
\end{itemize}

Õâ¾ÍÒâÎ½Öø, Äã¿ÉÒÔ¾ÍÏñÔÚÊ¹ÓÃÒ»Ì¨ÆÕÍ¨µÄµçÄÔÒ»ÑùÀ´¸üÐÂÄãµÄËÅ·þÆ÷Îª»ù´¡µÄ×éÌ¬Éè¶¨.




\subsection{Éè¶¨ DOS 6 ¼° Windows 3.1}

µ½ÓÃ»§¶ËµçÄÔÉÏ, ÓÃÄãËùÏ²ºÃµÄ DOS ´ÅÆ¬¿ª»ú
(¿ÉÒÔÒÆÈ¥ BootPROM »òÔÚ BpBatch »·¾³ÏÂ, ÊäÈë {\ttfamily FloppyBoot} ).
ÓÃ {\ttfamily /S} Ñ¡Ïî, ¸ñÊ½»¯´ÅµúÖÐµÄ DOS ·Ö¸îÇø, ÒÔ°²×°×÷ÒµÏµÍ³.
·Ö¸îÇøµÄ´óÐ¡²¢²»ÖØÒª. ÒòÎªÒÔ {\ttfamily MrZip} ²úÉú´ÅµúÓ³Ïñµµ°¸Ê±, ÊÇÒÔµµ°¸À´ÈÏ¶¨µÄ.
¶øÓë·Ö¸îÇø´óÐ¡ÎÞ¹Ø.

½¨Ò»¸ö {\ttfamily DOS} ×ÓÄ¿Â¼, °Ñ DOS ¸´ÖÆ½øÈ¥. °²×°ÄãËùÏ²ºÃµÄÍøÂ·ÓÃ»§¶ËÈíÌå
(±ÈÈç Microsoft LanManager), Windows 3.1, ¼°ÆäËûÄãÒªµÄ³ÌÊ½.
Èç¹ûÄãÒªÓÃ Microsoft LanManager, Ç§Íò±ðÊ¹ÓÃËüµÄ DHCP Í¨Ñ¶Ð­¶¨À´×éÌ¬ IP Éè¶¨,
ÒòÎªËüµÄÊµ×÷·½·¨Ïàµ±ÀÃ, ÔÚÕý³£µÄÍøÂ·¸ºÔØÏÂ, Ò²¾ø¶ÔÓÐ¿ÉÄÜÊ§Ð§. µ«ÒªµÃµ½ÏàÍ¬Ð§¹û,
¿ÉÒÔ¼ÓÈëÒÔÏÂ¼¸ÐÐµ½ {\ttfamily protocol.ref} µµ, ÔÚÔØÈë {\ttfamily tcptsr} µÄÍ¬Ê±
(Ëü»á°Ñ {\ttfamily xxx} ÒÔÄã¸ø¶¨µÄÕæÈ· IP ²ÎÊýÖµÈ¡´ú):
\begin{verbatim}
        IPADDRESS0 = xxx xxx xxx xxx
        SUBNETMASK0 = 255 255 xxx xxx
        DEFAULTGATEWAY0 = xxx xxx xxx xxx
        DISABLEDHCP = 1
\end{verbatim}


²»ÓÃÅÂÊ¹ÓÃ EMM386 ×î¼Ñ»¯ÄúËùÊ¹ÓÃµÄ¼ÇÒäÌå,
Äú¿ÉÒÔ°ÑÍøÂ·¿¨ ROM ËùÕ¼µÄÇøÓòÄÉÈë¹ÜÀí, ÒòÎªËüÔÚÕâÊ±ÒÑ¾­ÓÃ²»µ½ÁË.
µ«Òª¼ÇµÃ°ÑÍøÂ·¿¨ËùÊ¹ÓÃµÄ RAM Çø¿é²»ÄÉÈë¹ÜÀí, ·ñÔòÄú½«ÎÞ·¨Á¬½Óµ½ÄúµÄËÅ·þÆ÷.
ÓÃ {\ttfamily NOEMS} ²ÎÊý.

Èç¹ûÄãÒªÈ·ÈÏÓÃ»§¶ËµçÄÔÖ»ÔÊÐíÒÑÈÏ¿ÉµÄÊ¹ÓÃÕßËùÊ¹ÓÃ,
¿ÉÒÔ°ÑÎÒÃÇµÄ {\ttfamily nobreak} ÐéÄâ×°ÖÃÇý¶¯³ÌÊ½
(¿ÉÔÚÕâÏÂÔØ {\ttfamily \onlynameurl{http://cuiwww.unige.ch/info/pc/remote-boot/soft/nobreak.zip}})
·ÅÔÚÄú {\ttfamily config.sys} µµµÄ¿ªÍ·´¦, ²¢°ÑÒÔÏÂÕâÐ©¶«Î÷·Åµ½ÄúµÄ
{\ttfamily autoexec.bat}: 

\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
rem -- we use the dummy file c:\logged as a flag
del c:\logged >nul
:loginneeded
cls
echo Please type in your login name and password
echo.
net logon *
rem -- the login script should have created c:\logged
if not exist c:\logged goto loginneeded
del c:\logged
rem -- now enable break again
echo Yes >NOBRK
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}


ÖØ¿ª»ú, È·ÈÏÄãµÄÓÃ»§¶ËµçÄÔÒ»ÇÐÕý³£, ²¢ÊÔÖøÔÚ {\ttfamily BpBatch}
µÄ½»Ì¸Ä£Ê½ÏÂÊäÈëÒÔÏÂÖ¸Áî:
\begin{verbatim}
        HideBootprom
        HdBoot
\end{verbatim}

Èç¹ûÄãÃ»¿´µ½ BpBatch Ôò PC »á²ÉÓÃÓ²µúÀ´¿ª»ú.




\subsubsection{½¨Á¢´ÅµúÓ³Ïñµµ}

»Øµ½ËÅ·þÆ÷ÉÏ, ½¨Á¢Ò»¸ö·ÖÏíÃû³ÆÎª {\ttfamily admin} µÄÄ¿Â¼,
ÓÃÀ´·ÅÒ»Ð©ÏµÍ³¹ÜÀíÕßÓÃµÄ¶«¶«. Èç¹ûËÅ·þÆ÷ÊÇÅÜ Unix,
½¨ÒéÄú°Ñ {\ttfamily /tftpboot} ×ÓÄ¿Â¼ÓÃÈíÊ½Á¬½á·½Ê½·ÅÒ»·Ýµ½ {\ttfamily admin} Ä¿Â¼,
ÕâÑùÄú¿ÉÒÔÖ±½ÓÓÉÓÃ»§¶Ë´«»Ø¿ª»úÓ³Ïñµµ. ÔÚ {\ttfamily admin} Ä¿Â¼ÄÚ,
½¨Ò»¸ö {\ttfamily /utils} ×ÓÄ¿Â¼²¢·ÅÈëÈçÏÂµÄ¹¤¾ß: 
\begin{itemize}
\item {\ttfamily mrbatch.exe}, DOS °æµÄ {\ttfamily BpBatch}.
\item {\ttfamily mrzip.exe}, DOS °æµÄ¹¤¾ß³ÌÊ½ÓÃÀ´½¨Á¢´ÅµúÓ³Ïñµµ.
\item {\ttfamily bpbatch.hlp}, ÏßÉÏËµÃ÷µµ.
\end{itemize}

ÄúÒ²ÐèÒª·ÅÒ»Ð©¼ò±ãµÄ MrZip ½Å±¾³ÌÐòµµÃûÎª {\ttfamily zipdos.mrz} µÄµµ°¸,
ÄÚº¬ÓÃÀ´½¨Á¢ DOS ´ÅµúÓ³ÏñµµµÄÖ¸Áî, ¾ÍÏñÏÂÃæÕâÑù:

\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
showlog
filter -"lanman.dos/lmuser.ini"
filter -"temp/*"
filter -"*.swp"
fullzip "c:/" "L:/tftpboot/dos.imz"
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}


ÏÖÔÚ»Øµ½ÄãµÄÓÃ»§¶ËµçÄÔ, °Ñ {\ttfamily admin} ¹Òµ½ {\ttfamily L:},
µ½ÄãµÄ {\ttfamily utils} ×ÓÄ¿Â¼ÏÂ, ÊäÈëÒÔÏÂÖ¸Áî:
\begin{verbatim}
        mrzip -b zipdos
\end{verbatim}


Ò»·ÖÖÓÖ®áá, Äã»áÔÚËÅ·þÆ÷µÄ {\ttfamily /tftpboot} ×ÓÄ¿Â¼ÏÂ¿´µ½Ò»¸öÃûÎª
{\ttfamily dos.imz} µÄµµ°¸, Ëü¾ÍÊÇÄãÓÃ»§¶ËµçÄÔÓ²µúµÄÑ¹Ëõ´ÅµúÓ³Ïñµµ.
°ÑÒÔÏÂµÄÅú´ÎµµÄÚÈÝ¸´ÖÆµ½ {\ttfamily /tftpboot/dos.bpb}:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
hidelog
setpartitions "bigdos:1024"
setbootpart 1
fullunzip "dos.imz" 1
hideBootprom
hdboot :1
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}


ÄãµÄ DOS Ô¶¶Ë¿ª»úÉè¶¨×éÌ¬ÒÑ¾­¾ÍÐø ! ÄãÏÖÔÚÖ»ÒªÉè¶¨ BOOTP-option-155 Îª
{\ttfamily "dos"}, »òÔÚ BpBatch ÏÂÊäÈë {\ttfamily include "dos.bpb"} ¾Í¿ÉÒÔ²âÊÔËüÁË.




\subsubsection{µ÷ÕûÉè¶¨ÒÔÊÊÓÃÆäËû»úÆ÷}

Èç¹ûÄãÒªÕë¶ÔÄ³Ò»Ð©»úÆ÷×öÒ»Ð©ÌØ¶¨µÄÉè¶¨,
×îµäÐÍµÄÊÇ IP Î»Ö·ÖµµÄÉè¶¨²»¹ýÒòÎª Micro\$oft µÄ DHCP ×öµÄºÜÀÃ,
Äã¿ÉÒÔÓÃ {\ttfamily BpBatch} ÔÚ¿ª»úÊ±×öÒ»Ð©ÐÞÕý. Ê×ÏÈµ½ {\ttfamily lanman.dos} Ä¿Â¼ÏÂ²¢Ö´ÐÐ
\begin{verbatim}
        copy *.ini *.ref
\end{verbatim}

½ÓÖø±à¼­¸±µµÃûÎª {\ttfamily .ref} µµ°¸, °ÑËùÓÐ¹Ì¶¨µÄ²ÎÊýÓÃ BOOTP µÄ±äÊýÈ¡´ú, ÏÂÃæÊÇ¡õÀý:
\begin{verbatim}
        computername = ${BOOTP-Host-Name}
        ipaddress0 = ${MS-IPAddress}
        subnetmask0 = ${MS-IPSubnet}
        defaultgateway = ${MS-IPRouter}
\end{verbatim}

½ÓÖøÓÃÏÈÇ°µÄ·½Ê½ÖØ½¨´ÅµúÓ³Ïñµµ. ×¢ÒâÒ»ÏÂ IP ²ÎÊý,
ÎÒÃÇ²»ÄÜÖ±½ÓÊ¹ÓÃ BOOTP ±äÊý¸ø LanManager Ê¹ÓÃ,
ÒòÎªËüÐèÒªÒÔ¿Õ¸ñ·Ö¸ô¶ø²»ÊÇÒÔµãÀ´·Ö¸ôÊý×Ö.
°Ñ {\ttfamily dos.bpb} ¸Ä³ÉÈçÏÂµÄÑù×Ó:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
hidelog
setpartitions "bigdos:1024"
setbootpart 1
fullunzip "dos.imz" 1
set MS-IPAddress="$BOOTP-Your-IP"/.= /
set MS-IPSubnet="$BOOTP-Subnet-Mask"/.= /
set MS-IPRouter="$BOOTP-Routers"/.= /
patch "{:1}lanman.dos/protocol.ref" "{:1}lanman.dos/protocol.ini"
patch "{:1}lanman.dos/tcpputils.ref" "{:1}lanman.dos/tcputils.ini"
patch "{:1}lanman.dos/lanman.ref" "{:1}lanman.dos/lanman.ini"
hideBootprom
hdboot :1
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}

Èç¹ûÄãÏ²»¶, ÄãÒ²¿ÉÒÔ°Ñ {\ttfamily .ref} µÄµµ°¸·ÅÔÚËÅ·þÆ÷ÉÏµÄ {\ttfamily /tftpboot} Ä¿Â¼ÏÂ, ¶ø²»·ÅÔÚ´ÅµúÓ³ÏñµµÀï.

ÎÒÃÇ¿ÉÒÔÔÚ²»ÖØ½¨Ó³ÏñµµµÄ×´Ì¬ÏÂ, ÇáËÉµÄ±ä¸üµçÄÔµÄÉè¶¨.
×÷·¨ÊÇ, ¸´ÖÆÄãµÄ {\ttfamily autoexec.bat} ¼° {\ttfamily config.sys} Îª
{\ttfamily autoexec.ref} ¼° {\ttfamily config.ref} µ½ËÅ·þÆ÷µÄ {\ttfamily /tftpboot} Ä¿Â¼,
°ÑÏÂÃæÁ½ÐÐ¼Óµ½Åú´ÎµµÖÐ:
\begin{verbatim}
        patch "autoexec.ref" "{:1}autoexec.bat"
        patch "config.ref" "{:1}config.sys"
\end{verbatim}

Äã¿ÉÒÔÍ¸¹ý BOOTP Í¨Ñ¶Ð­¶¨, ×ÔÓÉµÄ±ä¸üµµ°¸ÄÚÈÝ.
¼´Ê¹ÊÇ×öÒ»Ð©¸ù¾Ý»úÆ÷¶øÀ´µÄÌØÊâ»¯Éè¶¨.

ÔÚ¶ÔÓÃ»§¶ËµçÄÔµÄÉè¶¨µµ×öÈÎºÎÐÞ¸Äáá, Èç¹ûÄãÒªÔ¤ÏÈ×öºÃÐÞÕý.
±ðÍüÁËÒÔ {\ttfamily MrZip} ÖØÐÂÖÆ×÷´ÅµúÓ³Ïñµµ.




\subsubsection{ÏµÍ³Î¬»¤ÓëÉý¼¶}

Èç¹ûÄãÒÔááÒª¸üÐÂÈíÌå, °²×°³ÌÊ½³ô¡õÐÞÕý»ò°²È«ÐÔÐÞÕýµÄ³ÌÊ½, Æä´¦Àí³ÌÐòÈçÏÂ:
\begin{itemize}
\item ÒÔÔ¶¶Ë¿ª»ú·½Ê½Æô¶¯Ò»Ì¨ÓÃ»§¶ËµçÄÔÒÔµÃµ½Ò»¸öÈ«ÐÂµÄ Linux.
\item Íê³ÉÄãÐèÒªµÄ¸Ä±ä.
\item ÖØÖÆ´ÅµúÓ³Ïñµµ.
\item ¸´ÖÆÐÂµÄ´ÅµúÓ³Ïñµµµ½ËÅ·þÆ÷ÒÔÈ¡´ú¾ÉµÄ.
\end{itemize}

Õâ¾ÍÒâÎ½Öø, Äã¿ÉÒÔ¾ÍÏñÔÚÊ¹ÓÃÒ»Ì¨ÆÕÍ¨µÄµçÄÔÒ»ÑùÀ´¸üÐÂÄãµÄËÅ·þÆ÷Îª»ù´¡µÄ×éÌ¬Éè¶¨.




\subsection{Éè¶¨ Windows 95/98}

ÔÚ´Ë·ÝÎÄ¼þÏÈÇ°µÄ°æ±¾, ÎÒÃÇÊ¹ÓÃ¹ýÎ¢Èí¹«Ë¾µÄ Windows 95 ÒÔËÅ·þÆ÷Îª»ù´¡µÄ°²×°·½Ê½, µ«ÊÇÓÃÕâ·½·¨Ì«¹ýÍ´¿à, ÓÖ²»ÊÇÄÇ÷áµÄÓÐ¼ÛÖµ:
\begin{itemize}
\item Ëü¾ÍÕæµÄÊÇ·Ç³£µÄÐéÄâ.
\item ´ó²¿·ÝµÄÈíÌåÌ×¼þ¶¼²»Ö§Ô®Ëü¶øÇÒÈç¹ûÄúÊÔÖøÈ¥°²×°×îááµÄ½á¹ûÍ¨³£ÊÇÊ§°ÜµÄ.
°üÀ¨, Microsoft Internet Explorer, OnNet 32,
Novell's Protected-mode client (Õâ½Ï Microsoft Client for Netware°²È«).
\item ÒòÎªÎ¢Èí¹«Ë¾²»Ìá¹© Windows 95/98 ÔÚÕæÊµÄ£Ê½ÏÂµÄ TCP/IP
ÏàÈÝµÄÇý¶¯³ÌÊ½ËùÒÔÄúÎÞ·¨Ê¹ÓÃ Microsoft Network client over TCP/IP,
¶øÕâÒ²¾ÍÒâÎ¶ÖøÄú²»ÄÜÊ¹ÓÃ Samba.
\item ÒòÎªµ±ÓÃ»§¶ËÒ»Æô¶¯¾Í»áËø×¡Ò»Ð©¶¯Ì¬Á¬½áµµÔì³ÉÐí¶à³ÌÊ½¼¸ºõÎÞ·¨¸üÐÂ,
Èç¹ûÄúÊÔÖøÈ¥¸üÐÂËüÔò»á³öÏÖ {\itshape Î¥±³·ÖÏí (sharing violations)\/} µÄ´íÎó.
\end{itemize}

Òò´Ë¼¸¸öÔÂÇ°, ÎÒÃÇ·ÅÆúÕâ·Ý±¾Éí¾ÍÓÐÎÊÌâµÄ×ÊÁÏ
(ÄúÈÔÈ»¿ÉÔÚÕâÕÒµ½ {\ttfamily \onlynameurl{http://cuiwww.unige.ch/info/pc/remote-boot/win95old/win95old.html}})
È»áá»»µ½ÎÒÃÇÕâ¸öÐÂµÄÒÔÓ²µú»úÎª»ù´¡µÄÔ¶¶ËÆô¶¯¸ÅÄî.
»ù±¾ÉÏ, ÔÚÕâÖÖ»·¾³ÏÂ Windows 95/98 °²×°·½·¨¾Í¸ú°²×° DOS Ò»ÑùÈÝÒ×.




\subsubsection{½¨Á¢Ò»Ì¨¶ÀÁ¢µÄÓÃ»§¶Ë}

°²×°Ò»Ì¨Ñ°³£µÄ Windows 95/98 ÓÃ»§¶Ë, ¿ÉÒÔÓÃÎÒÃÇÏÈÇ°ËùÌáµÄ DOS
ÍøÂ·¿ª»ú×éÌ¬Ä£Ê½Æô¶¯µçÄÔ, ÔÙÍ¸¹ýÍøÂ·°²×° (ÎÒÃÇ¶¼ÕâÑù×ö).
ÄãÒ²¿ÉÒÔÓÃÒÑ¾­°²×° Windows µÄ»úÆ÷À´×ö, µ«ÈôÕâÑùÄã¶ÔÓ²µúÀïÓÐÉá¶«Î÷¾Í±È½Ï²»ÁË½âÁË.

°ÑËüÊÓÎªÏÈÇ°ËùÌáµÄ DOS ÓÃ»§¶ËÀ´´¦Àí. µ«ÔÚ Windows 95/98 ÊÇ²»ÐèÊ¹ÓÃ EMM386.
Èç¹ûÄãÊ¹ÓÃ Windows 98 »ò Windows 95 OSR2 (±ðÃûÎª MSWIN 4.1,
Ò²¾ÍÊÇ Windows 95 service pack 1, ÒàÊÇ Windows 95 with Internet Explorer)
ÄãÓ¦¸Ã¼ÓÈëÒÔÏÂ¼¸ÐÐµ½ {\ttfamily MSDOS.SYS} (Ã»´í, ËûÊÇÎÄ×Öµµ) µÄ {\ttfamily [Options]} ÄÇÒ»½Ú:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
AUTOSCAN=0
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}

ÕâÑù¿ÉÒÔÊ¹ Windows ÖªµÀÄú¿ª»úÊ±, ²»×Ô¶¯Æô¶¯ ScanDisk.

µ±ËùÓÐµÄÈíÌå¶¼·ÅÔÚËÅ·þÆ÷Ê±, Èç¹ûÄúÒª¼õÇáÍøÂ·¼°ËÅ·þÆ÷µÄ¸ºµ£
(Õâ½«Ôö½øÄúµÄÏµÍ³Ð§ÂÊ), Äú¿ÉÒÔ¿¼ÂÇ°²×°ÕâÌ×Ïàµ±²»´íµÄ Shared LAN Cache,
ÓÉ Measurement Techniques, Inc Éú²úµÄ
(²Î¿¼ {\ttfamily \onlynameurl{http://www.lancache.com}}).

ÕâÌ×ÈíÌåÔÚÃ¿Ì¨ÓÃ»§¶ËµçÄÔÖ´ÐÐ,
Ëü»á°ÑËùÓÐ´ÓÍøÂ·ÉÏÈ¡µÃµÄ×ÊÁÏ·ÅÔÚÇøÓòÐÔµÄÓ²µúÖÐ¿ìÈ¡.
¼´Ê¹Ïñ MS-Office ÕâÖÖ¹ÖÎï, ÔÚÄúµÚ¶þ´ÎÖ´ÐÐÊ±Ò²»á¸ü¿ì...
ÄúµÄÃ¿Ì¨¿Í»§¶ËµçÄÔ¶¼ÒªÓÐÒ»·Ý°æÈ¨, ²»¹ýËü»¹²»ËãÌ«¹ó,
Õâ¼Ò¹«Ë¾¶Ôì¶´ó×¨ÔºÐ£ÓÐÌØ»Ý¼Û¸ñ. ¸ü°ôµÄÊÇ, Äú¿ÉÒÔµ½ËûÃÇµÄÍøÒ³ÏÂÔØÃâ·ÑµÄÆÀ¹À°æ.




\subsubsection{½¨Á¢´ÅµúÓ³Ïñµµ}

ÔÚÕâ¸öµØ·½, Èç¹ûÄãÊÇÊ¹ÓÃ Samba µµ°¸ËÅ·þÆ÷,
ÄãÓ¦¸ÃÐèÒªÏÈ¹Øµô Windows 98 µÄÃÜÂë´«ÊäÇ°¼ÓÃÜ¹¦ÄÜ.
ÕâÑù²ÅÄÜ°Ñ {\ttfamily admin} ¹ÒÉÏÈ¥µ±ÍøÂ·´Åµú»ú.
ÄãÖ»Òª°ÑÏÂÃæµÄµÇÂ¼×éÌ¬ {\ttfamily EnablePlainTextPassword}
½ÚµÄ DWORD ÖµÉèÎª 1
\begin{verbatim}
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]
\end{verbatim}


ÄãµÄ MrZip ½Å±¾³ÌÐòµµ¿ÉÒÔÃüÃûÎª {\ttfamily zipwin.mrz} ²¢°üº¬ÒÔÏÂÄÚÈÝ:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
showlog
filter -"windows/schedlog.txt"
filter -"windows/msimgsiz.dat"
filter -"*/index.dat"
filter -"*.swp"
filter -"*.tmp"
filter -"temp/*"
fullzip "c:/" "L:/tftpboot/win.imz"
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}


ÎªÁË½¨Á¢Ó³Ïñµµ, °Ñ {\ttfamily admin} ¹Òµ½´Åµú»ú {\ttfamily L:},
²¢µ½ÄãµÄ {\ttfamily utils} Ä¿Â¼ÏÂ²¢ÊäÈëÒÔÏÂÖ¸Áî:
\begin{verbatim}
        mrzip -b zipwin
\end{verbatim}


¼¸·ÖÖÓ¹ýáá, Äã¿ÉÒÔÔÚËÅ·þÆ÷µÄ {\ttfamily /tftpboot} ×ÓÄ¿Â¼ÏÂ,
ÕÒµ½ÃûÎª {\ttfamily win.imz} µÄµµ°¸, Ëü¾ÍÊÇÄãÓ²µúµÄÑ¹Ëõ´ÅµúÓ³Ïñµµ.
Èç¹ûÄãµÄÓ³Ïñµµ³¬¹ý 87 MB, ×îºÃ°ÑËü·Ö¸î³ÉÁ½¸ö»ò¸ü¶àµÄµµ°¸.
ÕâÐ©µµ°¸»áÔÚÎÒÃÇÐèÒªËüÊ±×Ô¶¯µØÒ»¸ö½ÓÖøÒ»¸öÔØÈë. ¼Ç×¡,
Èç¹ûÄãµÄÓ³Ïñµµ³¬¹ý 87 MB
ÔòÏµÍ³»¨ÔÚ½âÑ¹ËõµÄÊ±¼ä»á³¬¹ýÒ»·ÖÖÓ¶øÕâ»á¼¤Å­ÄãµÄÊ¹ÓÃÕß.
ÎÒÃÇµÄ Windows 95/98 Ó³ÏñµµÖ¹ÓÐ 70 MB ´ó,
ÒòÎª´ó²¿·ÝµÄÈíÌå¶¼°ÚÔÚËÅ·þÆ÷, ÇÒÖ»ÓÐÔÚÒªÇóÊ±²Å»áÔØÈë.
Ö»ÓÐ¼«ÉÙ²¿·ÝµÄÈíÌåÐèÒª°²×°µ½ÄãµÄÓ²µúÖÐ. Èç¹ûÄã¸úÎÒÃÇÒ»ÑùÔÚºõÕâÎÊÌâ,
ÄãÓ¦¸ÃÈÃ½âÑ¹ËõÕâ¸öÓ³Ïñµµ¼°ÍêÕû»Ø´æµ½Ó²µúµÄÊ±¼äµÍì¶Ò»·ÖÖÓ.

°ÑÒÔÏÂµÄÅú´ÎµµÄÚÈÝ¸´ÖÆµ½µµ°¸ {\ttfamily /tftpboot/win.bpb}:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
hidelog
setpartitions "bigdos:1024"
setbootpart 1
fullunzip "win.imz" 1
hide`
hdboot :1
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}


ÄãµÄ Windows 95/98 Ô¶¶Ë¿ª»úÉè¶¨×éÌ¬ÒÑ¾­¾ÍÐø !
ÄãÏÖÔÚÖ»ÒªÉè¶¨ BOOTP-option-155 Îª {\ttfamily "win"},
»òÔÚ BpBatch ÏÂÊäÈë {\ttfamily include "win.bpb"} ¾Í¿ÉÒÔ²âÊÔËüÁË.




\subsubsection{µ÷ÕûÉè¶¨ÒÔÊÊÓÃÆäËû»úÆ÷}

Windows 95/98 Óë Windows 3.1 ×î´óµÄ²»Í¬ÊÇ¼ÓÈëÁË¼´²å¼´ÓÃµÄ³ÌÊ½Âë,
¼´×Ô¶¯Õì²âÄúµÄÓ²ÌåÉè±¸. Ëü±¾ÉíÎÞÉá»µ´¦, µ«ÎÊÌâÊÇ³öÔÚËüÌ«¹ýÁéÃô,
¶øÇÒÓÐÊ±áá»á³ö¡õ.

Èç¹ûÄúÊÔÖøÓÃÍ¬ÑùµÄ¿ª»úÓ³ÏñµµÈ¥Æô¶¯ÁíÒ»Ì¨ÓÃ»§¶Ë»úÆ÷,
Äú½«ÔÚÊÕµ½Ò»¶Ñ Windows Õì²âµ½ÐÂµÄÓ²ÌåÉè±¸µÄÑ¶Ï¢:
Ò»Æ¬ÐÂµÄÒôÐ§¿¨, Ò»¿ÅÐÂµÄÓ²µú»ú, Ò»Æ¬ÐÂµÄÍøÂ·¿¨, »òÕßÒ»Ö»ÐÂµÄ»¬Êó...
»áÕâÑùµÄÔ­ÒòÓÐ¶þ:

\begin{itemize}
\item ÕâÐ©Éè±¸¿ÉÄÜÊ¹ÓÃ²»Í¬µÄÓ²Ìå×ÊÔ´ (±ÈÈç, »¬Êó²»ÊÇ½ÓÔÚÏàÍ¬µÄÁ¬½Ó²º,
ÒôÐ§¿¨²»ÊÇ½ÓÔÚÍ¬ÑùµÄÀ©³ä²Û -.- Ã»´í, Õâ»á±»Õì²âµ½).
\item ÕâÐ©Éè±¸¿ÉÄÜÍ¨Öª Windows 95/98 ËüÃÇµÄÐòºÅ
(±ÈÈç, Ã¿Ì¨ÅÜ Windows 95/98 µÄÍøÂ·¿¨, ´Ó×î¸ù±¾µÄÒÒÌ«ÍøÂ·Î»Ö·
¾ÍÃ¿Ì¨¶¼²»Ò»ÑùÁË).
\end{itemize}

ÊÂÊµÉÏ , Èç¹û Windows 95/98 µÄ¼´²å¼´ÓÃ¹¦ÄÜ¿ÉÒÔÕý³£¹¤×÷µÄ»°,
×Ô¶¯Õì²â±ä¸üµÄÓ²ÌåÉè±¸²¢²»»á³öÎÊÌâ, ËùÒÔÈç¹û¼´²å¼´ÓÃ¹¦ÄÜÊ§Ð§Ê±,
ÎÊÌâ¾ÍÀ´ÁË. ÀýÈç, Windows 95/98 ¶ÔÉÏÎÒÃÇµÄÂÞ¼¼ PS2 »¬ÊóÊ±¾Í²»ÄÜ¼´²å¼´ÓÃ,
¸üÔãµÄÊÇ»¬Êó¾ÍÏûÊ§ÁË. Òª½â¾öÕâÀàÎÊÌâ·½·¨¾ÍÊÇ, ¾¡¿ÉÄÜÊ¹È«²¿µçÄÔÓÐÏàÍ¬µÄÓ²ÌåÉè±¸.

ÄúÎÞ·¨±ÜÃâµÄÎÊÌâÊÇÃ¿Ì¨µçÄÔµÄÍøÂ·¿¨. ºÜ²»ÐÒµÄ,
ÔÚ´îÅäÎÒÃÇËùÓÃµÄ SMC EtherEX ÍøÂ·¿¨Ê±, ¼´²å¼´ÓÃµÄ³ÌÊ½Âë»áÊ¹µçÄÔµ±»ú.
Î¨Ò»µÄ½â·¨ÊÇÊ¹ Windows 95/98 ÏàÐÅËüÒÑ¾­ÖªµÀÓÐÕâÆ¬ÍøÂ·¿¨,
ÇÒ²»Ðè´¥¶¯¼´²å¼´ÓÃ»úÖÆ. Õâ¸ö¼¼ÇÉ¾ÍÊÇÍ¸¹ý¿ª»ú×Ô¶¯Ö´ÐÐµµ {\ttfamily autoexec.bat},
×Ô¶¯µÄ°Ñ¹Øì¶ÕâÆ¬ÍøÂ·¿¨µÄÉè¶¨Öµ¼ÓÈë Windows 95/98 µÄÏµÍ³µÇÂ¼×ÊÑ¶. 

Òª×¢ÒâµÄÊÇ´ó²¿·Ý PCI µÄÍøÂ·¿¨²¢²»ÐèÒªÕâ¸ö¼¼ÇÉ.

µ½ÄúµÄÓÃ»§¶ËµçÄÔ, ±à¼­¿ª»ú×Ô¶¯Ö´ÐÐµµ {\ttfamily autoexec.bat} ²¢¼ÓÈëÏÂÁÐ¼¸ÐÐ: 
\begin{verbatim}
rem --- Patch Windows registry in order to avoid plug-and-play detection
regedit /L:c:\windows\system.dat /R:c:\windows\user.dat c:\temp\patch.reg
\end{verbatim}

{\ttfamily regedit} ÊÇ±ê×¼ Windows 95/98 µÄ³ÌÊ½. Èç¹ûÄúÔÚ Windows »·¾³ÏÂÖ´ÐÐËü,
Ëü¿ÉÒÔ°ïÄúÁ÷ÀÀÄúµÄÏµÍ³µÇÂ¼×ÊÑ¶, »òÕßÈç¹ûÄúÔÚ DOS ÏÂÖ´ÐÐËü,
Ëü¿ÉÒÔ¶ÔÄúµÄÏµÍ³µÇÂ¼×ÊÑ¶×öÒ»Ð©¼òµ¥µÄÐÞÕý.
ÔÚÊÓ´°»·¾³ÏÂÖ´ÐÐ {\ttfamily regedit}, Ñ°ÕÒÄãµÄÍøÂ·¿¨, Í¨³£ÔÚ
\begin{verbatim}
        HKEY_LOCAL_MACHINE\Enum\ISAPNP
\end{verbatim}

ÓÃ {\itshape µÇÂ¼\/} ¹¦ÄÜÑ¡µ¥µÄ »ã³öµÇÂ¼µµ ¹¦ÄÜ. Õâ¸ö¶¯×÷½«½¨Á¢Ò»¸öÎÄ×Öµµ,
Äã¿ÉÒÔ°ÑËüÃüÃûÎª {\ttfamily patch.ref} ·ÅÔÚËÅ·þÆ÷µÄ {\ttfamily /tftpboot} Ä¿Â¼ÏÂ.
±à¼­Õâ¸öµµ°¸²¢ÕÒµ½Õâ¸öÍøÂ·¿¨µÄÒÒÌ«ÍøÂ·Î»Ö··ÅÖÃµÄÎ»ÖÃ
(Èç¹ûÄãÕÒ²»µ½Ëü, ¿ÉÒÔÔÚ²»Í¬»úÆ÷ÉÏ²úÉúÕâÁ½¸öµµ°¸, ±È½ÏËûÃÇ¾Í¿ÉÒÔÕÒµ½).
ÓÃ {\ttfamily \$$\{$MACID$\}$} µÄÑùÊ½À´È¡´úËü.
½ÓÖøÔÚ {\ttfamily win.bpb} ½Å±¾³ÌÐòµµÖÐ¼ÓÈëÒÔÏÂ¼¸ÐÐ:
\begin{verbatim}
        set macid = "$BOOTP-Client-ID"
        patch "patch.ref" "{:1}temp/patch.reg"
\end{verbatim}

(Èç¹ûËü²»ÊÇÓÃ»§µÄÕýÈ·ÒÒÌ«ÍøÂ·Î»Ö·, ¾Í±ØÐë¶Ô {\ttfamily MACID} ×Ö´®Éè¶¨Öµ×ö±ØÒªµÄÐÞÕý).
¾ÍÕâÑù, ÄãµÄÓÃ»§¶ËµçÄÔ¾Í²»»áÔÙÊÔÖøÈ¥×Ô¶¯Õì²âÍøÂ·¿¨ÁË.

ÔÙÌáÒ»´Î, ÕâÕû¸ö¼¼ÇÉÔÚÊ¹ÓÃ PCI ÍøÂ·¿¨Ê±, ÊÇ²»ÐèÒªµÄ.
ÁíÍâ, µ± Windows ²»ÄÜÔÚµÇÈëÊ±Í¸¹ý DHCP Í¨Ñ¶Ð­¶¨Éè¶¨Ö÷»úÃû (hostname), ÎÒÃÇÒ²¿ÉÒÔÓÃÏàÍ¬µÄÊÖ·¨À´´ïµ½. Ö»Òª°ÑÏÂÁÐ¼¸ÐÐ¼Óµ½ÎÒÃÇµÄ {\ttfamily patch.ref} µµ:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]
"ComputerName"="${BOOTP-Host-Name}"

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP]
"HostName"="${BOOTP-Host-Name}"

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\ComputerName\ComputerName]
"ComputerName"="${BOOTP-Host-Name}"
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}


Ê¹ÓÃµÇÂ¼±à¼­³ÌÊ½µÄÐ¡¼¼ÇÉ, ÄãµÄ×éÌ¬Éè¶¨¿ÉÒÔË³ÀûµÄ×ªÒÆµ½ÓÐÀàËÆÅä±¸µÄ»úÆ÷ÉÏ.
Èç¹ûÄãÎÞ·¨±ÜÃâ Windows È¥Õì²âÄãµÄÄ³Ð©Ó²ÌåÅä±¸,
¿ÉÒÔÊÔÖøÔÚÄÇ»úÆ÷ÉÏÖØ½¨Ò»¸ö´ÅµúÓ³Ïñµµ.
ÕâÑù»á°ÑÕâÌ¨»úÆ÷ÉÏµÄ×éÌ¬Éè¶¨¶¼º¬ÈëÕâ¸öÓ³ÏñµµÖÐ,
Ï£ÍûÕâÄÜ½â¾öÎÊÌâ.




\subsubsection{ÏµÍ³Î¬»¤ÓëÉý¼¶}

Èç¹ûÄãÒÔááÒª¸üÐÂÈíÌå, °²×°³ô¡õÐÞÕý»ò°²È«ÐÔÐÞÕýµÄ³ÌÊ½, ´¦Àí³ÌÐòÈçÏÂ:
\begin{itemize}
\item ÒÔÔ¶¶Ë¿ª»ú·½Ê½Æô¶¯Ò»Ì¨ÓÃ»§¶ËµçÄÔÒÔµÃµ½Ò»¸öÈ«ÐÂµÄ°²×°.
\item Íê³ÉÄãÐèÒªµÄ¸Ä±ä.
\item ÖØÖÆ´ÅµúÓ³Ïñµµ.
\item ¸´ÖÆÐÂµÄ´ÅµúÓ³Ïñµµµ½ËÅ·þÆ÷ÒÔÈ¡´ú¾ÉµÄ.
\end{itemize}

Õâ¾ÍÒâÎ½Öø, Äã¿ÉÒÔ¾ÍÏñÔÚÊ¹ÓÃÒ»Ì¨ÆÕÍ¨µÄµçÄÔÒ»ÑùÀ´¸üÐÂÄãµÄËÅ·þÆ÷Îª»ù´¡µÄ×éÌ¬Éè¶¨.




\subsection{Éè¶¨ Windows NT}

ÎÒÃÇ²¢Ã»ÓÐÊ¹ÓÃ Windows NT À´µ±Ô¶¶Ë¿ª»úÓÃ»§¶ËµçÄÔµÄ×÷ÒµÏµÍ³,
µ«ÎÒÃÇÒÑ¾­²âÊÔ¹ý, ËüÈ·¶¨¿ÉÒÔÕý³£¹¤×÷. ²¢ÇÒÃ»ÎÊÌâ.

ÓÉì¶ÎÒÃÇµÄ¹¤¾ß³ÌÊ½»¹Ã»Ö§Ô®µ½ NTFS µµ°¸ÏµÍ³
(ÎÒÃÇ¼ÈÃ»ÓÐÏà¹ØÎÄ¼þÒ²Ã»ÓÐÊ±¼äÈ¥×öÕâ¼þÊÂ,
µ«ÎÒºÜÀÖÒâÈ¥°ïÖúÈÎºÎ¶ÔÕâ¹¤×÷ÓÐÐËÈ¤µÄÈË)
ËùÒÔÄã±ØÐë°Ñ NT °²×°µ½ FAT16 µµ°¸ÏµÍ³ÉÏ
(Ö»ÒªÔÚ°²×°Ê±, ²»°ÑÄãµÄ·Ö¸îÇø×ª»»Îª NTFS µµ°¸ÏµÍ³¾Í¿ÉÒÔ).

°Ñ {\ttfamily win.bpb} ¿ª»ú½Å±¾³ÌÐò¸´ÖÆµ½ {\ttfamily winnt.bpb}.
¸Ä±ä {\ttfamily winnt.bpb} ÖÐ {\ttfamily setpartitions} ÄÇÒ»ÐÐÎªÈçÏÂ:
\begin{verbatim}
        setpartitions "BIGDOS:512 BIGDOS:512"
\end{verbatim}

½ÓÖøÓÃÕâ¸ö½Å±¾³ÌÐòµµÊ¹ Windows 95/98 ¿ª»ú, °Ñ NT ÓÃ»§¶Ë°²×°µ½ C ²Û.
ÏÈ±ð¹ÜµÚ¶þ¸ö·Ö¸îÇøµÄÎÊÌâ. ±ð°²×°Ì«¶à¶«Î÷½øÈ¥,
²»È»»á²úÉúÒ»¸öÓÖ´ó½âÑ¹ËõÓÖºÜÂýµÄÓ³Ïñµµ.
°Ñ Windows 95/98 ´Ó C ²ÛÒÆ³ý, Windows NT µÄÓ³Ïñµµ²»ÐèÒªËü
(¿ª»úÑ¡µ¥ÊÇÓÉ BootPROM Ëù¿ØÖÆ, ²»ÔÙÊÇ NT µÄ¿ª»úÔØÈëÆ÷).

ÔÚ²»¸²Ð´Ó²µú×ÊÁÏ×´¿öÏÂ, ÖØÐÂÆô¶¯ÄãµÄµçÄÔ,
¾ÍÊÇÇ§Íò±ðÈ¥Ö´ÐÐ {\ttfamily winnt} ½Å±¾³ÌÐòµµ. Ö»Òª×ö:
\begin{verbatim}
        hideBootprom
        hdboot
\end{verbatim}

ÄãµÄ NT ¹¤×÷Õ¾¾Í¿ÉÒÔÕýÈ·µÄÆô¶¯. È»áá¾Í¿ÉÒÔ×öÆäËûµÄÌØÊâÐÞÕýÁË.




\subsubsection{½¨Á¢´ÅµúÓ³Ïñµµ}

Windows NT Âé·³µÄµØ·½ÊÇ³öÔÚ: ´ÅµúÖ±½Ó´æÈ¡µÄ¹¦ÄÜ»á±» Kernel Ëù½ûÖ¹.
ÒâÎ½Öø, {\ttfamily MrZip} ÎÞ·¨¶ÁÈ¡¿ª»ú´ÅÇø.
ÖÆ×÷Ó³ÏñµµµÄ×î¼Ñ·½Ê½ÊÇÒÔ Windows 95/98 ¿ª»ú, ÔÚ DOS ÊÓ´°ÏÂ,
Ö´ÐÐ {\ttfamily MrZip}. ÒªÕâ÷á×ö¾ÍÒª±ä¸ü {\ttfamily winnt.bpb} ½Å±¾³ÌÐòµµÄÚÈÝ.
Ê¹µÃ Windows 95/98 Ó³Ïñµµ²»»Ø´æµ½µÚÒ»¸ö·Ö¸îÇø, ¶øÊÇµÚ¶þ¸ö:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
hidelog
setpartitions "BIGDOS:512 BIGDOS:512"
setbootpart 2
fullunzip "win.imz" 2
hidebootprom
hdboot :2
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}

(Èç¹ûÄãÓÐÆäËû²¹³äµÄÐÞÕý, ÔÚ°Ñ {\ttfamily "$\{$:1$\}$"} ±äÎª {\ttfamily "$\{$:2$\}$"}). ÓÃÕâ¸ö½Å±¾³ÌÐò¿ª»ú; Ó¦¸Ã»áÈÃ Windows 95/98 Ö´ÐÐ, ¶øÐÂ´Åµú»ú {\ttfamily D:} ²Û»á³öÏÖ,
ÀïÍ··ÅµÄ¾ÍÊÇ Windows NT.

¾ÍÈçÒÔÍùµÄ·½Ê½½¨Á¢ÄãµÄ´ÅµúÓ³Ïñµµ (Ö»ÊÇ¸Ä¶Ô {\ttfamily D:} ×ö, µ±È»ÁË),
°ÑËü´æÎª {\ttfamily winnt.imz} ²¢·ÅÔÚËÅ·þÆ÷ÉÏµÄ {\ttfamily /tftpboot} Ä¿Â¼ÏÂ.
×îáá±à¼­ {\ttfamily winnt.bpb} ½Å±¾³ÌÐòµµ¸Ä³ÉÈçÏÂ:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
hidelog
setpartitions "BIGDOS:512 BIGDOS:512"
setbootpart 1
fullunzip "winnt.imz" 1
clean 2
#fullunzip "win.imz" 2
hidebootprom
hdboot :1
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}

ÄãµÄ Windows NT Ô¶¶Ë¿ª»úÉè¶¨×éÌ¬ÒÑ¾­¾ÍÐø. µ±È», Èç¹ûÄã²»ÏëÓÐÁ½¸ö·Ö¸îÇø,
Äã¿ÉÒÔÉè¶¨³Éµ¥Ò»¸ö·Ö¸îÇø. µ«µ±ÄãÒªÖØ½¨Ó³ÏñµµÊ±,
Äã»¹ÊÇÐèÒªÔÙÉè¶¨µÚ¶þ¸ö·Ö¸îÇøÒÔ Windows 95/98 ¿ª»ú.




\subsubsection{ÏµÍ³Î¬»¤ÓëÉý¼¶}

Èç¹ûÄãÒÔááÒª¸üÐÂÈíÌå, °²×°³ÌÊ½³ô¡õÐÞÕý»ò°²È«ÐÔµÄÐÞÕý, ´¦Àí³ÌÐòÈçÏÂ:
\begin{itemize}
\item ÒÔÔ¶¶Ë¿ª»ú·½Ê½Æô¶¯Ò»Ì¨ÓÃ»§¶ËµçÄÔÒÔµÃµ½Ò»¸öÈ«ÐÂµÄ°²×°.
\item Íê³ÉÄãÐèÒªµÄ¸Ä±ä.
\item ±à¼­ {\ttfamily winnt.bpb}: °Ñ {\ttfamily clean} ¼° winnt {\ttfamily fullunzip} ¸Ä³É×¢½â,
°Ñ win95 {\ttfamily fullunzip} ¸Ä³É¿ÉÖ´ÐÐ.
\item ÖØÖÆ´ÅµúÓ³Ïñµµ.
\item ¸´ÖÆÐÂµÄ´ÅµúÓ³Ïñµµµ½ËÅ·þÆ÷ÒÔÈ¡´ú¾ÉµÄ.
\end{itemize}

¾ÍÕâÑù, ¸ã¶¨




\subsection{ÎÊÌâ¼¯ (FAQ)}

±¾½ÚÁÐ³öÎÒÃÇËùÍ³¼Æ×î³£Óöµ½µÄÎÊÌâ.
\begin{description}
\item[²»Í£µØÏÂÔØÓ³Ïñµµ] \mbox{}

¿ÉÄÜÊÇÒòÎªÄãËùÊ¹ÓÃµÄÊÇ±ê×¼ÐÍ TFTP ËÅ·þÆ÷,
¶øËü²»ÄÜ´¦Àí³¬¹ý 65535 ¸ö 512 Î»Ôª×é´óÐ¡µÄ·â°ü
(¶ø Solaris ËÅ·þÆ÷, ÔÚ³¬¹ý 32767 ¸ö·â°ü¾ÍÓÐÕâ¸öÎÊÌâ).
ÒòÎªÕâÑù, ÄãµÄÓ³Ïñµµ±ØÐë²ð³ÉÐí¶à¸ö²»³¬¹ýµÄµµ°¸ 30 MB
(Solaris µÄ»°, ÊÇ 15 MB).
²Î¿¼ {\itshape ¸´ÖÆµµ°¸(CopyArchive)\/} µÄ»úÖÆ, Ëü»á½ÌÄãÈçºÎ·Ö¸îÒÑ´æÔÚµÄÓ³Ïñµµ.
Èç¹ûÄãÄ¿Ç°»¹ÔÚÊ¹ÓÃ±ê×¼ÐÍ TFTP ËÅ·þÆ÷,
ÄãÓ¦¸ÃÉ÷ÖØ¿¼ÂÇ¸ÄÓÃ Bootix »ò Intel µÄ TFTP ËÅ·þÆ÷.
²Î¿¼ÏÂÒ»¸öÎÊÌâÒÔÌ½ÌÖÕâÐ©ËÅ·þÆ÷µÄ¹¦ÄÜ.

\item[BpBatch ÏÔÊ¾ "Fragment is not complete" µÄ´íÎóÑ¶Ï¢] \mbox{}

ÕâÊÇ TFTP Í¨Ñ¶Ð­¶¨µÄÎÊÌâ. ÄãµÄÔØÈëÆ÷µµÃûµÄ¸±µµÃûÒ»¶¨ÒªÉè¶Ô
(²Î¿¼ TFTP ËÅ·þÆ÷ÄÇ½Ú).
Èç¹ûÄãÓÃ Bootix µÄ TFTP ËÅ·þÆ÷²¢ÓÃÁË {\ttfamily -s 1408 59} µÄÑ¡Ïî,
ÔòÄãµÄÔØÈëÆ÷µµÃûÓ¦¸ÃÊÇ {\ttfamily bpbatch.P}.
Èç¹ûÄãÊÇÓÃ Intel »ò Bootware µÄ TFTP ËÅ·þÆ÷ÓÐÖ§Ô® blksize µÄ TFTP Ñ¡Ïî¹¦ÄÜ,
ÔòÖØÃüÃûÄãµÄÔØÈëÆ÷µµÃûÎª {\ttfamily bpbatch.B}.
×îáá, Èç¹ûÄãÓÃ±ê×¼ÐÍ TFTP ËÅ·þÆ÷,
ÔòÖØÐÂÃüÃûÄãµÄÔØÈëÆ÷µµÃûÎª {\ttfamily bpbatch} (Ã»ÓÐ¸±µµÃû).
Õâ¸ö×´¿öÏÂ BpBatch »áÓÃ 512 Î»Ôª×é´óÐ¡µÄ·â°üÈ¡´ú 1408 Î»Ôª×é´óÐ¡.
¶øÕâÊ±·Ö¸îµµµÄ´óÐ¡ÏÞÖÆÔÚ 32MB (TFTP ÄÚ²¿ÏÞÖÆ) ²»ÊÇ 87MB.
²Î¿¼ÉÏÒ»¸öÎÊÌâ, Ì½ÌÖ 512 Î»Ôª×é´óÐ¡µÄ·â°ü.

\item[µµ°¸½âÑ¹ËõÊ±Ö±½ÓÊ§Ð§] \mbox{}

ÓÐÈýÖÖ¿ÉÄÜÔ­Òò. ÔÚËÅ·þÆ÷ÉÏµÄÓ³Ïñµµ¸ðÆ¨ÁË
(¿ÉÒÔÊÔÖøÓÃ MrZip ¼ì²éÊÇ²»ÊÇÕâ¸öÎÊÌâ), »òÊÇ TFTP ´«ÊäÑÓÎóÒÔÖÂµµ°¸µµ°¸´«ËÍÊ§°Ü,
»òÊÇÍ¨Ñ¶Ð­¶¨²»ÏàÈÝ.

µ±ÍøÂ·¸ºÔØÌ«ÖØ, ¾Í»á·¢Éú TFTP ´«ÊäÑÓÎóµÄ×´¿ö
(±ÈÈç, ÄãÏëÒ»´Î°ÑÒ»¸ö¼«´óµÄÓ³ÏñµµÏÂÔØµ½³¬¹ýËÄÌ¨µÄÓÃ»§¶ËµçÄÔ).
ÔÚÕâÖÖÇé¿öÏÂ, {\ttfamily BpBatch} ²»»áÒ»Ö±ÖØ¸´´«Êä. ÒòÎªÄÇÑù×÷ºÁÎÞÓÃ´¦.
¹Øµô¼¸Ì¨µçÄÔ²¢ÊÔÖøÔÚ²»³¬¹ýËÄÌ¨ÓÃ»§¶ËµçÄÔÍ¬Ê±Æô¶¯µÄ»·¾³ÏÂ²âÊÔ
(»òÕß²»³¬¹ýÈýÌ¨). Èç¹ûÄã³£³£ÐèÒªÏÂÔØÓ³Ïñµµµ½Ðí¶àÌ¨µçÄÔ,
Äã¿ÉÒÔÊÔÓÃÎÒÃÇËùÊ¹ÓÃµÄÌØÊâ¹ã²¥ÐÍ TFTP ËÅ·þÆ÷ (²Î¿¼ÌÖÂÛËüµÄÄÇÒ»½ÚÄÚÈÝ).

Òò±ê×¼ÐÍ TFTP ËÅ·þÆ÷ (Í¨³£ÄÚ½¨ì¶ÄãµÄ UNIX ËÅ·þÆ÷) Ëùµ¼ÖÂµÄÍ¨Ñ¶Ð­¶¨²»ÏàÈÝ.
ÒòÎªµ± {\ttfamily BpBatch} ÒªÒÔÔöÇ¿ÐÍµÄ TFTP Ð­¶¨¹¤×÷Ê±,
ËÅ·þÆ÷ÒÔ±ê×¼ÐÍ TFTP Ð­¶¨À´¶ÔÓ¦. Èç¹ûÄãÒªÓÃ±ê×¼ÐÍ TFTP ËÅ·þÆ÷,
{\bfseries ÄãÓ¦¸ÃÒÆÈ¥¸±µµÃû .P } (²Î¿¼ÏÂÒ»¸öÎÊÌâµÄ½âËµ»á¸üÇå³þ).



\item[ÏÂÔØ / ½âÑ¹ËõÊ±(1) µçÄÔµ±»ú] \mbox{}

Èç¹ûÄãÓÃ Bootix µÄ TFTP ËÅ·þÆ÷, ÊÔÖøÔÚÆô¶¯µçÄÔÊ±ì¶ÃüÁîÁÐÉÏ¼ÓÈë
{\ttfamily -s 1408 59} . Èç¹ûÄã²»ÊÇ²ÉÓÃÔöÇ¿ÐÍ TFTP ËÅ·þÆ÷,
ÔòÒÆÈ¥ÔÚËÅ·þÆ÷ÉÏ BpBatch µµÃû¼° {\ttfamily bootptab} ÖÐµÄ¸±µµÃû {\ttfamily .P} .

Ï¸²¿½âËµ:
Õâ¸öÎÊÌâ·¢ÉúÔÚÄãÃ»ÓÐ¼ÜÉèÔöÇ¿ÐÍ TFTP ËÅ·þÆ÷µ«È´ÓÖÊ¹ÓÃÁË
{\ttfamily bpbatch.P} ÎªÄã DHCP/BOOTP µÄ¿É¿ª»úµµµµÃûµÄ±êÇ©.
µ±¿É¿ª»úµµµµÃûÒÔ {\ttfamily .P} Îª¸±µµÃûÊ±,
BpBatch ½«ÊÔÖøÈ¥Á¬½Óµ½Ò»Ì¨ Bootix µÄ TFTP ËÅ·þÆ÷. Òª½â¾öÕâ¸öÎÊÌâ,
Äã¿ÉÒÔÒÆÈ¥¿É¿ª»úµµµµÃûÖÐµÄ¸±µµÃû {\ttfamily .P}
(Õâ¾ÍµÈì¶¸æËß BpBatch ¸ÄÓÃ±ê×¼ÐÍ TFTP Ð­¶¨) »òÕß°²×°Ò»Ì¨ÔöÇ¿ÐÍ TFTP ËÅ·þÆ÷.
»¹ÓÐÆäËûÑ¡Ôñ, Äã¿ÉÒÔ°²×° Intel µÄ TFTP ËÅ·þÆ÷²¢±ä¸üÔØÈëÆ÷µµÃûÎª
{\ttfamily bpbatch.B}.
¼Ç×¡: ÒªÊ¹ Bootix µÄ TFTP ËÅ·þÆ÷ÕýÈ·µÄÔÚÔöÇ¿ÐÍ TFTP ÌØÐÔÏÂ¹¤×÷,
Äã±ØÐëÔÚÃüÁîÁÐÖÐ¼ÓÉÏ {\ttfamily -s 1408 59}.

\item[ÏÂÔØ / ½âÑ¹ËõÊ±(2) µçÄÔµ±»ú] \mbox{}

¿ÉÄÜÊÇÄãµÄµçÄÔ¶Ô VESA µÄÖ§Ô®ÓÐÎÊÌâ. ÊÔÖøÔÚÃüÁîÁÐ²ÎÊýÖÐ¼ÓÈë {\ttfamily -v}
»òÉè¶¨ VESA ±äÊýÎª {\ttfamily "OFF"}.

\item[VESA ¾íÒ³¹¦ÄÜ¹ÊÕÏ] \mbox{}

ÎÒÃÇÊ¹ÓÃ VESA 1.1 µÄ¾íÒ³¹¦ÄÜ. Èç¹ûÄãµÄÏÔÊ¾¿¨²»Ö§Ô® VESA 1.1, ¾Í±ðÓÃÕâ¸ö¹¦ÄÜ.
Èç¹ûÖ»¾íÒ»Ò³, ¾Í»á·¢ÉúÆæ¹ÖµÄÌõÎÆ, ±ð¼±. ÕâÊÇÒ»¸öÒÑÖªµÄ³ÌÊ½³ô¡õ,
ÎÒ½«ÔÚÓÐ¿ÕÊ±ÐÞÕý (VESA ¾íÒ³¹¦ÄÜ²»ÊÇÄÇÃþÖØÒªÀ²...).

\item[¿ìÈ¡ÖÐÓÐ»µµôµÄµµ°¸] \mbox{}

Èç¹ûÒ»¸ö´æì¶¿ìÈ¡ÇøÖÐµÄµµ°¸, ±»ÍâÔÚµÄ³ÌÊ½Åª»µÁË. Ëü»á×Ô¶¯µØ´Ó¿ìÈ¡ÖÐ±»ÒÆ³ý.
Èç¹ûÒ»¸öÕýÔÚÐ´Èë¿ìÈ¡ÇøµÄµµ°¸Ã»ÍêÕûÐ´Èë (¿ÉÄÜÊÇµçÄÔÔÚµµ°¸´«ÊäÖÐ±»¹Ø»ú),
ÔòËüÒ²»á±»×Ô¶¯Çå³ý. µ«Èç¹ûËÅ·þÆ÷´«ËÍÒ»¸öÒÑËð»µµÄµµ°¸.
»òÕß·¢×ÔËÅ·þÆ÷µÄ×ÊÁÏ´«ËÍÈ¡Ïû. ÔòÕâÀàÒÑ»ÙËðµÄµµ°¸ÈÔÈ»»á´æÔÚ¿ìÈ¡ÇøÖÐ.
ÄãÖ»ÒªÔÚ {\ttfamily BpBatch} µÚÒ»´Î´æÈ¡¿ìÈ¡ÇøÊ±, Í¬Ê±°´ÏÂÁ½¸ö shift ¼ü,
¾Í¿ÉÒÔ°Ñ¿ìÈ¡ÇøÄÚµÄ×ÊÁÏÇå¿Õ. »¹ÓÐÒ»¸ö·½·¨, ÔÚ½»Ì¸Ä£Ê½ÏÂÊäÈë {\ttfamily clean -1} .

\item[ÔÚÅú´ÎµµÖÐµÄ EXIT Ö¸ÁîÊ§Ð§] \mbox{}

Õâ²»ÊÇÒ»¸ö³ÌÊ½³ô¡õ. Exit ²¢²»ÊÇÒ»¸öÖ¸Áî.
Ã»ÓÐ exit »ò quit Ö¸ÁîÊÇÒòÎªÈç¹û²»¿ª»ú, Ôò´Ó¿ª»ú½Å±¾³ÌÐòÖÐÍË³öÊÇºÁÎÞÒâÒåµÄ.
¶ø MrBatch ÍêÈ«¸ú BpBatch Ò»ÑùÊÇÍ¬Ò»Ö§³ÌÊ½.
Äã¿É¸ÄÒÔ½ÐÓÃ HdBoot È¡´ú exit. Õâ²ÅÓÐÒâÒå, ÇÒÔÚ DOS °æÏÂ,
ÕæµÄ»áÈ¡´úÖØ¿ª»ú¶øÍêÈ«ÍË³ö.
¼Ç×¡Äã¿ÉÒÔÔÚ DOS °æÈÎºÎÇé¿öÏÂ°´ÏÂ Ctrl-Break È»ááÍË³ö.
Õâ½«ÔÚÀë¿ªÇ°, »Ø´æËùÓÐ±»À¹½ØµÄÖÐ¶Ï.

\item[Print Ö¸ÁîÊ§Ð§] \mbox{}

Èç¹ûÄãÊÔÖøÒªÓ¡Ò»Ð©¶«Î÷²¢Ö±½Ó½øÈë½»Ì¸Ä£Ê½, ÄãÓÐ¿ÉÄÜÀ´²»¼°¿´µ½ÄÇÐ©ÎÄ×Ö.
ÕâÊÇÒòÎªÄãËùÓ¡µÄ×ÖÊÇÏÔÊ¾ÔÚ {\itshape Ö´ÐÐÊ±ÆÚ\/} ÏÔÊ¾Ä»¶ø {\ttfamily Interact} Ö¸Áî»áÇÐ»»µ½
{\itshape ¼ÇÂ¼\/} ÏÔÊ¾Ä». Òò´ËÖ»Òª·ÅÒ»¸ö {\ttfamily GetKey}
Ö¸ÁîÔÚ print Ö¸ÁîÖ®ááÄã¾Í¿ÉÒÔ¿´µ½ÄãÒªµÄÎÄ×ÖÁË.

\item[MrZip ÏÔÊ¾ {\ttfamily Malloc failed}] \mbox{}

MrZip ÐèÒª´óÁ¿µÄ´«Í³¼ÇÒäÌå²ÅÄÜÖ´ÐÐ. Èç¹ûÄãÓöµ½Õâ¸öÎÊÌâ,
ÏÈÈ·¶¨ÄãÒÑ¾­ÓÃ {\ttfamily HideBootprom} Ö¸Áî»ò Bootix µÄ {\ttfamily bputil} Ð¶ÔØÁË
BootPROM ËùÕ¼µÄ¼ÇÒäÌå.
Èç¹ûÄãÔÚµ¥´¿µÄ MS-DOS ÏÂÖ´ÐÐ (·Ç Windows 95/98 DOS ÊÓ´°),
ÄãÓ¦¸ÃÊ¹ÓÃ EMM386 °ÑÍøÂ·¿¨Çý¶¯³ÌÊ½ÔØµ½¸ß²ã¼ÇÒäÌåÒÔÈ¡µÃ¸ü¶àµÄ´«Í³¼ÇÒäÌå.
ÔÚ Windows µÄ DOS ÊÓ´°ÏÂÖ´ÐÐ, Í¨³£ÊÇÃ»ÉáÎÊÌâµÄ
(Ö»ÒªÄãÔÚ°²×° Windows Ê±, Ã»ÁôÏÂÈÎºÎ 16 Î»ÔªµÄ¶«Î÷ÔÚÄãµÄ {\ttfamily autoexec.bat} µµÖÐ).

\item[MrZip ÔÚ¶ÁÈ¡Ä¿Â¼Ê±Ê§Ð§] \mbox{}

Õâ¸ö³ÌÊ½³ô¡õÒÑÐÞÕý. È¡µÃ×îÐÂ°æ {\ttfamily MrZip}. Èç¹û»¹ÓÐÕâ¸öÎÊÌâ,
ÊÔÖøÔÚ°Ñ±äÊý {\ttfamily Trace} ÉèÎª {\ttfamily "ON"} (ÇÒ°Ñ {\ttfamily PauseLog} ÉèÎª {\ttfamily "OFF"}) ÏÂ,
ÖØ½¨ÄãµÄÓ³Ïñµµ; Õâ¿ÉÒÔÈÃÄã·¢ÏÖµ¼ÖÂÎÊÌâµÄÔ­Òò. Çë»Ø´«ÏêÏ¸µÄ³ÌÊ½³ô¡õ±¨¸æ.

\item[MrZip ÎÞ·¨´æÈ¡Ä³Ð©µµ°¸] \mbox{}

MrZip »áÊÔÖøÈ¥¶ÁÈ¡ÒÑËø×¡, ÒÑ¿ªÆô»òÆäËûÌØ±ðµÄµµ°¸, Èç Windows swap µµ.
ÕâÀàµµ°¸Ó¦¸Ã²»±»º¬ÔÚÓ³ÏñµµÖÐ²¢Ó¦±»¹ýÂË³öÀ´ (Ê¹ÓÃ {\ttfamily filter} Ö¸Áî).
µ±È»Ò²¿ÉÄÜÊÇ×÷ÒµÏµÍ³ÔÚË£Äã. Èç¹û MrZip Ã»¸æËßÄãÄÄ¸öµµ°¸µ¼ÖÂÎÊÌâ,
ÊÔÖø°Ñ±äÊý {\ttfamily Trace} ÉèÎª {\ttfamily "ON"} (ÇÒ°Ñ {\ttfamily PauseLog} ÉèÎª {\ttfamily "OFF"}) ÏÂ,
ÖØ½¨ÄãµÄÓ³Ïñµµ. ÄãÒ²¿ÉÒÔÊÔÖøÓÃÖ±½Ó´Åµú´æÈ¡ (Ò²¾ÍÊÇ, ²»°ÑÀ´Ô´·Ö¸îÇøµ±³É
{\ttfamily "C:"} »ò {\ttfamily "/"} ¸ÄÒÔ {\ttfamily "$\{$:1$\}$"} ±íÊ¾).
Ê¹ÓÃÖ±½Ó´Åµú´æÈ¡Í¨³£±È½ÏÂý, ÒòÎªÎÒÃÇµÄ»º³åÇø²»Èô×÷ÒµÏµÍ³´ó, µ«ËüÓÐÐ©Ê±ºò±È½Ï¿É¿¿.

\item[´ÅµúÓ³Ïñµµ×ÜÊÇÒ»Ö±ÓÉËÅ·þÆ÷ÉÏÖØÐÂÔØÈë] \mbox{}

´ÅµúÓ³Ïñµµ±»´æ·ÅÔÚÌØÊâ¿ìÈ¡ÇøÖÐ, Èç¹ûËÅ·þÆ÷ÉÏµÄÃ»±ä¸ü, ÕÕÀíËµÓ¦¸Ã²»ÐèÔÙÏÂÔØÒ»´Î.
µ«ÊÇ, ÓÉì¶¿ìÈ¡ÇøÊÇÔÚ×îááÒ»¸öÊ¹ÓÃµ½µÄ·Ö¸îÇøÖ®ááÆôÊ¼,
¸ü¶¯·Ö¸îÇøµÄ´óÐ¡½«ÒÆ¶¯¿ìÈ¡ÇøµÄÎ»ÖÃ²¢Ëð»ÙÆäÄÚÈÝ.
ÁíÒ»¸öÊ¹µµ°¸×Ô¿ìÈ¡ÇøÖÐÏûÊ§µÄ¿ÉÄÜÒòËØÊÇÏÈÇ°µÄµµ°¸ÒÑ¾­±äµÃ±ÈÔ­À´µÄ´óÒ»±¶°ë.
ÔòÕâ¸öµµ°¸¾ÍÓ¦¸Ã±»¸²Ð´²¢ÖØÐÂÏÂÔØÒ»´Î. µ«ÕâÓ¦¸Ã²»»á·¢Éú.
µÚÈý¸ö¿ÉÄÜÒòËØÊÇ¿ìÈ¡Çø¹ýÐ¡.
Èç¹û·Ö¸îÇøÒÔÍâËùÊ£µÄ¿ÉÓÃ¿Õ¼äÐ¡ì¶ËùÓÐÑ¹ËõÓ³ÏñµµµÄÒ»±¶°ë,
ÔòÖ»ÓÐ×î³£Ê¹ÓÃµÄÓ³Ïñµµ»áÔÚ¿ìÈ¡ÇøÖÐ, ÆäËûµÄ¾Í±ØÐèÔÙÖØÔØÒ»´Î.

\item[Red Hat Linux 5.1 ²»ÄÜÕý³£¿ª»ú] \mbox{}

Õâ¸öÌ×¼þ¼ÙÉè Linux ¶¼ÓÃ {\ttfamily lilo} ¿ª»ú²¢»á¼ì²é {\ttfamily BOOT\_IMAGE} ÃüÁîÁÐ²ÎÊý
(ÔÚ {\ttfamily /etc/rc.d/rc.sysinit}).
Ö»Òª°ÑËü¼ÓÔÚ {\ttfamily linuxboot} ºô½ÐÖÐ, »òÕß±ä¸üÄãµÄ {\ttfamily rc.sysinit}.

\item[¹ã²¥ÐÍ TFTP µÄ ramdisk µ±µô ({\itshape Got in bound state\/})] \mbox{}

Linux µÄ dhcp ÓÃ»§³ÌÊ½¿ÉÒÔÍ¸¹ý DHCP »ØÓ¦, ¶¯Ì¬µØ¸Ä±äÓÃ»§¶ËµÄ IP Î»Ö·.
Èç¹ûÌá¹©µÄÎ»Ö·ÖµÊÇÓÀ¾ÃµÄ (ÎÞÏÞÖÆÊ¹ÓÃÊ±¼ä),
Ôò DHCP ÓÃ»§¶Ë³ÌÊ½Ö»Éè¶¨Î»Ö·Öµáá¾Í½áÊø·µ»Ø (Õâ¾ÍÊÇÎÒÃÇËùÆÚÍûµÄ).
µ«ÊÇ, Èç¹ûÎ»Ö·µÄÊ¹ÓÃÊ±¼äÓÐÏÞÖÆ,
ÔòÓÃ»§¶Ë³ÌÊ½±ØÐëÒ»Ö±´æÔÚ²¢Ã¿Ò»·ÖÖÓ¾ÍÑ°ÎÊÐÂµÄÎ»Ö·Öµ.
¶øÈç¹û DHCP ÓÃ»§¶Ë³ÌÊ½Ã»ÓÐ½áÊø·µ»Ø, Ôò MrBatch ¾ÍÓÀÔ¶²»»á±»ÔØÈë...
ÕâÎÊÌâµÄ½â·¨¾ÍÊÇÉè¶¨ÎÞÏÞÆÚµÄÎ»Ö·Ê¹ÓÃÊ±¼ä (ÓÐÊ±ºò¾Íµ±³ÉÊÇ -1).

\item[ÔÚ BpBatch ÏÂ»áµµ°¸´æÈ¡µ±»ú, µ«ÔÚ MrBatch ²»»á] \mbox{}

Õâ¸öÎÊÌâ·¢ÉúÔÚ AMI BIOS ÈÕÆÚÎª 94/07/25. ÎÒÃÇÑÐ¾¿áá, ·¢¾õÎÞ½â.
Õâ¸öÎÊÌâºÃÏñÊÇÒòÎª BIOS ±¾ÉíÓÐ³ÌÊ½³ô¡õ (²¿·ÝÔÝ´æÆ÷»ò¼ÇÒäÌåÎ»ÖÃ»á±»»Ù»µ).

\item[¶Ô·Ö¸î¹ýµÄµµ°¸½âÑ¹ËõÊ§Ð§ (Malloc failed)] \mbox{}

Õâ¸öÎÊÌâÊÇ·¢ÉúÔÚ PXE ÏàÈÝÐÔÉÏ, ÒÑ±»ÐÞÕý. ÇëÈ¡µÃ×îÐÂ°æ.

\item[MrBatch ¼° MrZip ²»ÏàÈÝì¶ RedHat 5.x µÄ terminal] \mbox{}

Õâ¸öÎÊÌâÒÑÔÚ MrBatch/MrZip °ËÔÂ·ÝµÚ 9 ¸ö°æ±¾ÐÞÕý.
Óë RedHat 5.1 Ò»Æð·¢ÐÐµÄÐÂ°æ ncurses º¯Ê½¿âÓÐÎÊÌâ.

\item[ÔÚ Linux ÏÂ³öÏÖ "libncurses.so.3.0: cannot open shared object file"] \mbox{}

MrZip ÒÑ¸ÄÔÚ libncurses 3.0 °æÏÂÁ¬½á.
ÄãÖ»ÄÜÊ¹ÓÃÆäËü±È 3.0 °æ¸üÐÂµÄ libncurses ²ÅÐÐ.
ÒªÓÃ½ÏÐÂ°æµÄ libncurses, ¶øÄãËùÐèÒªÈ¥×öµÄÖ»ÊÇ½¨Á¢Ò»Ð©ÈíÐÔÁ¬½áÓÉ
libncurses.so.3.0 µ½ÄãÐÂµÄ libncurses.so.xx µµ°¸.
ÔÚ RedHat 5.1, Äã¿ÉÒÔÊ¹ÓÃÏÂÁÐµÄÖ¸Áî :
{\ttfamily cd /usr/lib ; ln -s libncurses.4.2 libncurses.3.0}
ÄãÒ²¿ÉÒÔÏÂÔØ mrzip/mrbatch ×îÐÂµÄ°æ±¾. ×Ô 10/25/98,
MrBatch ÒÑÔÚ RedHat 5.1 »·¾³ÏÂ±àÒë.

\item[MrBatch ¼° MrZip ²»ÄÜÔÚ Linux ÏÂÖ´ÐÐ(file not found)] \mbox{}

Õâ¸öÎÊÌâÓëÇ°Ò»¸öÎÊÌâÏà·´. ÏÖÔÚÕâ¸öÌ×¼þÊÇÔ¤ÉèÔÚ libc6 »·¾³ÏÂ,
ËüÒÑ²»ÄÜÔÙÓë libc5 Ò»²¢Ê¹ÓÃ. Èç¹ûÄãÓöµ½Õâ¸öÎÊÌâ,
Ö»ÐèÒªÉý¼¶ÄãµÄ Linux (µ±È», Èç¹ûÎÒÃÇÌýµ½Ì«¶à±§Ô¹, ÎÒÃÇ»òÐí»áÊÔÖø±£ÁôÁ½ÖÖÌ×¼þ...).

\item[³ýÁËÔ¤ÉèµÄ 800x600 VESA Ä£Ê½, ÎÒ²»ÄÜÊ¹ÓÃÆäËûÄ£Ê½] \mbox{}

ÄãÓ¦¸ÃÏÈ¼ìÊÓ {\ttfamily VESA-Modes} ±äÊýµÄÄÚÈÝ,
¿´¿´ÄãµÄÓ²ÌåÉè±¸ÊÇ·ñ¿ÉÒÔÖ§Ô®ÄãÒªÊ¹ÓÃµÄÄ£Ê½. È»áá,
ÊÔÖøÓÃÏÂÁÐÁ½ÖÖ·½·¨Ö®Ò»À´Ñ¡ÓÃÄãÒªµÄ VESA Ä£Ê½ :
\begin{itemize}
\item {\ttfamily InitGraph "mode"}: ÊÔÖøÓÃ InitGraph "1024x768",
È»ááÖ´ÐÐÄãËùÏ²ºÃµÄ³õÊ¼»®Í¼ÐÎ (¼´ÓÃ {\ttfamily DrawGif} Ö¸Áî).
\item {\ttfamily VESA-Modes}: {\ttfamily VESA-Modes} ±äÊýµÄµÚÒ»À¸ÊÇÔ¤ÉèÄ£Ê½.
Èç¹ûÄã¸Ä±ä VESA-Modes ±äÊý, ËùÓÐµÄ³õÊ¼»¯Í¼ÐÎ»áÒÀÑ­ÄãËùÉè¶¨µÄÄ£Ê½.
\end{itemize}


\item[ÔÚ»Ø´æ¶à¸ö·Ö¸îÓ³ÏñµµÊ±, BpBatch ÏÔÊ¾ "Malloc failed" Ñ¶Ï¢] \mbox{}

ÎÒÃÇÒÑÐÞÕý BpBatch Ò»¸ö¼ÇÒäÌå¶Ô·ÖÅäµÄÎÊÌâ.
ÄãÓ¦¸ÃÈ·¶¨ÄãÊ¹ÓÃµÄ BpBatch °æ±¾ÔÚ 1998 Äê¾ÅÔÂ 22 ÈÕÖ®áá.

\item[Linux °æµÄ MrBatch Ê¹ÓÃ Fullunzip ×Ü»áÊ§Ð§] \mbox{}

ÎÒÃÇÒÑì¶ 09/22/1998 µÄ°æ±¾ÖÐ, ÐÞÕýÕâ¸öÎÊÌâ.

\item[Scandisk ÏÔÊ¾ÎÒµÄÓ²µú»úÒÑËð»Ù] \mbox{}

10/25/98 µÄ°æ±¾ÒÑÐÞÕýÒ»¸öÓë´óÓ³ÏñµµÓÐ¹ØµÄÎÊÌâ. ÊÔÖøÈ¥ÏÂÔØ×îÐÂ°æµÄ BpBatch.

\item[ÎÒµÄ RedHat ¿ª»ú´ÅµúÆ¬²»ÄÜÓÃ FloppyBoot ¹¦ÄÜ] \mbox{}

Õâ¸öÈíÌå³ô¡õÒÑ¾­ÔÚ 10/25/98 °æ±¾ÖÐÐÞÕý.

\item[ÎÒµÄ FAT32 ´ÅµúÓ³ÏñµµÎÞ·¨Õý³£¿ª»ú] \mbox{}

Õâ¸öÈíÌå³ô¡õÒÑ¾­ÔÚ 02/09/99 °æ±¾ÖÐÐÞÕý.

\item[µ±ÄãÆô¶¯ BpBatch ×ÜÊÇ³öÏÖ "Cannot load file"] \mbox{}

ÄãµÄ DHCP ËÅ·þÆ÷²»ÄÜËÍ³öÓÐÐ§µÄ option-135 µ½ÓÃ»§¶Ë.
BpBatch Ê¹ÓÃ option 135 ÎªËü×ÔÉíµÄÃüÁîÁÐ²ÎÊý. Èç¹ûÄãÏëÒª½øÈë½»Ì¸Ä£Ê½,
Äã¿ÉÒÔÉè¶¨Îª "-i". »òÕßÄã¿ÉÒÔ°ÑËüÉè¶¨ÎªÒ»¸ö½Å±¾³ÌÐòµµÃû,
Èç¹ûÄãÏëÒª BpBatch °´ÕÕÄãËùÑ¡µÄ½Å±¾³ÌÐòÖ´ÐÐ (±ð°Ñ .bpb µÄ¸±µµÃûÄÉÈëÃû³ÆÖÐ).
Èç¹ûÄãÊ¹ÓÃ PXE BootPROM, È·¶¨ÄãÊ¹ÓÃ option-135 ÎªÃüÁîÁÐ²ÎÊý.
PXE 2.0 BootPROM ÒÑ²»ÔÙÖ§Ô® Option-155.

\end{description}





\section{Ô¶¶ËÆô¶¯¹¤¾ß³ÌÊ½²Î¿¼ÊÖ²á}

±¾½Ú½«Ìá¹©ÎÒÃÇì¶ ÈÕÄÚÍß´óÑ§, CUI ÎªÔ¶¶ËÆô¶¯¼Ü¹¹, Ëù·¢Õ¹µÄ¹¤¾ß³ÌÊ½µÄÏêÏ¸ËµÃ÷×ÊÑ¶.




\subsection{BpBatch, MrBatch ¼° MrZip}

ÕâÈý¸öÃû³ÆÊÇÎªÁË¸øÍ¬Ò»¸ö³ÌÊ½¸³ÓèÈýÖÖ±ä»¯, ·Ö±ðÓÐÏÂÁÐµÄÌØÐÔ:
\begin{itemize}
\item {\ttfamily BpBatch} ÊÇÒ»¸öÌØ±ðµÄ³ÌÊ½, ¿ÉÒÔÔÚ×÷ÒµÏµÍ³ÔØÈëÖ®Ç°×Ô BootPROM Æô¶¯.
ËüÊÇÓÉÁ½¸ö²¿·ÝÀ´Íê³É: {\ttfamily bpbatch.P}, ¶¯Ì¬µÄÔØÈëÆ÷, ¼° {\ttfamily bpbatch.ovl},
³ÌÊ½±¾Ìå. {\ttfamily BpBatch} ÒÑ¿ÉÒÔÍ¸¹ýÎÒÃÇ×ÔÐÐÊµ×÷µÄ FAT16, FAT32 ¼° Ext2fs
µµ°¸ÏµÍ³´ï³ÉÍêÕûµÄ´Åµú´æÈ¡¹¦ÄÜ, ¸ü¿ÉÍ¸¹ý BootPROM TFTP API
´ïµ½Ô¶¶ËÍøÂ· I/O ´æÈ¡ÄÜÁ¦.
{\ttfamily BpBatch} ÊÇÔÚ DOS ÏÂÒÔ Borland C 5.0 ¼° Turbo Assembler 3.2 ±àÒë.
\item {\ttfamily MrBatch} ÊÇ {\ttfamily BpBatch} ÔÚ DOS/Linux ÏÂµÄ°æ±¾.
ËùÓÐ {\ttfamily BpBatch} ¿ÉÒÔ±æÊ¶µÄÖ¸Áî¶¼¿ÉÒÔÔÚ {\ttfamily MrBatch} ÏÂÊ¹ÓÃ.
Èç¹ûÄãÒªÔÚ DOS/Linux ÏÂ²âÊÔÄãµÄÅú´Îµµ½Å±¾³ÌÐò, Õâ»áÏàµ±ÓÐÓÃ.
ÔÚ DOS ÏÂ, {\ttfamily MrBatch} ¿ÉÒÔ×÷ÒµÏµÍ³Îª»ù´¡, Ä£ÄâÔ¶¶Ë I/O ¹¦ÄÜ,
Èç¹û BootPROM ²»´æÔÚµÄ»°. ÔÚ Linux ÏÂ, BootPROM ÒàÎÞ·¨±»Õì²âµ½,
µ« {\ttfamily MrBatch} ¿ÉÒÔÓÃ Linux µÄ IP Ö§Ô®¹¦ÄÜÒÔÄ£ÄâËü,
»ò²ÉÓÃ×÷ÒµÏµÍ³Îª»ù´¡µÄµµ°¸´æÈ¡À´Ä£Äâ.
{\ttfamily MrBatch} ÔÚ Linux ÏÂ, ÓÃ GCC 2.7.2.1 ±àÒë;
¶ø DOS ÏÂ,ÔòÓÃ Borland C 5.0 ¼° Turbo Assembler 3.2.
\item {\ttfamily MrZip} ÊÇÒ»¸ö½âÒëÆ÷ÓÃÀ´±æÊ¶ {\ttfamily MrBatch} ÓïÑÔµÄÀ©Ôö¹¦ÄÜ,
²¢ÄÜ½¨Á¢´ÅµúÓ³Ïñµµ.
ÔÚ {\ttfamily MrZip}, Ô­±¾ÓÐÏÞÖÆµÄÔ¶¶Ëµµ°¸ I/O
ÒÑÓÉÍêÕûµÄ×÷ÒµÏµÍ³Îª»ù´¡µÄµµ°¸´æÈ¡¹¦ÄÜÈ¡´ú.
{\ttfamily MrZip} ²¢²»Ö§Ô® VESA.
{\ttfamily MrZip} ÔÚ Linux ÏÂ, ²ÉÓÃ GCC 2.7.2.1 ±àÒë;
¶ø DOS ÏÂ, ²ÉÓÃ Borland C 5.0 ¼° Turbo Assembler 3.2.
\end{itemize}





\subsubsection{ÃüÁîÁÐ²ÎÊý}

ËùÓÐµÄ³ÌÊ½¶¼¿ÉÒÔ½ÓÊÜÏàÍ¬µÄ²ÎÊýÓÃ·¨. {\ttfamily MrBatch} ¼° {\ttfamily MrZip}
¿ÉÔÚÃüÁîÁÐÏÂÈ¡µÃ²ÎÊý, ¶ø {\ttfamily BpBatch} Ôò½åÓÉ²Î¿¼ BOOTP Í¨Ñ¶Ð­¶¨µÄ
option 155 (Ê®½øÖÆ) È¡µÃ. ÕâÊÇ²ÎÊýÓÃ·¨ :
\begin{verbatim}
        [-x] [-l] [-b] [-v] [-w] [-i] [script-basename]
\end{verbatim}

ËµÃ÷:
\begin{itemize}
\item {\ttfamily -x} ²»Ê¹ÓÃÑÓÉì¼ÇÒäÌå.
\item {\ttfamily -l} ²»Ê¹ÓÃ ISO-latin-8859-1 ÎªÔ¤Éè×ÖÔª¼¯.
\item {\ttfamily -b} È¡Ïû¶Ô BootPROM µÄÕì²â (ÔÚ DOS »·¾³ÏÂ, »á±ä³ÉËÑÑ°Èíµú»ú).
\item {\ttfamily -v} È¡Ïû¶Ô VESA µÄÕì²â (ÔÚ Windows 95/98 »·¾³ÏÂ, »áÇÐ»»³ÉÈ«Ó©Ä»).
\item {\ttfamily -w} ÆôÓÃÖ±½Ó´ÅµúÐ´Èë (ÔÚ DOS ¼° Linux ÏÂ, Ô¤ÉèÊÇ²»Ê¹ÓÃ).
\item {\ttfamily -i} ÆôÓÃ½»Ì¸Ä£Ê½, ¼´Ê¹ÓÐÉè¶¨½Å±¾³ÌÐòµµÃûÒ²Ò»Ñù.
\end{itemize}

{\ttfamily script-basename} ÊÇ¸½¼ÓµÄÑ¡Ïî. Èç¹ûÓÐÉè¶¨, {\ttfamily MrBatch}
¼° {\ttfamily BpBatch} »áÔØÈëÒÔ {\ttfamily .bpb} Îª¸±µµÃûµÄµµ°¸, ¶ø {\ttfamily MrZip} »áÔØÈëÒÔ
{\ttfamily .mrz} Îª¸±µµÃûµÄµµ°¸. Èç¹ûÃ»Éè¶¨, {\ttfamily MrBatch} ¼° {\ttfamily MrZip}
»áÖ´ÐÐì¶½»Ì¸Ä£Ê½, ¶ø {\ttfamily BpBatch} »áÔØÈëÓë BOOTP ¿É¿ª»úµµÃûÍ¬Ö÷µµÃû,
µ«ÒÔ {\ttfamily .bpb} Îª¸±µµÃûµÄµµ°¸.




\subsubsection{Óï·¨}

ÒÔÏÂµÄ¹æÔòÓÃì¶ {\ttfamily BpBatch} ·ÖÎöÊäÈëÐÐ.
\begin{itemize}
\item ËùÓÐÖ¸Áî¶¼ÊÇÒ»ÐÐÒ»ÐÐ½âÊÍ. ¸÷ÐÐ¼äÒÔ CR ¼°/»ò LF Îª·Ö¸ô.
\item Ã¿ÐÐ×î³¤Îª 255 ¸ö×ÖÔª.
\item ¹Ø¼ü×Ö¼°±äÊý¶¼ÒªÇø·Ö´óÐ¡Ð´.
\item " ÓÃÒÔµ±×÷×Ö´®Ê¶±ð×ÖÔª
\item µ±Ê¹ÓÃÁË \$$\{$±äÊý$\}$ »ò \$±äÊý, Ôò»áÒÔ±äÊýµÄÖµÀ´È¡´ú,
ÈôÎ´¶¨ÒåÔò»áÊÇÒ»¸ö¿Õ×Ö´®. Õâ¸ö·½·¨Ò²¿ÉÒÔÔÚ×Ö´®ÖÐÊ¹ÓÃ.
ÁíÍâ, Èç¹ûÊÇÓÃÔÚ×Ö´®ÖµÊ±, ±ØÐëÔÚ×Ö´®Ç°áá¼ÓÉÏË«ÒýºÅ
(¼´ ÕâÀï³Æ×÷ ¾Þ¼¯Ê½ÔËËã »á±È³Æ×÷ ±äÊý À´µÃÌùÇÐ).
\item 
\begin{itemize}
\item {\ttfamily $\backslash$a} ÊÇ´ú±í»á·¢³ö ßÙÉù (bell) ×ÖÔª (ASCII 7).
\item {\ttfamily $\backslash$b} ÊÇ´ú±í µ¹ÍË¼ü (backspace) ×ÖÔª (ASCII 8).
\item {\ttfamily $\backslash$n} ÊÇ´ú±í »»ÐÐ (newline) ×ÖÔª (ASCII 10).
\item {\ttfamily $\backslash$r} ÊÇ´ú±í ¹éÎ» (return) ×ÖÔª (ASCII 13).
\item {\ttfamily $\backslash$t} ÊÇ´ú±í ÌøÎ» (tabulation) ×ÖÔª (ASCII 9).
\item {\ttfamily $\backslash$v} ÊÇ´ú±í ºáÏòÌøÎ» (vertical-tab) ×ÖÔª (ASCII ...).
\item {\ttfamily $\backslash$nnn} n ÊÇÈýÎ»ÊýµÄÊ®½øÎ»ÊýÖµÔÚ 000 µ½ 377 ´ú±í ascii
ÂëµÄÉè¶¨Öµ.
\item {\ttfamily $\backslash$X} X ÊÇÈÎºÎÉÏÃæÃ»ÁÐ³öµÄ×ÖÔª¾ÍÓÉ X ´ú±í. ÌØ±ðÊÇ:
\begin{itemize}
\item {\ttfamily $\backslash$"} ÊÇ´ú±í³£¼ûµÄ Ë«ÒýºÅ (double-quote) (²»ÊÇ×Ö´®Ê¶±ð×ÖÔª).
\item {\ttfamily $\backslash$\$} ÊÇ´ú±í³£¼ûµÄ Ç®×ÖºÅ (dollar sign) (²»ÊÇ±äÊý±êÊ¾).
\item {\ttfamily $\backslash$$\backslash$} ÊÇ´ú±í³£¼ûµÄ ·´Ð±Ïß·û (backslash) (²»ÊÇÌØÊâ×ÖÔª).
\end{itemize}
\end{itemize}
\item ×ÖÔª "end of string" (ASCII Âë 0) ²»ÄÜÔÚÈÎºÎµØ·½Ê¹ÓÃ.
ÒòËüÊÇ³ÌÊ½ÄÚ²¿ÓÃÀ´µ±×÷×Ö´®½áÊøµÄÊ¶±ð×ÖÔª.
\item ×ÖÔª "floating diaeresis" (ASCII Âë Ê®½øÖÆ 249, Ê®Áù½øÖÆ F9, °Ë½øÖÆ 371)
²»ÄÜ±»ÓÃÔÚÈÎºÎ×Ö´®ÖÐ. ÒòÎªËüÊÇ³ÌÊ½ÄÚ²¿ÓÃÀ´±æÊ¶ÊäÈë»úÖÆµÄÊ¶±ð×ÖÔª.
\item ×ÖÔª "block space" (ASCII Âë Ê®½øÖÆ 255, Ê®Áù½øÖÆ FF, °Ë½øÖÆ 377)
²»ÄÜ±»ÓÃÔÚÈÎºÎ±äÊýÖÐ. ÒòÎªËüÊÇ³ÌÊ½ÄÚ²¿±äÊýµÄÊ¶±ð×ÖÔª.
\end{itemize}


¿ÕÐÐ»á±»ºöÂÔ. ¸ÃÐÐÓÉ ({\ttfamily \#}) ÆôÊ¼Ôò»á±»µ±³É×¢½â, ²»×öÈÎºÎ½âÊÍ.
¸ÃÐÐÓÉ ({\ttfamily :}) ÆôÊ¼Ôò»á±»µ±³É±êÇ©, ²»×öÈÎºÎ½âÊÍ.

\begin{description}
\item[×Ö´®±íÊ¾] \mbox{}

×Ö´®ÓÉË«ÒýºÅÀ¨ÆðÀ´µÄ¿É±»Ê¶±ðµ½:
\begin{verbatim}
        "Hello world"
\end{verbatim}

ÈçÒªÔÚ×Ö´®ÖÐ·ÅÈëË«ÒýºÅ, Ôò±ØÐëÓÃ, ·´Ð±Ïß·û (backslash) À¨ÆðÀ´:
\begin{verbatim}
        "I said: \"Hello world\""
\end{verbatim}

×Ö´®¿ÉÒÔÓÃÒ»Ð©ÔËËã×ÓÀ´×öÔ¤ÏÈÐÞÕý.
\begin{itemize}
\item ×ÖÔªÈ¡´úÔËËã×Ó:
\begin{verbatim}
        "Hello world"/o=u/      ==      "Hellu wurld"
        "198.76.54.32"/.= /     ==      "198 76 54 32"
\end{verbatim}
\item ÎÄ×ÖÑ¡ÔñÔËËã×Ó (ÒÔÁãÎªÆðÊ¼):
\begin{verbatim}
        "Hello world"{0}        ==      "Hello"
        "198 76 54 32"{1-3}     ==      "76 54 32"
\end{verbatim}
\item ×Ó×Ö´®Ñ¡ÔñÔËËã×Ó (ÒÔÁãÎªÆðÊ¼):
\begin{verbatim}
        "Hello world"[4]        ==      "o"
        "Hello world"[4-7]      ==      "o wo"
\end{verbatim}
\end{itemize}

ÔËËã×Ó¿ÉÒÔÒ»ÔÙÊ¹ÓÃÒÔÐÞÕý³öËùÐèµÄ×Ö´®ÑùÊ½.
Èç¹ûÏëÖªµÀ¹Øì¶×Ö´®³¤¶È¼°ÎÄ×Ö¸öÊýµÄÔËËã×Ó,
¿ÉÒÔ²Î¿¼ÏÂÃæ "ÊýÖµ±íÊ¾·¨" Ò»½Ú.



\item[ÊýÖµ±íÊ¾·¨] \mbox{}

ÊýÖµ±íÊ¾ÊÇÒÔ 32 Î»ÔªÕûÊýÀ´ÔËËã (ÓÉ -2,147,483,646 µ½ 2,147,483,647).
Ê®Áù½øÖÆ, °Ë½øÖÆ, ¼°¶þ½øÖÆ ÊýÖµÔòÎÞ·¨±æ±ð.
Èç¹ûÒ»Óöµ½ÊýÖµ±íÊ¾, Ôò±ØÒª¾­¹ýÏÂÃæµÄ±æÊ¶³ÌÐò:
\begin{itemize}
\item ÊÇ ÕýÕûÊý »òÊÇ ¸ºÕûÊý
\item  ({\itshape expr1 op expr2\/}) ÕâÖÖÐÎÊ½µÄ {\itshape op\/} ¿ÉÒÔÊÇ +, -, * (³Ë), / (³ý)
»ò {\ttfamily \%} (âÅÊý) ¶ø {\ttfamily expr} ÊÇÊýÖµ±íÊ¾.
Òª×¢ÒâµÄÊÇÃ¿¸öÔËËã¶¼ÒªÓÃÀ¨ºÅ°üÆðÀ´ :
\begin{verbatim}
        ((3 * 5)+2)             == 17
\end{verbatim}
\item ×Ö´®³¤¶ÈÔËËã×Ó (@), ááÃæ½ÓÖøÒ»¸ö×Ö´® :
\begin{verbatim}
        @"Hello world"          == 11
\end{verbatim}
\item ÎÄ×Ö¼ÆËãÔËËã×Ó (\#), ááÃæ½ÓÖøÒ»¸ö×Ö´® :
\begin{verbatim}
        #"Hello world"          == 2
\end{verbatim}
\end{itemize}




\item[ÑÓ³Ù] \mbox{}

²¿·ÝÖ¸ÁîÐëÒªÑÓ³ÙÀ´µ±×÷²ÎÊý. ÑÓ³ÙÊ±¼äÊÇÒÔÃëÎªµ¥Î», ¾«¶Èµ½Ê®·ÖÖ®Ò»Ãë:
\begin{verbatim}
        Delay 3                 µÈ´ý 3 Ãë
        Delay 0.3               µÈ´ý 3/10 Ãë
\end{verbatim}




\item[ÑÕÉ«] \mbox{}

ÐèÒªÉè¶¨ÑÕÉ«Ê±, Äã¿ÉÒÔÓÃÊýÖµ»òÑÕÉ«Ãû (Çø·Ö´óÐ¡Ð´) À´´ú±íÑÕÉ«.
¿ÉÒÔÊ¹ÓÃÏÂÁÐÑÕÉ«:
\begin{verbatim}
        Black           0
        Blue            1
        Green           2
        Cyan            3
        Red             4
        Magenta         5
        Brown           6
        LightGray       7
        DarkGray        8
        LightBlue       9
        LightGreen     10
        LightCyan      11
        LightRed       12
        LightMagenta   13
        Yellow         14
        White          15
\end{verbatim}




\item[²Î¿¼µµ°¸] \mbox{}

µµÃûÊÇÒ»ÖÖ×Ö´®. ËûÃÇ±ØÐèÒÔË«ÒýºÅÀ¨ÆðÀ´. µµ°¸Ãû³ÆÔÚ´óÐ¡Ð´ÓÐ±ðµÄµµ°¸ÏµÍ³Ê±,
¾ÍÓÐ´óÐ¡Ð´µÄ·Ö±ð; ·´Ö®, ì¶ÎÞ´óÐ¡Ð´Ö®±ðµÄµµ°¸ÏµÍ³Ê±, ¾ÍÓÐÎÞ´óÐ¡Ð´µÄ·Ö±ð.
Ð±Ïß·û Óë ·´Ð±Ïß·û ¿ÉÒÔ×ÔÓÉµÄÔñÒ»Ê¹ÓÃ. µ«±ðÍü¼Ç ÒªÓÃµ½ÒçÎ»×ÖÔª
·´Ð±Ïß·û ±ØÐèÓÃ Ë«·´Ð±Ïß À´±íÊ¾.

ÓÐÁ½ÖÖÀàÐÍµÄµµ°¸²Î¿¼:
\begin{itemize}
\item Ö±½Ó²Î¿¼µ½±¾»ú´Åµú»úÉÏµÄµµ°¸.
\item Íâ²¿µÄµµ°¸.
\end{itemize}


Ö±½Ó²Î¿¼µ½±¾»ú´Åµú»úÉÏµÄµµ°¸ÓÃ·¨:
\begin{verbatim}
        "{´Åµú»úºÅÂë:·Ö¸îÇø}/¾ø¶ÔÂ·¾¶/µµ°¸Ãû³Æ"
\end{verbatim}

¿ÉÒÔÊ¡ÂÔ´Åµú»úºÅÂëÔ¤ÉèÖµÊÇÁã.
±ÈÈç, {\ttfamily "$\{$:1$\}$/usr/bin"} ÊÇÖ¸ÔÚµÚÒ»¸ö·Ö¸îÇøÓÐ {\ttfamily /usr/bin} ÕâÄ¿Â¼.
Ö±½Ó²Î¿¼µ½±¾»ú´ÅµúÉÏµµ°¸µÄ I/O ¹¦ÄÜÍêÈ«ÊÇÎÒÃÇ×ÔÐÐÊµ×÷³öÀ´µÄ
(ÎÒÃÇ²»Ê¹ÓÃ×÷ÒµÏµÍ³ËùÌá¹©µÄ¹¦ÄÜ).

ÓÐÁ½ÖÖ {\itshape ÌØ±ðµÄ\/} ·Ö¸îÇø. ·Ö¸îÇøÁã ÊÇÖ¸´Åµú»úÉÏµÄÖ÷¿ª»ú¼ÇÂ¼ (MBR)
²¢Ìá¹©Ò»¸öÐéÄâµµ°¸ÏµÍ³×°ÖÃÒÔÈÃÄã´æÈ¡¿ª»úÊ¶±ðÂë.
·Ö¸îÇø¸ºÒ» (-1) ÊÇÖ¸¿ìÈ¡µµ°¸ÏµÍ³ (²Î¿¼ÏÂÃæÐðÊö).

ÔÚ BpBatch/MrBatch »·¾³ÏÂ, Èç¹ûÓÐ BootPROM ´æÔÚ,
ÔòÍâ²¿µÄµµ°¸ÊÇÖ¸µ½Ô¶¶Ë TFTP ËÅ·þÆ÷ÉÏ:
\begin{verbatim}
        "help.bpb"           ÊÇÖ¸ÔÚ /tftpboot ÏÂµÄ help.bpb µµ°¸
        "images/MyImage.pcx" ÊÇÒ»¸öÔÚ /tftpboot/images ÏÂµÄµµ°¸
\end{verbatim}

ÈçÒª²Î¿¼µ½ÆäËûµÄ TFTP ËÅ·þÆ÷¿ÉÒÔÓÃ:
\begin{verbatim}
        "198.76.54.32:help.bpb"
\end{verbatim}

Èç¹ûËÅ·þÆ÷ÒªÈÆ¹ýÕ¢µÀÆ÷¿ÉÒÔÓÃ :
\begin{verbatim}
        "198.70.0.1/198.76.54.31:help.bpb"
\end{verbatim}

Òà¿ÉÒÔ×ÔÐÐ¾ö¶¨ÌØÊâ²ººÅ×÷ TFTP Á¬½á :
\begin{verbatim}
        "198.76.54.32@89:getpasswd/smith"
\end{verbatim}

ÔÚÍ¬Ò»Ê±¼äÖ»ÄÜÓÐÒ»Ì¨»úÆ÷¿ªÆôÔ¶¶Ëµµ°¸.
Èç¹û BootPROM ²»´æÔÚ, Ô¶¶ËµÄµµ°¸»áÍ¸¹ý×÷ÒµÏµÍ³µÄµµ°¸ I/O ¹¦ÄÜÀ´Ä£Äâ,
µ«Í¬ÑùµÄÏÞÖÆÒÀÈ»´æÔÚ.

ÔÚ MrZip »·¾³ÏÂ, Ô¶¶ËµÄµµ°¸ÊÇÍ¸¹ý×÷ÒµÏµÍ³´æÈ¡µ½¸Ãµµ.
ÕâÀï¾ÍÃ»ÓÐÈÎºÎÏÞÖÆ, Ô¶¶ËµÄµµ°¸¿É±»µ±³ÉÖ±½Ó²Î¿¼µ½±¾»ú´Åµúµµ°¸Ò»ÑùÀ´Ê¹ÓÃ.
¶øÔ¶¶ËµÄµµ°¸Í¨³£»á±ÈÖ±½Ó²Î¿¼µ½±¾»ú´Åµúµµ°¸»¹¿ì,
ÒòÎª×÷ÒµÏµÍ³±¾ÉíÓÐ½Ï¶àµÄÔÝ´æÇø. Èç¹û×÷ÒµÏµÍ³ÓÐÖ§Ô®,
ÔòÔ¶¶Ëµµ°¸¿É±»µ±³ÉÍøÂ·ÉÏµÄµµ°¸.
\begin{verbatim}
        "C:\\autoexec.bat"
        "C:/config.sys"
        "/mnt/net/usr"
\end{verbatim}


\end{description}





\subsubsection{¿ìÈ¡µµ°¸ÏµÍ³}

ÎªÁË½µµÍÍøÂ·¸ºÔØ²¢¼Ó¿ì ¿ª»úËÙ¶È, ´Åµúµµ°¸´æÈ¡ËÙ¶È, Linux Kernel
¼°ÆäËûµµ°¸¿ÉÒÔÓÉÓ²µú¡õ¿ìÈ¡µÃµ½. ´Åµú¿ìÈ¡µÄÇøÓòÊÇÔÚÓ²µú»úµÄÄ©¶Ë,
½éì¶·Ö¸î±íÖÐ×îááÒ»¸ö¶ÔÓ¦µ½µÄ´ÅÖùÓë´Åµú×îááÒ»¸öÀíÂÛ´ÅÖùÖ®¼ä
(ì¶ÈÎºÎ¶ÔÓ¦ÒªÊ¹ÓÃµÄ·Ö¸îÇøÖ®Íâ). ÒªÊ¹¿ìÈ¡µµ°¸ÏµÍ³×÷¶¯,
¾Í±ØÐèÔÚ×îááÒ»¸ö·Ö¸îÇøµ½´Åµú»úÄ©¶ËÖ®¼ä±£Áô¿Õ¼ä.
¶øÈç¹ûÄãÒª»Ø´æÒ»¸ö´ÅµúÓ³Ïñµµ, Ôò¸üÒªÈÃ¿ìÈ¡µµ°¸ÏµÍ³×÷¶¯²ÅÐÐ.

Õâ¸ö´Åµú¿ìÈ¡ÊÇÓÉÒ»¸ö¾ß CRC È·ÈÏ¼ì²éµÄ±äÒ×ÐÔµµ°¸ÏµÍ³Ëù×é³É:
Ã¿¸öÄ¿Â¼ ¼° Ã¿ 32 KB µÄ×ÊÁÏÇø¿é ¶¼ÒÔÒ»¸ö 32 Î»ÔªµÄ CRC À´¼ì²éÈ·ÈÏ.
Ã¿µ±Ò»¸öÄ¿Â¼»ò×ÊÁÏÇø¿éÎÞÔ¤¾¯µÄ¸Ä±äáá, Ôò¸Ãµµ°¸»á×Ô¶¯ÓÉ¿ìÈ¡ÇøÒÆ³ý;
²¢ÔÚÏÂ´Î´æÈ¡ÒªÇóÊ±, ÔÙ´ÎÏÂÔØÐÂµÄ×ÊÁÏÒÔÎÇºÏÏÖ¿ö.

Äã¿ÉÒÔÍ¸¹ý BpBatch, MrBatch ¼° MrZip ×ÔÓÉ´æÈ¡¿ìÈ¡µµ°¸ÏµÍ³,
ÓÃÖ±½Ó´æÈ¡±¾»ú´Åµúµµ°¸¹¦ÄÜ´æÈ¡ÌØ±ð·Ö¸îÇø {\ttfamily "$\{$:-1$\}$"} .
Òª¼ìÊÓ¿ìÈ¡ÇøÄÚÈÝ, Ö»ÐèÊäÈë :
\begin{verbatim}
        logdir "{:-1}"
\end{verbatim}

Èç¹û¿ìÈ¡Çø×ÊÁÏ»ÙËðÇÒ²»»á×Ô¶¯ÇåÀíÊ± (Õâ×´¿öÓ¦¸Ã²»»á·¢Éú),
ÄãÖ»ÒªÊäÈë (ÔÚ½»Ì¸Ä£Ê½ÏÂ) :
\begin{verbatim}
        clean -1
\end{verbatim}

»òÔÚ BpBatch µÚÒ»´Î´æÈ¡¿ìÈ¡Ê±, Í¬Ê±°´ÏÂÁ½¸ö shift ¼ü.




\subsubsection{ÌØÊâ±äÊý}

ÓÐÐ©±äÊýÔÚ³õÖµÉè¶¨Ê±¾ßÓÐÌØ±ðµÄÒâÒå. Ò»²¿·ÝÊÇ´æÔÚì¶ËùÓÐµÄ³ÌÊ½,
ÁíÒ»²¿·ÝÖ»¿ÉÒÔÔÚ  MrZip Ö´ÐÐÊ±²Å´æÔÚ,
µ«ÈÔÓÐÒ»²¿·ÝÖ»ÄÜÔÚ BOOTP/DHCP »ØÓ¦ÊÕµ½µÄÊ±ºò²Å´æÔÚ.

\begin{description}
\item[Í¨ÓÃ±äÊý] \mbox{}

\begin{itemize}
\item {\ttfamily \$Program} ÔÚ BpBatch, ÊÇÉè³É "BpBatch",
ÔÚ MrBatch, ÊÇÉè³É "MrBatch", ÔÚ MrZip, ÊÇÉè³É "MrZip".
\item {\ttfamily \$Basename} ÓÃÀ´Éè¶¨¸øÅú´Îµµ½âÒëÆ÷Ê¹ÓÃµÄ½Å±¾³ÌÐòµµµÄÖ÷µµÃû.
\item {\ttfamily \$HelpFile} µ±ºô½Ðµ½ {\ttfamily Help} Ê±, ËùÒªÔØÈëµÄµµ°¸Ãû³Æ.
Ô¤Éè: {\ttfamily "\$$\{$Basename$\}$.hlp"}.
\item {\ttfamily \$BOOTP-...} ÊÇ¾­ÓÉ BOOTP/DHCP »ØÓ¦ËùÈ¡µÃµÄÉè¶¨.
(²Î¿¼ BOOTP/DHCP ±äÊýÄÇÒ»¶Î, ÒÑÈ¡µÃ¸üÏ¸²¿µÄ×ÊÁÏ).
\item {\ttfamily \$DHCP-...} ÊÇ¾­ÓÉ DHCP »ØÓ¦¶øÈ¡µÃµÄÉè¶¨.
(²Î¿¼ BOOTP/DHCP ±äÊýÄÇÒ»¶Î, ÒÔÈ¡µÃ¸üÏ¸²¿µÄ×ÊÁÏ).
\item {\ttfamily \$Disks} ÊÇÓÃÀ´Éè¶¨¸÷´Åµú»úËù»®·ÖµÄ´óÐ¡¿Õ¼ä·Ö²¼.
ÒâÎ½Öø, ÒÔ {\ttfamily \#"\$Disks"} ÏóáçÓ²µú»ú¸öÊý;
¶ø {\ttfamily "\$Disks"$\{$0$\}$} ÔòÊÇÖ¸µÚÒ»Ì¨Ó²µú»úµÄ´óÐ¡.
\item {\ttfamily \$Keypressed} ÊÇÖ¸¼üÅÌÔÝ´æÇøÖÐ,
ÏÂÒ»¸ö×¼±¸¶ÁÈ¡µÄÊäÈë¼üÖµ (Èç¹ûÓÐÊäÈëµÄ»°).
\item {\ttfamily \$LBA} ¿ØÖÆÊÇ·ñÊ¹ÓÃ LBA À´´æÈ¡ {$>$} 2Gb µÄÓ²µú»ú.
Ô¤Éè: "ON".
\item {\ttfamily \$FDA} ¿ØÖÆÊÇ·ñÊ¹ÓÃ ¿ìËÙ´Åµú´æÈ¡ (Í¸¹ý´ÅÖùÐ´Èë).
Ô¤Éè: "ON".
\item {\ttfamily \$VESA} ¿ØÖÆÊÇ·ñÊ¹ÓÃ VESA Í¼ÐÎ»¯Ä£Ê½.
Ô¤Éè: "ON" Èç¹ûÏµÍ³ÓÐ´Ë¹¦ÄÜ.
\item {\ttfamily \$VESA-Modes} ÁÐ³öËùÓÐ¿É¹©Ê¹ÓÃµÄ VESA Ä£Ê½.
µÚÒ»ÐÐ¼´ÎªÔ¤ÉèÄ£Ê½, ÓÃì¶²»¾ßÈÎºÎ²ÎÊýµÄ InitGraph Ö¸ÁîÊ±, Ñ¡ÓÃ.
¼Ç×¡: Èç¹û VESA="OFF", ´Ë±äÊý»áÊÇ¿ÕµÄ.
\item {\ttfamily \$APM} Èç¹ûÄãµÄµçÄÔÖ§Ô® Avanced Power Management
»áÉè³É "ON". Èç¹û \$APM Éè³É "ON",
Äã¾Í¿ÉÒÔÊ¹ÓÃ PowerOff Ö¸ÁîÀ´¹ØµôµçÄÔµçÔ´.
Ô¤Éè: ÓëÄãµÄÓ²ÌåÉè±¸ÓÐ¹Ø.
\item {\ttfamily \$Trace} ¿ØÖÆÊÇ·ñÔÚÖ´ÐÐÇ°, ÏÔÊ¾Ã¿¸öÖ¸Áî.
ËüÒ²¿ÉÒÔ¿ØÖÆÊÇ·ñÒªÏÔÊ¾Ëù½¨Á¢µÄÐÂµµµµÃû.
Ô¤Éè: "OFF".
\item {\ttfamily \$AutoShowLog} ¿ØÖÆÊÇ·ñÔÚ ESC ¼ü°´ÏÂáá,
×Ô¶¯ÇÐ»»µ½ÎÄ×Ö¼ÇÂ¼.
Ô¤Éè: "ON".
\item {\ttfamily \$PauseLog} ¿ØÖÆÊÇ·ñÔÚÏÔÊ¾¼ÇÂ¼Ê±ÓÐÌøÒ³ÔÝÍ£¹¦ÄÜ.
Ô¤Éè: "ON".
\item {\ttfamily \$CacheDisk} ÓÃÀ´Éè¶¨´ÅµúÊÇ·ñÓÐ¿ìÈ¡Ô¶¶Ëµµ°¸µÄ¹¦ÄÜ.
Ô¤Éè: empty == 0, µÚÒ»Ì¨Ó²µú»ú.
\item {\ttfamily \$CacheAlways} ¿ØÖÆÊÇ·ñ×Ô¶¯¿ìÈ¡Ô¶¶Ë¸´ÖÆ¹ýµÄµµ°¸,
»òÒÑÐÞÕý¹ýµÄ »ò ÖÆ³öÀ´µÄÓ³Ïñµµ.
Ô¤Éè: "OFF".
\item {\ttfamily \$CacheNever} ·ÀÖ¹ÈÎºÎµµ°¸±»¿ìÈ¡.
ÔÚÎÞ´Åµú»úµÄ Linux ¿ª»úÊ±Çë°ÑÕâ¸ö±äÊýÆô¶¯.
Ô¤Éè: "OFF".
\item {\ttfamily \$CacheReserve} ·ÀÖ¹ÔÚ¿ìÈ¡·Ö¸îÇøÖÐ,
Ê¹µµ°¸³¬¹ýËùÐè¿Õ¼äµÄ°Ù·ÖÖ® 25. Èç¹ûÄãµÄÓ²µú¿Õ¼ä¶ÌÉÙ, ¹ØµôÕâ¸ö±äÊý.
Ô¤Éè: "ON".
\item {\ttfamily \$ExtMemory} ¿ØÖÆÊÇ·ñÊ¹ÓÃÑÓÉì¼ÇÒäÌå (»ò³ÆÎª XMS).
Ò»¾­Ñ¡ÓÃ, ÑÓÉì¼ÇÒäÌå¾Í²»ÄÜ±»ÔÙÀûÓÃ.
Ô¤Éè: "ON" Èç¹ûÓÐÑÓÉì¼ÇÒäÌåµÄ»°.
\item {\ttfamily \$IsoLatin} ¿ØÖÆÔÚº¬ÈëµµÓëÐÞÕýµµÖÐ,
¸ß²ã ASCII ÂëµÄ½âÊÍ·½Ê½.IsoLatin µÄÉè¶¨ÊÇÔÚµµ°¸ÔØÈëáá²Å´¦ÀíµÄ,
²»ÊÇÔÚµµ°¸´¦ÀíÖ®áá.
Ô¤Éè: "ON".
\item {\ttfamily \$ProgressX} ¼° {\ttfamily \$ProgressY}
¿ØÖÆµµ°¸ÏÂÔØÓë½âÑ¹ËõÕýÔÚ´¦ÀíÖÐµÄÊÓ´°, ì¶ VESA Í¼ÐÎÄ£Ê½ÏÂµÄÏÔÊ¾Î»ÖÃ.
Ô¤Éè: 200 200.
\item {\ttfamily \$EXT2-Backup} ¿ØÖÆ Linux Ext2 µµ°¸ÏµÍ³µÄ
superblock ±¸·ÝµÄ¸üÐÂ. Superblock ±¸·ÝÐè»¨µô¼¸ÃëÖÓÔÚÏÖÐÐµÄ Kernel
ÖÐ²»Ôø±»Ê¹ÓÃ (Ö»¿¿ e2fsck).
\item {\ttfamily \$WatchdogPort} Éè¶¨ I/O ²º (Ê®½øÖÆÖµ) ÓÃÒÔ´æÈ¡
watchdog ½éÃæ¿¨. Ô¤Éè´Ë±äÊýÊÇ 0, Ò²¾ÍÊÇ¹Øµô watchdog µÄÖ§Ô®.
Éè¶¨Õâ¸ö±äÊýÎª·ÇÁãÖµÊ±, »áÆôÓÃ watchdog Ö§Ô®.
\item {\ttfamily \$Security-Gateway} ¿ØÖÆÊÇ·ñÊ¹ÓÃ °²È«ÈÏÖ¤Õ¢µÀËÅ·þÆ÷
×÷Ê¹ÓÃÕßÉí·ÝÈÏÖ¤. ÎÒÃÇµÄÌØÊâÉí·ÝÈÏÖ¤Õ¢µÀÆ÷±ØÐëÔÚÄ¿±êµçÄÔÉÏÖ´ÐÐ²ÅÐÐ.
Ô¤Éè: {\ttfamily "\$$\{$BOOTP-ËÅ·þÆ÷-IP$\}$@89"}.
(¼´. TFTP ËÅ·þÆ÷, ÔÚ 89 ²º).
\item {\ttfamily \$Security-Check} ÄÚº¬À´×Ô °²È«ÈÏÖ¤ËÅ·þÆ÷
×îááÒ»´Î¼ì²éµÄ½á¹û, ²»ÊÇ PASSED ¾ÍÊÇ FAILED.
Ô¤Éè: "FAILED".
\item {\ttfamily \$Security-Passwd, \$HelpTopic, \$OnExit, \$OnKey-...}.
Ö»ÔÚÄÚ²¿Ê¹ÓÃ.
\end{itemize}


²Î¿¼ BOOTP ±äÊý Óë MrZip-¹æ¡õµÄ±äÊý.



\item[MrZip-¹æ¡õµÄ±äÊý] \mbox{}

ÒÔÏÂÊÇÖ»ÄÜÔÚ MrZip Ê¹ÓÃµÄ±äÊý.
\begin{itemize}
\item {\ttfamily \$TempPath} ¿ØÖÆÔÝ´æµµËù´æ·ÅµÄÄ¿Â¼Î»ÖÃ
Ô¤Éè: $<$empty$>$ == ÏÖÐÐÄ¿Â¼.
\item {\ttfamily \$DumpFormat} µ±ÓÐÕâÖÖ±ØÒªÊ±, ¿ØÖÆµµ°¸ÇêÓ¡µ½¼ÇÂ¼µµµÄ·½Ê½.
ËüÊÇÒ»¸öº¬ÏÂÁÐÄÚÈÝµÄ×Ö´®
\begin{itemize}
\item "h"/"H" ÏÔÊ¾µµÍ·.
\item "b"/"B" ÓÃÒÔ ×Ü½á(summarize)/ÇêÓ¡(dump) ¿ª»ú´ÅÇø.
\item "s"/"S" ÓÃÒÔÏÔÊ¾Ò»¸ö ¶Ì/³¤ µÄ¶ÔÓ¦ÕªÒª.
\item "d"/"D" ÓÃÒÔÏÔÊ¾Ò»¸ö ¶Ì/³¤ µÄÄ¿Â¼ÁÐ±í.
\item "f"/"F" ÓÃÒÔ ×Ü½á(summarize)/ÇêÓ¡(dump) µµ°¸.
\end{itemize}

Ô¤Éè: "hbD".
\item {\ttfamily \$FragmentSize} ¿ØÖÆ·Ö¸îµµ°¸µÄ´óÐ¡.
Èç¹ûÄã²»ÊÇÊ¹ÓÃ Bootix µÄ ÔöÇ¿ÐÍ TFTP ËÅ·þÆ÷, ÄãÓ¦¸ÃÉè¶¨Õâ¸öÎª "30 MB".
Ô¤Éè: "87 MB".
\item {\ttfamily \$SourceArchive, \$DestArchive, \$Filter...}
Ö»ÔÚÄÚ²¿Ê¹ÓÃ.
\end{itemize}




\item[BOOTP ±äÊý] \mbox{}

ÒÔÏÂµÄ BOOTP-... ¼° DHCP-... ±äÊýÔÚ BOOTP/DHCP »ØÓ¦Ê±²Å¾ßÓÐÊµ¼ÊµÄÒâÒå
(Ç°ÌáÊÇ TCP/IP BootPROM ±ØÐèÒÑ±»Õì²âµ½):
\begin{verbatim}
        $BOOTP-Client-ID
        $BOOTP-Your-IP
        $BOOTP-Server-IP
        $BOOTP-Gateway-IP
        $BOOTP-Bootfile
        $BOOTP-Server-Name
        $BOOTP-Subnet-Mask
        $BOOTP-Time-Offset
        $BOOTP-Routers
        $BOOTP-Time-Servers
        $BOOTP-Name-Servers
        $BOOTP-Domain-name-Servers
        $BOOTP-BOOTP-Log-Servers
        $BOOTP-Cookie-Servers
        $BOOTP-Lpr-Servers
        $BOOTP-Impress-Servers
        $BOOTP-Resource-Location-Servers
        $BOOTP-Host-Name
        $BOOTP-Boot-Size
        $BOOTP-Merit-Dump
        $BOOTP-Domain-Name
        $BOOTP-Swap-Servers
        $BOOTP-Root-Path
        $BOOTP-Extensions-Path
        $BOOTP-IP-Forwarding
        $BOOTP-Interface-MTU
        $BOOTP-All-Subnets-Are-Local
        $BOOTP-Broadcast-Address
        $BOOTP-NIS-Domain
        $BOOTP-NIS-Servers
        $BOOTP-NTP-Servers
        $BOOTP-Font-Servers
        $BOOTP-X-Display-Manager
        $DHCP-IP-Address-Lease-Time
        $DHCP-Message-Type
        $DHCP-Server-Identifier
        $DHCP-Message
        $DHCP-Renewal-Time
        $DHCP-Rebinding-Time
        $BOOTP-NIS+-Domain
        $BOOTP-NIS+-Servers
        $BOOTP-Server-Name
        $BOOTP-Bootfile
        $BOOTP-Mobile-IP-Agent
        $BOOTP-SMTP-Servers
        $BOOTP-POP3-Servers
        $BOOTP-NNTP-Servers
        $BOOTP-WWW-Servers
        $BOOTP-Finger-Servers
        $BOOTP-IRC-Servers
        $BOOTP-StreetTalk-Servers
        $BOOTP-STDA-Servers
\end{verbatim}


ÆäËûµÄ BOOTP/DHCP ±äÊý¿ÉÒÔÓÃÒÔÏÂµÄÃû³Æ´¢´æ
\begin{verbatim}
        $BOOTP-Option-n
\end{verbatim}

n ÊÇÊ®½øÖÆÊýÖµ´ú±í BOOTP Ñ¡ÏîºÅÂë.

±ð°Ñ {\ttfamily BOOTP-Gateway-IP} ¸ã»ìÁË, ËüÊÇ TFTP Í¨Ñ¶Ð­¶¨µÄÕ¢µÀÆ÷,
Èç¹ûÓÃ»§¶ËÓë TFTP ËÅ·þÆ÷ÔÚÍ¬Ò»¸ö×ÓÍøÓò, ÔòÓ¦ÉèÎª 0.0.0.0 ,
¶ø {\ttfamily BOOTP-Routers}, ÄÚº¬ Ô¤Éè IP Õ¢µÀÆ÷. TCP/IP BootPROM ÓÐÊ±»áÍ¸¹ý
{\ttfamily BOOTP-Routers} Éè¶¨ {\ttfamily BOOTP-Gateway-IP} µÄÖµ,
ÄËÒòÎªÃ¿¸ö TFTP ack ·â°ü¶¼»áÏÈËÍÍù Â·ÓÉÆ÷. ÎªÁË±ÜÃâÕâÖÖÐÐÎª,
Èç¹ûÄãµÄ TFTP ËÅ·þÆ÷ÓëÓÃ»§¶ËÔÚÍ¬Ò»¸ö×ÓÍøÓò,
ÔòÇ¿ÆÈ°Ñ {\ttfamily BOOTP-Gateway-IP} Éè³É {\ttfamily 0.0.0.0}
(¸ÐÐ» Maciek Uhlig Ö¸³öÕâ¸öÎÊÌâ).

\end{description}





\subsubsection{¼à¿ØÖ¸Áî}

±¾½ÚÁÐ³öÓÃÀ´¼àÊÓÏµÍ³×´Ì¬µÄÖ¸Áî. ¶îÍâµÄ²ÎÊýÒ²½«ÁÐÈë
(ÎÒ±È½ÏÏ²»¶Ê¹ÓÃ ·½À¨ À´×¢Ã÷, µ« LaTex ²»Ï²»¶ÔÚÕâ¿´µ½ËûÃÇ...)
\begin{description}
\item[Interact] \mbox{}

ÏÔÊ¾¼ÇÂ¼×ÊÁÏ²¢½øÈë½»Ì¸Ä£Ê½Ö±µ½ QUIT »ò EXIT ÊäÈë.
ÔÚÀë¿ª½»Ì¸Ä£Ê½Ö®Ç°ÏÈÊäÈëHideLog, ÒÔ·ÀÖ¹¼ÇÂ¼µÄÑ¶Ï¢¸ÉÈÅÅú´ÎµµµÄÖ´ÐÐ.



\item[Help (Ö÷Ìâ)] \mbox{}

ÔØÈëÏßÉÏËµÃ÷µµ ({\ttfamily bpbatch.hlp}) ²¢ÏÔÊ¾Ëù¸ø¶¨Ö÷ÌâµÄÄÚÈÝ.
Èç¹ûÃ»Éè¶¨Ö÷Ìâ, »ò¸ø¶¨µÄÖ÷ÌâÕÒ²»µ½, ÏÔÊ¾ËµÃ÷Ë÷Òý.



\item[Log "×Ö´®"] \mbox{}

ÏÔÊ¾×Ö´®µ½¼ÇÂ¼µµ. ²»¼ÓÈë ÓÎ±ê ·µ»Ø/»»ÐÐ ×ÖÔª.



\item[Echo "×Ö´®"] \mbox{}

ÏÔÊ¾×Ö´®µ½¼ÇÂ¼µµ²¢ÌøÖÁÏÂÒ»ÐÐ.
ÏàÍ¬ì¶
\begin{verbatim}
        Log "text\r\n".
\end{verbatim}




\item[LogVars ("pattern")] \mbox{}

¼ÇÂ¼ (¼´. ÏÔÊ¾µ½¼ÇÂ¼µµÖÐ) ËùÓÐºÏì¶Ëù¸ø¶¨ÑùÊ½µÄ±äÊý.
ÑùÊ½¿ÉÒÔÊ¹ÓÃÍòÓÃ×ÖÔª (? ¼° *).
\begin{verbatim}
¡õÀý: LogVars "BOOTP-*"              ÁÐ³öËùÓÐ BootP ±äÊý
\end{verbatim}


\item[LogDir "path/pattern"] \mbox{}

¼ÇÂ¼ (¼´. ÏÔÊ¾µ½¼ÇÂ¼µµÖÐ) ËùÓÐºÏì¶Ëù¸ø¶¨ÑùÊ½µÄµµ°¸.
ÑùÊ½¿ÉÒÔÊ¹ÓÃÍòÓÃ×ÖÔª (? ¼° *).
\begin{verbatim}
¡õÀý: LogDir "/usr/g*p"              ÁÐ³öËùÓÐµµÃûÎª g...p µÄµµ°¸
\end{verbatim}


\item[LogTree "Â·¾¶"] \mbox{}

¼ÇÂ¼ÒÔ¸ø¶¨Â·¾¶Îª¸ùÄ¿Â¼µÄÊ÷×´Ä¿Â¼½á¹¹.



\item[LogFile "µµ°¸Ãû"] \mbox{}

¼ÇÂ¼µµ°¸µÄÄÚÈÝ. µµ°¸´óÐ¡±ØÐèÐ¡ì¶ 64 KB.



\item[ShowLog] \mbox{}

Ê¹Òþ²ØµÄ¼ÇÂ¼µµÏÔÊ¾. ÔÚ "\$AutoShowLog" == "ON" ²¢°´×¡ ESC ×´¿ö,
»ò½»Ì¸Ä£Ê½ÏÂ, »á×Ô¶¯Æô¶¯.



\item[HideLog] \mbox{}

·ÀÖ¹¼ÇÂ¼µÄÑ¶Ï¢³öÏÖÔÚÓ©Ä»ÉÏ. µ± BpBatch, MrBatch ¼° MrZip
ÒÔÖ´ÐÐ½Å±¾³ÌÐòµµÊ±ÎªÔ¤Éè×´Ì¬.



\item[CaptureLog] \mbox{}

Â¼ÏÂËùÓÐµÄ¼ÇÂ¼Ñ¶Ï¢µ½ 64 KB µÄÔÝ´æÇøÖ±µ½ EndCapture ³öÏÖ.
¼ÇÂ¼Êä³ö³¬¹ý 64KB »áÇå³ýÔÝ´æÇø×ÊÁÏ. Õâ¸öÖ¸ÁîÓÃÀ´²úÉúÖÆÊ½ÄÚÈÝµÄÎÄ×Öµµ.
EndCapture Ö¸Áî±ØÐëÔÚÍ¬Ò»¸ö½Å±¾µµ°¸ÖÐ³öÏÖ.



\item[EndCapture ("µµÃû")] \mbox{}

½áÊø½ØÈ¡¼ÇÂ¼Ñ¶Ï¢. Èç¹ûÓÐ¸ø¶¨µµÃû, »á°Ñ½ØÈ¡µ½µÄÎÄ×Ö´æµ½¸Ãµµ.
·ñÔò, »áºöÂÔµôËü.



\item[Beep] \mbox{}

·¢³öÒ»¸öÉùÒô. Õâ¸öÖ¸ÁîÊÇÍ¬ì¶ Echo "$\backslash$007".

\end{description}





\subsubsection{¿ØÖÆÖ¸Áî}

±¾½ÚÁÐ³öÅú´ÎÖ´ÐÐµÄ¿ØÖÆÖ¸Áî. ¶îÍâµÄ²ÎÊýÒ²½«ÁÐÈë.
\begin{description}
\item[Include "filename"] \mbox{}

ÔØÈëËù¸ø¶¨µÄµµ°¸²¢¶ÔËü×öÓï·¨·ÖÎö. ÔÚ´ËÒýÈëµÄµµ°¸Ö´ÐÐ½áÊøáá·µ»Ø´ËÔØÈëµã.
ÔÚ´ËÒýÈëµµÖÐ, ASCII 127 ÒÔÉÏµÄ×ÖÔªµÄÒâÒå,
ÓÉÔØÈë´ËµµÊ± \$IsoLatin µÄÖµÀ´¾ö¶¨.



\item[OnExit {\itshape command\/}] \mbox{}

Éè¶¨Ò»¸öÍâ²¿´¦ÀíÆ÷. Ëü»áÔÚÏÖÐÐÅú´ÎµµÖÕÁËÊ±×Ô¶¯Ö´ÐÐ.



\item[Goto {\itshape label\/}] \mbox{}

ÒÆµ½ËùÖ¸µÄ±êÇ© (label) Ö´ÐÐ (¼´. ÒÔ :{\itshape label\/} ÎªÆðÊ¼µÄÐÐ)



\item[Eval "Ö¸Áî"] \mbox{}

Ö´ÐÐ "Ö¸Áî" ËùÖ¸µÄÌæ´úÃüÁî²¢¶ÔÆä×öÓï·¨·ÖÎö.

\item[If ...] \mbox{}

\begin{verbatim}
  If (not) <expr1> (==|!=|<|>|>=|<=|=>|=<|<>) <expr2> <command>
  If (not) (ci) "str1" (==|!=|<|>|>=|<=|=>|=<|<>) "str2" <command>
  If (not) (ci) "str1" Match-Expr "ÑùÊ½" <command>
  If (not) (ci) "str1" Match-Passwd "unix ÃÜÂë" <command>
  If (not) (ci) "str1" in "wordlist" <command>
  If (not) (ci) "str1" in-file "µµÃû" <command>
  If (not) exist "µµÃû" <command>
  If (not) valid <Ó²µú»ú>:<·Ö¸îÇø> <command>
\end{verbatim}


Èç¹ûÌõ¼þ²âÊÔ³ÉÁ¢; ÕâÐ©Ö¸ÁîÓÃÀ´Ö´ÐÐÖ¸Áî {\itshape command;\/} .
µÚÒ»ÖÖ¸ñÊ½ÓÃÀ´±È½ÏÁ½¸öÒÔÊý×ÖÀ´±íÊ¾µÄÔËËãÊ½.
µÚ¶þÖÖ¸ñÊ½ÓÃÀ´±È½ÏÁ½¸ö×Ö´®, ¿ÉÑ¡Ôñ²»Çø·Ö´óÐ¡Ð´.
µÚÈýÖÖ¸ñÊ½ÓÃÀ´²âÊÔ "str1" ÊÇ·ñºÏì¶ÑùÊ½ (ÔÊÐíÊ¹ÓÃÍòÓÃ×ÖÔª).
µÚËÄÖÖ¸ñÊ½ÓÃÀ´²âÊÔÃ÷Âë "str1" ÊÇ·ñ¾­ Unix µÄ±àÂëÏµÍ³áá½á¹û,ÄÜÎÇºÏ.
µÚÎåÖÖ¸ñÊ½ÓÃÀ´²âÊÔ "str1" ÊÇ·ñ±»ÒýÈëÔÚÎÄ×ÖÁÐ±íÖÐ.
µÚÁùÖÖ¸ñÊ½ÓÃÀ´²âÊÔ "str1" ÊÇ·ñ±»ÒýÈëÔÚÎÄ×Öµµ°¸ÖÐ.
µÚÆßÖÖ¸ñÊ½ÓÃÀ´²âÊÔËù¸ø¶¨µÄµµ°¸ÊÇ·ñ´æÔÚ.
µÚ°ËÖÖ¸ñÊ½ÓÃÀ´²âÊÔËù¸ø¶¨µÄ·Ö¸îÇøÊÇ·ñÓÐÐ§ (¼´. ÊÇ·ñÒÑ¸ñÊ½»¯¹ý).
Õâ¸ö¸ñÊ½Ö»ÔÚ BpBatch 1999Äê ¶þÔÂááµÄ°æ±¾²ÅÓÐ.



\item[Set ...] \mbox{}

\begin{verbatim}
  Set variable = "string-value"
  Set variable = <expr>
\end{verbatim}


Éè¶¨±äÊýÖµ. Èç¹û¸ø¶¨µÄÊÇÊýÖµÔËËãÊ½, Ëü½«¼ä½Ó×ª»¯Îª×Ö´®ÐÎÊ½.
Ëù¶¨ÒåµÄ±äÊý¿ÉÒÔÔÚÈÎºÎµØ·½ÒÔ \$variable »ò \$$\{$variable$\}$
µÄÐÎÊ½À´²Î¿¼Ê¹ÓÃ.
Èç¹û²Î¿¼µÄ½á¹ûÒªµ±³É×Ö´®, Ôò±ØÐëÓÃË«ÒýºÅ°Ñ±äÊýÀ¨ÆðÀ´: "\$variable"
»ò "\$$\{$variable$\}$".



\item[Delay {\itshape ÖÜÆÚÊ±¼ä\/}] \mbox{}

µÈ´ýÖ±µ½ËùÖ¸¶¨µÄÊ±¼äºÄ¾¡ (ÒÔÃëÎªµ¥Î»).
²Î¿¼Ê±¼ä±íÊ¾¸ñÊ½ÄÇÒ»ÕÂ½Ú.



\item[GetTime {\itshape ±äÊý\/}, GetDate {\itshape ±äÊý\/}] \mbox{}

È¡µÃ CMOS µÄÊ±¼ä×ÊÑ¶²¢°ÑËü´æµ½ {\itshape ±äÊý\/} ÖÐ, ¸ñÊ½Îª HH:MM:SS.
È¡µÃ CMOS µÄÈÕÆÚ×ÊÑ¶²¢°ÑËü´æµ½ {\itshape ±äÊý\/} ÖÐ, ¸ñÊ½Îª YY/MM/DD.
ÕâÑù¾Í¿ÉÒÔÒÀÊ±¼ä»òÈÕÆÚÀ´µ÷ÕûÄãµÄ¿ª»ú³ÌÐòÄÚÈÝ.



\item[SetTime "HH:MM:SS", SetDate "YY/MM/DD"] \mbox{}

Éè¶¨ÓÃ»§¶ËµçÄÔµÄ CMOS Ê±¼ä»òÈÕÆÚÎªËù¸ø¶¨µÄÖµ.
Èç¹ûÄãÓÐÒ»Ì¨°²È«ÈÏÖ¤Õ¢µÀÆ÷ (security gateway) (»òÎÒÃÇµÄÌØÊâÐÍ TFTP ËÅ·þÆ÷),
Äã¿ÉÒÔÍ¸¹ýÏÂÁÐÖ¸ÁîÔÚÃ¿´Î¿ª»úÊ±, ×Ô¶¯µ÷Õû CMOS Ê±¼äÓëÈÕÆÚ×ÊÑ¶:
\begin{verbatim}
        include "$Security-Gateway:gettime"
\end{verbatim}

Èç¹ûÄãÏëÖªµÀÕâ¸öÖ¸Áî»á×öÄÄÐ©ÊÂ, Ö»ÐèÊäÈë:
\begin{verbatim}
        logfile "$Security-Gateway:gettime"
\end{verbatim}




\item[Poweroff] \mbox{}

¹ØµôµçÄÔµçÔ´. Õâ¸öÖ¸ÁîÖ»ÄÜÔÚ¾ß Advanced Power Management (APM) ÏàÈÝµÄµçÄÔÉÏÊ¹ÓÃ.

\end{description}





\subsubsection{Óë¼üÅÌÏà¹ØµÄÖ¸Áî}

±¾½ÚÁÐ³öÒ»Ð©Ö¸ÁîÈÃÄã¿ÉÒÔ¼à¿Ø¼üÅÌµÄÊäÈë. ¶îÍâµÄ²ÎÊýÒ²½«ÁÐÈë.
Òà¿É²Î¿¼ááÃæÌáµ½µÄ {\itshape ¹ú¼Ê»¯ÓïÏµÖ§Ô®\/} Ò»½Ú.
\begin{description}
\item[GetKey ({\itshape ±äÊý\/})] \mbox{}

Ò»Ö±µÈµ½¼üÅÌ°´ÏÂÄ³¼ü²¢°ÑËü´æµ½ {\itshape ±äÊý\/} ÖÐ.



\item[WaitForKey {\itshape ÖÜÆÚÊ±¼ä\/} ({\itshape Ö¸Áî\/})] \mbox{}

ì¶ËùÖ¸¶¨µÄ {\itshape ÖÜÆÚÊ±¼ä\/} ÄÚµÈ´ý¼üÅÌ°´ÏÂÄ³¼üµ¥Î»ÎªÃë.
Èç¹ûÊ±¼äÄÚÃ»°´ÏÂÈÎºÎ¼ü, ÔòÖ´ÐÐ {\itshape Ö¸Áî\/}. ·ñÔò, ±£Áô¼üÖµÔÚ¼üÅÌÔÝ´æÇøÖÐ.
Òà¿É²Î¿¼Ê±¼ä¸ñÊ½ÄÇÒ»¶Î.



\item[Input ({\itshape ±äÊý\/} ({\itshape ×î´ó×Ö´®³¤¶È\/}))] \mbox{}

×Ô¼üÅÌ¶ÁÈ¡Ò»¸öÒÔ return Îª½áÎ²µÄ×Ö´®, ²¢°ÑËü´æÔÚ {\itshape ±äÊý\/}
(²»»á°Ñ return ´æ½ø×Ö´®). Èç¹ûÓÐ¸ø¶¨ {\itshape ×î´ó×Ö´®³¤¶È\/} ,
Ôò²»ÔÊÐíÊ¹ÓÃÕßÊäÈë×ÖÔª³¬¹ýÕâ¸ö³¤¶È.

Òà¿É²Î¿¼ {\itshape Óë°²È«ÐÔÓÐ¹ØµÄÖ¸Áî\/} Ò»½ÚÖÐ, µÄ {\ttfamily GetPasswd} Ö¸Áî.



\item[OnKey "c" {\itshape Ö¸Áî\/}] \mbox{}

Éè¶¨ µ± "c" Ä³¸öµ¥Ò»×ÖÔª±»°´ÏÂÊ±, »á×Ô¶¯È¥Ö´ÐÐËù¸ø¶¨µÄ {\itshape Ö¸Áî\/}
(ÀýÍâÇé¿öÎª ÕýÊ¹ÓÃµ½ GetChar »ò Ä³¸ö Input Ö¸Áî, ¶øÏµÍ³´¦ì¶µÈ´ýÊäÈëµÄ×´Ì¬).
Èç¹ûÓÃ {\ttfamily "default"} ×Ö´®À´È¡´úµ¥Ò»×ÖÔª "c", ÔòÖ¸Áî»áÔÚ°´ÏÂÈÎÒâ¼üáá¾ÍÖ´ÐÐ.

\end{description}





\subsubsection{ÎÄ×ÖÊä³öÖ¸Áî}

±¾½ÚÁÐ³öÓÃÀ´Êä³ö¸ñÊ½»¯ÎÄ×ÖµÄÖ¸Áî. ËùÓÐÌáµ½µÄÖ¸Áî¶¼¿ÉÒÔÔÚÍ¼ÐÎÄ£Ê½ÏÂÊ¹ÓÃ,
¿ÉÒÔµÃµ½ÏàÍ¬µÄ¹¦ÄÜ (ÔÚÎÄ×Ö»·¾³ÏÂ¿ÉÒÔÌá¹© 80x25 ×ÖÔªÄ£Ê½,
¶øÍ¼ÐÎ»¯»·¾³Ôò¿ÉÌâ¹© 100x37 ×ÖÔªÄ£Ê½, ÒòÎªÍ¼ÐÎ»¯»·¾³Ã¿¸ö×ÖÔª´óÐ¡ÊÇ 8x16).
¶îÍâµÄ²ÎÊýÒ²½«ÁÐÈë. Òà¿É²Î¿¼ÏÂÎÄµÄ {\itshape ¹ú¼Ê»¯ÓïÏµÖ§Ô®\/}.
\begin{description}
\item[Print {\itshape "×Ö´®"/ÔËËãÊ½\/}] \mbox{}

ÔÚÄ¿Ç°ÓÎ±êËùÖ¸µÄÎ»ÖÃÓ¡³ö×Ö´®/ÔËËãÊ½, ²¢²ÉÓÃÄ¿Ç°µÄÎÄ×ÖÊôÐÔ²¢ÒÆ¶¯ÓÎ±ê.
¼ÓÈëµ½×Ö´®ÖÐ "$\backslash$r$\backslash$n" ÒÔ»»ÐÐ.



\item[TextAttr {\itshape Ç°¾°ÑÕÉ«\/} {\itshape ±³¾°ÑÕÉ«\/}] \mbox{}

Éè¶¨ÎÄ×ÖÊôÐÔ. Ò²¿ÉÒÔÓÃÒ»¸öÊýÖµÀ´Éè¶¨ÑÕÉ«·½·¨ÊÇ
16*{\itshape ±³¾°ÑÕÉ«\/}+{\itshape Ç°¾°ÑÕÉ«\/}.

Èç¹ûÄã»¹Ïë¸üìÅ, ¿ÉÒÔÓÃ {\ttfamily LoadFont} Ö¸Áî. ²Î¿¼ÏÂÎÄµÄ {\itshape ¹ú¼Ê»¯ÓïÏµÖ§Ô®\/}.



\item[At {\itshape line\/},{\itshape col\/} ({\itshape command\/})] \mbox{}

ÒÆ¶¯ÓÎ±êÎ»ÖÃµ½ËùÖ¸¶¨µÄÎ»ÖÃ²¢Ö´ÐÐÃüÁî. Èç¹ûÓÐÉè¶¨µÄ»°.
\begin{verbatim}
¡õÀý¡õÀý: At 10,20 Print "Gnats and rats !"
\end{verbatim}


\item[Clear ({\itshape ÑÕÉ«\/} ({\itshape ÎÄ×ÖÑùÊ½\/} ({\itshape ¶¥²¿\/},{\itshape ×óÏÞ\/},{\itshape µ×²¿\/},{\itshape ÓÒÏÞ\/})))] \mbox{}

ÒÔËù¸ø¶¨µÄ {\itshape ÎÄ×ÖÑù±¾\/} ÌîÂúËù¶¨ÒåµÄÎÄ×ÖÇøÓò
(¿ÉÒÔÊÇ×Ö´®»òÊ®½øÖÆµÄ ascii Âë). Ô¤ÉèµÄÎÄ×ÖÇøÓòÎªÈ«Ó©Ä»,
¶øÎÄ×ÖÑùÊ½Îª È«ºÚ (ASCII Ê®½øÖµ 219) ÇÒÑÕÉ«ÊÇºÚÉ« (Çå³ýÓ©Ä»).
ÒÆµ½ÓÎ±êµ½ËùÇå³ýÇøÓòµÄ×óÉÏ½Ç.

\item[Óë¾É°æµÄ BpMenu ÏàÈÝµÄÖ¸Áî] \mbox{}

\begin{verbatim}
  .ATT (<ÊôÐÔ>)
  .CLS (<ÊôÐÔ>)
  .DEF <¼üÖµ> (<µÈ´ýÊ±¼ä>)
  .KEY <¼üÖµ> <µµÃû>
  .POS ((< x ÖáÎ»ÖÃ >) < y ÖáÎ»ÖÃ >)
  .PWD <¼üÖµ> <±àÂë¹ýµÄÃÜÂë>
  .WLN (<×Ö´®>)
  .WRT <×Ö´®>
\end{verbatim}


²Î¿¼ Bootix µÄÊ¹ÓÃÊÖ²á¿ÉÒÔ»ñµÃ¸ü¶àÑ¶Ï¢.
ÎÒÃÇÏÈÇ°Ð´ÁËÒ»¸ö³ÌÊ½ {\ttfamily \onlynameurl{program}}
ÓÃÀ´±à¼­Ñ¡µ¥µµ°¸. ¾ÍÊÇÓÃÕâ¸öÓï·¨, µ«Ê¹ÓÃÐÂµÄÓï·¨À´½¨Á¢Ñ¡µ¥ÊÇ±È½ÏºÃ.
Ðè×¢Òâ .PWD Ö¸Áî²¢Ã»±»Êµ×÷³öÀ´. ÒòÎªÎÒÃÇ¸ù±¾²»ÖªµÀ Bootix µÄ±àÂë·¨Ôò.

\end{description}





\subsubsection{Í¼ÐÎÊä³öÏÔÊ¾Ö¸Áî}

±¾½Ú½«ÁÐ³öÔÚÍ¼ÐÎÄ£Ê½ÏÂ, ÈçºÎÊä³öÍ¼ÐÎµ½Ó©Ä»ÉÏ.
ÕâÕÂ½ÚÖÐËùÁÐ³öµÄ¹¦ÄÜÓëËù¸ø¶¨µÄÏñËØÏà¹Ø. µ±È»ÄãÒ²¿ÉÒÔÔÚÍ¼ÐÎÄ£Ê½ÏÂ,
Ê¹ÓÃËùÓÐÎÄ×ÖÊä³öµÄÖ¸Áî (²Î¿¼Ç°ÎÄ). ¶îÍâµÄ²ÎÊýÒ²½«ÁÐÈë.

Ðè×¢ÒâÍ¼ÐÎÄ£Ê½»áÔÚÊ¹ÓÃµ½ÓëÍ¼ÐÎÏà¹ØµÄÖ¸ÁîÊ±×Ô¶¯ÆôÓÃ,
³ý·ÇÉè¶¨ {\ttfamily VESA} ±äÊýÎª {\ttfamily "OFF"}.
\begin{description}
\item[InitGraph ("Ä£Ê½")] \mbox{}

ÆôÓÃ VESA Í¼ÐÎÄ£Ê½. Ô­µãÔÚÓ©Ä»×óÉÏ½Ç (0 0).
ÔÚ Windows 95/98 ÏÂÊ¹ÓÃ VESA Ä£Ê½¿ÉÄÜ»áµ±»ú. ÔÚÊ¹ÓÃ MrBatch Ê±,
¼ÓÉÏ -v Ñ¡ÏîÒÔ±ÜÃâ·¢ÉúÕâ¸öÎÊÌâ.

Äã¿ÉÒÔÒªÇóÊ¹ÓÃÄ³¸öÌØ¶¨µÄÏÔÊ¾Ä£Ê½, Èç¹ûÓÐ¸ø¶¨ "Ä£Ê½" ÕâÏî²ÎÊý.
Õâ¸ö²ÎÊýÊÇ¸½¼ÓµÄ: Èç¹ûÄãÃ»×öÈÎºÎ¶¨Òå,
Ôò»á´ÓÑ¡ÓÃ VESA-Modes ±äÊýÖÐµÚÒ»ÐÐµÄÏÔÊ¾Ä£Ê½.

¿ÉÓÃµÄÄ£Ê½ÓÐ :
\begin{itemize}
\item 640x480    ={$>$}  640 ³Ë 480 ÏàËØ, 256 É«.
\item 800x600    ={$>$}  800 ³Ë 600 ÏàËØ, 256 É« (Ô¤ÉèÄ£Ê½).
\item 1024x768   ={$>$}  1024 ³Ë 768 ÏàËØ, 256 É«.
\item 1280x1024  ={$>$}  1280 ³Ë 1024 ÏàËØ, 256 É«.
\end{itemize}


VESA-Modes ±äÊýÁÐ³öÄãµÄÓ²ÌåÉè±¸ÄÜÖ§Ô®µÄÄ£Ê½.

¡õÀý: {\ttfamily InitGraph "640x480"}



\item[CloseGraph] \mbox{}

¹Øµô VESA Í¼ÐÎÄ£Ê½·µ»ØÎÄ×ÖÄ£Ê½.



\item[DrawBar {\itshape  x-ÖáÎ»ÖÃ \/} {\itshape  y-ÖáÎ»ÖÃ \/} {\itshape ¿í¶È\/} {\itshape ¸ß¶È\/} {\itshape ÑÕÉ«\/}] \mbox{}

VESA »æÍ¼¹¦ÄÜ. ÒÔ¸ø¶¨µÄ´óÐ¡ÓëÑÕÉ«»­³öÒ»¸öÊµÐÄ³¤ÌõÍ¼.



\item[DrawWindow {\itshape  x-ÖáÎ»ÖÃ \/} {\itshape  y-ÖáÎ»ÖÃ \/} {\itshape ¿í¶È\/} {\itshape ¸ß¶È\/} ({\itshape ±³¾°ÑÕÉ«\/} ({\itshape ³¤ÌõÍ¼ÑÕÉ«\/})) ("Ö÷ÌâÎÄ×Ö" ({\itshape Ö÷ÌâÎÄ×ÖÑÕÉ«\/}))] \mbox{}

VESA »æÍ¼¹¦ÄÜ. ÒÔ¸ø¶¨µÄ´óÐ¡ÓëÑÕÉ«»­³öÒ»¸öÊÓ´°.
Ô¤ÉèµÄ±³¾°ÑÕÉ«ÊÇ µ­»ÒÉ« (LightGray) ¶ø Ö÷Ìâ²¿·ÖÊÇÀ¶É« (Blue).
Èç¹ûÄãÒýÈëÒ»¸öÖ÷Ìâ×Ö´®¼°ÑÕÉ«, ÔòÎÄ×Ö»áÏÔÊ¾ÔÚ Ö÷ÌâÄÇ²¿·Ý.



\item[Drawtext {\itshape  x-ÖáÎ»ÖÃ \/} {\itshape  y-ÖáÎ»ÖÃ \/} "×Ö´®ÎÄ×Ö" ({\itshape Ç°¾°ÑÕÉ«\/})] \mbox{}

VESA »æÍ¼¹¦ÄÜ. ÔÚ¸ø¶¨Î»ÖÃÏÔÊ¾×Ö´®ÎÄ×Ö²¢²ÉÓÃÍ¸±»Ã÷±³¾°. Ô¤ÉèÎªÇ°¾°ÎÄ×ÖµÄÑÕÉ«.



\item[DrawPcx "pcx-Í¼µµÃû" ({\itshape  x-ÖáÎ»ÖÃ \/} {\itshape  y-ÖáÎ»ÖÃ \/} ({\itshape ÑÕÉ«ÓÃ·¨\/}))] \mbox{}

VESA »æÍ¼¹¦ÄÜ. ÔØÈëËù¸ø¶¨µÄ 256-É« PCX Í¼µµ²¢ÏÔÊ¾µ½Ó©Ä»ÉÏ.
Ô¤ÉèµÄÏÔÊ¾Î»ÖÃÔÚÓ©Ä»×óÉÏ½ÇµÄ (0 0).

{\itshape ÑÕÉ«ÓÃ·¨\/} ¶¨Òåµ±Ê¹ÓÃ³¬¹ý 256 ÖÖÑÕÉ«Ê±, Ëù¶ÔÓ¦µÄµ÷É«ÅÌ
(±ÈÈçÒªÍ¬Ê±ÏÔÊÓÁ½¸ö 256 É«µÄÍ¼µµ):
\begin{itemize}
\item {\ttfamily Best-Colors} ¶Ô×îááÔØÈëµÄÍ¼µµÏÔÊ¾×î¼ÑÑÕÉ«
\item {\ttfamily Spare-Colors} ÊÔÖø±ÜÃâÑÕÉ«¶ÔÓ¦, Ö»¸Ä±äÏÖÔÚÊ¹ÓÃµÄÑÕÉ«
\item {\ttfamily Share-Colors} ÊÔÖø±ÜÃâÑÕÉ«¶ÔÓ¦, ÑÓÓÃÏÖÔÚÊ¹ÓÃµÄÑÕÉ«
\item {\ttfamily Reuse-Colors} ²»¶ÔÓ¦ÐÂµÄÑÕÉ«, Ö»Ê¹ÓÃÏÖÔÚ¿ÉÓÃµÄÑÕÉ«
\end{itemize}

Ô¤ÉèÊÇÊ¹ÓÃ {\ttfamily Best-Colors}.



\item[DrawGif "gif-Í¼µµÃû" ({\itshape  x-ÖáÎ»ÖÃ \/} {\itshape  y-ÖáÎ»ÖÃ \/} ({\itshape ÑÕÉ«ÓÃ·¨\/}))] \mbox{}

VESA »æÍ¼¹¦ÄÜ. ÔØÈëËù¸ø¶¨µÄ 256-É« GIF-87a Í¼µµ²¢ÏÔÊ¾µ½Ó©Ä»ÉÏ.
Õâ¸öµµ°¸¿ÉÒÔÊÇ½»´íµÄ, µ«±ØÐèÊÇ GIF-87a ¸ñÊ½ (·Ç GIF-89a).
Í¼µµµÄ´óÐ¡»áÐÞÕýµ½ºÏì¶Ä¿Ç°ËùÊ¹ÓÃµÄÏÔÊ¾Ä£Ê½.
µ«Äã²»ÄÜÔØÈëÒ»¸ö 1024x768 GIF Í¼µµµ½ 640x480 Í¼ÐÎÄ£Ê½ÏÂ.
Ô¤ÉèµÄÏÔÊ¾Î»ÖÃÔÚÓ©Ä»×óÉÏ½ÇµÄ (0 0).

ÒòÎª LZW ×¨ÀûÎÊÌâ, ÕâÏî¹¦ÄÜÔÚÉÌÒµ°æµÄ BpBatch/MrBatch ²»Ìá¹©.
Çë¸ÄÓÃ DRawPcx Ö¸Áî.

{\itshape ÑÕÉ«ÓÃ·¨\/} ¶¨Òåµ±Ê¹ÓÃ³¬¹ý 256 ÖÖÑÕÉ«Ê±,
Ëù¶ÔÓ¦µÄµ÷É«ÅÌ (±ÈÈçÒªÍ¬Ê±ÏÔÊÓÁ½¸ö 256 É«µÄÍ¼µµ):
\begin{itemize}
\item {\ttfamily Best-Colors} ¶Ô×îááÔØÈëµÄÍ¼µµÏÔÊ¾×î¼ÑÑÕÉ«
\item {\ttfamily Spare-Colors} ÊÔÖø±ÜÃâÑÕÉ«¶ÔÓ¦, Ö»¸Ä±äÏÖÔÚÊ¹ÓÃµÄÑÕÉ«
\item {\ttfamily Share-Colors} ÊÔÖø±ÜÃâÑÕÉ«¶ÔÓ¦, ÑÓÓÃÏÖÔÚÊ¹ÓÃµÄÑÕÉ«
\item {\ttfamily Reuse-Colors} ²»¶ÔÓ¦ÐÂµÄÑÕÉ«, Ö»Ê¹ÓÃÏÖÔÚ¿ÉÓÃµÄÑÕÉ«
\end{itemize}

Ô¤ÉèÊÇÊ¹ÓÃ {\ttfamily Best-Colors}.

\end{description}





\subsubsection{Óë°²È«ÐÔÓÐ¹ØµÄÖ¸Áî}

±¾½Ú½«ÁÐ³öÓÃÀ´ÈÏÖ¤Ê¹ÓÃÕßÉí·ÝµÄÖ¸Áî. ¶îÍâµÄ²ÎÊý½«ÁÐÔÚ¶ÎÂä¼ä.

²¿·ÝµÄ¹¦ÄÜ¿ÉÓë {\itshape °²È«ÐÔÕ¢µÀÆ÷ (security gateway)\/} Ò»²¢Ê¹ÓÃ,
ËùÒÔÄã±ØÐëÏÈ°²×°Ëü. ²Î¿¼ {\itshape ÌØÊâ TFTP ËÅ·þÆ÷\/} Ò»½ÚÒÔ»ñµÃ¸ü¶à×ÊÑ¶.
\begin{description}
\item[GetPasswd ({\itshape ±äÊý\/} ({\itshape ÃÜÂë×î´ó³¤¶È\/}))] \mbox{}

¾Í¸ú Input Ö¸ÁîÒ» Ñù, µ«»áÔÚÊäÈë×ÖÔªÊ±¸ÄÏÔÊ¾ÐÇºÅ.



\item[Crypt "×Ö´®" "salt" {\itshape ±äÊý\/}] \mbox{}

ÒÔ Unix ±àÂë¹¦ÄÜ¶ÔËù¸ø¶¨µÄ 8 ¸ö×ÖÔª¼ÓÃÜ, ²¢°Ñ¼ÓÃÜáá½á¹ûÒÔ×Ö´®ÐÎÊ½´æµ½
{\itshape ±äÊý\/}. ¶ø "salt" Í¨³£ÊÇÁ½¸ö¿ÉÒÔÔÚ¼ÓÃÜáá×Ö´®ÖÐÕÒµ½µÄÇ°Á½¸ö×Ö.

Òª×¢Òâ Unix ±àÂëÏµÍ³ÊÇµ¥ÏòµÄ. ÎÞ·¨¶ÔÒÑ±àÂë¹ýµÄ×Ö´®½âÂë»¹Ô­. Ö»ÄÜÊÔÖøÓÃÏàÍ¬µÄ salt ±È½ÏÆä±àÂë¹ýµÄ×Ö´®ÊÇ·ñÒ»ÖÂ.

Õâ¸ö¹¦ÄÜÊÇÓÃ BSD Êµ×÷µÄ DES ±àÂëÏµÍ³. ÕâÊÇ BSD °æ±¾µÄ±êÍ·:
{\ttfamily Copyright (c) 1989 The Regents of the University of California.
This product includes software developed by the University of
California, Berkeley and its contributors.}



\item[DESCrypt "×Ö´®" "¼üÖµ" {\itshape ±äÊý\/}] \mbox{}

¶Ô¸ø¶¨µÄ×Ö´®¼ÓÃÜÓÃ¸ø¶¨µÄ 8 ¸ö×ÖÔª ¼üÖ²À´±àÂë²¢ÒÔÊ®Áù½øÖÆ¸ñÊ½µÄ×Ö´®´æÈë
{\itshape ±äÊý\/}.

Õâ¸ö¹¦ÄÜÊÇÓÃ BSD Êµ×÷µÄ DES ±àÂëÏµÍ³. ÕâÊÇ BSD °æ±¾µÄ±êÍ·:
{\ttfamily Copyright (c) 1989 The Regents of the University of California.
This product includes software developed by the University of
California, Berkeley and its contributors.}



\item[DESDecrypt "hexcode" "key" {\itshape ±äÊý\/}] \mbox{}

ÓÃ¸ø¶¨µÄ 8 ¸ö×ÖÔªÀ´¶ÔÊ®Áù½øÖÆ×Ö´®½âÃÜ²¢°Ñ½á¹û´æµ½ {\itshape ±äÊý\/}.

Õâ¸ö¹¦ÄÜÊÇÓÃ BSD Êµ×÷µÄ DES ±àÂëÏµÍ³. ÕâÊÇ BSD °æ±¾µÄ±êÍ·:
{\ttfamily Copyright (c) 1989 The Regents of the University of California.
This product includes software developed by the University of
California, Berkeley and its contributors.}



\item[MD5 "×Ö´®" {\itshape ±äÊý\/}] \mbox{}

ÓÃ MD5 ¶Ô¸ø¶¨×Ö´®±àÂëááµÄ¼ì²éÖµÒÔÊ®Áù½øÖÆµÄ×Ö´®¸ñÊ½´æµ½ {\itshape ±äÊý\/}.
¶Ôì¶ÃÜÂë´óì¶ 8 ¸ö×ÖÔªµÄ, ¿É²ÉÓÃµÄ Unix ±àÂë¹¦ÄÜ.

Õâ¸ö¹¦ÄÜÊÇ MD5 ±ê×¼µÄÊµ×÷. ÕâÊÇËüµÄ°æÈ¨Ò³±êÍ·:
{\ttfamily RSA Data Security, Inc. MD5 Message-Digest Algorithm}



\item[CheckUser "Ê¹ÓÃÕßÃû³Æ" "ÃÜÂë" "ÁìÓò"] \mbox{}

Á¬½Óµ½ \$Security-Gateway ²¢¼ì²éËù¸ø¶¨µÄÊ¹ÓÃÕßÊÇ·ñ´æÔÚËù¸ø¶¨µÄ
radius ÁìÓò²¢¼ì²éÃÜÂëÊÇ·ñÎÇºÏ. Èç¹ûÁìÓòÊÇ {\ttfamily "Unix"},
ÔòÊ¹ÓÃì¶ °²È«ÈÏÖ¤Õ¢µÀÆ÷ÉÏ, Unix µÄ Ê¹ÓÃÕß/ÃÜÂë. ÈôÔÚÆäËûÁìÓò,
Ê¹ÓÃ°²È«ÈÏÖ¤Õ¢µÀÆ÷ÁìÓò¶¨Òåµµ, ÒÔÕì²âÕýÈ·µÄ Radius »ò NT ÁìÓò.

Éè¶¨ \$Security-Check µÄÖµÎª "PASSED" »ò "FAILED".
ÃÜÂë²»»áÒÔÃ÷ÂëÔÚÍøÂ·´«Êä.

\end{description}





\subsubsection{Óë´ÅµúÏà¹ØÖ¸Áî}

±¾½Ú½«ÁÐ³öÓÃÀ´µ÷ÖÆÓ²µú×ÊÁÏµÄÖ¸Áî. ¶îÍâµÄ²ÎÊýÒ²½«ÁÐÈë.
\begin{description}
\item[GetPartitions {\itshape ±äÊý\/} ({\itshape ´Åµú»úÃû\/})] \mbox{}

¶ÁÈ¡Ëù¸ø¶¨µÄ´Åµú»úµÄ·Ö¸î±í²¢ÒÔ×Ö´®¸ñÊ½´æµ½Ëù¸ø¶¨µÄ {\itshape ±äÊý\/}.
Ëù´æµÄ×Ö´®ÊÇÓ²µúÄÚ¿Õ¼ä·Ö²¼µÄÁÐ±í {\itshape µµ°¸ÐÎÊ½:¿Õ¼ä´óÐ¡\/}, ÆäÖÐ
\begin{itemize}
\item   {\itshape µµ°¸ÐÎÊ½\/} ÓÐ FAT16, EXT, BIGDOS, NTFS, FAT32, FAT32-LBA,
BIGDOS-LBA, EXT-LBA, LINUX-SWAP, LINUX-EXT2
»òÆäËüÎ´ÖªµÄÊ®½øÖµµµ°¸ÏµÍ³Ê¶±ðÂë.
\item   {\itshape ¿Õ¼ä´óÐ¡\/} ·Ö¸îÇø¿Õ¼ä´óÐ¡ÒÔ megabytes Îªµ¥Î».
\end{itemize}

²Î¿¼ SetPartitions ÒÔ»ñµÃ¸ü¶àÓë·Ö¸îÇøÓÐ¹ØµÄ×ÊÑ¶.



\item[SetPartitions "·Ö¸îÇø" ({\itshape Ó²µú»úÃû\/})] \mbox{}

ÒÀ×Ö´®ÄÚÈÝÉè¶¨·Ö¸î±í. ¸öÊ½Í¬ì¶ GetPartitions Ö¸Áî.
Õâ¸öÖ¸ÁîÒ²Í¬Ê±»áÖØÖÃËùÓÐµÄ¿ª»úÆì±ê (ÌáÊ¾: Ê¹ÓÃ SetBootPart).

ÔÚÖ÷¿ª»ú¼ÍÂ¼ (MBR) ÖÐµÄÖ÷Òª·Ö¸îÇøÖ»ÄÜÓÐËÄ¸ö. ¶øÇÒ, DOS ¼° Windows ÔÚÖ÷·Ö¸î±íÖÐ,
Ö»ÄÜÔÊÐíÒ»¸ö FAT ·Ö¸îÇø (³ÆÎª Ö÷Òª·Ö¸îÇø, C:).
ÆäËûµÄ FAT ·Ö¸îÇøÖ»ÄÜ·Ö²¼ÔÚÒ»¸öÑÓÉì·Ö¸îÇøÀï (¶øËûÃÇ³ÆÎªÂß¼­·Ö¸îÇø).
Èç¹ûÎÒÃÇ°Ñ MBR ·Ö¸î±íÖÐµÄ·Ö¸îÇø±àºÅÎª 1-4 ,
Ôò 5-8 Îª´æì¶µÚÒ»¸öÑÓÉì·Ö¸îÇøµÄÂß¼­·Ö¸îÇø, ¶¨ÒåÁ½¸ö FAT ·Ö¸îÇø¿ÉÒÔÈç´Ë×ö:
·Ö¸îÇø 1 Îª FAT, ·Ö¸îÇø 2 Îª EXT, ·Ö¸îÇø 5 Îª FAT.
·Ö¸îÇø 3,4,6,7 ¼° 8 ÔòÎª UNUSED.
Í¬ÑùµÄ»®·Ö·½·¨¿ÉÒÔ²ÉµÝ»ØµÄ·½Ê½Éè¶¨³öÁ½¸öÒÔÉÏµÄ FAT ·Ö¸îÇø:
ÔÚ·Ö¸îÇøÖÐÉè¶¨Ò»¸öÑÓÉì·Ö¸îÇø 6 ²¢¼ÓÈëÒ»¸ö FAT Âß¼­·Ö¸îÇø 9 .

ÔÚ´ó²¿·Ý½ÏÑÏ½ôµÄ DOS ¹æ¡õÖÐ, ·Ö¸î±íµÚ 3 ºÍ µÚ 4 ¸ö·Ö¸îÇø½«²»±»Ê¹ÓÃ.
ÊÂÊµÉÏ, ²¿·Ý DOS °æ±¾¼°ÆäËû×÷ÒµÏµÍ³¶¼ÄÜÔÊÐí·Ö¸î±íÖÐ³¬¹ýÁ½¸ö·Ö¸îÇø,
µ«²¢Ã»ÓÐÏàµ±Ã÷È·µÄ¹æ¶¨.
¾ÍÕâ·½ÃæµÄÎÊÌâ¶øÑÔ, BpBatch ¶Ô·Ö¸î±íµÄÒâÒåÓÐ½Ïµ¯ÐÔµÄ½âÊÍ,
Ëü¿ÉÒÔÁË½â×÷ÒµÏµÍ³ÎÞ·¨ÖªµÀµÄ²¿·Ý.

Ò»¸öÍ¨ÓÃµÄ¹æÔò¾ÍÊÇ²»ÒªÔÚ·Ö¸î±íÖÐÉèÖÃ³¬¹ýÁ½¸öÑÓÉì·Ö¸îÇø,
·ñÔò·Ö¸îÇø±àºÅµÄ»®·Ö·½Ê½½«±»ÆÆ»µ.

Èç¹ûÄãÏë²âÊÔÒ»Ð©ÓÐÈ¤µÄÉè¶¨, ÒÔÔö¼Ó¾­Ñé. ÄÇ¾Í²»Òª±§Ô¹×÷ÒµÏµÍ³ÎÞ·¨·Ö±æÄãµÄ·Ö¸îÇø.
±£Ö¤¿ÉÒÔÕý³£¹¤×÷µÄ»®·Ö·½Ê½ÊÇÒÔÖ÷Òª·Ö¸îÇø´æ·Å×÷ÒµÏµÍ³µÄ¿ª»ú·Ö¸îÇø,
°ÑÆäËû·Ö¸îÇøÒ»²¢°Úµ½ÑÓÉì·Ö¸îÇø.

ÑÓÉì·Ö¸îÇøÉè¶¨µÄ¡õÀýÈçÏÂ:
\begin{verbatim}
        SetPartitions "BIGDOS:100 EXT:400 EMPTY EMPTY BIGDOS:400"
\end{verbatim}




\item[GetBootPart {\itshape ±äÊý\/} ({\itshape Ó²µú»úÃû\/})] \mbox{}

È¡µÃ¾ß¿É¿ª»úÆì±êµÄ·Ö¸îÇøºÅÂë (DOS µÄËµ·¨ÊÇ: ÒÑ×÷ÓÃµÄÖ÷·Ö¸îÇø)
²¢°ÑËü´æµ½ {\itshape ±äÊý\/} ÖÐ. µÚÒ»¸ö·Ö¸îÇø±àºÅÊÇ 1.
Èç¹ûÃ»ÓÐ¾ß¿É¿ª»úÆì±êµÄ·Ö¸îÇø, Ôò»ØÓ¦ 0.



\item[SetBootPart {\itshape ·Ö¸îÇø\/} ({\itshape Ó²µú»úÃû\/})] \mbox{}

Éè¶¨¿É¿ª»úÆì±êµ½Ëù¸ø¶¨µÄ·Ö¸îÇø.
¿É¿ª»úÆì±ê¿ÉÒÔÊ¹Ö÷¿ª»ú¼ÇÂ¼ (MBR) ¾ö¶¨ÄÄÒ»¸ö·Ö¸îÇø¿ÉÒÔ¿ª»ú.
µÚÒ»¸ö·Ö¸îÇø±àºÅÊÇ 1 .



\item[Blank {\itshape ·Ö¸îÇø\/} ({\itshape Ó²µú»úÃû\/})] \mbox{}

ÔÚ·Ö¸îÇøÄÚ×ÊÁÏÒÔÁãÌîÂú. Õâ¶Ô´óµÄ·Ö¸îÇø»á»¨µô²»ÉÙÊ±¼ä.
±ð°ÑÕâ¸ö·Ö¸îÇø¸ñÊ½»¯ÎªÈÎÒ»ÖÖ×÷ÒµÏµÍ³Ê¹ÓÃ. Òà¿É²Î¿¼ {\ttfamily Clean}.



\item[Clean {\itshape ·Ö¸îÇø\/} ({\itshape Ó²µú»úÃû\/}) ("±êÇ©")] \mbox{}

ÒÔ·Ö¸î±íÄÚËùÖ¸¶¨µÄ¸ñÊ½¿ìËÙ¸ñÊ½»¯Ëù¸ø¶¨µÄ·Ö¸îÇø.
Èç¹ûÓÐ¸ø¶¨±êÇ©ÇÒµµ°¸ÏµÍ³ÓÐÖ§Ô®, Ôò»áÈ¥Éè¶¨·Ö¸îÇøµÄ±êÇ©.
ÈçÒª¸ü³¹µ×µÄ¸ñÊ½»¯, ÄÇ¾Í½ÐÓÃ {\ttfamily Blank} Ö¸ÁîÀ´´¦Àí·Ö¸îÇø.

Clean ÏÖÔÚÖ§Ô® (FAT16) BIGDOS, FAT32, EXT, LINUX-EXT2 ¼°
LINUX-SWAP ¸ñÊ½µÄ·Ö¸îÇø. Èç¹ûÒªÇåÀíÖ÷¿ª»ú¼ÇÂ¼ (MBR),
Ê¹ÓÃ {\ttfamily Clean 0}.

Clean ¿ÉÒÔÓÃÔÚ×ÊÁÏ·Ö¸îÇø¼° MBR/EXT ·Ö¸îÇø. ¶øÈç¹ûÄãÔÚÊ¹ÓÃ
{\ttfamily FullUnzip} Ö¸ÁîÖ®Ç°ÏëÒªÏÈÓÃ clean Ö¸ÁîÀ´ÇåÀí×ÊÁÏÔòÊÇÎÞÒâÒåµÄ.



\item[FullUnzip "ÍêÕûµÄ´ÅµúÓ³Ïñµµ" {\itshape ·Ö¸îÇø\/} ({\itshape Ó²µú»úÃû\/})] \mbox{}

½âÑ¹ËõÒ»¸öÍêÕûµÄ´ÅµúÓ³Ïñµµµ½Ëù¸ø¶¨µÄ·Ö¸îÇø, ¸²Ð´ÈÎºÎÒÑ´æÔÚµÄµµ°¸ (¿ìËÙÇå³ý).

FullUnzip Ö§Ô® (FAT16) BIGDOS, FAT32 ¼° LINUX-EXT2.

Õâ¸öÖ¸Áî»áÆôÓÃ VESA »æÍ¼¹¦ÄÜÀ´ÏÔÊ¾³ÌÊ½Õý½øÐÐÖÐµÄÆìÖÄ,
³ý·Ç {\ttfamily VESA} ±»ÉèÎª {\ttfamily OFF}.



\item[IncrUnzip "ÔöÁ¿ÐÍµÄ´ÅµúÓ³Ïñµµ" "Ä¿µÄÂ·¾¶"] \mbox{}

½âÑ¹ËõÒ»¸öÔöÁ¿ÐÍµÄ´ÅµúÓ³Ïñµµµ½Ëù¸ø¶¨µÄÄ¿µÄÂ·¾¶.
Õâ»áÈ¡´úµôÄ¿µÄÂ·¾¶ÖÐÓëÓ³ÏñµµÖÐËùº¬µµÃûÏàÍ¬µÄµµ°¸, ¶øÆäËûµÄµµ°¸Ôò»á²»»á±»É¾³ý.

IncrUnzip Ö§Ô® (FAT16) BIGDOS, FAT32 ¼° LINUX-EXT2 µµ°¸¸ñÊ½.
Õâ¸öÖ¸ÁîµÄÐ§ÂÊÔ¶µÍì¶ FullUnzip Ö¸Áî, ÒòÎªËü±ØÐëÄÜ±£»¤Ô­À´µÄµµ°¸ÏµÍ³²»ÊÜËð,
ÇÒËü¿É½åÓÉ´¢´æ¶à¸öÓ³ÏñµµµÄ²îÒì´¦, ÒÔÃâÈ¥±£´æ¶à¸ö´ÅµúÓ³Ïñµµ.



\item[FileUnzip "À´Ô´µµÃû" "Ä¿µÄµµÃû"] \mbox{}

½âÑ¹ËõÏÈÇ°ÓÉ {\ttfamily MrZip} µÄ FileZip Ö¸ÁîËùÑ¹ËõµÄµµ°¸.
Õâ¸öµµ°¸»á¾­ 32-Î»Ôª CRC ¼ì²é.



\item[Copy "À´Ô´µµÃû" "Ä¿µÄµµÃû"] \mbox{}

ÒÔÎ»Ôª×é¶ÔÎ»Ôª×éµÄ·½Ê½, ¸´ÖÆÀ´Ô´µµ°¸µ½Ä¿µÄµµ°¸.
¿ÉÒÔÔÚ FullUnzip Ö®ááÊ¹ÓÃÒÔ¸üÐÂÔÚËÅ·þÆ÷ÉÏµÄÉè¶¨µµ¶ø²»ÐèÖØÐÂ½¨Á¢Ó³Ïñµµ.
{\ttfamily FileUnzip} Ö¸Áî, ×îºÃÊ¹ÓÃÔÚ´ó¶øÒ×ì¶Ñ¹ËõµÄµµ°¸ÏÂ.



\item[Append "À´Ô´µµÃû-1" "À´Ô´µµÃû-2" "Ä¿µÄµµÃû"] \mbox{}

ÒÔÎ»Ôª×é¶ÔÎ»Ôª×éµÄ·½Ê½, ¸´ÖÆµÚÒ»¸öÀ´Ô´µµ°¸, ½ÓÖøÊÇµÚ¶þ¸ö µ½ Ä¿µÄµµ°¸.
¿ÉÓÃì¶ÈÎÒâ´óÐ¡µÄµµ°¸. Ä¿µÄµµÃû²»¿Éº¬ÓÐÈÎÒ»¸öÀ´Ô´µµÃû.



\item[Patch "À´Ô´µµÃû" "Ä¿µÄµµÃû" ("ÏÈÆÚÐÞÕý" ("ááÆÚÐÞÕý"))] \mbox{}

¶ÁÈ¡À´Ô´µµ²¢ÒÔÔÚÐ´ÈëÄ¿µÄµµÇ°, Õë¶Ô±äÊý×÷È¡´ú.
¶Ôì¶ ASCII Âë´óì¶ 127 µÄ½âÊÍÓÉ {\ttfamily \$IsoLatin} ±äÊýÀ´¾ö¶¨.

Ô¤Éè, ¿ÉÒÔ±çÊ¶µ½ÒÔ "\$$\{$" ¼° "$\}$" ËùÀ¨ÆðÀ´µÄ±äÊý. ÇÒ¿ÉÒÔ°ÑËû±ä»»³É·Ç¿ÕµÄ×Ö´®.
¼Ç×¡, Èç¹ûÄãÒªÔÚÐÞÕýÄÚÈÝÖÐ°ÚÈëÇ®×Ö·ûÔò±ØÐëÓÃÒçÎ»×ÖÔª»òÕßÈÃËü¿ÉÒÔÔÚ¾Þ¼¯ÖÐ±»±æÊ¶µ½.
ÀýÈç, Èç¹ûÄãÒªÃ÷È·µÄÊ¹ÓÃÔ¤ÉèµÄÏÈÆÚÓëááÆÚÐÞÕý, Ê¹ÓÃ:
\begin{verbatim}
        Patch "À´Ô´µµÃû" "Ä¿µÄµµÃû" "\${" "}"
\end{verbatim}




\item[MkDir "Â·¾¶"] \mbox{}

µÝ»ØµØ²úÉúÓÉ¸ùÄ¿Â¼ÆôÊ¼µ½ËùÖ¸Â·¾¶µÄÄ¿Â¼.
Èç¹ûÂ·¾¶ÒÑ´æÔÚ, ÔòÖ¸ÁîÎÞÐ§.



\item[Delete "µµÃû", Del "µµÃû"] \mbox{}

ÒÆ³ýËù¸ø¶¨µÄµµÃû. µµ°¸±ØÐë´æÔÚ.



\item[DelTree "Â·¾¶"] \mbox{}

µÝ»ØµØÒÆ³ýÓÉ¸ùÄ¿Â¼µ½ËùÖ¸Â·¾¶µÄËùÓÐµµ°¸ÓëÄ¿Â¼, ²¢°ÑËù¸ø¶¨Ä¿Â¼ÒÆ³ý.

\end{description}





\subsubsection{¿ª»úÖ¸Áî}

±¾½Ú½«ÁÐ³öÓÃÀ´ÑÓÉì¿ª»úÁ÷³ÌµÄÖ¸Áî.
¶îÍâµÄ²ÎÊý½«Ò²ÁÐÈë.
\begin{description}
\item[HideBootProm] \mbox{}

»Ø´æ BootPROM Ëù¶ÔÓ¦µÄ¼ÇÒäÌåÓëÖÐ¶ÏÏòÁ¿.
ÔÚ½ÐÓÃÕâ¸öÖ¸ÁîÖ®ááËùÓÐÏëÒªÊ¹ÓÃ TFTP ´«ÊäµÄ¹¦ÄÜ»áÊ§Ð§.
ÔÚ HdBoot Ö¸Áî½ÐÓÃÖ®Ç°Ê¹ÓÃÕâ¸ö¹¦ÄÜÊÇ¸öºÃÖ÷Òâ,
·ñÔòÄãÔÚ DOS/Windows ÏÂ»áµ¼ÖÂ¼ÇÒäÌå²»¹»ÓÃ.
FloppyBoot Ö¸Áî»áÖ±½Ó½ÐÓÃÕâ¸ö¹¦ÄÜ.

¼Ç×¡ËäÈ»Õâ¸ö¹¦ÄÜ»á»Ø´æËùÓÐ BootPROM »áÊ¹ÓÃµ½µÄÖÐ¶ÏÏòÁ¿ (ÕýÊ½¹«²¼µÄ),
µ«Ä¿Ç°¿´À´ËÆºõ²¢Ã»°ÑËùÓÐµÄ¶¼»Ø´æ.
²»¹ýÕâ¶Ô DOS ¼° Windows ÒÑ¾­×ã¹»ÁË.



\item[LoadRamDisk "ramdiskµÄµµÃû"] \mbox{}

ÔØÈëÒ»¸öÈíµúµÄ´ÅµúÓ³Ïñµµµ½ÑÓÉì¼ÇÒäÌå²¢ÖØµ¼ BIOS µÄ´Åµú·þÎñ,
Ê¹µÃÓëÈíµúÓÐ¹ØµÄºô½Ð¶¼ÓÃÕâ¸öÓ³ÏñµµÈ¡´ú.
Õâ¸öÖ¸Áî»áÖ±½Ó½ÐÓÃ {\ttfamily HideBootProm} Ö¸Áî.
½ÐÓÃ {\ttfamily FloppyBoot} Ö¸ÁîÒÔÓÃÄã¸Õ¸ÕËùÔØÈëµÄ ramdisk ¿ª»ú.

ÕâÖÖÐÎÊ½µÄ ramdisk ¿ÉÄÜ²»ÈôÄãÓÃ TFTPBoot Ö¸ÁîÀ´µÄÎÈ¶¨.
Î¨Ò»µÄÓÅµãÊÇ¿ÉÒÔÓÉ TCP/IP BootPROM ËùÔ¤ÁôµÄ $>$ 64KB ÖÐ,
¶àÍµ³ö¼¸°ÙÎ»Ôª×éµÄ´«Í³¼ÇÒäÌå.
µ«Ò²Òª¾¯¸æÄã, ÔÚ ramdisk Ëù´æ·ÅµÄÑÓÉì¼ÇÒäÌåÇø²¢²»¾ßÈÎºÎ°²È«ÐÔ.
Ò²Ã»ÓÐÈÎºÎ·½·¨¿ÉÒÔÒÆ³ýÕâÖÖ ramdisk.



\item[LoadZRamDisk "ramdisk µÄµµÃû"] \mbox{}

¸ú {\ttfamily LoadRamDisk} ×÷ÏàÍ¬µÄÊÂ, µ«ÊÇÊÇÕë¶ÔÒÑÓÃ
{\ttfamily MrZip} µµ°¸Ñ¹Ëõ¹ýµÄÓ³Ïñµµ.
±»Ñ¹Ëõ¹ýµÄ ramdisk ²ÉÓÃ 32 Î»ÔªµÄ CRC ¼ì²éÒÔ·ÀÖ¹×ÊÁÏ´íÎó (¼° ²»ÍêÕûÏÂÔØ).



\item[TFTPBoot "Ô¶¶Ë¿ª»úµµÃû"] \mbox{}

Á¬½áµ½ÁíÒ»¸ö¿É¿ª»úµµ (±ÈÈç Ò»¸öÓÉ Bootix µÄ BpShell ³ÌÊ½Ëù²úÉúµÄÈíµúÓ³Ïñµµ).
²Î¿¼¶Ô´æÈ¡ TFTP ËÅ·þÆ÷ÉÏµµ°¸µÄ²Î¿¼×ª»»µÄ·½Ê½.



\item[FloppyBoot] \mbox{}

Òþ²Ø Boot ROM, ÔØÈëÈíµú»úµÄ¿ª»ú´ÅÇø²¢ÓÃËüÀ´¿ª»ú.



\item[HdBoot ({\itshape ´Åµú»úÃû\/})(:{\itshape ·Ö¸îÇø\/})] \mbox{}

ÔØÈëËù¸ø¶¨µÄ¿É¿ª»ú´ÅÇø²¢ÓÃËü¿ª»ú. Ô¤Éè´Åµú»úÎª Áã, µÚÒ»¿ÅÓ²µú»ú,
¶ø·Ö¸îÇøÔ¤ÉèÎª Áã, Ò²¾ÍÊÇÖ÷¿ª»ú¼ÇÂ¼.
Äã¿ÉÒÔ´ÓÈÎÒ»¸ö·Ö¸îÇøÀ´¿ª»ú, µ«±ØÐë×¢Òâ Windows 95/98
²»ÄÜÈÃÄãÔÚÃ»Éè¶¨Îª¿É¿ª»ú·Ö¸îÇøµÄ·Ö¸îÇø¿ª»ú (ÌâÊ¾: Ê¹ÓÃ SetBootPart).

Õâ¸öÖ¸Áî²»»áÖ±½Ó½ÐÓÃ HideBootProm, ËùÒÔÄãÒªÏÈ½ÐÓÃËü.



\item[LinuxBoot "KernelµµÃû" ("ÃüÁîÁÐ" ("ramdisk µÄµµÃû"))] \mbox{}

ÔØÈëËù¸ø¶¨µÄ Kernel ¼° ramdisk µ½¸ß²ãµÄ¼ÇÒäÌå,
Éè¶¨ÃüÁîÁÐ²¢ÓÃÕâ¸ö Kernel ¿ª»ú.
ÖÁÉÙ·Å¸ö¸ùµµ°¸ÏµÍ³µÄÎ»ÖÃÔÚÃüÁîÁÐÖÐ»áÊÇ¸öºÃÖ÷Òâ (Èç {\ttfamily "root=}dev/hda1"/).
Èç¹ûÄãÊ¹ÓÃµÄÏµÍ³Ïàµ±ÒÀÀµ {\ttfamily lilo} (Èç RedHat Linux 5.1),
ÔòÔÚÃüÁîÁÐÖÐ¼ÓÈëÏñ {\ttfamily BOOT\_IMAGE=linux} ÕâÑùµÄ¶«Î÷»á±È½ÏºÃ.
¼Ç×¡ Kernel ¿ÉÒÔÍ¸¹ý TFTP Ð­¶¨À´ÔØÈë (×Ô¶¯´ÓÓ²µúÖÐ¿ìÈ¡)
»òÕßÖ±½ÓÓÉÄ¿µÄ¸ù·Ö¸îÇøÈ¡ÓÃ.

Õâ¸öÖ¸Áî¿ÉÒÔÓëÐ¡ÐÍµÄ»ò´óÐÍµÄ Kernel ({\ttfamily zImage} Óë {\ttfamily bzImage}).

\end{description}





\subsubsection{¹ú¼Ê»¯ÓïÏµÖ§Ô®}

±¾½Ú½«ÁÐ³öÓë¹ú¼Ê»¯ÓïÏµÓÐ¹ØµÄÖ¸Áî.
¶îÍâµÄ²ÎÊý½«Ò²ÁÐÈë.
\begin{description}
\item[RemapKeys "Ô­Ê¼¼ü" "ÖØÐÂ¶ÔÓ¦µÄ¼ü"] \mbox{}

¹ú¼Ê»¯¼üÅÌÖ§Ô®. ÖØÐÂ¶ÔÓ¦Ëù¸ø¶¨µÄ¼üÎªÁíÒ»¸ö×ÖÔª.
±ÈÈç, °Ñ Y ¸ú Z Á½¼ü½»»», Ê¹ÓÃ:
\begin{verbatim}
        Remapkeys "yzYZ" "zyZY"
\end{verbatim}

ÔÚÊ¹ÓÃµÄ×ÖÔª²»º¬ÔÚ×îÐ¡ ASCII ×ÖÔª¼¯ÖÐÊ±, Ê¹ÓÃ°Ë½øÖÆµÄ±íÊ¾·¨,
ÒÔ±ÜÃâ±ØÐëÒÀÀµÖø iso-latin ÐÎÊ½µÄÉè¶¨.

¶Ô¹ú¼Ê»¯µÄ¼üÅÌ¶øÑÔ, ÔÚ·Ç¶ÔÓ¦¹ýµÄÄ£Ê½ (US) ÏÂ, ÓÐÁ½ÖÖ¼üÀ´²úÉú·´Ð±Ïß·û.
¶øËüÃÇ¶¼¿ÉÒÔ¸÷×ÔµØÖØÐÂ¶ÔÓ¦, ÕâÒª¸ÐÐ» {\ttfamily BpBatch} »á°ÑËûÃÇ·Ö±ð»ØÓ¦³É
ASCII Âë 252 (°Ë½øÖÆ) »ò ASCII Âë 335 (°Ë½øÖÆ) µ± shift ¼ü°´ÏÂÊ±.

Èç¹ûÄãÒª´«¸øÎÒÕë¶ÔÄãÃÇ¹ú¼ÒµÄ¼üÅÌ¶ÔÓ¦½Å±¾µµ, ÎÒ»á°ÑËü°ÚÔÚ {\ttfamily \onlynameurl{http://cuiwww.unige.ch/info/pc/remote-boot/soft/sample-scripts}}
ÎªÁË°ïÖúÄãÉè¶¨ÄãµÄ¼üÅÌ¶ÔÓ¦, ÎÒ½¨ÒéÄã°´ÏÂËùÓÐÎ´¶ÔÓ¦µ½µÄ {\itshape ÌØÊâ¹¦ÄÜ\/}
¼ü²¢¼ÇÏÂËûÃÇËù²úÉúµÄ×ÖÔª.

°ÑËüÃÇ°ÚÔÚ {\ttfamily Ô­Ê¼¼ü} ÕâÒ»À¸. ¶ø {\ttfamily ÖØÐÂ¶ÔÓ¦µÄ¼ü} ¾ÍÊÇÄãÏëÒªËüÈÃÄã¿´µ½µÄÑù×Ó.
Èç¹û²¿·Ý°´¼ü (²»¹ÜÊÇÔ­Ê¼µÄ»òÖØÐÂ¶ÔÓ¦µÄ) ²úÉú³¬¹ý ASCII Ê®½øÎ»µÄ 127, ÔòÊ¹ÓÃ
°Ë½øÖÆ±íÊ¾·¨. Äã¿ÉÒÔÓÉ HelpPC (HelpPC ÊÇÒ»¸öÓÉ David Jurgens ËùÐ´µÄ,
³¬ÎÄ×ÖÏßÉÏËµÃ÷¹²Ïí³ÌÊ½) µÄ ASCII ±íÖÐ, È¡µÃËù¸ø¶¨ÈÎÒâ×ÖÔªµÄ°Ë½øÎ»Âë.



\item[RemapAltkeys "Ô­Ê¼¼ü" "ÖØÐÂ¶ÔÓ¦µÄ¼ü"] \mbox{}

¹ú¼Ê»¯¼üÅÌÖ§Ô®. ÖØÐÂ¶ÔÓ¦Ëù¸ø¶¨µÄ¼üÔÚ ALT ¼ü°´ÏÂÊ±, ÎªÁíÒ»¸ö×ÖÔª.
ÀýÈç, ¶ÔÓ¦ Alt-2 ÎªÐ¡ÀÏÊó·û, Ê¹ÓÃ:
\begin{verbatim}
        RemapAltKeys "2" "@"
\end{verbatim}

¼Ç×¡ÖØÐÂ¿ª»úµÄ¼ü²¢²»Ö§Ô®.



\item[LoadCodePage "cpxxx.bin"] \mbox{}

ÔØÈë²¢ÆôÓÃËù¸ø¶¨µÄ¶þ½øÖÆ Codepage µµ.
Codepage ÊÇÓÃÀ´×ª»» Unicode ×ÖÔª (ÔÚ VFAT µÄ´Åµú±êÇ©ÖÐËùÊµ×÷µÄ) Îª 8 Î»ÔªµÄ×ÖÔª.
Èç¹ûÄãÃ»ÓÐÔØÈëÕýÈ·µÄ Codepage, µ±ÓÃµ½ÌØÊâ×ÖÔªÀ´´æÈ¡µµ°¸ÏµÍ³Ê±, »á³öÏÖ FAT ¾¯¸æ.

ËùÓÐµÄ¶þ½øÖÆ codepage µµ¿ÉÒÔÔÚÕâÕÒµ½ {\ttfamily \onlynameurl{http://cuiwww.unige.ch/info/pc/remote-boot/soft/codepage.zip}}

Ô¤ÉèµÄ codepage ÊÇ 850, ÊÇÓÐ¼ÇÔØµÄ×Ö¼¯ ISO-Latin-1.
Èç¹ûÄãÒªÔØÈëÒ»¸öÍâ¹úµÄ codepage, Äã¾ÍÒª°Ñ±äÊý
{\ttfamily \$IsoLatin} ÉèÎª {\ttfamily "off"} ·ñÔòÄã»á·¢ÉúÎÞÒâÒåµÄ×ª»».
´ËÍâ, Èç¹ûÄãÒªÏÔÊ¾Íâ¹úµÄ×ÖÔª, Äã±ØÐèÔØÈëÊÊµ±µÄÓ©Ä»×ÖÐÍ (Ê¹ÓÃ {\ttfamily "LoadFont"}).



\item[LoadFont "×ÖÐÍµµÃû"] \mbox{}

ÔØÈë²¢ÆôÓÃÒ»ÖÖ VGA/VESA ×ÖÐÍ, ¿ÉÒÔÔÚÎÄ×Ö¼°Í¼ÐÎÄ£Ê½ÏÂÊ¹ÓÃ.
×ÖÐÍµµ±ØÐëÊÇ¶þ½øÎ»µµ 16 Î»Ôª×é/×ÖÔª (8x16 µãÕó).
Õâ¸öÖ¸Áî¿ÉÒÔÔÚ¹ú¼Ê»¯ÓïÏµÖÐÊ¹ÓÃÒÔµÃµ½¸üÃÎ»ÃµÄÖ§Ô®.

¾ßÓÐ¶à¸öÃÎ»Ã×ÖÐÍµÄµµ°¸µÄÑ¹ËõµµÔÚÕâ {\ttfamily \onlynameurl{http://cuiwww.unige.ch/info/pc/remote-boot/soft/fonts.zip}}.
Õâ¸öµµ°¸»¹°üº¬ÓÃÀ´»ã³öÄãËùÓÃµÄ codepage ÏÂµÄ DOS {\ttfamily .CPI} µµÖÐµÄ×ÖÐÍµÄ³ÌÊ½.

\end{description}





\subsubsection{MrZip Ö¸ÁîµÄ¹æ¸ñ}

\begin{description}
\item[Source...] \mbox{}

\begin{verbatim}
  Source (i)archive "µµÃû"
  Source path "Â·¾¶"
\end{verbatim}


Éè¶¨Òª´¦ÀíµÄÀ´Ô´µµ°¸ (»òÔöÁ¿ÐÎÊ½µÄ) µµÃûÓëÂ·¾¶.



\item[Dest...] \mbox{}

\begin{verbatim}
  Dest (i)archive "µµÃû"
  Dest (i)dump
  Dest path "Â·¾¶"
\end{verbatim}


Éè¶¨Òª´¦ÀíµÄÄ¿µÄµµ°¸ (»òÔöÁ¿ÐÎÊ½µÄ) µµÃû, Â·¾¶, »ò ÇêÓ¡.
ÈçÒª¿ØÖÆÇêÓ¡Ê±ËùÒªÏÔÊ¾µÄ×ÊÁÏÁ¿, ¿ÉÒÔÓÃ \$DumpFormat ÌØÊâ±äÊýÀ´¿ØÖÆ.



\item[FileZip "À´Ô´µµÃû" "Ä¿µÄµµÃû"] \mbox{}

Ñ¹ËõÒ»¸öÏÈÇ°ÓÃ FileUnzip »ò ZRamDisk Ëù½âÑ¹ËõµÄµµ°¸.
Õâ¸öµµ°¸»áÒÔ 32 Î»ÔªµÄ CRC ·½Ê½×ö¼ì²é.



\item[Filter...] \mbox{}

\begin{verbatim}
  Filter -"ÑùÊ½"
  Filter +"ÑùÊ½"
\end{verbatim}


±ÜÃâ/ÔÊÐí ºÏì¶Ëù¸ø¶¨ÑùÊ½ (ÔÊÐíÍòÓÃ×ÖÔª) µÄµµ°¸¼°Ä¿Â¼±»°üº¬½øÓ³ÏñµµÖÐ.
ÑùÊ½ÎÇºÏì¶ÍêÕûµÄÂ·¾³Ãû. Ô¤Éè, ËùÓÐµÄµµ°¸¶¼»á°üº¬½øÓ³ÏñµµÖÐ.
ÄãÖ»ÐëÒªÃ÷È·±íÊ¾³öÄÄÐ©µµ°¸±ØÐëÓÉ¹ýÂËÆ÷¹ýÂË.
Ã¿¸ö¸ºµÄ¹ýÂËÆ÷¶¼ÓÐÏà¶ÔÓ¦µÄÕý¹ýÂËÆ÷ (±»ÔÊÐíµÄ).

ÔÚ DOS/Windows µÄÓ³Ïñµµ, ÄãÖ»ÒªÓÃ
\begin{verbatim}
        Filter -"*.swp"
        Filter -"temp/*"
\end{verbatim}

¶ø¶Ô Unix µÄÓ³Ïñµµ, ÄãÔòÐèÒª
\begin{verbatim}
        Filter -"var/log/*"
        Filter -"tmp/*"
\end{verbatim}




\item[CopyArchive] \mbox{}

¸ù¾ÝËùÌá¹©µÄÀ´Ô´, Ä¿µÄµµ°¸, ¼°¹ýÂËÆ÷µÈÉè¶¨¿ªÊ¼´¦ÀíÓ³Ïñµµ. Ö»ÓÐÔÚ¼«ÉÙÊýµÄÇé¿ö, ²»È»ÄãÍ¨³£¶¼¿ÉÒÔÖ±½ÓÊ¹ÓÃÒÔÏÂËùÁÐ³öµÄ¿ì½ÝÓÃ·¨ÒÔÈ¡´ú½ÐÓÃ {\ttfamily CopyArchive} Ö¸Áî.
ÆäÖÐÒ»ÖÖÇé¿öÄã»áÓÃµ½ {\ttfamily CopyArchive} ¾ÍÊÇµ±ÄãÒª±ä¸ü·Ö¸îµÄÓ³Ïñµµ´óÐ¡Ê±, ÈçÏÂ:
\begin{verbatim}
        set FragmentSize="30 MB"
        Source archive "original.imz"
        Dest archive "refragmented.imz"
        CopyArchive
\end{verbatim}




\item[FullZip "Â·¾¶" "ÍêÕûµÄÓ³ÏñµµÃû"] \mbox{}

ÊÇÏÂÊöµÄ¿ì½ÝÓÃ·¨
\begin{verbatim}
                Source path "Â·¾¶"
                Dest archive "ÍêÕûµÄÓ³ÏñµµÃû"
                CopyArchive
\end{verbatim}

ÄãÍ¨³£¶¼ÒªÏÈÉè¶¨¹ýÂËÆ÷.



\item[IncrZip "Â·¾¶" "ÔöÁ¿ÐÍÓ³ÏñµµÃû"] \mbox{}

ÊÇÏÂÊöµÄ¿ì½ÝÓÃ·¨
\begin{verbatim}
                Source path "Â·¾¶"
                Dest iarchive "ÔöÁ¿ÐÍÓ³ÏñµµÃû"
                CopyArchive
\end{verbatim}




\item[FullDump "ÍêÕûµÄÓ³ÏñµµÃû"] \mbox{}

ÊÇÏÂÊöµÄ¿ì½ÝÓÃ·¨
\begin{verbatim}
                Source archive "ÍêÕûµÄÓ³ÏñµµÃû"
                Dest dump
                CopyArchive
\end{verbatim}




\item[IncrDump "ÔöÁ¿ÐÍÓ³ÏñµµÃû"] \mbox{}

ÊÇÏÂÊöµÄ¿ì½ÝÓÃ·¨
\begin{verbatim}
                Source iarchive "ÔöÁ¿ÐÍÓ³ÏñµµÃû"
                Dest dump
                CopyArchive
\end{verbatim}




\item[Xcopy "À´Ô´Â·¾¶" "Ä¿µÄÂ·¾¶"] \mbox{}

ÊÇÏÂÊöµÄ¿ì½ÝÓÃ·¨
\begin{verbatim}
                Source path "À´Ô´Â·¾¶"
                Dest path "Ä¿µÄÂ·¾¶"
                CopyArchive
\end{verbatim}


\end{description}





\subsection{NoBreak.sys}

{\ttfamily Nobreak.sys} Ïàµ±Ð¡ (´ó¸ÅÖ»ÓÐ 350 Î»Ôª×é) µÄÇý¶¯³ÌÊ½,
Ëü½«¼ÓÔÚÄú {\ttfamily config.sys} ÖÐµÄ¿ªÊ¼´¦. ËüµÄÄ¿µÄÊÇ±£»¤¿ª»ú³ÌÐò²»±»ÖÐ¶Ï,
Ö±µ½Ê¹ÓÃÕßµÇÈë. DOS ÎªÕâÌá¹©Ò»ÖÖÉè¶¨ (ÃûÎª {\ttfamily BREAK=OFF}), µ«Ëü²»¹»±©Á¦,
²¢ÇÒÔÚÖ´ÐÐµ½ {\ttfamily autoexec.bat} Ê±Ò»µãÓÃ´¦Ò²Ã»ÓÐ.
ÎÒÃÇµÄÇý¶¯³ÌÊ½¹¤×÷Ô­ÀíÊÇµ±ÖÐ¶ÏÒªÇó²úÉúÊ±ÐÞ¸Ä¼üÅÌµÄÉ¨ÃèÂë,
Ö±½ÓÔÚ BIOS ²ã¹¤×÷. ÒÔÕâ·½·¨, ËùÓÐµÄ³ÌÊ½ÔÚÖÐ¶ÏÎ´ÖÂÄÜÇ°¶¼ÊÕ²»µ½ÖÐ¶ÏÑ¶Ï¢.

Õâ¸öÇý¶¯³ÌÊ½±ØÐë·ÅÔÚ {\ttfamily config.sys} µµÖÐ(»òÕßÊ¹ÓÃ {\itshape Undocumented DOS\/}
µÄ {\ttfamily devlod} ³ÌÊ½). ½ÓÖø, ¿ÉÒÔÍ¸¹ý´«ËÍ {\ttfamily Yes} µ½ {\ttfamily NOBRK} Õâ¸öÐéÄâ×°ÖÃ,
²¢ÇÒ´«ËÍ {\ttfamily No} ¶ø½ûÄÜ (ÊÂÊµÉÏ, Ö»ÐèÒªµÚÒ»¸ö×ÖÔª, {\ttfamily Y} »ò {\ttfamily N} ²ÅÊÇ¹Ø¼ü).

ÒòÎªÕâ¸öÇý¶¯³ÌÊ½ÒÀ¿¿ BIOS,
ËùÒÔËüÖ»ÄÜÔÚ DOS ¸ú Windows 3.1 ÏÂ¹¤×÷, ¶ø Windows 95/98
ÔòÓÐËü×Ô¼ºµÄµÍ½×¼üÅÌ´¦Àí»úÖÆ.

Assembler Óï·¨µÄÔ­Ê¼³ÌÊ½ÂëÔÚ\onlynameurl{Õâ}.




\section{ÌØÊâÐÍµÄ TFTP ËÅ·þÆ÷}

ÓÉì¶ TCP/IP BootPROM Ö»ÄÜÖ§Ô® TFTP Í¨Ñ¶Ð­¶¨,
¶øÕâÓëÔöÇ¿ÐÍµÄ TFTP ËÅ·þÆ÷ÐÂ¹¦ÄÜÏ¢Ï¢Ïà¹Ø.




\subsection{Bootix µÄÔöÇ¿ÐÍ TFTP ËÅ·þÆ÷}

Bootix ËæÖø TCP/IP BootPROM Ò»Æð·¢ÐÐµÄÔöÇ¿ÐÍ TFTP ËÅ·þÆ÷,
¿ÉÒÔ´«ËÍÃ¿¸ö·â°ü´ï 1408 Î»Ôª×éµÄ×ÊÁÏÒÔÈ¡´úÔ­±ê×¼µÄ 512 Î»Ôª×é.
Õâ¸öÊÇ¸öºÜ°ôµÄ¹¦ÄÜÄãÓ¦¸Ã¶à¼ÓÀûÓÃ.
Õâ¸öËÅ·þÆ÷³ÌÊ½¿ÉÒÔÔÚ TCP/IP BootPROM ¹¤¾ß³ÌÊ½´ÅÆ¬ÖÐÕÒµ½, ÓÐ Solaris,
Windows ¼°  Netware NLM °æ±¾.




\subsection{Linux µÄÔöÇ¿ÐÍ TFTP ËÅ·þÆ÷}

ÔÚ Linux ÏÂ, ¿ÉÒÔÓÃ Bootix/Incom ËùÐ´µÄ TFTP ËÅ·þÆ÷.
¹© Linux Ê¹ÓÃµÄ°æ±¾ÒÑ±àÒëºÃ,. ·ÅÔÚÕâ
{\ttfamily \onlynameurl{http://cuiwww.unige.ch/info/pc/remote-boot/soft/incomtftpdlx.tar.gz}}




\subsection{Solaris µÄ TFTP ËÅ·þÆ÷}

Ô­Ê¼µÄ Solaris TFTP ËÅ·þÆ÷³ÌÊ½ÓÐÑÏ¸ñµÄµµ°¸´óÐ¡ÏÞÖÆ,
ÒòÎªËüÊÇÊ¹ÓÃ 16-Î»ÔªµÄÓÐºÅÕûÊýÀ´¼ÆËã·â°ü´óÐ¡.
Bootix ËùÌá¹©µÄ¸ø Solaris µÄÔöÇ¿ÐÍ TFTP ËÅ·þÆ÷, ¾Í¿ÉÒÔ½â¾öÕâ¸öÎÊÌâ,
ÒÔÌá¹©¸ü¿ìµÄ´«ÊäËÙ¶È.

²»¹ý, ²»·ÝÊ¹ÓÃÕß»ØÓ¦
(ÌØ±ðÊÇ´îÅä SMC9432 ¿¨Ê¹ÓÃÊ±) »áÔÚÆô¶¯ËüÊ±²úÉú lock-ups µÄÎÊÌâ.
ËùÒÔ, John Martin ({\ttfamily j.martin@abdn.ac.uk}) ÒÑ°Ñ Linux µÄ
{\ttfamily tftpd} ÒÆÖ³µ½ Solaris. Äã¿ÉÒÔÔÚÕâÕÒµ½ {\ttfamily \onlynameurl{http://www.csd.abdn.ac.uk/\~{}jmartin/tftpd.tar.gz}}.




\subsection{°²È«Õ¢µÀÆ÷}

ÎÒÃÇÐ´ÁËÒ»¸öÌØÊâµÄ TFTP ËÅ·þÆ÷ÓÃÀ´µ±³ÉÈÏÖ¤Ê¹ÓÃÕßµÄ°²È«Õ¢µÀÆ÷.
Õâ¸öËÅ·þÆ÷¿ÉÒÔÔÚ Linux »ò Solaris ÏÂÖ´ÐÐ, ²¢¿ÉÒÔÍ¸¹ý Unix µÄ Í¨ÐÐÃÜÂë×ÊÁÏ¿â
(NIS ¼° shadow Í¨ÐÐÃÜÂë¶¼ÒÑÄÜÖ§Ô®)
»ò Windows NT (»ò Samba) ËÅ·þÆ÷ »ò Radius ËÅ·þÆ÷.
Ëü·ÅÔÚÕâ {\ttfamily \onlynameurl{http://cuiwww.unige.ch/info/pc/remote-boot/soft/stdtpd.tar.gz}},
ÓÐÔ­Ê¼³ÌÊ½¼°Ô¤ÏÈ±àÒëºÃµÄ¿ÉÖ´ÐÐµµ.
Ô¤ÏÈ±àÒëºÃµÄ¿ÉÖ´ÐÐµµ²»°üº¬ NT Í¨ÐÐÃÜÂëµÄ¼ÓÃÜ¹¦ÄÜÒòÎªÎÒÃÇ²»ÄÜÉ¢²¼ {\ttfamily libdes}
¼´Ê¹ÓÐÂú¶àÈË±§Ô¹Ò²Ò»Ñù.

ÎªÁËÒªÊ¹ÓÃ°²È«Õ¢µÀÆ÷, ÄãÖ»Òª¶Ô {\itshape security domains\/} Éè¶¨µµ×÷Ò»Ð©Éè¶¨,
ÄÚÈÝÊÇÖ¸Ã¿¸öÂß¼­°²È«ÐÔÁìÓòÊÇ¶ÔÓ¦µ½ÄÄÒ»Ì¨ÈÏÖ¤ËÅ·þÆ÷
( {\ttfamily Unix} ÁìÓòÖ±½Ó¶ÔÓ¦µ½ Unix Í¨ÐÐÃÜÂë×ÊÁÏ¿âËÅ·þÆ÷). ÒÔÏÂÊÇÒ»¸öÉè¶¨¡õÀýµµ:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
#
# STFTPD Éè¶¨µµ
#
# Õâ¸öµµ°¸ÓÃÀ´ÐðÊöËÅ·þÆ÷µÄ "security domains".
# ÒÑÖ§Ô®Á½ÖÖÈÏÖ¤ËÅ·þÆ÷ : Radius »ò winnt (winnt °üº¬ NT ËÅ·þÆ÷ ºÍ Samba)
#
# Radius ËÅ·þÆ÷µÄÉè¶¨¸ñÊ½
# radius        <ÁìÓòÃû>        <ËÅ·þÆ÷ÍøÂ·Î»Ö·>         <secret>
#
# secret ÊÇÖ¸ÔÚÄãµÄ /etc/raddb/clients µµÀïÍ·µÄÃÜ×Ö×é
#
# SMB ËÅ·þÆ÷µÄÉè¶¨¸ñÊ½
# winnt         <ÁìÓòÃû>        <ËÅ·þÆ÷ÍøÂ·Î»Ö·>         <netbiosname>
#
# netbiosname ÊÇÖ¸ËÅ·þÆ÷µÄ NETBIOS Ê¶±ðÃû³Æ
#
# ¡õÀý
radius         sec-dom-rad     radiusserver    testing123
winnt          sec-dom-nt1     192.168.1.1     NTserver1
winnt          sec-dom-smb     samba           SAMBA1
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}

¼Ç×¡ Èç¹ûÄãÊ¹ÓÃÁË Samba, Äã±ØÐëÉè¶¨ {\ttfamily security = user}.

ÄãÒ²¿ÉÒÔÌá¹©Ò»¸öÄÄÐ©Ê¹ÓÃÕß½ûÖ¹µÇÈë (»áÊ¹ËûÃÇµÄÎÞ·¨Í¨¹ý¼ì²é)
µÄÁÐ±í¸ø°²È«ÈÏÖ¤ËÅ·þÆ÷.




\subsection{¹ã²¥ÐÍ TFTP ËÅ·þÆ÷}

ÎÒÃÇ×«Ð´ÁËÒ»¸öÌØÊâÐÍ TFTP ËÅ·þÆ÷ÒÔÊµÏÖ×Ô¶©µÄ TFTP ¹ã²¥¹¦ÄÜ. ÓÃÕâÖÖËÅ·þÆ÷,
ÎÒÃÇ¿ÉÒÔÔÚ¸ß¸ºÔØµÄ 10 Mb ÒÒÌ«ÍøÂ·»·¾³ÏÂ,
ÒÔ 6 Mb/s µÄ´«ÊäÂÊÏÂÔØÓ³Ïñµµµ½ 25 Ì¨ÓÃ»§¶ËµçÄÔ
(Õâ±È´«Í³µÄ TFTP ´«ÊäÐ­¶¨À´µÃÓÐÐ§ÂÊ¶àÁË,
ÒòÎªËüÍêÈ«²»ÐëÒª¶ÔÃ¿¸ö·â°ü¶¼×öÒ»´ÎÒÑÊÕµ½µÄ»ØÓ¦).
ÕâÖÖËÅ·þÆ÷³ÌÊ½¿ÉÒÔÔÚ Linux »ò Solaris »·¾³ÏÂÖ´ÐÐ.
¿ÉÒÔÔÚÕâÈ¡ÓÃ {\ttfamily \onlynameurl{http://cuiwww.unige.ch/info/pc/remote-boot/soft/btdtpd.tar.gz}},
º¬Ô­Ê¼³ÌÊ½Âë¼°ÒÔ±àÒëºÃµÄ¿ÉÖ´ÐÐµµ.

ÒòÎª TCP/IP BootPROM ±¾Éí²»Ö§Ô®ÕâÖÖÍ¨Ñ¶Ð­¶¨,
ÎÒÃÇµÄ½â¾ö·½·¨ÊÇÒÔÒ»¸ö¼«Ð¡µÄ ramdisk Îª»ù´¡µÄ Linux ÏµÍ³¿ª»ú,
È»ááÔÙ´îÅä±¾ÎÄËùÌ¸µ½µÄ¹¤¾ß³ÌÊ½: Linux °æ±¾µÄ MrBatch,
Ëü±¾Éí¾ÍÄÚ½¨Ö§Ô®¹ã²¥ÐÍ TFTP Í¨Ñ¶Ð­¶¨ÁË.
Ò»¸ö¼òÒ×µÄÅú´Îµµ¿ÉÒÔÍ¬Ê±Ê¹ËùÓÐµÄÓÃ»§¶ËµçÄÔÔÚ¼¸·ÖÖÓÄÚÏÂÔØÍêËùÓÐµÄµµ°¸.
ÒªÊ¹ÓÃÕâ¸ö¹¦ÄÜÄã²¢²»ÐèÒª×ÔÐÐ°²×° Linux, ³ý·ÇÄãÓÐÏàµ±ÆæÌØµÄÓ²ÌåÅä±¸,
ÒÔÖÂÎÞ·¨Ö±½ÓÊ¹ÓÃÕâ¸öÌ×¼þËùÌá¹©µÄ Kernel.

³ÌÐòÈçÏÂ. Ê×ÏÈÄãÒªÊÖ¶¯Æô¶¯¹ã²¥ÐÍËÅ·þÆ÷,
²¢¸ø¶¨²ÎÊýÒÔÉè¶¨Ô¤ÆÚÒª¿ª»úµÄÓÃ»§¶ËµçÄÔÊýÁ¿ (¼Ç×¡, Õâ¸ö³ÌÐò²»ÐèÒªÌìÌì×ö.
Ö»ÓÐÔÚÄã±ä¸üÁËÓ³ÏñµµÄÚÈÝáá,
ÏëÈ·¶¨Ëü¿ÉÒÔÖ±½ÓÔØÈëµ½ÄãËùÓÐµÄÓÃ»§¶ËµçÄÔÊ±²ÅÒªÓÃµ½). ½ÓÖø,
Äã°ÑËùÓÐµÄÓÃ»§¶ËµçÄÔ¶¼´ò¿ª, ËûÃÇ¾Í»áÖ´ÐÐÏÂÁÐµÄ BpBatch ½Å±¾³ÌÐò:
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
#
# Õâ¸öÅú´ÎµµÊÇÓÉ BpBatch ËùÖ´ÐÐ, ÓÃÒÔÆô¶¯Ò»¸ö ÄÚ½¨ ramdisk µÄ mini-linux,
# È»ááÔÚ´Ë Linux »·¾³ÏÂÖ´ÐÐ MrBatch.
#
# ¹ã²¥ÐÍ TFTP Í¨Ñ¶Ð­¶¨Ö»ÄÜÔÚ Linux °æ±¾µÄ MrBatch ×÷¶¯, ÒòÎª BootPROM ±¾Éí²»Ö§Ô®.
#
# 1. Éè¶¨Ò»¸ö¼«Ð¡µÄ·Ö¸îÇø, ÓÃÀ´µ±¿ìÈ¡.
setpartitions "BIGDOS:50"
# 2. ÇåÀí MBR.
clean 0
# 3. Ö´ÐÐÒ»¸ö¾ß initrd (Initial Ramdisk) Ö§Ô®µÄ Linux Kernel, ²¢ÓÃ
#    bcastrd.gz Îª ³õÊ¼ ramdisk (½«»á±»¹ÒÔÚ root ²¢Í¸¹ý /linuxrc Ö´ÐÐ).
#    ²Î¿¼ initrd.txt ÒÔ»ñµÃ¸ü¶à¹Øì¶ ³õÊ¼ ramdisk µÄÏêÏ¸×ÊÁÏ.
#    Äã²»ÐèÒªÈ¥Éè¶¨ root ×°ÖÃ (µÚ¶þ¸ö²ÎÊýÊÇÎÞÓÃµÄ) µ½ Kernel,
#    Ëü»á×ÔÐÐÊ¹ÓÃ ³õÊ¼ ramdisk.
linuxboot "linux.krn" "" "bcastrd.gz"
# 4. ³õÊ¼ ramdisk »áÖ´ÐÐ dhcpd ÒÔÍ¸¹ý DHCP Í¨Ñ¶Ð­¶¨À´Éè¶¨ÍøÂ·.
#    ½ÓÖøËü»áÖ´ÐÐ mrbatch -w bcastlx
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}

³õÊ¼ ramdisk ÄÚº¬:
\begin{itemize}
\item {\ttfamily dhcpcd}, Ò»¸ö DHCP ÓÃ»§¶Ë³ÌÊ½ÓÃÀ´Éè¶¨ÍøÂ·.
\item {\ttfamily mrbatch}
\item {\ttfamily linuxrc}, Ò»¸ö»á±» initrd Æô¶¯µÄµµ°¸, ÓÃÀ´ÑÓÐøÆô¶¯
{\ttfamily dhcpd} ¼°Ö®ááÒªÓÃµÄ {\ttfamily MrBatch}.
\item {\ttfamily usr/lib/terminfo/l/linux}, ÓÉ MrBatch ËùÊ¹ÓÃ.
\item {\ttfamily dev/*}, Ö´ÐÐ Linux ¼° MrBatch ËùÐèµÄ×°ÖÃ.
\end{itemize}

ËùÓÐµÄ³ÌÊ½¶¼È¥Îß´æÝ¼²¢±àÒë³É¾²Ì¬Á¬½á, ÒÔ±ÜÃâÊ¹ÓÃµ½ {\ttfamily libc.so}
ÒòÎªËüÕæµÄºÜ´ó. ×îááÒÔ Gzip Ñ¹ËõµÄ ramdisk ´óÐ¡µÍì¶ 300 KB.
¶ø Kernel ±¾ÉíÓÃµô 450KB (²¢Ö§Ô®¶àÊýµÄÍøÂ·¿¨¼° initrd ).
µ± Linux Ò»Æô¶¯Ö´ÐÐ, MrBatch »á±»½ÐÓÃ²¢ÒÀÏÂÁÐµÄ½Å±¾³ÌÐòÀ´¹¤×÷
(ÄãÒ²¿ÉÒÔ¸ù¾ÝÄãËùÐèÀ´ÐÞ¸Ä):
\begin{tscreen}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
# Õâ¸öµµ°¸ÊÇÔÚ MrBatch ì¶ ³õÊ¼ ramdisk bcastrd.gz Æô¶¯ááÖ´ÐÐ
# ËûÖ÷ÒªµÄ¹¦ÓÃÊÇ "²É¹ã²¥µÄ·½Ê½¸´ÖÆ" µµ°¸µ½¿ìÈ¡ÀïÍ·
#
# 1. ¿´¿´ÏêÏ¸×ÊÑ¶.
showlog
# 2. ²»ÐèÒª "press a key".
set pauselog="OFF"
# 3. Éè¶¨·Ö¸îÇøÎªËûÃÇ×îÖÕÖµ.
#    ÖØµã: µ±ÄãÒª¸´ÖÆµµ°¸µ½¿ìÈ¡ÇøÒÔ¹©ÒÔááµÄ¿ª»úÊ¹ÓÃÊ±,
#    ÄãÐèÒªÔÚÒÔááËùÓÃµ½¿ª»úÉè¶¨¶¼²ÉÓÃÒ»ÑùµÄ·Ö¸îÇø.
setpartitions "BIGDOS:1024"
# 4. ÇåÀí ¿ìÈ¡·Ö¸îÇø.
clean -1
# 5. Í¸¹ý ¹ã²¥ÐÍ TFTP Í¨Ñ¶Ð­¶¨ (²ººÅ 99) , ¸´ÖÆµµ°¸µ½¿ìÈ¡Çø.
#
# Äã¿ÉÒÔÕÕÎÒÃÇËùÐ´µÄ½Å±¾³ÌÐòÀ´ÓÃ, µ«Äã°Ù·ÖÖ®°ÙÈ·¶¨ÐèÒªÐÞ¸ÄÏÂÃæÕâÒ»ÐÐ !
# ÔÚÎÒÃÇµÄ¡õÀýÏÂ, ÎÒÃÇÏÂÔØµÄµµ°¸ÊÇ mblinux.imz, ËüÊÇÎÒÃÇ°²×°µÄ Linux µÄÓ³Ïñµµ.
copy "$BOOTP-Server-IP@99:mblinux.imz" "{:-1}mblinux.imz"
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}
\end{tscreen}

Èç¹û´«ÊäÍê³É,
ÄãÖ»ÐëÒª¹ØµôËùÓÐÓÃ»§¶ËµçÄÔ²¢°ÑËüÃÇµÄ³õÊ¼¿ª»ú³ÌÐò½Å±¾Éè¶¨³ÉÄãËùÏ²ºÅµÄÑ¡µ¥.



\end{document}
