置顶帖子的译文

看了置顶帖子,正好手头有它的译文,是以前在一个台湾站点上的。我看这里没有翻译过来的版本,所以转出来,不知道译者的大名,不好意思了。

首先, {整C器位置使手有下列商C器:

伺服器, 我是用一台 Unix 主C或 Windows NT.
用舳, 一台已 BootPROM 的人X, 硬碟炔灰兄匾Y料.
如果你想要y您的MBO定而您]有 BootPROM, 你可以到 bootix.com 下dy版磁片. @磁片可以使您的X就好像是插上 TCP/IP BootPROM 一般.
如果你已有 Boot ROM, 你要先铀. 如果您使用 Bootix 的 TCP/IP BootPROM, 你可以用W路卡u造商所提供的特殊程式⒂盟. 如果你用 PXE BootPROM, 你只要由 BIOS O定, 改AO的_Cb置 (default boot device) 就可以了.

W生所使用的X, 我O定由W路_C, 而不能透^硬碟及碟_C. 助教的X, 我O定先由W路_C, 但也允S硬碟c碟_C.

4.1 伺服器端的O定
在伺服器端, 只需要下列的服:

一 BOOTP/DHCP 伺服器.
或S也要一 Proxy DHCP 伺服器.
一 TFTP 伺服器.
使用 PXE Boot ROM 必注意: 你要_定是使用最新版的 PXE. 在本文的r候, 最新的版本是 PXE 2.0 但 PXE 0.99x bootrom 也支援, 不^有部份的 DHCP x⒉高^ DHCP 伺服器送出. 特e是, 如果 DHCP x 135 BpBatch 失效 (BpBatch 於r, @示 “Cannot load file”), 你就要升到 PXE 2.0 . 如果你的W路卡凫 Intel EPRO100 族系, 你可以取得最新的 Intel PXE Product Development Kit (PDK) u估版, 它包含一用砀 BootPROM 的快Ww工具程式. @ PDK 放在 developer.intel.com/ial/wfm/tool … /index.htm.

O定 DHCP 伺服器
DHCP 伺服器所伴演的角色是魉 IP 位址o用舳K它自 TFTP 伺服器下d, 名 bpbatch.P 的n案. DHCP 是重B於 BOOTP 的通f定. 如果你用 Bootix 的 TCP/IP BootPROM, 你可以不用 DHCP 伺服器 (用f的 BOOTP 伺服器).

在 Windows NT, 你也需要似的原生 DHCP 伺服器. 如果你用 Bootix 的 TCP/IP BootPROM, 你t要用一小技巧矶x可_Cn的n名 (可由 Bootix 的 WWW W@得更多Y). 如果你用 PXE BootPROM, 你需要一用 DHCP x 67 定x可_Cn的n名. 要O定 VendorClass (DHCP x 60) “PXEClient” 及 VendorOptions (DHCP x 43) 01,04,00,00,00,00,ff (⒖枷挛).

在 Linux, 最佳的x袷碜 WHW路wf (Internet Software Consortium) 的 DHCP 伺服器. 如果你用 PXE BootPROM, t在常的O定外, 你要多加下面O定:

option dhcp-class-identifier “PXEClient”.
option vendor-encapsulated-options 01:04:00:00:00:00:ff;.
如果你使用 ISC DHCP 3.0, tZ法上有些微出入. 以下是 DHCP 3.0 相容的O定n:

DHCP ISC 3.0 & BpBatch 用的 DHCP O定n

全域x

option subnet-mask 255.255.255.0;
default-lease-time -1;

定x PXE 的x

Code 1: 指到_Cn所在位置C器的 IP 位址

Code 2: 用舳穗XO控 MTFTP 回 UDP 埠

Code 3: MTFTP 伺服器用肀O MTFTP 回 UDP 埠

Code 4: 用舳穗X在著右新的 MTFTP 鬏之前的等待秒

Code 5: 用舳穗X在著重新右新的 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;

子W域的x

subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;

主C的x

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 == 交式
# 你也可以定x一_本程式n名 (不要把副n名 .bpb M去)
option option-135 “-i”;
# PXE 的x
class “pxeclients”
{
match if substring (option vendor-class-identifier, 0, 9) =
“PXEClient”;
option vendor-class-identifier “PXEClient”;
# 至少O定一 vendor-specific x.
# 我O定 MCAST IP 位址 0.0.0.0 也就告V BootPROM ^m使用
# TFTP 通f定 (位址 0.0.0.0 意^著 “]有位址”)
option PXE.mtftp-ip 0.0.0.0;
vendor-option-space PXE;
}
}
}

在 Solaris 上, 你依然可以使用 WHW路wf 的 DHCP 伺服器 (可以在 Web 上找到), 或使用 Solaris 的 DHCP 伺服器 (Solaris 2.5 版以後都有附). 然而, 用 Solaris DHCP 伺服器似乎o法在 DHCP O定中提供, 用纛e的辨Ra. 你必安b一 Proxy DHCP 伺服器. 不^, @ Proxy DHCP 伺服器必安b在另一台X上, 因 Solaris DHCP 伺服器i住 DHCP 埠.

我建h您O定用舳穗X的 DHCP o限制的使用L期. e忘了 BOOTP/DHCP 的要求受限於子W域魉. 如果用舳伺c伺服器不在同一子W域你就必安b一 BOOTP/DHCP Relay 代理程式在子W域之g. 但F在, 先假O商C器都在同一子W域.

如果您使用 PXE 2.0 BootPROM, 您只能使用 site-specific x第 128 至 135 以鬟f息o BpBatch. 大於 135 的x PXE 2.0 BootPROM 忽略掉. x 135 用鬟f BpBatch 的命令列. 所以你有 6 x可以用碜杂.

O定 Proxy DHCP 伺服器
Proxy DHCP 伺服器所伴演的角色是用砜朔 DHCP 伺服器的限制K提供 PXE 的延伸息. Proxy DHCP 伺服器只榱伺c PXE BootPROM 搭配使用. 因此, Proxy DHCP 伺服器不是必要的. 如果你的 DHCP 伺服器能回 PXE BootPROM 要求的x, t PXE BootPROM 就不ふ Proxy DHCP 伺服器 (aka BINL). 而我所f的 “所有 PXE BootPROM 要求的x”, 是指 IP x (IP 位址, l道器, 子W域, 主C名,…) 以及 PXE vendor-specific x (vendor-class – x 60 – 用以O定 “PXEClient” 而 vendor-encapsulated-options O定一些有意x的Yo PXE BootPROM. 你可以用 01:04:00:00:00:00:ff 如果你不知道 PXE BootPROM 而言那一Y是有意x的). 更完整的⑹稣看下面的f明.

BpBatch 本身功能就很完整, 你不使用任何 PXE 的 DHCP 延伸 (x, 等.). 然而, 如果您的 DHCP 伺服器不能提供最低限度的 PXE 相容, t您就需要一台 Proxy DHCP 伺服器, 否t您的 PXE BootPROM o法^m使用. 最低限度的相容, 是指允SO定 VendorClass 及 VendorOptions (x 60 及 43 ).

在 Windows NT 下, 您可以著用 Intel WfM PDK (可在他的W找到), 但它K不容易操作. 我建h您找一台在子W域中, 跑 Linux 的C器安b我的小型 Proxy DHCP 伺服器. 我的 Proxy DHCP 伺服器 BpBatch 的最大c是, 你可以自x 155 vendor 嘶` BpBatch 解槊.

在 Linux 及 Solaris 下, 您可以使用我的 Proxy DHCP 伺服器程式, 你只需O定好 TFTP 伺服器的 IP 位址, 可_Cnn名及其它附加, 就可以完成所有的工作. 如果在伺服器上的 DHCP 通埠已被其它伺服程式使用, t Proxy DHCP 伺服器脑 4011 埠上绦. 在@Nr下, 使用 DHCP 通埠的程式必回 PXEClinet o client class. @ PXE 用舳瞬酪ピ著在 4011 埠上通B.

如果你想更了解 PXE DHCP 的延伸功能, 可以在 Intel 的W上找到更多f明. 但是@些文章有c怪怪的, @通f定竟然O定在~外的位置a上, 用以得到更大的性. @}唯一的解是 PXE 用舳诵枰暾 增型的 DHCP 回. 如果它只收到实 DHCP 要求, 它恢钡鹊绞盏讲磐W.

一 client class (T60) O定 PXEClient.
vendor encapsulated options (T43). (不可以是空的字串, 但你可以O 16 M制的 01:04:00:00:00:00, @可以被 PXE BootPROM 所接受)
一非空白的可_Cnn名.
一有效的主C名.
PXE f{的工作谒械馁Y都取得後才Y束, 如果缺了某一部份的Y, ⒁l相}s的作I程序 (ふ野惭b伺服器, 等}.).

O定 TFTP 伺服器
TFTP 伺服器是相蔚n案伺服器. 最基本的版本中, TFTP 通f定乃是裼妹^K 512 位元M, @作法相]效率. Bootix 的 TCP/IP BootPROM 及 PXE BootPROM 允S使用^大的^K魉 (1408 位元M), 此法可以大幅加速鬏速度. 但, @只能在增型的 TFTP 伺服器上工作.

在 Windows NT h境下, 我建h裼 Intel 的 TFTP 伺服器, 可以在 Intel PXE Product Development Kit for Windows 找到. 你可以在@找到@ PDK developer.intel.com/ial/wfm/tool … /index.htm. O重要的}: 如果你在 Windows NT 上使用 Intel 的 TFTP 伺服器, e忘必重新命名你的 BpBatch d入器名Q, 由 bpbatch.P 改 bpbatch.B. @⒏嬷 BpBatch 裼门c Intel 相容的 TFTP x.

Intel 的 PXE PDK 包含了u估版的 PXE BootPROM 程式a, o Intel 的 EPRO100 族系W路卡使用, 亦包含了用砀驴扉Ww的工具程式以升 BootPROM 热樽钚掳娴 PXE.

在 Linux h境下, 你可以使用大部份套件中所含的 tftp daemon, 但不具湓的 TFTP 模式 (1408 位元M的封包). 我建h使用 Bootix 的增型 TFTP 伺服器, 可以在我的目下找到 ( cuiwww.unige.ch/info/pc/remote-boot/soft/), n名 incomtftpdlx.tar.gz.

在 Solaris h境下, 你可以使用 Bootix 增型 TFTP 伺服器, 也可以在我的目下找到 (n名 incomtftpdsun.tar.gz). 另一N可用的x: John Martin (csd.abdn.ac.uk/~jmartin/tftpd.tar.gz.

如果你^喜g使用实 TFTP 伺服器, 把所有可_C映像nn名的副n名 P 拿掉, @涌梢愿嬷 BootPROM 裼实 TFTP 通埠通. (@小技巧是 Bootix o TCP/IP BootPROM 使用. 我也可以用@蔚姆椒磉x耦AO的 TFTP 通埠o PXE BootPROM 使用).

摘要碚f, 如果你使用实 TFTP 伺服器, t把 BpBatch d入器n名的副n名 移去 (也就是改 bpbatch). 如果你使用 Bootix 支援在 59 埠, 以 1408 位元M封包的 TFTP 伺服器, t你的d入器n名必有副n名 .P . 最後, 如果你使用 Intel 的 TFTP 伺服器 (或 Bootware 的那伺服器), t把d入器命名 bpbatch.B.

4.2 用舳说脑O定
首先, 我把所有作I系y相同的部份O定好. 如: 批次n的解g器. 然後, 再Ω鞣N作I系y硗瓿, 我需要下列的步E:

O定我坏挠舳.
Υ嫫湓O定到伺服器.
y它是否可以檫h端_C的用舳穗X所使用.
{整它的O定以m用於其他硬w配漕似的用舳C器.
如果@些都完成了, 你要加一台用舳, t只要插上 Boot ROM (或I台具 Wired for Management 的X…) 然後再加一行O定到 DHCP 伺服器的O定n. g]: Wired for Management 是指本身具 PXE 功能的品牌X.
我的例是假O你的用舳穗X的硬碟空g至少有 1.4 G 以上. 如果低於@值, 那就要s小分割^, 但住你要保留百 MB 空g不被 (也就是, 不要B最後一分割^都已分到最後一磁柱) 以保留空go特e的快取分割^. 然而, 快取^通常接在最後一降拇胖_始, 如果你不想用相同大小碜y, 你⑾螺d同拥n案荡 (快取^蛔忧宄).

e灰心. 如果你一直o法它正常工作, 先⒖ }集 那一, 搞不好你的}已被解Q^了 (自W取得最新版本). 再不行, 查一下 BpBatch ^. 或S有人跟你遇到同拥}, 而解答可以在^找到. ^的W址是: support@bpbatch.org. 如果你的}ch端_C的O定有密切PS, 我著解Q你的}.

4.3 O定_C流程
取得 BpBatch w, 不管是 .zip 或 .tar.gz 格式. 可绦n都放在

cuiwww.unige.ch/info/pc/remote-b … pb-exe.zip.
cuiwww.unige.ch/info/pc/remote-b … exe.tar.gz.
在伺服器上的 /tftpboot 目下, 放入下面三特e的可_C映像n. 他是用硗瓿砷_C前的批次n案解g功能 (下面我用 bpbatch.P 檩d入器的n名. 如果你不是用 Bootix 的 TFTP 伺服器, t更d入器n名 bpbatch (市 TFTP 伺服器) 或 bpbatch.B (Intel/Bootware 的 TFTP 伺服器):

bpbatch.P, Bd入器 (注意大小K⒖ O定 TFTP 伺服器那, 以x襁m的附n名).
bpbatch.ovl, 中嘀n
bpbatch.hlp, 上f明n
然後槟愕挠舳思右恍 DHCP 的O定工作, 其中: 可_Cnn名O定 “bpbatch.P”. 定x vendor x嘶` 155 (十M制) “-i” (在市偷 DHCP 伺服器, 可以用以下的指令完成: option option-155 “-i”;). 它 bpbatch 解槊盍, 而 -i 意^著 “交模式”.
佑舳穗X. 你看到

BootPROM 的版嘈.
用舳嗽诘却 DHCP 回r, 霈F DHCP 字串.
用舳嗽诘却谝 TFTP 封包r, 霈F TFTP 字串.
d入器下d解g器r, 霈F Loading BpBatch 字串.
最後是我的旗, S著一 O大的 提示符.
恭喜 ! 你以恿伺n解g器… 如果你很急於知道在@h境下你可以做舍事, 那就^mx下一. 如果你不急, 跳^它直接安b你所x竦淖I系y. 如果你有任何P於解g器指令的疑, 入 help.
住你可以在 DOS 及 Linux 下绦邢嗤慕庾g器, 只要绦 MrBatch 程式. 只有一cc的差 (Linux 版本不支援D形化的功能, 而 DOS 版本如果在 BootPROM 未被作I系y[藏之前, 只能送出 BOOTP 及 TFTP 的要求).

F在是x BpBatch Z法 的r候了, 尤其是 ⒖n案 及 快取n案系y @啥. @助你了解例.

所有的作I系y都O定好, 你要u作一x巫使用者去x袼氖悄囊环N作I系y. 你可自行探究如何去a生那Nx. 而所需的指令都在本文末端.

探 BpBatch
著入 LogVars. 你可以看到大s三十当涣谐. 概括碚f, 先出F BpBatch 的翟O定, 然後是自 BOOTP/DHCP 通f定取得的回, 最後是硬碟大小的, 以百f位元M挝.

入 GetPartitions part, 再入 LogVars 一次. 就看到在你第一硬碟C鹊姆指^定xY. 假O第一分割^有 BIGDOS, FAT32 或 LINUX-EXT2, 著打 LogDir “{:1}” 以取得根目的热, 然後入 LogDir “{:1}/usr” 如果有 usr 目的. 你也可以著打 LogTree “{:1}/etc” 以取得钅夸.

放一 GIF n (格式是 GIF-87a, 交e或非交e的都行, 但不可是 GIF-89a) 到你的 TFTP 伺服器. 我假On名是 image.gif. 你可以用下列的指令把它}u到任何地方: copy “image.gif” “{:1}/temp/image.gif”. 或者, 你可以自伺服器上直接使用. F在入 Logvars “V*” Kz VESA 抵. 如果它@示 On, 那就相可能意^著, 你的@示卡有 VESA相容的功能. 你可以用 Echo “$VESA-Modes” 列出有效的@示模式. 要秀出你的Dn只要著入以下的指令: DrawGif “image.gif”. @Dn@示在幕左上角. 你可以在n名後硕 X 及 Y S, 把它[在其他地方. 你也可以用 DrawText 200 200 “Hello world” yellow 出文字. 或用 DrawWindow 200 200 300 150 出一空的窗. 而要在a生新窗r插入主}, 可以著用 DrawWindow 200 200 300 150 “My Window”. 如果你D形化模式感到┲灰 CloseGraph.

在D形化模式下要注意: AO情r下, 所有的D形功能在 800x600 VESA 模式下工作 (有 256 色A), @是在 VESA-Modes 迪碌牡谝谖. 如果你要使用不同的@示模式, t更第一谖槟闼娘@示模式.

F在用文字器, 在 tftpboot 目下, 建一名 test.bpb 的n案热菔:


: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


在你的 BOOTP/DHCP 伺服器的O定n中, 更 x-155 由 “-i” “test”, K把用舳穗X重新_C. @小型的_本程序可以自绦, K你的使用者名Q (username) 及判行密a (password). 如果你不入 smith 及 justdoit, 你就不能使X_C. 接著你W得如何用 Unix, NT 或 Radius 伺服器以辨C有效的使用者.

4.4 O定 Linux
榱税惭b Linux, 你需要 RedHat Linux 套件所提供的可_C碟. BpBatch 含有一可以指向碟_C的指令: FloppyBoot.

安b RedHat Linux 到你的用舳穗X, 必需具渚W路支援功能. 以及你所需要的套件w. 你或S需要重新g一 Kernel 以合於你的硬w配, 但@不是必需的.

O定用舳穗X
在 Kernel 中加入 BOOTP 通f定的支援且好主意, @幽憔筒挥檬尤ピO定用舳说 IP 位址.

榱私档途W路d, 你安b file cache 以快取由 NFS 所d入的n案到硬碟中. 蔚恼f, file cache 的功能是有碜 cache 子目下的符BY形成r, 它凰哪怂〈. 如果目吮旧硎亲幽夸, t在子目下的所有|西都成符BY, K指向外在n案系y的原始Y料. @ file cache 由 Unifix GmbH 所, 已成 Unifix Linux 2.0 的一部份. 它可以自由散布, 你可以在 cuiwww.unige.ch/info/pc/remote-b … che.tar.gz 取得必要的n案. 榱耸褂眠@ file cache, 你必要

Kernel 加入一些修正 (n案是 patch-filecache), 透^ make config 或你所喜g的方式⒂眠@功能, K重新g kernel.
}u file cache 的可绦n到 /sbin.
建一可以焐系狞c叫 /mnt/nfs (使用 mkdir 指令).
}u filecache.conf 到 /etc. 此n的热莅韵行:
Max 100 MB 50 % #
Cache /mnt/nfs/usr /usr
Cache /mnt/nfs/opt /opt

}u /usr 及 /opt 鹊馁Y料到伺服器, 以 anon=0 (允Sroot 存取) O定槲ㄗx傩缘姆窒K把它煸 /mnt/nfs 下 (加入一行到 /etc/fstab)
更名 /usr /usr.orig.
建立BY /usr 指到 /mnt/nfs/usr.
更名 /opt /opt.orig.
建立BY /opt 指到 /mnt/nfs/opt.
_定 /usr 及 /opt 目不是空的K包含正_的目Y料.
以f的方式移除 /usr.orig 及 /opt.orig.
}u filecache.init 到 /etc/rc.d/init.d.
最後建立BY /etc/rc.d/rc3.d/S35filecache 指到 /etc/rc.d/init.d/filecache.init.
如果你完成上述的步E, 你在下次_Cr已具 file cache 功能, 只要你]忘修正你的 Kernel.

yO定n
}u你的嚎s Kernel 映像n (zImage, bzImage, vmlinuz 或其它的命名) 到伺服器的 /tftpboot 目下, 更名 linux.krn. 如果你已把 BootPROM 你的 PC 拔起砹, 那F在必重插回去. BpBatch , 入 LinuxBoot “linux.krn” “root=/dev/hda1 BOOT_IMAGE=linux” (假O 根的 ext2 n案系y在第一分割^). 另一Nr, 如果你要在o BootPROM 的X上O定你的MB, 只要用你所安b的d入器 (lilo, …) 黹_C就可以. 但在後面的情r下, 如果你要使 file cache 正常工作, 你就必把 file cache 的支援功能正_的安b到你的 Kernel.

等到系y_C完成. 如果你已安b file cache, 你可以z查 /usr 目下, 已直接成一些目型式的符BY到已分好的目. F在邮褂谜叱S玫某淌, 他把所需的Y料d到硬碟中.

你可以{整你的O定, 它更像其他立\作的 Linux 工作站.

建立磁碟映像n
你X得你的O定用起砗馨袅, 就可以用 root 登入, K到 /tmp 目下, 绦形的 mrzip 程式. MrZip 是一像 BpBatch 的命令解g器, 但它可以了解比 BpBatch 更多的命令. 特e是, 它可以了解下列的命令:


showlog
filter -“tmp/"
filter -"var/log/

fullzip “/” “/tmp/linux.imz”


@a生一磁碟映像n到 /tmp/linux.imz. 把它移到伺服器的 /tftpboot 目下. 然後}u下列的批次绦n到 /tftpboot/linux.bpb:


hidelog
setpartitions “linux-ext2:992 linux-swap:32”
fullunzip “linux.imz” 1
clean 2
linuxboot “linux.krn” “root=/dev/hda1 BOOT_IMAGE=linux”


@ BOOT_IMAGE 凳怯肀硎鞠嗳蒽 RedHat 5.1 的 lilo 及之後的 rc.sysinit.

你的 Linux h端_CO定MB已就m! 你F在只要O定 BOOTP-option-155 “linux”, 或在 BpBatch 下入 include “linux.bpb” 就可以y它了.

系ySoc升
如果你以後要更新w, 安b程式臭x修正或安全性的修正, 沓绦蛉缦:

以h端_C方式右惶ㄓ舳穗X以得到一全新的 Linux.
完成你需要的改.
重u磁碟映像n.
}u新的磁碟映像n到伺服器以取代f的.
@就意^著, 你可以就像在使用一台普通的X一砀履愕乃欧榛A的MBO定.

4.5 O定 DOS 6 及 Windows 3.1
到用舳穗X上, 用你所喜好的 DOS 磁片_C (可以移去 BootPROM 或在 BpBatch h境下, 入 FloppyBoot ). 用 /S x, 格式化磁碟中的 DOS 分割^, 以安b作I系y. 分割^的大小K不重要. 因橐 MrZip a生磁碟映像n案r, 是以n案碚J定的. 而c分割^大小oP.

建一 DOS 子目, 把 DOS }uM去. 安b你所喜好的W路用舳塑w (比如 Microsoft LanManager), Windows 3.1, 及其他你要的程式. 如果你要用 Microsoft LanManager, 千fe使用它的 DHCP 通f定斫MB IP O定, 因樗作方法相, 在正常的W路d下, 也^τ锌赡苁. 但要得到相同效果, 可以加入以下行到 protocol.ref n, 在d入 tcptsr 的同r (它 xxx 以你o定的真_ IP 抵等〈):

    IPADDRESS0 = xxx xxx xxx xxx
    SUBNETMASK0 = 255 255 xxx xxx
    DEFAULTGATEWAY0 = xxx xxx xxx xxx
    DISABLEDHCP = 1

不用怕使用 EMM386 最佳化您所使用的w, 您可以把W路卡 ROM 所椎^域{入管理, 因樗谶@r已用不到了. 但要得把W路卡所使用的 RAM ^K不{入管理, 否t您o法B接到您的伺服器. 用 NOEMS .

如果你要_J用舳穗X只允S已J可的使用者所使用, 可以把我的 nobreak Mb置映淌 (可在@下d cuiwww.unige.ch/info/pc/remote-b … obreak.zip) 放在您 config.sys n的_^, K把以下@些|西放到您的 autoexec.bat:


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


重_C, _J你的用舳穗X一切正常, K著在 BpBatch 的交模式下入以下指令:

    HideBootprom
    HdBoot

如果你]看到 BpBatch t PC 裼糜驳黹_C.

建立磁碟映像n
回到伺服器上, 建立一分享名Q admin 的目, 用矸乓恍┫到y管理者用的||. 如果伺服器是跑 Unix, 建h您把 /tftpboot 子目用式BY方式放一份到 admin 目, @幽梢灾苯佑捎舳骰亻_C映像n. 在 admin 目, 建一 /utils 子目K放入如下的工具:

mrbatch.exe, DOS 版的 BpBatch.
mrzip.exe, DOS 版的工具程式用斫⒋诺诚n.
bpbatch.hlp, 上f明n.
您也需要放一些便的 MrZip _本程序n名 zipdos.mrz 的n案, 群斫 DOS 磁碟映像n的指令, 就像下面@:


showlog
filter -“lanman.dos/lmuser.ini”
filter -“temp/"
filter -"
.swp”
fullzip “c:/” “L:/tftpboot/dos.imz”


F在回到你的用舳穗X, 把 admin 斓 L:, 到你的 utils 子目下, 入以下指令:

    mrzip -b zipdos

一分之後, 你谒欧鞯 /tftpboot 子目下看到一名 dos.imz 的n案, 它就是你用舳穗X硬碟的嚎s磁碟映像n. 把以下的批次n热菅}u到 /tftpboot/dos.bpb:


hidelog
setpartitions “bigdos:1024”
setbootpart 1
fullunzip “dos.imz” 1
hideBootprom
hdboot :1


你的 DOS h端_CO定MB已就m ! 你F在只要O定 BOOTP-option-155 “dos”, 或在 BpBatch 下入 include “dos.bpb” 就可以y它了.

{整O定以m用其他C器
如果你要δ骋恍C器做一些特定的O定, 最典型的是 IP 位址值的O定不^因 Micro$oft 的 DHCP 做的很, 你可以用 BpBatch 在_Cr做一些修正. 首先到 lanman.dos 目下K绦

    copy *.ini *.ref

接著副n名 .ref n案, 把所有固定的涤 BOOTP 的等〈, 下面是例:
computername = ${BOOTP-Host-Name}
ipaddress0 = ${MS-IPAddress}
subnetmask0 = ${MS-IPSubnet}
defaultgateway = ${MS-IPRouter}

接著用先前的方式重建磁碟映像n. 注意一下 IP , 我不能直接使用 BOOTP 到o LanManager 使用, 因樗枰钥崭穹指舳皇且渣c矸指底. 把 dos.bpb 改成如下的幼:


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


如果你喜g, 你也可以把 .ref 的n案放在伺服器上的 /tftpboot 目下, 而不放在磁碟映像ne.
我可以在不重建映像n的B下, p的更X的O定. 作法是, }u你的 autoexec.bat 及 config.sys autoexec.ref 及 config.ref 到伺服器的 /tftpboot 目, 把下面尚屑拥脚n中:

    patch "autoexec.ref" "{:1}autoexec.bat"
    patch "config.ref" "{:1}config.sys"

你可以透^ BOOTP 通f定, 自由的更n案热. 即使是做一些根C器而淼奶厥饣O定.
在τ舳穗X的O定n做任何修改後, 如果你要A先做好修正. e忘了以 MrZip 重新u作磁碟映像n.

系ySoc升
如果你以後要更新w, 安b程式臭x修正或安全性修正的程式, 其沓绦蛉缦:

以h端_C方式右惶ㄓ舳穗X以得到一全新的 Linux.
完成你需要的改.
重u磁碟映像n.
}u新的磁碟映像n到伺服器以取代f的.
@就意^著, 你可以就像在使用一台普通的X一砀履愕乃欧榛A的MBO定.

4.6 O定 Windows 95/98
在此份文件先前的版本, 我使用^微公司的 Windows 95 以伺服器榛A的安b方式, 但是用@方法太^痛苦, 又不是那N的有r值:

它就真的是非常的M.
大部份的w套件都不支援它而且如果您著去安b最後的Y果通常是失〉. 包括, Microsoft Internet Explorer, OnNet 32, Novell’s Protected-mode client (@^ Microsoft Client for Netware安全).
因槲④公司不提供 Windows 95/98 在真模式下的 TCP/IP 相容的映淌剿阅o法使用 Microsoft Network client over TCP/IP, 而@也就意味著您不能使用 Samba.
因楫用舳艘泳i住一些BBYn造成S多程式乎o法更新, 如果您著去更新它t霈F 背分享 (sharing violations) 的e.
因此月前, 我放@份本身就有}的Y料 (您仍然可在@找到 cuiwww.unige.ch/info/pc/remote-b … 95old.html) 然後Q到我@新的以硬碟C榛A的h端痈拍. 基本上, 在@Nh境下 Windows 95/98 安b方法就跟安b DOS 一尤菀.

建立一台立的用舳
安b一台こ5 Windows 95/98 用舳, 可以用我先前所提的 DOS W路_CMB模式与X, 再透^W路安b (我都@幼). 你也可以用已安b Windows 的C器碜, 但若@幽τ驳e有舍|西就比^不了解了.

把它橄惹八岬 DOS 用舳硖. 但在 Windows 95/98 是不需使用 EMM386. 如果你使用 Windows 98 或 Windows 95 OSR2 (e名 MSWIN 4.1, 也就是 Windows 95 service pack 1, 亦是 Windows 95 with Internet Explorer) 你加入以下行到 MSDOS.SYS (]e, 他是文字n) 的 [Options] 那一:


AUTOSCAN=0


@涌梢允 Windows 知道您_Cr, 不自 ScanDisk.
所有的w都放在伺服器r, 如果您要ppW路及伺服器的 (@⒃鲞M您的系y效率), 您可以考]安b@套相不e的 Shared LAN Cache, 由 Measurement Techniques, Inc 生a的 (⒖ lancache.com).

@套w在每台用舳穗X绦, 它阉W路上取得的Y料放在^域性的硬碟中快取. 即使像 MS-Office @N怪物, 在您第二次绦r也… 您的每台客舳穗X都要有一份版, 不^它不算太F, @家公司洞T盒S刑鼗r格. 更棒的是, 您可以到他的W下d免M的u估版.

建立磁碟映像n
在@地方, 如果你是使用 Samba n案伺服器, 你需要先P掉 Windows 98 的密a鬏前加密功能. @硬拍馨 admin 焐先ギW路磁碟C. 你只要把下面的登MB EnablePlainTextPassword 的 DWORD 值O 1

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]

你的 MrZip _本程序n可以命名 zipwin.mrz K包含以下热:


showlog
filter -“windows/schedlog.txt”
filter -“windows/msimgsiz.dat”
filter -“/index.dat"
filter -"
.swp”
filter -“.tmp"
filter -"temp/

fullzip “c:/” “L:/tftpboot/win.imz”


榱私⒂诚n, 把 admin 斓酱诺C L:, K到你的 utils 目下K入以下指令:

    mrzip -b zipwin

分^後, 你可以在伺服器的 /tftpboot 子目下, 找到名 win.imz 的n案, 它就是你硬碟的嚎s磁碟映像n. 如果你的映像n超^ 87 MB, 最好把它分割成或更多的n案. @些n案谖需要它r自拥匾接著一d入. 住, 如果你的映像n超^ 87 MB t系y花在解嚎s的rg^一分而@づ愕氖褂谜. 我的 Windows 95/98 映像n止有 70 MB 大, 因榇蟛糠莸能w都[在伺服器, 且只有在要求r才d入. 只有O少部份的w需要安b到你的硬碟中. 如果你跟我一釉诤踹@}, 你解嚎s@映像n及完整回存到硬碟的rg低於一分.

把以下的批次n热菅}u到n案 /tftpboot/win.bpb:


hidelog
setpartitions “bigdos:1024”
setbootpart 1
fullunzip “win.imz” 1
hide`
hdboot :1


你的 Windows 95/98 h端_CO定MB已就m ! 你F在只要O定 BOOTP-option-155 “win”, 或在 BpBatch 下入 include “win.bpb” 就可以y它了.

{整O定以m用其他C器
Windows 95/98 c Windows 3.1 最大的不同是加入了即插即用的程式a, 即自y您的硬wO. 它本身o舍奶, 但}是出在它太^`敏, 而且有r後鲦m.

如果您著用同拥拈_C映像n去恿硪惶ㄓ舳C器, 您⒃谑盏揭欢 Windows y到新的硬wO涞挠息: 一片新的音效卡, 一w新的硬碟C, 一片新的W路卡, 或者一b新的滑鼠… @拥脑蛴卸:

@些O淇赡苁褂貌煌挠搀wY源 (比如, 滑鼠不是接在相同的B接埠, 音效卡不是接在同拥U充槽 -.- ]e, @y到).
@些O淇赡芡ㄖ Windows 95/98 它的序 (比如, 每台跑 Windows 95/98 的W路卡, 最根本的乙太W路位址就每台都不一恿).
事上 , 如果 Windows 95/98 的即插即用功能可以正常工作的, 自y更的硬wOK不}, 所以如果即插即用功能失效r, }就砹. 例如, Windows 95/98 ι衔的_技 PS2 滑鼠r就不能即插即用, 更糟的是滑鼠就消失了. 要解Q@}方法就是, M可能使全部X有相同的硬wO.
您o法避免的}是每台X的W路卡. 很不幸的, 在搭配我所用的 SMC EtherEX W路卡r, 即插即用的程式a闺XC. 唯一的解法是使 Windows 95/98 相信它已知道有@片W路卡, 且不需|蛹床寮从C制. @技巧就是透^_C自绦n autoexec.bat, 自拥陌殃P於@片W路卡的O定值加入 Windows 95/98 的系y登Y.

要注意的是大部份 PCI 的W路卡K不需要@技巧.

到您的用舳穗X, _C自绦n autoexec.bat K加入下列行:

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

regedit 是 Windows 95/98 的程式. 如果您在 Windows h境下绦兴, 它可以您流[您的系y登Y, 或者如果您在 DOS 下绦兴, 它可以δ南到y登Y做一些蔚男拚. 在窗h境下绦 regedit, ふ夷愕木W路卡, 通常在
HKEY_LOCAL_MACHINE\Enum\ISAPNP

用 登 功能x蔚 R出登n 功能. @幼⒔⒁文字n, 你可以把它命名 patch.ref 放在伺服器的 /tftpboot 目下. @n案K找到@W路卡的乙太W路位址放置的位置 (如果你找不到它, 可以在不同C器上a生@n案, 比^他就可以找到). 用 ${MACID} 的邮砣〈. 接著在 win.bpb _本程序n中加入以下行:
set macid = “$BOOTP-Client-ID”
patch “patch.ref” “{:1}temp/patch.reg”

(如果它不是用舻恼_乙太W路位址, 就必 MACID 字串O定值做必要的修正). 就@, 你的用舳穗X就不僭著去自yW路卡了.
再提一次, @整技巧在使用 PCI W路卡r, 是不需要的. 另外, Windows 不能在登入r透^ DHCP 通f定O定主C名 (hostname), 我也可以用相同的手法磉_到. 只要把下列行加到我的 patch.ref n:


[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}”


使用登程式的小技巧, 你的MBO定可以利的D移到有似配涞C器上. 如果你o法避免 Windows 去y你的某些硬w配, 可以著在那C器上重建一磁碟映像n. @堰@台C器上的MBO定都含入@映像n中, 希望@能解Q}.

系ySoc升
如果你以後要更新w, 安b臭x修正或安全性修正的程式, 沓绦蛉缦:

以h端_C方式右惶ㄓ舳穗X以得到一全新的安b.
完成你需要的改.
重u磁碟映像n.
}u新的磁碟映像n到伺服器以取代f的.
@就意^著, 你可以就像在使用一台普通的X一砀履愕乃欧榛A的MBO定.

4.7 O定 Windows NT
我K]有使用 Windows NT 懋h端_C用舳穗X的作I系y, 但我已y^, 它_定可以正常工作. K且]}.

由於我的工具程式]支援到 NTFS n案系y (我既]有相P文件也]有rg去做@件事, 但我很芬馊助任何@工作有d趣的人) 所以你必把 NT 安b到 FAT16 n案系y上 (只要在安br, 不把你的分割^DQ NTFS n案系y就可以).

把 win.bpb _C_本程序}u到 winnt.bpb. 改 winnt.bpb 中 setpartitions 那一行槿缦:

    setpartitions "BIGDOS:512 BIGDOS:512"

接著用@_本程序n使 Windows 95/98 _C, 把 NT 用舳税惭b到 C 槽. 先e管第二分割^的}. e安b太多|西M去, 不然a生一又大解嚎s又很慢的映像n. 把 Windows 95/98 C 槽移除, Windows NT 的映像n不需要它 (_Cx问怯 BootPROM 所控制, 不再是 NT 的_Cd入器).
在不覆硬碟Y料r下, 重新幽愕碾X, 就是千fe去绦 winnt _本程序n. 只要做:

    hideBootprom
    hdboot

你的 NT 工作站就可以正_的. 然後就可以做其他的特殊修正了.

建立磁碟映像n
Windows NT 麻┑牡胤绞浅鲈: 磁碟直接存取的功能 Kernel 所禁止. 意^著, MrZip o法x取_C磁^. u作映像n的最佳方式是以 Windows 95/98 _C, 在 DOS 窗下, 绦 MrZip. 要@N做就要更 winnt.bpb _本程序n热. 使得 Windows 95/98 映像n不回存到第一分割^, 而是第二:


hidelog
setpartitions “BIGDOS:512 BIGDOS:512”
setbootpart 2
fullunzip “win.imz” 2
hidebootprom
hdboot :2


(如果你有其他a充的修正, 在把 “{:1}” “{:2}”). 用@_本程序_C; Windows 95/98 绦, 而新磁碟C D: 槽霈F, e^放的就是 Windows NT.
就如以往的方式建立你的磁碟映像n (只是改 D: 做, 然了), 把它存 winnt.imz K放在伺服器上的 /tftpboot 目下. 最後 winnt.bpb _本程序n改成如下:


hidelog
setpartitions “BIGDOS:512 BIGDOS:512”
setbootpart 1
fullunzip “winnt.imz” 1
clean 2
#fullunzip “win.imz” 2
hidebootprom
hdboot :1


你的 Windows NT h端_CO定MB已就m. 然, 如果你不想有分割^, 你可以O定成我分割^. 但你要重建映像nr, 你是需要再O定第二分割^以 Windows 95/98 _C.

系ySoc升
如果你以後要更新w, 安b程式臭x修正或安全性的修正, 沓绦蛉缦:

以h端_C方式右惶ㄓ舳穗X以得到一全新的安b.
完成你需要的改.
winnt.bpb: 把 clean 及 winnt fullunzip 改成]解, 把 win95 fullunzip 改成可绦.
重u磁碟映像n.
}u新的磁碟映像n到伺服器以取代f的.
就@, 搞定

4.8 }集 (FAQ)
本列出我所y最常遇到的}.

不停地下d映像n
可能是因槟闼褂玫氖市 TFTP 伺服器, 而它不能沓^ 65535 512 位元M大小的封包 (而 Solaris 伺服器, 在超^ 32767 封包就有@}). 因檫@, 你的映像n必拆成S多不超^的n案 30 MB (Solaris 的, 是 15 MB). ⒖ }un案(CopyArchive) 的C制, 它棠闳绾畏指钜汛嬖诘挠诚n. 如果你目前在使用市 TFTP 伺服器, 你慎重考]改用 Bootix 或 Intel 的 TFTP 伺服器. ⒖枷乱}以探@些伺服器的功能.

BpBatch @示 “Fragment is not complete” 的e`息
@是 TFTP 通f定的}. 你的d入器n名的副n名一定要O (⒖ TFTP 伺服器那). 如果你用 Bootix 的 TFTP 伺服器K用了 -s 1408 59 的x, t你的d入器n名是 bpbatch.P. 如果你是用 Intel 或 Bootware 的 TFTP 伺服器有支援 blksize 的 TFTP x功能, t重命名你的d入器n名 bpbatch.B. 最後, 如果你用市 TFTP 伺服器, t重新命名你的d入器n名 bpbatch (]有副n名). @r下 BpBatch 512 位元M大小的封包取代 1408 位元M大小. 而@r分割n的大小限制在 32MB (TFTP 炔肯拗) 不是 87MB. ⒖忌弦}, 探 512 位元M大小的封包.

n案解嚎sr直接失效
有三N可能原因. 在伺服器上的映像n葛屁了 (可以著用 MrZip z查是不是@}), 或是 TFTP 鬏延`以致n案n案魉褪, 或是通f定不相容.

W路d太重, 就l生 TFTP 鬏延`的r (比如, 你想一次把一O大的映像n下d到超^四台的用舳穗X). 在@N情r下, BpBatch 不恢敝匮}鬏. 因槟幼骱o用. P掉台XK著在不超^四台用舳穗X同r拥沫h境下y (或者不超^三台). 如果你常常需要下d映像n到S多台X, 你可以用我所使用的特殊V播型 TFTP 伺服器 (⒖加它的那一热).

因市 TFTP 伺服器 (通常冉赌愕 UNIX 伺服器) 所е碌耐ㄓf定不相容. 因楫 BpBatch 要以增型的 TFTP f定工作r, 伺服器以市 TFTP f定. 如果你要用市 TFTP 伺服器, 你移去副n名 .P (⒖枷乱}的解f宄).

下d / 解嚎sr(1) XC
如果你用 Bootix 的 TFTP 伺服器, 著在与Xr於命令列上加入 -s 1408 59 . 如果你不是裼迷型 TFTP 伺服器, t移去在伺服器上 BpBatch n名及 bootptab 中的副n名 .P .

部解f: @}l生在你]有架O增型 TFTP 伺服器但s又使用了 bpbatch.P 槟 DHCP/BOOTP 的可_Cnn名的嘶`. 可_Cnn名以 .P 楦n名r, BpBatch ⒃著去B接到一台 Bootix 的 TFTP 伺服器. 要解Q@}, 你可以移去可_Cnn名中的副n名 .P (@就等於告V BpBatch 改用市 TFTP f定) 或者安b一台增型 TFTP 伺服器. 有其他x, 你可以安b Intel 的 TFTP 伺服器K更d入器n名 bpbatch.B. 住: 要使 Bootix 的 TFTP 伺服器正_的在增型 TFTP 特性下工作, 你必在命令列中加上 -s 1408 59.

下d / 解嚎sr(2) XC
可能是你的X VESA 的支援有}. 著在命令列抵屑尤 -v 或O定 VESA “OFF”.

VESA 皂功能故障
我使用 VESA 1.1 的皂功能. 如果你的@示卡不支援 VESA 1.1, 就e用@功能. 如果只砸豁, 就l生奇怪的ly, e急. @是一已知的程式臭x, 我⒃谟锌r修正 (VESA 皂功能不是那摸重要啦…).

快取中有牡舻n案
如果一存於快取^中的n案, 被外在的程式弄牧. 它拥快取中被移除. 如果一正在入快取^的n案]完整入 (可能是X在n案鬏中被PC), t它也蛔忧宄. 但如果伺服器魉鸵已p牡n案. 或者l自伺服器的Y料魉腿∠. t@已p的n案仍然嬖诳烊^中. 你只要在 BpBatch 第一次存取快取^r, 同r按下 shift I, 就可以把快取^鹊馁Y料清空. 有一方法, 在交模式下入 clean -1 .

在批次n中的 EXIT 指令失效
@不是一程式臭x. Exit K不是一指令. ]有 exit 或 quit 指令是因槿绻婚_C, t_C_本程序中退出是毫o意x的. 而 MrBatch 完全跟 BpBatch 一邮峭恢С淌. 你可改以叫用 HdBoot 取代 exit. @才有意x, 且在 DOS 版下, 真的〈亻_C而完全退出. 住你可以在 DOS 版任何情r下按下 Ctrl-Break 然後退出. @⒃陔x_前, 回存所有被r截的中.

bpbatch有几个不足:loadramdisk命令不支持2.88M软驱,patch命令不支持软驱/ram-floppy,tftpboot不支持较大的启动档(好象最大68K),floppyboot一律hidebootprom,不能有选择余地,版本从2000年来就没更新过!除此外Bpbatch是一个完美的Pre-boot软件。

bpbatch太复杂了,不懂:(我直接用linux提供映象,好象还方便些:)

bpbatch其实就是一个简单的操作系统,有一个命令shell,可以在系统起动前做一些较高级的工作。方式有些类似于GRUB,不过是网络起动的而已。你如果用过它的一些高级功能,就会发现它是值得学习的。而且只要有标准的dhcp和tftp环境就能用它来启动,这样可能跨很多平台。

那样的话…
我想做LIUNX下的无盘了.

Linux台湾网站上的How-TO 手册

linux.org.tw/CLDP/MiniHOWTO/ … ml#network

上面有一项目就是: Mini HOWTO:Linux Remote-Boot

就是顶贴的 中文版本 :laughing:

看过之后,我想试了。