微型机与应用
MICROCOMPUTER & ITS APPLICATIONS
2000 Vol.19 No.3 P.57-59



支持DOS和UNIX双重操作系统的无盘工作站环境的实现
陈庆章
　　摘　要：让NOVELL网络同时支持DOS和UNIX双重操作系统的一种方法,并讨论了若干系统管理问题。
　　关键词：网络 双重操作系统 无盘工作站
1 计算机实验环境的新课题
　　各类学校的计算机资源使用环境,正在发生重大的变化。一是由于Windows的流行,使得DOS应用越来越不受用户欢迎;二是可以支持访问因特网的校园网络的建立,使用户越来越对网络应用倾注热情。而我们所面临的情况是:由于各个学校普遍资金紧张,设备无法跟上计算机的发展速度,一些已经处于淘汰的计算机设备仍不得不在使用中,如各校广泛存在的无盘工作站网络。如何给这些无盘工作站网络灌注新的活力,是我们应当考虑的事情。
　　因此,我们就想将原有的无盘工作站机房,改造成1个多重操作系统选择的环境,使其可以同时支持DOS和UNIX。如此不仅可以提供1个PC/UNIX的教学环境,培养更多UNIX系统管理人才,也可更加充分地利用现有无盘工作站硬件资源。
　　本文将介绍如何将PC/UNIX系统FreeBSD,通过其本身所支持的无盘工作站开机功能,再结合Novell Netware所支持的远程引导开机功能,把无盘工作站机房建设成为可选择DOS或UNIX操作系统的工作环境的方法。该系统的基本结构如图1所示。

图1 无盘工作站机房多重操作系统环境示意图
2 支持TCP/IP应用的无盘工作站环境的建立
　　尽管无盘工作站已经不再受到青睐,但对于学校教学应用而言,它仍有一些优点,如简化系统管理、文件服务器提供文件资源共享,还可节省每部PC的硬盘空间,提供打印机资源共享,无盘工作站可避免硬盘感染病毒及被格式化的危险等。
　　要使无盘工作站支持UNIX,必须首先使工作站支持TCP/IP。Novell Netware局部网络所使用的以太帧格式有2种: 
　　1.IEEE 802.3 用于以PC/DOS为基础的文件服务器。
　　2.Ethernet II （type 8137） 用于以UNIX WS或VAX/VMS为基础的文件服务器。
　　而Novell所定义的IEEE 802.3的帧格式无法识别TCP/IP的帧,因此如果使用早期Novell系统所提供的IPX.COM来驱动网卡,就无法与使用TCP/IP协议的主机相连。为了解决Novell网络与TCP/IP网络无法共存的问题,可以使用packet driver使得PC TCP/IP（NCSA）可与Novell的帧共存。
　　在TCP/IP的协议中,每1部远程终端机均需设定1个唯一的IP地址,才能在主机与远程终端机间正确无误地传送数据。在校园网络上存在着许多PC,如果我们要给每部PC1个IP地址,实际上无法做到。一是因为不是每1部在网络上作业的PC,都需要1个IP,校园网络的PC仅当它本身安装成UNIX操作系统,成为一部PC/UNIX工作站,可支持他人远程载入使用时,才需要注册申请1个固定的IP地址,以维持正常运作。而一般PC只是通过远程载入去获取其它工作站或主机的资源,因此只有在使用NCSA等远程载入程序时,才需要给它一个IP地址;再则,PC众多,管理IP不易,若排除IP不够分配的问题,真要分配每部PC1个固定IP,对管理者而言,如何正确维持每部PC的以太地址与IP地址的对照表,就是一件相当麻烦的工作。
　　出于上述的考虑,我们在网上找到了1套KA9Q网络公用软件,它可以支持以动态方式来供给网络上IP地址的要求。KA9Q是1套public domain的网络公用软件,它也可以提供bootp server的功能。此软件的硬件只要是PC/286即可。它的建立方式主要是将KA9Q软件安装在该PC的硬盘上,启动其中bootp server的功能,再设定该bootp server所能给的IP address的区间(例from 202.116.3.1 to 202.116.7.254),当然作为bootp server的PC也必需具备上网络的能力,当它上网络并执行了bootp server的程序时,它就开始在整个局部网络上服务所有关于IP 地址的请求了。也就是说当网络上有人使用网络通信程序如NCSA的telnet或ftp,而且在NCSA的config.tel文件中设定了myip=bootp时,该部PC就会发出1个请求,当KA9Q bootp server收到该信息包时,就会送给该PC1个动态产生的IP address。
　　KA9Q bootp server 动态分配IP的特点如下:
　　（1）服务器不需记录任何PC的ethernet address 。
　　（2）可设定动态分配的IP区间(例from 202.116.3.1 to 202.116.7.254)。
　　（3）当服务器接收到网络上任何1部机器发出的bootp request时,就会在它可动态分配的IP表上,找出1个目前尚未分配出去的IP地址给发出request的机器,并在其IP表上标记此IP已分配。
　　（4）服务器会设定1个IP安全存量的标准,当IP表中尚未分配的IP达到一定的低值时,服务器会回收一些已经分配出去的IP地址。也就是说服务器会不定期地对已分配出去的IP做检查,确认该IP是否尚被使用,若该IP已不在网络上,则服务器就会在其IP表中重新标记该IP是可供分配的。
3 无盘工作站多重操作系统环境建立方式
　　从无盘工作站PC的硬件特性和简化系统管理的考虑,我们采用了客户机服务器的模式来处理无盘工作站客户远程开机的功能。通过无盘工作站用户端远程开机的功能,每个无盘工作站客户借着网络的传送,就能从服务器端获得它的操作系统,由此使每个无盘PC客户都能启动成为一个UNIX工作站,并且可从服务器端获取所需的应用程序。
　　无盘工作站通过网络卡的boot ROM,从网络上的Novell文件服务器的login目录下取得引导映象文件,此时被包装在引导映象中的config.sys与autoexec.bat就会被执行,于是无盘工作站被启动,出现操作环境选单画面,此时用户即可根据自己的需求来选择不同的选项。若用户选择将PC设置成一个FreeBSD工作站,则DOS 执行FreeBSD的远程引导程序(netboot.com),以使它启动成为一个FreeBSD工作站。这样一来就达到同一PC硬件设备可任意选择不同的操作系统的目标。
　　FreeBSD无盘工作站的远程引导运行原理如下:
　　（1）把原来PC/LAN上的Novell Netware网络系统的远程引导功能当作1个系统转换的桥,当无盘工作站已经远程引导成为DOS 状态时,在此状态下执行FreeBSD所提供的远程开机程序(netboot .com)。
　　（2）netboot.com程序会驱动该无盘工作站上的网卡,使该网卡发出1个bootp的请求,要求网上的bootp服务器供给该PC一些开机必要的相关数据,包括提供开机程序的服务器的IP地址、PC开成UNIX工作站所需的IP地址、Gatway的IP地址、域名以及子网屏罩等数据。
　　（3）无盘工作站得到上述数据后,再送出要求boot程序的TFTP(Trival File Transfer Protocol)请求,请求一文件名格式为cfg.IP-address的数据文件,例:假设该无盘工作站的IP地址为202.116.17.1,则它所请求的文件名即为cfg.202.116.17.1。
　　（4）接下来服务器使用tftpd daemon拷贝boot程序至无盘工作站的内存,无盘工作站就可执行boot程序。
　　（5）无盘工作站的boot程序利用NFS mount去装载无盘工作站的root file system,将/kernel载入内存中,将控制权转移给 /kernel。至此无盘工作站开机成功,成为FreeBSD工作站。
4 若干系统管理问题
　　1.IP address 的设定。在TCP/IP网络上的每个UNIX工作站均需设定唯一的IP地址,为避免多个无盘工作站引起混淆,必须付予每个无盘工作站1个节点名称,并设定它的IP address,在域名服务器上注册,以确保这些机器能够正常作业。
　　2.文件系统的管理。因为无盘工作站所使用的系统根目录均置于服务器端的硬盘,为避免无盘工作站端的不当使用,造成硬盘损坏牵连服务器本身,因此在安装系统时,可用2个硬盘分别放置服务器端及无盘工作站端所需使用的程序。
　　3.帐号管理问题。由于无盘工作站数量较多,若每一工作站都拥有各自的1套帐号数据,则系统管理者在管理上势必非常麻烦。可能的解决方法如下:
　　（1）将帐号数据文件放置在服务器端的文件共用区中,通过NFS mount让多个无盘工作站共用同1份帐号数据。
　　（2）建立通用帐号系统（如麻省理工学院所开发的Athena系统）。
　　（3）先提供1个公用帐号,让用户进入系统,再提供1个让用户自行注册建立帐号的程序。用户自行输入建帐号的基本数据,这些数据必须包含1个 Trusted Node Account,操作系统定期在每一天定时对这些申请帐号的注册数据进行批处理,根据用户所提供的 Trusted Node Account,由操作系统发出E-mail,要求用户响应(reply),借以确认用户所提供的 Trusted Node Account 是确实无误的。经过这样的确认程序后,才真正依据用户注册数据在系统中建立1个新帐号。
　　4.软件的暂存空间设定。某些软件在执行时（尤其是 for Windows 的软件）,软件本身必会产生一些暂存文件,若安装时将这些暂存文件目录设定在文件服务器的目录上,会造成作业运行时服务器端及PC端相当频繁的网络传输,并且会造成服务器的磁盘 I/O 十分繁忙,如此不仅增加网络的负担,并且使软件的执行速度变慢。可以考虑通过扩充无盘工作站 PC 端的内存,建立虚拟磁盘的设置,设定环境变量set temp=c：（此时c为虚拟磁盘）,如此即可提高作业速度。
陈庆章（杭州浙江工业大学计算机与网络中心310023）
收稿日期：1999-10-31
