Next Previous Contents

3. 如何设定

首先, 调整机器位置使手边有下列两台机器:

如果你想要测试您的组态设定而您还没拿到 TCP/IP Bootprom, 您可以到 http://www.incom.de 下载测试版的磁片. 这个 磁片可以使您的电脑就好像是插上 TCP/IP Bootprom 一般.If you want to test the configuration but you do not yet have a

学生所使用的电脑, 我们设定 Bootprom 由网路开机, 不能使用硬碟开机及软碟开机. 教学用电脑, 我们设定 Bootprom 可以由往路开机, 也允许硬碟与软碟开机; 在你的客户端设定 Bootprom.

伺服器端, 设定 DHCP daemon (我们使用 Internet Software Consortium 所提供的正式版, 970329 发行). 你也必需启动 TFTP daemon. 这份文件将假设您使用 TCP/IP Bootprom 工具磁片内的加强型 TFTP daemon . 如果您较喜欢使用标准 的 TFTP daemon, 移掉所有开机影像档的副档名 P, 用来支会 Bootprom 使用标准的 TFTP port (请看 TCP/IP Bootprom 文件).

别忘了 BOOTP/DHCP 通讯协定被限制在子网域中使用. 如果客户端与伺服端不在同一网域, 您必须在这两网域间 架设闸道器. 现在, 先假设两台机器在相同的网域中.

首先, 我们先做所有作业系统都要得做的事,如:

然後, 对每一种作业系统, 我们将完成下列步骤: 完成这些事, 以後你所追加的客户端只要插上 Bootprom 再加几行到 DHCP 设定档.

3.1 设定开机流程

在伺服器端的 /tftpboot 目录下, 放下列的开机影像档 (这些是二进位格式)

硬碟的初始化与清理

在相同的目录下, 我们建立符号连结到 (或者直接用拷背指令)) bpclean 命名为 XXXclean (或者您认为可以帮助您记住这是用来清理您的客户端机器的名称) 并且产生一个名为 XXXclean.tab 档叙述您客户端所需的硬碟分割区, 及您要联接的开机影像档. 例如: 我们对 2 Gb 硬碟使用下面的方法


# 允许不超过 512 bytes 的说明叙述
# 十六进制请在字首加一个 $ 钱字符

# Part |       |  Part
# type | Boot? |  Size
   6      Y       +500 Mb
  $82     N       +31 Mb
  $83     N       -50 Mb
   0

# 联接的影像档
/tftpboot/XXXmenu

完整的档案格式在後面会叙述. 现在您只要知道这些 现在, bpclean 在不清除分割区资料内容下,将重新写入主要开机计录(master boot record), 当然也包括分割表.

作业系统选单

同样的, 建立符号连结 (或者直接拷贝) bpmenu 命名为 XXXmenu (或者你认为可以帮助您记住 这是客户端机器开机选单的名称) 并且产生一个名为 XXXmenu.m 档叙述您客户端所需的开 机选单. 您比可以手动产生这个档案或透过我们写的开机选单全营幕编辑器 menuedit.exe. 例如, 假设您用下列这个档案:


.CLS 23
.ATT 23
.POS 23 4
.WRT Simple Boot Menu                                         \
.POS 23 5
.WRT ----------------                                         \
.POS 23 8
.WRT 1. Boot from local hard disk                             \
.POS 23 10
.WRT 2. Boot DOS and Windows 3                                \
.POS 23 12
.WRT 3. Boot Windows 95                                       \
.POS 23 14
.WRT 4. Boot RedHat Linux                                     \
.POS 23 17
.WRT Your choice :                                            \
.POS 37 17
.KEY 1 :bphdboot
.KEY 2 :linux.PX
.KEY 3 :win31.P
.KEY 4 :win95.P

测试开机程序

在您的 DHCP 设定档中加入您的客户端. 并设定开机影像档为 /tftpboot/XXXclean. 您可能需要重新启动您的 DHCP 伺服器使您的变更生效.

现在我们起动您的客户端. 您可以讯速的看到由 bpclean, 所送出来的讯息, 告诉您它所建立的分割区的大小, 然後您会看到开机选单出现在您的营幕上. 您可以用键盘上的 pause 键来 暂停以便读取刚刚的讯息, 但是这可能会导致 TFTP 的连接逾时.

如果您按下按键 1, 您将收到一个这样的讯息"开机分割区存在一个无效的开机磁区" (the boot partition contains not valid boot sector). 对未被格式化过的开机分割区而言这是正常的. 因 为我们现在还未建立任何开机影像档所以其他的按键将会失效...

现在我们要开始安装各种作业系统. 您可依您的需要来决定先做那一种. 对任何一种作业 系统, 您都需要先从软碟来做初始化的动作. 所以我们在看到 TCP/IP Bootprom 的标志後立 刻按 space 键换成软碟开机.

有些作业系统会更动主要开机计录 (master boot record). 特别是 Linux kernel loader (lilo) 会这样 做.而这种变动会因 bpclean这个程式而无法完成, 因此您最好改变客户端的 DHCP 设定内 容使开机影像档直接跳到 /tftpboot/XXXmenu (不做清理的动作). 别忘了要使您的改变生效,您必需重新启动 DHCP 伺服器.

3.2 设定 Linux

在您的客户端架设 RedHat Linux 4.1 支援网路功能, kernel 原始程式码及您所需要的软体套件. 准备未来要挂入的点 (放在 /mnt/tmp 比较有用), 设定您的 X server, 等等. 在 /usr/src/linux-2.0.27 目录中, 您必须有 kernel 2.0.27 的原始程式码.

现在我们要加入一些修正档, 使它升级到 2.0.30, 并且支援 TCP/IP Bootprom 及档案快取的 功能. 档案快取是一个 把 "未确定的" NFS 档案储存在您硬碟中的结构, 它您可以降低网路 负载. TCP/IP Bootprom 的支援已经由□Marc Vuilleumier Stuckelberg 完成, 并且由 David Clerc 转移到 kernel 2.0 . 档案快取已经由 Unifix GmbH 完成, 并且已 是 Unifix Linux 2.0 的一部份. TCP/IP Bootprom 及档案快取的支援都已经由它们的作者免费的散布.

值得注意的是 Linux 对 NFS-Root 的支援只能架构在 BOOTP 通讯协定, 不是 DHCP 通讯协 定. 仅管 DHCP 只是 BOOTP 的延伸, Linux 也可以在 DHCP 伺服器下工作 (如果您没有设 定 DHCP 伺服器拒绝 BOOTP要求).

产生 Kernel

首先, 到您的 /usr/src 目录并加入下列修正档, 使用这个指令

patch -p0 < 修正档的名称:

接著执行 make mrpropermake xconfig, 产生 kernel. 记住这将是客户端电脑以 Linux 启动时, 唯一接收到的软体, 所以 它必须要包含启动整个作业系统所需的东西. 可以使用模组方式, 但是不包括网路模组. 因为网路功能一定要放在 kernel 中. 简而言之, 您的 kernel 至少需要 以下这些

您可以使用我们的 .config 当做起点. 如果您想要在没有 Bootprom 的状况下测试, 请确定您 已经在 kernel 内包含硬碟机的支援.

当您的选择完成後, 照常地输入 make clean; make dep 接著 make zImage, make modulesmake modules_install. 这会花一点时间... 现在您准备去测试您的新 kernel, 先用先用 lilo. 安装您的 kernel (参考 lilo 文件),并重新启动您的电脑 (由硬碟启动). 如有任何错误, 修正它们并再试一次. 执行 depmod -a 计算 modules dependencies. 当完全无误时, 执行 make bpImage 产生一个 bootimage 给 TCP/IP Bootprom 使用.

把 Root 档案系统移到 NFS

您的伺服器要有足够的空间来保存您的整个 Linux 档案系统 (几百 Megabytes). 建立一个新 的目录给 NFS 输出, 就叫 rootfs, 并在其中建立另一个新目录就叫 runtime. 我们使用 /export/linux/rootfs/runtime. 把它输出成只有您的 Linux 客户端可读可写, 并具有 root 的存取权 ( annon=0). 例如, 我们的 NFS 是在 Solaris 下执行, 我们用以下这个指令:

share -F nfs -o rw=pc7971,anon=0 /export/linux/rootfs/runtime.

在您的 Linux 客户端挂上这个分割区并用GNU tar 把整个 Linux 档案系统复制过去 (预设是 RedHat Linux). 很重要的是当您使用 GNU tar 指令,因为所有的 tar 指令可能无法正确地处理 block device 的 special nodes . 然後编辑档案 /export/linux/rootfs/runtime/etc/fstab 并变更根目录的 设定,使根目录符合以 nfs mount 取代自己的硬碟机. 你还要移去 (或者 至少要变更名称) /export/linux/rootfs/runtime/etc/sysconfig/network-scripts/ifcfg-eth0 因为网路装置将由 NFS-root 初始化但不能被初始化两次.

现在在您的 /etc/lilo.conf 复制一行 linux, 例如:以 linux-nfs 为名, 并加入以下的参数:

append="root=/dev/nfs nfsroot=/export/linux/rootfs/runtime nfsaddrs=您的-ip:伺服器的-ip:闸道器的-ip:网路遮 罩:机器名称"

(您的-ip 是您的 Linux 客户端的 IP 位址,是以十进位有点的方法表示, 伺服器的-ip 是 NFS 伺服器的 IP 位址, 闸道器的-ip 是 Linux 客户端的预设闸道器, 网路遮罩 是 Linux 客户端的 网路遮罩 而 机器名称 是Linux 客户端的主机名称). 再执行一遍 lilo , 重新启动您的电脑 (仍然是由硬碟机), 并选择 linux-nfs 开机设定. 您的电脑将如先前一般启动, 即使有一点慢. 如果在这里有某些东西不能正常工作, 您只要重新开机用您原来 local的 linux 开机设定并试 著修正它. 大部份的状况是, 您的 NFS root 设定错误. 如果有任何东西您不了解, 看一下 /usr/src/linux/Documentation 这些档案... 您或许可以看看 NFS-Root-Mini-Howto.

您可以再试一次,这次只用 append="root=/dev/nfs" 以确定 Linux kernel 可以透过 DHCP/BOOTP要求而获得您所设定的 IP 参数. 如果 要这样做, 您必须在您的 DHCP 设定档中加入以下 这些选项 (当然是要设定您自己的网路组态), 加上您的机器的硬体及 IP 位址:


option subnet-mask 255.255.252.0;
option routers 129.194.68.1; 
option root-path "/export/linux/rootfs";

如果您的 Linux kernel 须要再加入其它指令参数, 您可以用 option option-177 来加入.

下一步要使我们的系统在 唯读的 NFS 档案系统下可以工作.

产生唯读的 NFS Root 档案系统

既然我们要我们的 root 档案系统在大部份的 Linux 客户端以唯读的方式挂上, 那就要使档 案系统有些微的不同, 因此我们将需要写入权限的地方以 ramdisk 或 filecache 取代. 我们把 这个档案系统建立在 /export/linux/rootfs 目录下, 而标准的版本则直接放到 /runtime/ 下. 登入您 的 NFS 伺服器并在 /export/linux/rootfs目录下,建立以下的目录跟连结:

就如您所见的, 它看起来像正常的 root filesystem, 除了少部份几个是重新指到 /ramdisk, 有 些则重新指到 cache 目录. 当用唯读的 NFS filesystem 开机, 我们将挂上一个已初始化过的 ramdisk 放在 /ramdisk 下. 同样□ 自己硬碟的分割区将被挂在 /cache 给 NFS 快取使用. 粗略的 说,这个档案快取的原理是当the principle of the filecache is that whenever a symbolic link from the cache subdirectory is followed, it is replaced by its target. 如果目标自己是一个子目录, 则每一个 子目录会转换成一个符号连结并连结到外部档案系统的原始位置. 注意档案快取使用绝 对符号连结是必须的, 即使它们在 NFS 伺服器上是无意义的. 如果您不喜欢这样, 可以在 您的 NFS 伺服器上,建立一个符号连结由 /runtime/export/linux/rootfs/runtime .

在唯读的客户端加入一些设定的东西是必须的, 如此才可以挂上 ramdisk, 及设定档案快取 和侦测硬体以变更设定档. 这些都由三个程序档和一个组态档来完成, 您可以把它复制到 您的NFS 伺服器:

前两个档案应该放在前两个档案应该放在 runtime/etc/rc.d/rc.sysinit, 档案内最前面的位置, 如下所示:

# 设定所需的  ramdisk  (给 root NFS 唯读的机器)
if [ -e /ramdisk -a -r /etc/rc.d/rc.ramdisk ]; then
        /etc/rc.d/rc.ramdisk
fi

# 设定硬体各自独立的参数 (给每个 root NFS使用)
if [ -r /etc/rc.d/rc.sysdetect ]; then
        /etc/rc.d/rc.sysdetect
fi

而第三个应该 be bound as usual to the System V init directories: we use links named S35filecache in the rc3.d and rc5.d directories, and K80filecache in the rc0.d, rc1.d, rc2.d and rc6.d directories.

检查一下 rc.sysdetect 这个档案, 并使它与您的硬体设备配合. 特别要注意的是, 如果您跟我们一样没有 使用相同的显示卡及萤幕 (这很可能发生的 :-), 看看它们在 /proc/pci 的回应并依此修改叙述档. 在每台 机器所使用的存放位置下, 其 rc.sysdetect 之中有一段内容为, 可自订的设定档 (例如 printcap), a为了能每 台独立工作, 您需要於伺服器的 dhcpd.conf 档案中, 用特别的标记 option-132 设定每台机器所使用的位 置. 在您继续安装之前, 您至少要先建立基本的几个档案 runtime/etc/fstab.ref runtime/etc/hosts.ref , 这些将由 rc.sysdetect 叙述档在启动时透过侦测设定来完成, 为了动态的设定 X servver, 使用 RedHat 软体套件, 有一件事您必须先变更的: 在 /usr/X11R6/bin/usr/X11R6/lib/X11 目录下, 有一些相关的 连结设定档及目录应该改成绝对连结. 别忘了以後的 X server 更新安装也要如法泡制.

filecache 安装在 runtime/bin 目录下, 并把它的使用说明 man page 安装在 runtime/usr/man/man8 目录下. 把 bootptagdhcptag 安装 在 runtime/usr/local/bin 目录下, 并且 bootptag.c (或 dhcptag.c) 必须放在 runtime/usr/local/src 目录下: 它是一个发送 BOOTP/DHCP 要求, 并以相容於 shell 的标准输出格式回应 BOOTP/DHCP 内容的小程式, 就如下的□例所示:


bootp_your_ip='129.194.71.32'
bootp_server_ip='129.194.77.31'
bootp_filename='XXXclean'
bootp_subnet_mask='255.255.252.0'
bootp_routers='129.194.68.1'
bootp_domain_name_servers='129.194.69.200 129.194.8.7 129.194.4.32'
bootp_host_name='pc7132'
bootp_domain_name='unige.ch'
bootp_root_path='/export/linux/rootfs'
bootp_broadcast_address='129.194.71.255'
bootp_nis_domain='cuisunnet.unige.ch'
bootp_nis_servers='129.194.69.200'
bootp_option_132='dufour'

标记的名称与 RFC 2132 很相似. 如果您使用 dhcptag, 您将得到一些以 dhcp_ 开头的标记, 这些是 DHCP-规格的选项内容; 为了顾及相容性, 其它的资讯仍然以 bootp_ 为字首. 我们使用这个程式自动设 定 rc.sysdetect. 最後, 在 runtime/lib 安装 makeramdisk script . 我们将用它自动产生 ramdisk 影像档. 这些软体 都在超文件的版本中.

现在试著由客户端以 read-write NFS 开机 (仍然用硬碟开机). 它将侦测您客户端的个别组态, 并 产生适当的档□ 检查 /etc/fstab, /etc/hosts, /etc/sysconfig/network 是否设定正确. 如果您看到的不是这样, 请在 单人工作模式下重试一遍, 并找出您在 rc.sysdetect 叙述档中所犯的错误.

等到它可以正常工作, 到 /lib 目录下执行 ./makeramdisk. 将会花几秒钟, 来产生一个 ramdisk 影像档给唯 读的 NFS 客户端. 把产生出来得 ramdisk image 放在这 /lib/ramdisk.gz, 就这样您的组态就绪了!

由 Bootprom 开机

如果您还未完成它, 请安装您的 TCP/IP Bootprom-相容的 kernel 影像档 (可在这找到 /usr/src/linux/arch/i386/boot/bpImage) 即您伺服器上的 /tftpboot/linux.PX . rc.sysdetect 这个叙述档用来初始化您的 Linux swap 及 Linux 资料分割区. 因为要启动它, 故编辑伺服器上 XXXclean.tab 这个档案并改变分割区 的型态由 hex 82 改为 hex 28, 及 hex 83 改为 hex 38. 这是一种未知的分割区型态, 但是安装程序档能把它当成预备分割区来辨 识. 在 DHCP 的设定档中, 把开机档设定为 XXXclean , 使它能重新 建立分割表. 别忘了在修改完设定档後要重新启动 DHCP daemon.

最後, unexport 可读写的 runtime 目录, 并 export 唯读的 /export/linux/rootfs 目录. 重新启动客户端, 这一次使 用开机使用 Linux 选单的选项. 您的系统现在已是 remote-boot Linux.

系统维护与更新

如果您以後想更新软体,安装一些错误修正档或安全性修正档, 请按照下列步骤:

这是指, 您必须在 local 安装的状态下, 才能更新您的 server-based 设定的软体.

3.3 设定 DOS 6 及 Windows 3.1

在您的客户端电脑, 使用您喜欢的 dos 软碟开机 (记得开机时, 按空白键取消 BootPROM 开机). 格式 化您硬碟中的 dos 分割区并加上 /S 参数, 使它放入作业系统. 建立一个名为 DOS 的子目录, 把 DOS 拷 贝进去. 安装你所喜欢的网路客户端程式 (例如 Microsoft LanManager), Windows 3.1, 等等. 使用 DHCP 通讯协定设定 IP 组态.

您必须恢复原本被 BootPROM 所使用掉的记忆体空间 (当 DOS 启动後这些记忆体不再需要用到啦) 加入下面这一行到您 config.sys 内的第一行:


device=\util\bputil.sys -r

(bputil 是一个 TCP/IP BootPROM 工具磁片中的程式). 不用怕使用 EMM386 最佳化您所使用的记忆体, 您可以把网路卡 ROM 所占的区域纳入管理, 因为它在这时已经用不到了. 但要记得把网路卡所使用 的 RAM 区块不纳入管理, 否则您将无法连接到您的伺服器.

如果您不让您的客户端机器使用无效的登入名称, 把我们的 nobreak.sys pseudo-device 驱动程式放在您 config.sys 的开头处并把以下这些东西放到您的 autoexec.bat:


rem -- 我们使用 c:\logged 为一个旗号
del c:\logged >nul
:loginneeded
cls
echo Please type in your login name and password
echo.
net logon *
rem -- the login script 已经建立好 c:\logged
if not exist c:\logged goto loginneeded
del c:\logged
rem -- 使 break 功能生效
echo Yes >NOBRK

重新开机并在开机选单中选择 Boot from local hard-disk 选项, 确定可以开机.

把组态设定移到伺服器

回到伺服器上, 建立一个分享名称为 admin , 用来放一些系统管理者用的东东. 如果伺服器是跑 Unix, 建议您把 /tftpboot 子目录用 softlink 放一份到 admin , 这样您可以直接由客户端传回开机影像档. 在 admin 目 录内, 建一个 /utils 子目录并放入如下的工具:

您也需要把一些用来清理硬碟及产生压缩影像的批次档放到相同的目录下,这些批次档如下:

@echo off
if "%1"=="" goto error
echo >c:\lanman.dos\lmuser.ini
l:\utils\mrzip l:\tftpboot\%1
goto end
:error
echo Usage: MAKEIMG {image-name-without-extension}
:end

现在回到您的客户端, 以下将以 admin mount 为磁碟机 L: 为□例作说明接著执行您建立的批次档, 如 果您还没做那可以按下列的指令执行 (不一定要用绝对路径 )


        L:\util\mrzip L:\tftpboot\win31

一分钟过後, 您伺服器上的 /tftpboot 子目录下将有两个新档案, 名称为 win31.imz, 是您硬碟内容的压缩 影响档win31.chk, 这是相关的检查档 (是 partition boot record 细部修改後的拷贝). 在这真正的目录内, 只 要建立一个 bpunzip 的 symbolic link (或这用拷贝的) 且命名为 win31.P.

您的硬碟为主的远端开机设定现在一切就绪啦.

测试远端开机客户端

现在重新启动您的客户端并在开机选单中选 DOS and Windows 3.1 的选项. bpunzip 这程式将传给您一 些它产生影像的表格讯息, 并自网路下载整个开机影像档 (因这是第一次它看到这个开机影像档). 这 将会花掉一分钟左右. 接著它会解压缩这个影像到 DOS 分割区, 并由他开机. 这就是你要的, 您的远端开机客户端完成啦 !

下一次您重新开机, 它只会解压所这个影像档, 大概在 30 秒内完成.

转换设定档给其他机器

如果您要为每台机器修正一些设定 (例如预设印表机), 或者如果您需要变更一些不能透 过 DHCP 通讯协定修改的网路设定, 您可以使用 unzipreg.exe 程式来处理, 它必须放到客户端的 autoexec.bat (原始程式码在 ). 这程式将读取一个由 bpunzip 产生的特殊隐藏档案, 名称为 BOOTP.ANS, 它的内容是由伺服器透过 BOOTP/DHCP 通讯协定回传的. 接著, 它将读取第一个参数所指的档案名 称, 藉由 BOOTP/DHCP 的回应内容, 以 UNZIPREG: 标签名 : 这种格式取代所有的字串, 并把结果写入 第二个参数所指的档案名称. 例如, 如过您有个档案名为 input.bat 内容为:


set hostname=UNZIPREG:HOSTNAME:
set domainname=UNZIPREG:DOMAINNAME:
set gateway=UNZIPREG:ROUTER:
set subnetmask=UNZIPREG:SUBNET:
set printer=UNZIPREG:T180:

而您执行了这个指令

        unzipreg input.bat output.bat

您将得到一个档案名为 output.bat 包含内容:

set hostname=pc7179
set domainname=unige.ch
set gateway=129.194.76.1
set subnetmask=255.255.252.0
set printer=laserwriter1

假设您的 DHCP 设定档定义这台机器名为 pc7179, 领域名称为 unige.ch, 等等, 而 option-180 标记是 laserwriter1.

也可以透过这种登入修改 Windows 桌面. 我们写了一个小程式 simple program 用来增加 PROGMAN.INI 档案, 允许为一 群使用者设定同样的桌面.

在为任何一台客户端机器设定後, 别忘了使用 mrzip 重新建立磁碟影像档以维持您的所有变更.

3.4 设定 Windows 95

在此份文件先前的版本, 我们使用过微软公司的 Windows 95 server-based installation, 但是用这方法太 过痛苦又不是那麽的有价值:

因此几个月前我们放弃这份错误百出的资料 (您仍然可在这找到 http://cuiwww.unige.ch/info/pc/remote-boot/win95old/win95old.html) 然後换到我们这个新的 disk-based 远端 启动的概念. 基本上, 这种 Windows 95 安装方法就跟安装 DOS一样容易.

建立一台独立的客户端

在客户端用 DOS 开机, 如果您已经设定好 DOS/Windows 3.1 那就随便由开机选项中选一个, 或者用 一个软碟开机 (按 space 键可以跳过 BootPROM). 使用第一种方法的优点是你已经有一台可使用网路 的客户端, 并且只需要把 Windows 95 的安装磁片放到您的伺服器上的某个地方.

如果您由软碟开机, 您的第一步是安装作业系统, 方法是格式化您硬碟机的 DOS 分割区并用 /S 的选 项. 如果您使用 DOS/Windows 3.1 的组态, 那麽首先您要清除一些您安装 Windows 95 时不需要的档 案以及一些在您最後的开机影像中不需要的档案 (例如, WINDOWS 这个目录).

开始安装 Windows 95, 照著步骤把它装在 local . 安装最後, 程式会重新启动您的客户端电脑, 做一些 设定并再重新启动一次. 这几次的重新开机, 您必须再您的开机选单选择 Boot from local hard-disk 选 项. 等到您设定好您所需要的驱动程式後, 您可以执行 defrag 做完整的硬碟重组 (包含重组未使用得 磁碟空间).

您或许也想要使用 BootPROM 所占掉的记忆体, 只要在 config.sys 第一行加上 :


device=\util\bputil.sys -r

(bputil 是放在 TCP/IP Bootprom 工具磁片中). 不同於 DOS, 您避需避免在 Windows 95 中使用 EMM386 .

如果您要使用 Windows 95 OSR2 (或叫 MSWIN 4.1, 或者 Windows 95 service pack 1, 或者 Windows 95 with Internet Explorer), 您要在 MSDOS.SYS 中的 [Options] 段加一行 (没错它是文字档):


AUTOSCAN=0

这样可以使 Windows 知道您开机时不自动启动 ScanDisk .

当所有的软体都放在伺服器时, 如果您要减轻网路及伺服器的负担 (这将增进您的系统效率) , 您可 以考虑安装这套相当不错的 Shared LAN Cache,由 Measurement Techniques, Inc 生产的 (参考 http://www.lancache.com). 这套软体在每台客户端电脑执行, 它会对所有从网路上取得的资料放在区 域性的硬碟中快取. 即使像 MS-Office 在您第二次执行时也会更快... 您的每台客户端电脑都要有一 份版权, 不是它还不是很贵, 这家公司对於大专院校有特惠价格. 更好的是您可以到他们的网页下载 免费的评估版.

把设定档移到伺服器

伺服器端, 如果您目前还没有建一个名为 admin 的目录, 那就建一个. 这将放一些系统管理要用的东 西. 如果伺服器是 Unix 的机器, 现在把 admin 目录用 softlink 到 /tftpboot 子目录下, 这样您可以由客户端 直接把影像档放到这. 在 admin 目录内, 建立一个 /utils 子目录并把下列工具放进去:

在您的客户端开个 MS-DOS 视窗, 可以把您的 admin 用网路磁碟机挂在 L: 并执行下列的指令 (不一 定要使用绝对路径, 多打几个字无害啦 :-)


        L:\util\mrzip L:\tftpboot\win95

这将在伺服器的 /tftpboot 子目录下, 产生两个新档案, 名为 win95.imz, 一个您客户端硬碟机的压缩影像 及 win95.chk, 检查用的档案 (其实内容是把开机分割区做些许的变动). 真正的目录, 只要建个名为 win95.P 的符号连结到 bpunzip (或者拷背一份) .

现在您的 Windows 95 远端开机组态就完成啦.

测试远端开机客户端

现在重新启动您的客户端电脑并从开机选单中选择 Windows 95 . bpunzip 程式将给您一些关於它更新 影像表的讯息, 并且从网路下载整个开机影像 (如果它是第一次看到这个开机影像). 这大约会花掉两分钟. 接著它将解压缩这个影像档到 DOS 分割区, 并启动它. 就这样, 您的远端开机客户端就序啦! 下一次您重新开机, 它只会解开这个影像档, 大概会花 40 秒.

转换为其它分身的设定

Windows 95 与 Windows 3.1 最大的不同是加入了即插即用的程式码, 即自动侦测您的硬体设备. 它本 身无舍坏处, 但问题是出在它太过灵敏, 而且有时後会出□.

如果您试著用同样的开机影像去启动另一台客户端机器, 您将在收到一堆 Windows 侦测 到新的硬体 设备的讯息: 一片新的音效卡, 一棵新的硬碟机, 一片新的网路卡, 或者一只新的滑鼠... 会这样的原 因有二:

事实上 , 如果 Windows 95 的即插即用功能可以正常工作的话, 自动侦测变更的硬体设备并不会出问 题, 所以如果即插即用功能失效时, 问题就来了. 例如, Windows 95 对上我们的罗技 PS2 滑鼠时就不 能即插即用, 更糟的是滑鼠就消失了. 要解决这类问题方法就是, 尽可能使全部电脑有相同的设备.

您无法避免的问题是每台电脑的网路卡. 很不幸的, 给我们的 SMC EtherEX 使用的即插即用的程式 码会使电脑当机. 唯一的解法是使 Windows 95 相信它已经知道有这片网路卡, 且不需触动即插即用 机制. 这个技巧就是透过开机自动执行档 autoexec.bat , 自动的把关於这片网路卡的设定值加入 Windows 95 的系统注册资讯. 要注意的是使用 PCI 的网路卡并不需要这个技巧.

到您的客户端电脑, 编辑开机自动执行档 autoexec.bat 并加入下列几行:


rem --- 修正 Windows 系统注册资讯以避免即插即用功能侦测
cls
unzipreg c:\lib\smc.reg c:\temp\smc.reg
regedit /L:c:\win95\system.dat /R:c:\win95\user.dat c:\temp\smc.reg
echo.
del c:\temp\smc.reg

regedit 是标准 Windows 95 的程式. 如果您在 Windows 95下执行它,它可以帮您流览您的系统登录资讯, 或 者如果您在 DOS 下执行它, 它可以对您的系统登录资讯做一些简单的修正. unzipreg.exe 是一个自制的小程式, 您可以放在您的路径下的任何地方 (原始程式至在 ). 它将读取一个由 bpunzip 所产生的特别隐藏档案, 名称是 BOOTP.ANS, 它包含来自伺服器的原始 BOOTP/DHCP 回应资讯. 然後, 它将读取第一个参数的档案(c:\lib\smc.reg), 然後以 BOOTP/DHCP 回应的资料取代档案内所有以 UNZIPREG:tagname: 为格式的内容, 接著写入第二个参数的档案(c:\temp\smc.reg).

lib 子目录下, 我们有个名为 smc.reg 的档案其内容如下:


REGEDIT4

[HKEY_LOCAL_MACHINE\Enum\ISAPNP\SMC8416\UNZIPREG:MACID:C0]
"HardwareID"="*SMC8416,ISAPNP\SMC8416"
"HWRevision"="1.0.10"
"DeviceDesc"="SMC EtherEZ (8416)"
"Class"="Net"
"Driver"="Net\\0001"
"CompatibleIDs"="*SMC8416"
"Mfg"="SMC"
"ConfigFlags"=hex:10,00,00,00

[HKEY_LOCAL_MACHINE\Enum\ISAPNP\SMC8416\UNZIPREG:MACID:C0\Bindings]
"MSTCP\\0001"=""

[HKEY_LOCAL_MACHINE\Enum\ISAPNP\SMC8416\UNZIPREG:MACID:C0\LogConfig]
"0000"=hex:00,04,00,00,00,20,00,00,10,00,00,00,04,00,00,00,00,00,00,00,a8,0e,\
  00,00,20,00,00,00,02,00,00,00,01,00,0c,00,00,00,00,00,00,00,00,00,e0,ff,20,\
  00,40,02,ff,03,00,00,04,03,2c,00,00,00,01,00,00,00,01,00,14,00,00,00,00,00,\
  00,00,00,00,00,00,00,00,00,e0,ff,ff,00,20,00,00,00,00,0c,00,ff,ff,0f,00,00,\
  00,00,00,2c,00,00,00,01,80,00,00,01,00,14,00,00,00,00,00,00,00,00,00,00,00,\
  00,00,00,e0,ff,ff,00,80,00,00,00,00,0c,00,ff,5f,10,00,00,00,00,00,00,00,00,\
  00

[HKEY_LOCAL_MACHINE\Enum\ISAPNP\SMC8416\UNZIPREG:MACID:C1]
"HardwareID"="*SMC8416,ISAPNP\SMC8416"
"HWRevision"="1.0.10"
"DeviceDesc"="SMC EtherEZ (8416)"
"Class"="Net"
"Driver"="Net\\0001"
"CompatibleIDs"="*SMC8416"
"Mfg"="SMC"
"ConfigFlags"=hex:10,00,00,00

[HKEY_LOCAL_MACHINE\Enum\ISAPNP\SMC8416\UNZIPREG:MACID:C1\Bindings]
"MSTCP\\0001"=""

[HKEY_LOCAL_MACHINE\Enum\ISAPNP\SMC8416\UNZIPREG:MACID:C1\LogConfig]
"0000"=hex:00,04,00,00,00,20,00,00,10,00,00,00,04,00,00,00,00,00,00,00,a8,0e,\
  00,00,20,00,00,00,02,00,00,00,01,00,0c,00,00,00,00,00,00,00,00,00,e0,ff,20,\
  00,40,02,ff,03,00,00,04,03,2c,00,00,00,01,00,00,00,01,00,14,00,00,00,00,00,\
  00,00,00,00,00,00,00,00,00,e0,ff,ff,00,20,00,00,00,00,0c,00,ff,ff,0f,00,00,\
  00,00,00,2c,00,00,00,01,80,00,00,01,00,14,00,00,00,00,00,00,00,00,00,00,00,\
  00,00,00,e0,ff,ff,00,80,00,00,00,00,0c,00,ff,5f,10,00,00,00,00,00,00,00,00,\
  00

这个档案一开始由 Windows 95 的 regedit 产生. 我们把关於网路卡的设定部份输出成一个档案 ( HKEY_LOCAL_MACHINE/Enum/ISAPNP/SMC8416) 然後用 UNZIPREG:MACID: 记号取代网路卡的硬体位址. 当我 们在这档案中执行 unzipreg , 它会自动的以网路卡真实的硬体位址值取代我们所设定的记号. 注意这 里有个数字在 MACID 之後的有时是 C0 有时是 C1. 即使放一个不存在的网路卡在这个登录档中不 会出□, 我们还是把两项都放进去.

还要一次ㄡ, 这整个技巧对 PCI 网路卡而言并不需要. 顺便一提的是, 我们可以用同样的方法自动的 配置主电脑名称, 当 Windows 95 不能透过 DHCP 取的设定时. 我们只须加入下列几行到我们的 smc.reg 档案中:


[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]
"ComputerName"="UNZIPREG:HOSTNAME:"

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP]
"HostName"="UNZIPREG:HOSTNAME:"

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\ComputerName\ComputerName]
"ComputerName"="UNZIPREG:HOSTNAME:"

您也可以使用同样的机器按照机器的型态跟位置来设定其他的环境. 这个□例, 您一样可以参考 DOS/Windows 3.1 那一段的叙述.

在变更任何客户端机器的设定後, 千万别忘了用 mrzip 重新建立磁碟影像, 否则您所有的设定都会不 见.

使用这个系统登录资讯的小技巧, 您的设定资讯将可以正常的转移到所有的机器. 如果您无法避免 Windows 去侦测一些机器上的新硬体, 试著由这台机器重新建立磁碟影像档. 包含针对这台机器所 设定的登录资讯也要放入磁碟影像中, 如果顺利的话可以解决这个问题.

当磁碟影像档解压缩时会花一些时间 (通常是 20-30 秒.), 您可以给使用者一些讯息或者就放张漂漂 的图给他们看. 这个工作可以很简单的完成 (看看下一篇文件的 BPUNZIP ).

如果您想得到更多设定 Samba 的资讯与工具给远端开机的电脑使用, 我们还写了另一份文件. 可以 看看 http://cuiwww.unige.ch/info/pc.


Next Previous Contents