首先, 调整机器位置使手边有下列两台机器:
如果你想要测试您的组态设定而您还没拿到 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 通讯协定被限制在子网域中使用. 如果客户端与伺服端不在同一网域, 您必须在这两网域间 架设闸道器. 现在, 先假设两台机器在相同的网域中.
首先, 我们先做所有作业系统都要得做的事,如:
在伺服器端的 /tftpboot
目录下, 放下列的开机影像档 (这些是二进位格式)
bpclean
,
硬碟清理工具bpmenu
, TCP/IP Bootprom 选单程式 (包含在您的 Bootprom 工具磁片)
bpunzip
,
我们的硬碟还原工具
bphdboot
,
传送开机程序到硬碟的影像档
在相同的目录下, 我们建立符号连结到 (或者直接用拷背指令)) 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 伺服器.
在您的客户端架设
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要求).
首先, 到您的 /usr/src
目录并加入下列修正档, 使用这个指令
patch -p0 <
修正档的名称:
patch-2.0.28
: 这是一个正式的 kernel 更新, 您一定要加入这个修正档
patch-config-sound
:
一个美化音效设定的修正档, 来自 Unifix Linux 2.0
patch-PCSP
:
一个较大的修正档用来使 PC 的扬声器模拟音效卡, 来自 Unifix Linux 2.0
patch-bootprom
:
一个小的修正档用来产生特别的 kernel image, 使它可由 TCP/IP Bootprom 开机
patch-filecache
:
一个小的修正档使 kernel 加入一些特别功能, 如 Unifix filecache. 来自 Unifix Linux 2.0
patch-penguinlogo
:
一个小的修正档帮助您的使用者等到 Linux 系统完全载入
patch-2.0.29
: 另一个小的正式的 kernel 更新档, 如果您不需要最新版的 kernel 则不用加入它
patch-2.0.30
: 又是一个正式的 kernel 更新档, 满大的.
一样, 您不需要加入这项修正 (但它会改善 TCP/IP 通讯 协定). 如果在您的机器上
您没有 alpha 的原始程式码 (这很有可能发生), 这个修正档将出现两次抱怨含入档不存在的讯息.
不要紧张, 只要回答您要跳过这些缺少的档案,不会发生任何问题
make mrproper
及 make xconfig
, 产生 kernel.
记住这将是客户端电脑以 Linux 启动时,
唯一接收到的软体, 所以 它必须要包含启动整个作业系统所需的东西. 可以使用模组方式,
但是不包括网路模组. 因为网路功能一定要放在 kernel 中. 简而言之, 您的 kernel 至少需要
以下这些
filecache
.config
当做起点. 如果您想要在没有 Bootprom 的状况下测试, 请确定您
已经在 kernel 内包含硬碟机的支援.
当您的选择完成後, 照常地输入 make clean;
make dep
接著 make zImage
, make modules
与
make modules_install
. 这会花一点时间...
现在您准备去测试您的新 kernel, 先用先用 lilo. 安装您的 kernel
(参考 lilo 文件),并重新启动您的电脑 (由硬碟启动). 如有任何错误, 修正它们并再试一次.
执行 depmod -a
计算 modules dependencies. 当完全无误时, 执行 make bpImage
产生一个
bootimage 给 TCP/IP Bootprom 使用.
您的伺服器要有足够的空间来保存您的整个 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 档案系统下可以工作.
既然我们要我们的 root 档案系统在大部份的 Linux 客户端以唯读的方式挂上, 那就要使档
案系统有些微的不同, 因此我们将需要写入权限的地方以 ramdisk 或 filecache 取代. 我们把
这个档案系统建立在 /export/linux/rootfs
目录下, 而标准的版本则直接放到 /runtime/
下. 登入您
的 NFS 伺服器并在 /export/linux/rootfs
目录下,建立以下的目录跟连结:
/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.ramdisk
,
可以快速设定并挂上 ramdisk:
#!/bin/sh
#
# 设定一个 ramdisk 因为 root 透过 NFS 以唯读方式挂上
#
modprobe rd
gzip -c -d /runtime/lib/ramdisk.gz | dd of=/dev/ram bs=1k > /dev/null 2>&1
mount -n -t ext2 /dev/ram /ramdisk
runtime/etc/rc.d/rc.sysdetect
,
这是所有的机器各自独立的设定档, 包括侦测及分配 区域硬碟机的分割区
给档案快取使用. 为了空间的理由我们不在此份文件可列印的版本中包含此档, 但您可以在超文
件的版本找到它;
runtime/etc/rc.d/init.d/filecache.init
这是用来启动档案系统的:
#!/bin/sh
#
# filecache: 档案快取: 启动档案快取 (给 NFS root 用)
#
# 来源功能函数库.
. /etc/rc.d/init.d/functions
# 看看我们如何呼叫功能函数.
case "$1" in
start)
if [ -e /cache -a -r /etc/filecache.conf ]; then
echo -n "Starting NFS filecache: "
# 把 var 与 tmp 移到区域性的硬碟机
rm -rf /cache/var /cache/tmp
(cd /ramdisk; tar cf - var tmp) | (cd /cache; tar xf -)
(cd /ramdisk; rm -rf var tmp;ln -s /cache/var;ln -s /cache/tmp
)
chmod 777 /cache/tmp
# 启动档案快取
daemon filecache -d on
echo ""
touch /var/lock/subsys/filecache
fi
;;
stop)
filecache off
rm -f /var/lock/subsys/filecache
;;
*)
echo "*** Usage: filecache.init {start|stop}"
exit 1
esac
exit 0
runtime/etc/filecache.conf
,
档案快取的设定档
Max 100 MB 50 % #
Cache /runtime /cache
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
目录下. 把
bootptag 或
dhcptag 安装
在 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
, 就这样您的组态就绪了!
如果您还未完成它, 请安装您的 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.
如果您以後想更新软体,安装一些错误修正档或安全性修正档, 请按照下列步骤:
rootfs
目录runtime
目录为可读可写给您得客户端nfsroot
目录为 runtime (在 /etc/bootptab
中设定)rpm
, 它可以做得很好 (只要小心当
您安装任何软体套件时,要注意一些您做过的修正可能有些要作修改).
在您的客户端电脑, 使用您喜欢的 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
子目录并放入如下的工具:
mrzip.exe
,
一个用来压缩您客户端硬碟影像档的程式.
mrunzip.exe
,
一个用来回存您硬碟影像档到伺服器的程式.
@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
重新建立磁碟影像档以维持您的所有变更.
在此份文件先前的版本, 我们使用过微软公司的 Windows 95 server-based installation, 但是用这方法太 过痛苦又不是那麽的有价值:
在客户端用 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
子目录并把下列工具放进去:
mrzip.exe
,
一个用来产生您客户端硬碟机压缩影像的程式.
mrunzip.exe
,
一个用来把压缩影像档从伺服器回存到您客户端硬碟的程式. 在您的客户端开个 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 侦测 到新的硬体 设备的讯息: 一片新的音效卡, 一棵新的硬碟机, 一片新的网路卡, 或者一只新的滑鼠... 会这样的原 因有二:
您无法避免的问题是每台电脑的网路卡. 很不幸的, 给我们的 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
.