BOOTP与TFTP技术介绍及原理
BOOTP远程启动是一种产生于早期UNIX的远程启动方式,在现在的 UNIX、Linux的无盘网络中是较常用的远程启动方式之一,在Windows的无盘网络运用较少,但随着Windows 2000不支持RPL远程启动,并且以TCP/IP作为默认安装网络协议,逐步表明今后的Windows也将以TCP/IP协议作为主要的发展方向,纯 TCP/IP的网络将是今后发展的方向。本章将系统地介绍BOOTP的相关知识。
一、BOOTP服务简介
BOOTP服务 的全称是BOOTSTRAP PROTOCOL,是一种比较早出现的远程启动的协议,我们经常用到的DHCP服务就是从BOOTP服务扩展而来的。BOOTP协议使用TCP/IP网络 协议中的UDP 67/68两个通讯端口。 BOOTP主要是用于无磁盘的客户机从服务器得到自己的IP地址、服务器的IP地址、启动映象文件名、网关IP等等。这个过程如下:
第1步,由BOOTROM芯片中的BOOTP启动代码启动客户机,此时客户机还没有IP地址,它就用广播形式以IP地址0.0.0.0向网络中发出IP地址查询的请求,这个请求帧中包含了客户机的网卡MAC地址。
第2 步,网络中的运行BOOTP服务的服务器接收到的这个请求帧,根据这帧中的MAC地址在BOOTPTAB启动数据库中查找这个MAC的记录,如果没有此 MAC的记录则不响应这个请求,如果有就将FOUND帧发送回客户机。FOUND帧中包含的主要信息有客户机的IP地址、服务器的IP地址、硬件类型、网 关IP地址、客户机MAC地址和启动映象文件名。
第3步,客户机就根据ROUND帧中的信息通过TFTP服务器下载启动映象文件,并将此文件模拟成磁盘,从这个模拟磁盘启动。
二、TFTP服务简介
TFTP 服务的全称是Trivial File Transfer Protocol,可以翻译为“简单文件传输协议”。FTP大家很熟习了,TFTP可以看成一个简化了的FTP,主要的区别是没有用户权限管理的功能,也 就是说TFTP不需要认证客户端的权限,这样远程启动的客户机在启动一个完整的操作系统之前就可以通过TFTP下载启动映象文件,而不需要证明自己是合法 的用户。这样TFTP服务也就存在着比较大的安全隐患,现在黑客和网络病毒也经常用TFTP服务来传输文件。所以TFTP在安装时一定要设立一个单独的目 录作为TFTP服务的根目录,比如c:\tftpboot,做为下载启动映象文件的目录,这样除了这个目录以外TFTP服务就不能访问。并且可以设置 TFTP服务只能下载,不能上传等等,以减少安全隐患。
三、常见的BOOTP远程启动相关软件
1、 BOOTIX
它 的网址是www.bootix.com是一家德国的公司,它一直在做BOOTP远程启动和无盘系统的推广工作,在本书中所用的BOOTP服务端软件 bootpd32.exe和TFTP服务端tftpd32.exe都是这家网站上提供的免费软件。但它的启动ROM不是免费的,所以我们并不使用它的 BOOTPROM。
2、ETHERBOOT
它是在Linux上比较广泛使用的一个免费的TCP/IP BOOTPROM的编译软件,它可以从etherboot.sourceforge.net下载源代码,在Linux下编译出大多数网卡的 BOOTPROM代码。针对大多数的人不熟习Linux系统,在http://rom-o-matic.net网站上还可以通过web的方式下载网卡的 BOOTPROM。
3、MKNBI
MKNBI是BOOTP启动映象制作工具,与ETHERBOOT同样是 Linux下的软件,可以在etherboot.sourceforge.net下载源代码。为了方便在Windows下制作启动映象文件,本书光盘中提 供一个Windows的工具mknbi-dos.exe。
4、 HaneWIN DHCP/BOOTP Server
HaneWIN DHCP/BOOTP Server是运行在Windows操作系统下的DHCP/BOOTP服务器,它可以运行于Windows 9X之类的非网络服务器的操作系统,并且还带有TFTP服务器。它是共享软件,可以在http://www.hanewin.de/homee.htm网 站下载试用版式,现在的版本是1.8.11版,非注册版有30天的试用期。
【提示】通过以上简单的介绍我们就知道,BOOTP的启动过程有这样几个关键的步骤:
1.得到客户机网卡的BOOTPROM代码,写入客户机的网卡BOOTROM或主板BIOS并启用它。
2.在服务器上安装BOOTP服务和TFTP服务。
3.编写BOOTPTAB远程启动数据文件。
4.制作启动客户机的操作系统启动映象文件,以供给客户机下载和启动系统。
BOOTPROM的下载和写入
由 于国内多数用户使用RPL或PXE远程启动系统,网卡供应商一般只能提供RPL/PXE芯片而不能提供BOOTP的网卡启动芯片,所以如果想要使用 BOOTP远程启动的无盘系统,我们必须到rom-o-matic网站下载芯片代码,并且制作BOOTROM芯片或把BOOTP启动代码写入客户机的主板 的BIOS中,使客户机支持BOOTP远程启动。
一、下载BOOTP启动代码
登录http://rom-o-matic.net我们看到下图:
其中5.0.7、5.0.6、5.0.5链接指向不同的etherboot的版本,它不断有新的版本推出,在本书出版后一定会有新的版本。我们选择一个较新的版本5.0.6。
(1) 选择网卡的型号(Choose NIC/ROM type)。
基本国内所有能买到的网卡都可以找到相应的选项,如rtl8029、rtl8139、ne(ne2000兼容网卡)、dlink-530tx等等。
(2) 设置网卡BOOTPROM的配置(For custom ROM configuration press)
点击[Configure]按钮则进入下图。
这个页面可以设置BOOTPROM的一些选项,下面主要介绍几个比较常用的选项。
ASK_BOOT
这个选项是设置BOOTPROM启动时是还询问从网络启动还是从本地盘启动(“Boot from Network or from Local?”),默认值为3,即在启动时询问这个问题并等待3秒。如果设为0或者-1则启动时不询问。
ANS_DEFAULT
这个选项是设置上面那个问题的默认答案,即当设为不询问或启动时没有选择的情况下是由网络启动还是由本地盘启动。默认的是从网络启动。
NO_DHCP_SUPPORT
这个选项是设置是否支持DHCP服务,默认是支持DHCP服务,这样我们就可以用DHCP服务。
如果做了修改就要选择Save Changes回到上一页面。
(3) Choose ROM output format:选择你要下载的代码格式。
我 们常用的有这两种,第一种Floppy Bootable ROM Image(.lzdsk),如果选择这种格式,就是下载模拟ROM启动的软盘映象文件,这种格式的代码文件可以制作BOOTP启动模拟软盘,在制作 BOOTROM或写BIOS前可以用模拟软盘测试ROM代码是否正确,也可以在没有条件制作BOOTROM时用它启动。第二种 Binary ROM Image(.lzrom),这种格式就是BOOTPROM的代码文件。
(4)To generate and download ROM image press:下载。
点击Get ROM按钮就可以下载文件了。
二、用软盘模拟的方法测试ROM的网卡类型是否正确。
我们在Windows系统中可以用rawrite.exe这个软件将我们下载的.lzdsk文件写到一张格式化过的软盘上,rawrite.exe可以在Linux的安装盘上找到。过程如下:
(1) 先将那个.lzdsk文件名改为dos下的8.3格式的文件名,比如:pci.dsk。
(2) 在命令行窗口中运行rawrite。
(3) 输入映象文件名pci.dsk。
(4) 输入软盘盘符A:
用这张盘启动客户机就可以看到如图,出现提示“Searching for server (DHCP)..."
客户机不断找DHCP服务器或BOOTP服务器,这就说明ROM的网卡类型选对了,下一步可以将代码写入ROM芯片。
三、将BOOTPROM代码写入网卡的ROM芯片
写 启动芯片需要专用ROM写入设备,在写入时要根据ROM的大小选择芯片的容量,ETHERBOOT芯片代码文件的大小为16K,所以要选择容量为16K的 27128型号芯片。在写好芯片后将它插入网卡的ROM插槽,将网卡插回客户机,用网卡的设置程序setup.exe(一般在网卡的驱动盘的根目录或 setup目录)设置Remote Boot Enable,使BOOTROM有效。这时就可以看到与上图相同的画面了。
另外一种方法是将BOOTPROM代码写入主板的BIOS中,多数AWD BIOS主板可以这样做,因为在写入过程中出错主板就不能启动了,所以用这个方法一定要小心操作。我们以AWD的BIOS为例说明。
不 同时期的AWD主板由于BIOS芯片型号不同,可以在主板驱动盘中找以相应版本的AWDFlash程序,如果没有可以到主板厂家网站上下载,还必须下载 CBROM程序。因为较早的BIOS不支持网络启动,BOOTPROM代码写入后可能也不能从启动芯片启动,如果你的主板BIOS的版本较早,可以到主板 网站上下载最新的BIOS文件。
【注意】BIOS芯片的大小有1M、2M和4M等几种,如果你原来的主板上是1M,在下载时只能下载1M的BIOS代码文件。
因为要在dos下操作,所以要将下载的.lzrom文件的长文件名改成dos格式文件名,比如:bootp.rom,将awdflash.exe、cbrom.exe、bootp.rom复制到一张用Windows 98格式化的系统启动盘上,用这张软盘启动客户机。
(1)读出BIOS文件
AWDFLASH /sy /pn biosrom.bin
保存为biosrom.bin。
把biosrom.bin复制一份以便可以恢复原来的状态
(2)写bootp.rom文件到biosrom.bin里面
CBROM biosrom.bin /pci bootp.rom
如果是ISA网卡,命令则应为
CBROM biosrom.bin /isa bootp.rom
如果提示空间不够,可以检查BIOS文件中的内容,如果已经有RPL/PXE远程启动代码,将它用以下命令删除。
CBROM biosrom.bin /d
然后再写入BOOTP代码。
CBROM biosrom.bin /pci release
(3)把biosrom.bin写入主板BIOS
AWDFLASH b.bin /py /sn /r
重新启动客户机,可以同样看到BOOTP启动画面。
bootpd32的安装
安装一台Windows 2000 Server的服务器,将把bootpd32.exe复制到winnt\system32下,运行cmd进入命令行窗口。
安装的方式有两种,一种是安装成NT服务,另一种是以独立程序的形式运行。
一、安装bootpd32为NT服务
(1)安装命令:
bootpd32 -install -i 192.168.0.1 -t 0
其中192.168.0.1是我的bootpd服务器ip地址。
(2)服务器多网卡时的命令:
bootpd32 -install -i 192.168.0.1 -i 192.168.1.1 -t 0
多个网卡ip地址应在不同的网段。
(3)启动服务
net start bootpd
当然也可以用管理工具中的"服务" 启动bootpd服务。
(4)设置BOOTPTAB文件名
在默认设置下是存放在c:\etc子目录。如果要改变BOOTPTAB的目录和文件名,可以在安装命令加上文件名(包括目录)
bootpd32 -install -i 192.168.0.1 -t 0 c:\winnt\system32\bootp.tab
这样BOOTPTAB启动数据文件就被定义为c:\winnt\system32\bootp.tab
(5)删除BOOTP服务:
bootpd32 -remove
二、以非NT服务的方式运行bootpd32
在用Windows 9X、Windows 2000 Professional或Windows XP等非服务器的操作系统做无盘的服务器时,就可以用以下的命令运行BOOTP服务。
Bootpd32 -run -d -d -d -d -i 192.168.0.254 -t 0
我们将看到bootpd32运行的窗口如图。
三、bootpd32的参数
可以运行以下命令查看bootpd32的运行参数:
bootpd32 -?
常用的参数如下:
* -run 以独立程序的形式运行bootpd32服务
* -install 安装bootpd32为NT服务
* -remove 删除bootpd32服务
* -i 绑定服务的ip地址,如果有多个ip地址就可以用多个-I参数
* -d 在用-run命令时可以最多加4个-d命令,显示运行的调试信息。
* -t 设置BOOTP服务超时的时间数,如果为0则不超时。
* configfile 是BOOTPTAB表的文件名,默认c:\etc\bootptab。
* dumpfile 是BOOTP服务数据备份文件名,默认c:\etc\bootpd.dmp
在BOOTP服务以-run参数运行时,可以用Dump bootptab命令将bootptab数据表备份到c:\etc\bootpd.dmp文件中,我们可以通过阅读这个文件判断BOOTPTAB文件是不是正确。
tftpd32的安装
tftpd32的安装方式与bootpd32基本相同,也有两种方式:NT服务的方式与独立运行的方式。
一、安装tftpd32为NT服务
先把tftpd32.exe复制到winnt\system32下。
运行cmd进入命令行窗口。
(1)安装TFTP服务
tftpd32 -install
(2)启动TFTP服务
net start tftpd
(3)tftpd32可以加多个参数,在安装成NT服务时这些参数不象bootpd32放在安装命令后,而是放在文本文件c:\etc\tftpd.cnf中。
有关参数可以打tftpd32 -?查看,我们稍后给大家介绍。
二、以非NT服务方式运行tftpd32
tftpd32 -cmd -d C:\tftpboot
tftpd32运行窗口如图
三、tftpd32的参数
运行tftpd32 -?可以看到所有tftpd32的参数。
常用的参数如下:
* -cmd以非NT服务的方式运行tftpd32,在这种方式下所有的参数应放在命令行后,而不是c:\etc\tftpd.cnf文件中
* -install 安装TFTPD服务,参数要放在c:\etc\tftpd.cnf中。
* -remove 删除TFTPD服务
* -d [path] TFTP上传或下载的目录,因为TFTP服务没有权限设置,所以这个目录几乎所有人都可以下载,所以重要的文件不能放在这个目录中。
* -w 设TFTP在上传时有改写文件的权限。
* -x 设TFTP在上传时有建立文件的权限。
BOOTPTAB文件的编写
安装了BOOTP服务后我们还要编写BOOTPTAB文件,它是纯文本格式的文件,在安装BOOTP服务时指定它的文件名和目录,一般默认是c:\etc\bootptab。
我们可以用Windows中的记事本建立这个文件,它的编写遵循以下的语法
* 以一行为一个记录,如果一个记录比较长,只要将“\”放在行末就将下一行与本行做为一个记录。
* 每一台客户机都要有一个记录,还可以有多个共用记录。
* 每一记录是以客户机的名称开头,以“:”分隔各个参数,行末不要加“:”。
上图就是一个BOOTPTAB的例子。
第一行default是共用的记录,在每台客户机的记录中可以用tc=default来引用它,这样共用的设置就不用每一个记录都写了。
常用参数如下:
* hd - 下载映象文件的根目录,只能是/tftpboot不能写为其它的。
* bf -- 映象文件名
* ds - 域名服务器ip
* gw - 网关ip
* ha - 网卡的mac地址
* ht - 网络硬件的类型,ethernet是网卡
* ip - 客户机的ip地址
* sm - 子网掩码
* ts - 时间服务器
* ms - 返回的信息包的大小,一般可以不设
* sa - 服务器地址,BOOTP服务器用自己的ip地址做为服务器地址发送给客户机,如果设置了sa参数,就用sa设置的ip地址做为服务器地址发送给客户机。
按以上两章介绍的方法,并且根据自己网络的实际情况配置好客户端,安装BOOTP服务和TFTP服务,编写好BOOTPTAB文件。打开客户机的电源,就应看到如图所示画面。
客户机不断地出现“Unable to load file",表示无法下载启动映象文件。现在我们就差最后一步,制作启动映象文件供客户机下载启动。
DHCP服务用于BOOTP远程启动
这 一节我们先不做启动映象文件,而是研究一下Windows 2000 Server 的DHCP服务。为什么要研究DHCP服务呢?前面介绍了,DHCP服务是由BOOTP服务发展而来的,而且兼容BOOTP协议。BOOTP服务中要编写 BOOTPTAB文件,每当网络中增加一台客户机都要改写BOOTPTAB文件,而所有的网络服务器操作系统都自带DHCP服务,只要设置好DHCP服务 后增加或改变客户就不需要手工修改BOOTPTAB文件了。
下面我们就以Windows 2000 Server的DHCP服务举例说明。
安装好Windows 2000 Server和它的DHCP服务(有很多书介绍DHCP服务器的安装,这里我们就假设已经安装完成了。如图所示)
服务器的ip为192.168.0.1,新建作用域设地址分配范围是192.168.0.10 到192.168.0.254,作用域选项003路由器 ,006 DNS服务器等等,并激活作用域。
选中作用域,击右键菜单中的属性。选[高级]标签,如图所示,设置“动态为以下客户指派IP地址”选择“两者”,也就是同时支持DHCP和BOOTP的客户。
这样你的DHCP服务器就同时提供BOOTP服务了。下面就是要设下载启动文件服务器和启动映象文件名了。
选取作用域选项,击右键,选[配置选项],选择“066启动服务器主机名”选项,在数据输入区输入TFTP服务器的IP地址192.168.0.1如图。
如果你安装设置了DNS服务器,这里可以填主机的名称,没有设置DNS服务器的情况下就要填主机的ip地址,我的服务器是192.168.0.1。
接着设置“067 启动文件名”为我们的启动文件名,假设为win98.x。如图。
这样支持BOOTP的DHCP服务器就设置完成了,无论增加多少台机器(只要不超地地址池的ip数)都不用手工设置ip地址,也不用记每块网卡的MAC地址了。
但 又有一个问题,如果无盘客户机的配置不同,要用不同的映象文件,比如:有一部分是无盘98,另一部分是Windows 2000 终端,或有一部份机器是一种网卡,而另一些是另外一种网卡,启动文件必须都不一样应该怎么办呢?这就要用到DHCP服务中的“保留”的功能了。
进入DHCP,在保留上击右键,选新建保留,将机器名、IP地址和网卡MAC填入后,选择支持的类型为“两者”,然后点击[添加]。
将所有的客户机的保留都添加后关闭“新建保留”对话框。如图可以在保留项下看到所有保留的机器。
在USER01上击右键,选则配置选项,出现“保留选项”对话框
找到067 启动文件名在数据输入的字串值中填入这个工作站的启动映象文件名,这个工作站就可以有一个与其它工作站不同的映象文件。
用以上的方法,我们用Windows 2000 Server中自带的DHCP服务完全可以代替BOOTP服务,这两种方法的区别是什么呢?
* BOOTP是用BOOTPTAB文本文件做为启动数据的记录,手工编写比较麻烦,容易出错,但如果自己编程实现BOOTPTAB的管理,BOOTPTAB的修改比较容易。DHCP是图形界面管理,数据直观,不易出错。
* DHCP可以同时提供BOOTP和DHCP两种服务,在制作无盘Windows 98时可以用动态的ip地址。而BOOTP只能提供BOOTP服务,无盘Windows 98只能用固定ip地址。
* BOOTP服务可以以独立运行的方式安装在非服务器操作系统中,而只有Windows 2000 Server和Windows NT Server之类的服务器操作系统中才有较好的DHCP服务软件。
Windows 2000中的BOOTP无盘98
本章用BOOTP启动的方法做Windows2000为服务器的无盘Windows 98系统。
需要的软件如下:
Windows 2000 Server安装光盘
Windows 98安装光盘
Litenet 1.15
网卡BOOTP启动芯片(或启动代码已写入客户机主板的BIOS)
MKNBI 启动映象文件制作工具
第一步:安装Windows 2000 Server服务器。
正确安装Windows 2000 Server,设服务器名server,网络安装以下协议:
* NWLink IPX/SPX/NetBIOS Compatible Transport
* NWLink NetBIOS
* Internet 协议 (TCP/IP),ip地址192..168.0.1
【注意】为了方便用户权限的设置,系统分区和准备做无盘共享目录的分区要采用NTFS格式。
第二步:在服务器上安装BOOTP服务与TFTP服务
建立目录c:\etc并且新建文件tftpd.cnf内容如下:
-d c:\tftpboot
在c:\etc中新建文件bootptab内容如下:
default:ht=ethernet:vm=rfc1048:gw=192.168.0.1:sm=255.255.255.0\
:hd=/tftpboot:bf=win98.x
u01:tc=default:ha=00.50.56.40.00.4a:ip=192.168.0.21
u02:tc=default:ha=00.50.56.40.00.77:ip=192.168.0.22
u03:tc=default:ha=00.50.56.40.00.67:ip=192.168.0.23
......
其中gw为网关的ip,不一定是服务器ip地址。ha为无盘站网卡MAC地址,ip为无盘站的ip地址。
建立启动映象TFTP下载目录c:\tftpboot。
复制bootpd32.exe和tftpd32.exe到\winnt\system32中,运行cmd命令进入命令行窗口,运行以下命令:
bootpd32 -install -i 192.168.0.1 -t 0
net start bootpd
tftpd32 -install
net start tftpd
第三步:安装有盘Windows 98
在第一台无盘站上挂上硬盘,一般可以分两个区,C盘做为系统盘,D盘用来存放一些软件备份(如win98的目录)和临时文件,Windows 98系统及所有应用软件都要安装在C盘。
网络要安装ipx/spx协议和tcp/ip协议,机器名为u01,工作组与服务器相同,TCP/IP协议属性设置如下:
第一种情况用BOOTP服务,设置ip地址192.168.0.21,掩码255.255.255.0,网关和dns根据网络中的实际情况设置。这步很重要,与PXE无盘98不同,在这里我们要用固定的ip地址,因为我们没有使用DHCP服务器。
另一种情况我们用DHCP服务替换BOOTP服务,则设置ip为从DHCP服务器取得。以后的安装与PXE无盘98相同。
本章中我们按第一种情况安装。
安装好所有无盘站需要使用的软件,如Office 2000、Flash 5、Authorware 5、Photoshop 6等等,对于不同软件做好针对无盘的优化工作。
第四步:安装Litenet 1.15
首先在服务器上建立用户LNGUEST,密码LNGUEST。建立无盘用户组BOOTPUSER,并建密码与用户名相同的用户U01、U02、U03等,以上用户同属于BOOTPUSER用户组。
然后在服务器建立无盘共享目录win98,并在其中建U01、U02、U03等用户目录,LNGUEST用户对win98有完全权限,BOOTPUSER对win98只读权限,每个用户对自己的用户目录有完全权限。
运行Litenet1.15中的setup.exe,安装Litenet。有很多地方对Litenet的安装有详细的讲解,我这里就不在重复了。
安装Litenet并且将C盘上传后我们要做以下的修改:
1.在用户目录U01中新建ip.reg,文件内容如下:
REGEDIT4
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\0001]
"IPAddress"="192.168.0.21"
"IPMask"="255.255.255.0"
"DefaultGateway"="192.168.0.1"
应注意的是0001对于不同的安装过程是不一样的,可能有的机器是0002\0003,在每个用户目录中复制一个ip.reg文件,对于不同的工作目录修改"IPAddress"=相应的ip地址,与前面做的BOOTPTAB文件中要相一致。
2.复制rdrm.com到共享目录win98\Windows。
rdrm.com是用于删除BOOTP启动时产生的内存虚拟A盘,将在usercmd.bat中调用它。
3.修改共享目录win98\Windows\usercmd.bat文件。
Usercmd.bat内容如下:
PATH %PATH%;C:\WINDOWS\LITENET
QNetName.exe
call %TEMP%\QNBName.bat
QUserMan %HOME%
QSetBD %DRIVE%
if exist %WINDIR%\SYSTEM\TweakUI.CPL if exist a:\winboot\qautolog.reg regedit a:\winboot\qautolog.reg
regedit %HOME%\ip.reg
rmrd
QVMEM S: %SERVER% %USERNAME%
choice /C:YN /T:Y,03 Hit N and Ctrl-C not to launch Windows (stop the batch)
if errorlevel 2 pause
%windir%\win.com
其中被修改的有以下两处:
(1)regedit %HOME%\ip.reg
因为没有用DHCP服务,工作站用的是固定ip地址,所以必须用ip.reg修改使每台无盘站可以得到自己的ip地址。
(2)rmrd
rmrd相当于PXE中的Qrestall.exe的功能,用于删除BOOTP启动时虚拟的A盘,这样无盘站就可以使用软驱了。
4.修改共享目录win98\windows\system.ini文件
在[386Enh]中加以下三行,为无盘98设虚拟内存到S盘。
PagingDrive=S:
MinPagingFileSize=65536
MaxPagingFileSize=262144
5.修改共享目录win98\windows\Natnams.Db
文件的格式如下:
用户名 无盘站网卡MAC
例如:
u01 00505640004A
u02 005056400077
u03 005056100067
......
第五步:制作启动映象文件
将安装Litenet时生成的启动软盘插入A驱,当然我们也可以按pxe的方法对这张软盘进行其它的优化,以提高启动速度。
复制mknbi软件到服务器的mknbi目录,运行其中的mknbi-dos,设置如图。
点击[开始制作映象文件]按钮,等待出现下图,选Y退出。
第六步 用BOOTP启动无盘98
在CMOS 中设置关闭硬盘,将http://rom-o-matic.net下载的rom代码做成的BOOTPROM芯片插入网卡并用网卡设置程序使它启用。如果没 有制作BOOTROM芯片的条件也可以用http://rom-o-matic.net下载的BOOTP模拟启动软盘启动。正常情况下就可以启动无盘98 了。
Windows 98中的BOOTP 98
在上一节中我们用Windows 2000 Server做为服务器,安装了BOOTP的无盘Windows 98,对于NT服务器和以后Windows的服务器操作系统版本(如Windows.net)也可以用同样的方法安装。
这 一节我们再来研究用Windows98之类的Windows非服务器操作系统做为无盘98服务器的方法,这些操作系统包括Windows 98、Windows 2000 Professional、Windows XP,它们的特点是软件价格比较便宜,对硬件要求比较低而且对于大多数人这些系统较熟习和容易管理。
第一步:安装作为服务器的Windows 98
由于这台Windows 98是服务器,所以不要装其它的软件,只要装好网络连接。网络中安装的协议如下:
IPX/SPX兼容协议
TCP/IP协议
设ip地址192.168.0.1,掩码255.255.255.0。
设机器名server,
同时设置文件及打印共享。
安装BOOTP服务及TFTP服务。
在服务器上建目录c:\etc,并且在其中新建文件bootptab内容如下:
default:ht=ethernet:vm=rfc1048:gw=192.168.0.1:sm=255.255.255.0\
:hd=/tftpboot:bf=win98.x
u01:tc=default:ha=00.50.56.40.00.4a:ip=192.168.0.21
u02:tc=default:ha=00.50.56.40.00.77:ip=192.168.0.22
u03:tc=default:ha=00.50.56.40.00.67:ip=192.168.0.23
......
建立启动映象下载目录c:\tftpboot。
由于Windows 98不是服务器操作系统,所以不能以服务方法安装这两项服务。我们装bootpd32.exe和tftpd32.exe复制到\windows目录。将以下的instsrv.reg导入注册表。
REGEDIT4
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
"bootpd"="C:\\WINDOWS\\bootpd32.exe -run -d -d -d -d -i 192.168.0.1 -t 0"
"tftpd"="C:\\WINDOWS\\tftpd32.exe -cmd -d c:\\tftpboot"
这样每次系统启动后就自动运行这两个服务了。
安装客户机的Windows 98、Litenet上传和制作启动映象文件。
第三步到第六步与在用Windows 2000 Server做服务器基本相同,在本节就不重复了。
这两种无盘服务器的安装区别在于Windows 98没有用户权限的设置,所以有以下不同:
(1) Windows 98没有用户管理,所以不用建用户。
(2) win98共享目录与用户目录都要设为完全共享权限。
如果用Windows 2000 Professional 做服务器,使用NTFS文件系统,也可以设置用户权限。
BOOTP远程启动的Windows 2000终端
Windows 2000终端大家从有关章节都已了解,本节我们用BOOTP的远程启动方式启动无盘站,从DOS系统通过Novell 的DOS客户端TCP/IP协议连接Citrix MetaFrame1.8终端服务器。
首先安装Windows 2000 Server和citrix metaframe1.8终端服务器,在其它文章已有详细讲解,这里就不在赘述了。
然后安装BOOTP和TFTP服务。
建立目录c:\etc并且新建文件tftpd.cnf内容如下:
-d c:\tftpboot
在c:\etc中新建文件bootptab内容如下:
default:ht=ethernet:vm=rfc1048:gw=192.168.0.1:sm=255.255.255.0\
:hd=/tftpboot:bf=w2k.x
u01:tc=default:ha=00.50.56.40.00.4a:ip=192.168.0.21
u02:tc=default:ha=00.50.56.40.00.77:ip=192.168.0.22
u03:tc=default:ha=00.50.56.40.00.67:ip=192.168.0.23
......
建立启动映象TFTP下载目录c:\tftpboot。
复制bootpd32.exe和tftpd32.exe到\winnt\system32中,运行cmd命令进入命令行窗口,运行以下命令:
bootpd32 -install -i 192.168.0.1 -t 0
net start bootpd
tftpd32 -install
net start tftpd
接 着关键的一步就是制作联接MetaFrame 1.8终端的启动映象文件,从前面两章讲解的内容可以知道,启动时BOOTP是根据下载的映象文件虚拟一张1.44M的软盘,但MetaFrame 1.8的dos客户端ICADOS32安装后的大小要远远超过1.44M,所以我们必须对ICADOS32进行精简,并且进行压缩。最后我们做出的启动文 件有如下,共18个文件:
APPSRV.INI
AUTOEXEC.BAT
COMMAND.COM
CONFIG.SYS
DE22X.COM
HIMEM.SYS
IFSHLP.SYS
IO.SYS
LSL.COM
MNOVLWP.EXE
MODE.COM
MSDOS.SYS
NET.CFG
TCPIP.EXE
WF.EXE
WFCLIENT.INI
WFCNAME.INI
XMSDSK.EXE
其 中IO.SYS、COMMAND.COM、MSDOS.SYS、IFSHLP.SYS、HIMEM.SYS、MODE.COM这六个文件是Windows 98的系统文件;LSL.COM、TCPIP.EXE是Novell的DOS客户端文件;DE22X.COM是Dlink de220网卡的Novell客户端驱动程序,NET.CFG是Novell客户端网络配置文件;APPSRV.INI、WFCLIENT.INI、 WFCNAME.INI、MNOVLWP.EXE都是ICADOS32中的文件;XMSDSK .EXE是内存虚拟盘程序;WF.EXE是ICADOS32精简后用arj压缩的自解压缩包。其中部分文件可以根据网络和终端服务器的情况进行修改。
1、 替换网卡驱动程序。
网 卡驱动文件DE22X.COM是针对Dlink de220网卡的程序,对于不同网卡我们要当然要换这个文件,比如8029网卡是RTL8029.COM。其它的网卡只要在网卡驱动中找Novell系统 的DOS 16位驱动程序,一般是.COM文件,在同一目录中还有一个NET.CFG文件,找到后复制到启动文件目录并将原来的DE22X.EXE删除。
2、修改AUTOEXEC.BAT
mode co80
@echo off
xmsdsk 1440 x: /y >nul
lsl >nul
de22x >nul
tcpip >nul
mnovlwp >nul
x:
a:wf.exe -y >nul
cd wfclient
COPY A:\APPSRV.INI >nul
COPY A:\WFCLIENT.INI >nul
mouse >nul
wfcdos32 win2000 /batch
如果网卡不是DE22X.EXE,将de22x >nul运行网卡驱动程序这行改为实际的网卡驱动程序,例如8029网卡改为rtl8029 >nul。
3、NET.CFG
Link Support
Buffers 8 1500
MemPool 4096
Link Driver DE22X
FRAME Ethernet_II
DE22X改为网卡的驱动名,如8029网卡要把这句改为Link Driver PCIODI。对于其它的网卡,我们可以在驱动盘中的NET.CFG中找到Link Driver <驱动名>,模仿它修改启动目录中的NET.CFG文件。
4、终端服务器设置文件APPSRV.INI
......
[WIN2000]
TransportDriver = TCP/IP - VSL
WinStationDriver = ICA 3.0
EncryptionLevelSession = Basic
Username =
Password = 000100
Address = 192.168.0.1
Compress = Off
Address = 192.168.0.1就是终端服务器的IP地址,我们可能通过修改这行指定终端服务器。
5、终端显示分辩率的设置文件WFCLIENT.INI
......
[Thinwire3.0]
SVGACapability = VESA2
SVGAPreference = VESA2
DesiredHRES = 800
DesiredVRES = 600
DesiredColor = 0x0001
DriverNameAlt = DriverVesa
......
其中SVGACapability与SVGAPreference的值相同,设置如下:
640*480*16 设为 OFF
800*600*16 设为 AUTO
640*480*256 设为VESA1
800*600*256 设为VESA2
1024*768*256 设为 VESA3
DesiredHRES与DesiredVRES分别为宽和高。
如果是16色要将最后一句DriverNameAlt = DriverVesa删除。
例如640*480*16色配置如下:
[Thinwire3.0]
SVGACapability = OFF
SVGAPreference = OFF
DesiredHRES = 640
DesiredVRES = 480
DesiredColor = 0x0001
例如640*480*256色配置如下:
[Thinwire3.0]
SVGACapability = VESA1
SVGAPreference = VESA1
DesiredHRES = 640
DesiredVRES = 480
DesiredColor = 0x0001
DriverNameAlt = DriverVesa
以 上文件可以从提供的软件包中找到,将它们复制到服务器上的一个子目录中,如c:\tsc,运行mknbi-dos.exe,如图13-3,选择 Windows 98SE的启动文件和1.44M磁盘格式,映象包含文件目录为c:\tsc,映象文件名为c:\tftpboot\w2k.x.。点击[开始制作映象文 件]。
最后一步就是启动客户机。
BOOTP的多操作系统启动
无 盘Windows 98与Windows2000终端各有优点,在实际使用时需要根据不同的应用和不同的用户启动不同的操作系统,BOOTP远程启动提供了在启动时选择启动 映象文件的功能,只需分别制作了不同的远程启动映象文件,修改bootptab文件加入相应的命令,客户机就可以根据用户的选择启动不同的系统, bootptab的编写方法在Etherboot网站的http: //etherboot.sourceforge.net/doc/html/vendortags.html页面中有详细的英文说明。相关的指令解释如 下:
T128:它是BOOTP是否使用启动菜单的关键,它共为6字节的数据,前4字节为E4 45 74 68,后两字节是版本号,一般设 00 00。没有设置T128,以下所有设置都将被忽略。
T160:它是设置启动时菜单选择时的等待时间及默认启动项。Timeout=30表示等待30秒,如果没有设置timeout,则启动时一直等待;default=192表示默认启动项为T192所指启动项。
T184-T191:设置启动菜单提示文字。
T192-T207:设置启动选项。格式如下:
选择项名:服务器名:网关:启动映象文件名:密码:标志:命令每项之间用冒号分隔,最后的冒号可以省略,例如:
Windows 2000:::w2k.x
表示启动Window 2000终端,启动映象文件名是w2k.x,服务器名和网关等都省略了。
下面给大家介绍BOOTP的多操作系统启动具体做法。
首先,按本章介绍的方法安装无盘Windows 98,保存无盘启动的映象文件win98.x在c:\tftpboot目录。
然后,同样按本章介绍的方法安装无盘Windows 2000终端,启动的映象文件为w2k.x,同样存放在c:\tftpboot目录。
最后,修改c:\etc\bootptab文件如下:
motd:\
T185="+-----------------------------------------------+":\
T186="| Windows 98 / Windows 2000 BOOTP SYSTEM |":\
T189="+-----------------------------------------------+"
imagemenu:\
tc=motd:\
T128=E44574680000:\
T160="timeout=30:default=192":\
T192="Windows 98:::win98.x":\
T193="Windows 2000:::w2k.x":\
T194="Local Disk"
default:\
tc=imagemenu:\
ht=ethernet:\
sm=255.255.255.0:\
vm=auto:\
gw=192.168.0.1:\
hd=/tftpboot:\
bf=win98.x:\
ms=1440
user01:tc=default:ha=00.50.56.40.00.4a:ip=192.168.0.11
user02:tc=default:ha=00.50.56.40.00.79:ip=192.168.0.12
user03:tc=default:ha=00.50.56.40.00.67:ip=192.168.0.13
......
这时启动客户机时将出现以下启动菜单。
选择A或1则启动无盘Windows 98,选择B或2则启动无盘终端,选择C或3则是从本地盘启动。
BOOTP常见的错误及解决方法:
1.客户机启动后显示“No adapter found”。
可能是网卡没插好,或是网卡坏了。
2.客户机启动后显示“Searching for server (DHCP)...”。
(1)可能是网卡型号与下载BOOTPROM时所选的网卡型号不同,网卡没法工作;
(2)BOOTP服务或DHCP服务没有正常启动;
(3)虽然BOOTP服务启动了,但在BOOTPTAB中没有这个客户机的网卡记录。
3.客户机启动后显示“Loading 192.168.0.1:/tftpboot/win98.x....”
TFTP服务没有正确启动。
4.客户机启动后显示“TFTP error 1 (File not found)”
找不到启动映象文件,可能是设置时文件名输入错误或映象文件没有放在TFTP下载的目录中。
5.客户机启动后显示“not a valid image"
启动映象文件的格式不对,或者已经被破坏了。
No comments:
Post a Comment