说起无盘工作站,大家一定不会陌生,当年Novell下的无盘DOS工作站很是流行,后来又流行过Win95无盘工作站,只是由于问题多多,后来微软自己停止了对无盘Windows的支持。
随着Linux的日益流行,使用Linux的人越来越多,其实Linux
对远程引导的支持非常好,Linnx内核自身又支持网络文件系统,因此非常适合做无盘工作站,本文将以一个实例向大家详细介绍无盘Linux工作站的安装办法。
这个网络是一个小的局域网,有1台服务器和4台
Linux
无盘工作站,彼此之间用双绞线通过HUB连接,服务器的IP地址定为192.168.0.80
,名字是server
,5台无盘工作站的地址由服务器动态分配,地址范围从
192.168.0.1
到
192.168.0.4
,名字分别是c1,c2,c3,c4,服务器和无盘工作站使用的都是
NE2000
兼容网卡,无盘工作站使用的网卡上都安装了BOOTROM
启动芯片,服务器操作系统安装的是
RedHat
Linux
6.0
,安装时选用定制安装,并安装了全部软件。
Linux的远程引导有两种方式,一是利用Bootp协议,有一个专门的项目EtherBoot提供支持(http://www.slug.org.au/etherboot/),这种方式引导
Linux
的速度是最快的, 但这种方式有一个最大的问题,就是在市场上找不到支持这种远程引导协议的
BOOTROM
启动芯片(除非自己刻录),因为市场上几乎所有的
BOOTROM
启动芯片都是遵循NOVELL远程引导协议的,于是有人提出另外一种方式,就是服务器端用
NetWare
服务器,客户端就可以用现有的BOOTROM
启动芯片了,说到这里大家一定胡涂了,作Linux无盘工作站岂不是还一台 NetWare
服务器?不是的,因为神通广大的
Linux
可以模拟
NetWare
服务器,就象Samba可以把
Linux
模拟成
NT
一样,mars_nwe
可以把
Linux
模拟成
NetWare,不仅能提供NetWare
文件和打印服务,还能提供远程引导支持(知道Linux的厉害了吧),本文讲述的Linux
无盘工作站就是用这种方式作远程引导的。
准备启动盘
由于在
Linux
下没有制作符合
NetWare
远程引导协议启动映象的工具,所以只能用早期的Win95()提供的工具(憾)。找一台装有
Win95
的机器启动后按
F8
进入纯DOS方式,格式化一张启动盘
format
a:
/s
,然后将RedHat
Linux安装光盘上
dosutils
目录下的loadlin.exe复制到启动盘,在启动盘上作一个
autoexec.bat
文件,代码只有一行loadlin.exe
bzImage
root=/dev/nfsroot从
Windows
95
安装光盘的
Win95
目录下的cab文件中解出
rplboot.sys
文件放在启动盘上,命令如下:
extract.exe
/a
/l
a:
win95-27.cab
rplboot.sys
一张用来做启动映象的启动盘就作好了,保存好启动盘,以后作启动映象时会用到它。
编译内核
用于无盘工作站的Linux内核与用于从本地硬盘引导的Linux内核是不同的,无盘工作站的内核必须支持NFS作为根文件系统,即远程根文件系统,所以必须编译无盘工作站专用的内核。笔者使用的内核代码版本是2.2.16,将内核源代码解压到/usr/src下, cd
/usr/src/linux进入内核子目录,执行命令make
menuconfig
进行内核编译配置,下列项目必须按要求设置:
Processor
type
and
features
该项目下面的选项必须根据无盘工作站的CPU类型设置,而不是根据服务器的CPU类型设置
Loadable
module
support
该项目下面的所有选项都禁止,即不支持模块功能
Plug
and
Play
support
设置为有效
Block
devices
该项目下面的都设置为有效
Loopback
device
support
Network
block
device
support
Networking
option
该项目下面的都设置为有效
kernel
level
autoconfiguration
DHCP
support
(NEW)
Network
device
support
该项目下面的选项必须根据无盘工作站使用的网卡进行设置,本例中使用的是NE2000兼容网卡,选项都设置为有效
Ethernet
(10
or
100Mbit)
Other
ISA
cards
NE2000/NE1000
support
(NEW)
Filesystems
该项目下面的Network
File
Systems子项目下面的都设置为有效
NFS
filesystem
support
Root
file
system
on
NFS
(NEW)
其它的选项可以不用理会,直接用缺省值就可以了,当然如果你的无盘工作站有些其它需要使用的设备,你也可以将有关的选项设为有效,比如,本例中的无盘工作站使用了声霸
卡兼容的声卡,下面的选项
OSS
sound
modules
(NEW)
100%
Sound
Blaster
compatibles
(SB16/32/64,
ESS,
Jazz16)
support
FM
synthesizer
(YM3812/OPL-3)
support
(NEW)
都设置为有效
以上设置完成后,退出内核编译设置程序,会出现一个对话框
Do
you
wish
to
save
your
new
kernel
configuration?
回答
然后执行
make
dep
&&
make
bzImage
进行内核编译,这个过程得花一点时间,特别是如果计算机的速度不快的话,花的时间会更长一些。编译内核如果没有错误,会得到内核映象文件/usr/src/linux/arch/i386/boot/bzImage,将启动软盘插入计算机,执行下面的命令
mount
-t
vfat
/dev/fd0
/mnt/floopy
cp
/usr/src/linux/arch/i386/boot/bzImage
/mnt/floppy
umount
/dev/fd0
好了,启动盘上的文件都准备齐全了,等会儿用它到Win95环境下制作启动映象。
服务器设置
服务器端需要运行nfsd、dhcpd、mars_new等几个服务进程,这些软件在ReHat
Linux发行套件里都有,如果在安装
Linux
的时候选择全部安装,这些软件都会随着安装操作系统而装好了,下面对这些软件进行设置,注意,下面的操作要以
root
身份进行。
1、
NFS
守护进程nfsd
首先要建立几个供无盘工作站使用的目录,并通过nfsd
导出,命令如下:
mkdir
/tftpboot
然后编辑文件
/etc/hosts
,加入下面的内容
192.168.0.80
server
server.domain
192.168.0.1
c1
c1.domain
192.168.0.2
c2
c2.domain
192.168.0.3
c3
c3.domain
192.168.0.4
c4
c4.domain
第一台工作站的工作目录设置方法如下:
mkdir
/tftpboot/192.168.0.1
cd /tftpboot/192.168.0.1
cp -a /bin
.
cp -a /dev
.
mknod dev/nd0 b 43 0
chmod 600 dev/nd0
cp
-a
/etc
.
cp
-a
/home
.
cp
-a
/lib
.
rm
-rf
lib/modules
cp
-a
/root
.
cp
-a
/sbin
.
cp
-a
/var
.
mkdir
proc
mkdir
usr
mkdir
tmp
chmod
777
tmp
touch
fastboot
chattr
+i
fastboot
cd
etc
编辑文件
sysconfig/network-scripts/ifcfg-eth0
保留其中的
DEVICE=eth0
ONBOOT=yes
其余的行全部删除,然后增加一行
BOOTPROTO=dhcp
编辑文件rc.d/rc.sysinit,在文件最后加上两行
mount
-t
nfs
server:/usr
/usr
/usr/X11R6/bin/xfs
编辑文件fstab,保留其中的
none
/proc
proc
defaults
0
0
其余的行全部删除,然后增加一行
server:/tftpboot/192.168.0.1
/
nfs
defaults
1
1
其它工作站的工作目录设置方法就简单多了
cd
/tftpboot
cp
-a
192.168.0.1
192.168.0.2
cp
-a
192.168.0.1
192.168.0.3
cp
-a
192.168.0.1
192.168.0.4
编辑文件
/etc/exports
,加入以下内容
/usr
(ro,no_root_squash)
/tftpboot/192.168.0.1
(rw,no_root_squash)
/tftpboot/192.168.0.2
(rw,no_root_squash)
/tftpboot/192.168.0.3
(rw,no_root_squash)
/tftpboot/192.168.0.4
(rw,no_root_squash)
2、动态主机配置协议服务器dpchd
检查一下文件/etc/dhcpd.leases是否存在,若不存在就用命令touch
/etc/dhcpd.leases
创建一个,然后编辑文件
/etc/dhcpd.conf
,加入以下内容
subnet
192.168.0.0
netmask
255.255.255.0
{
range
192.168.0.1
192.168.0.4;
}
3、NetWare
模拟器
marsw_nwe
编辑文件
/etc/nwserv.conf,找到下面的行
#
4
0x10
eth0
802.3
1
将该行开头的'#'去掉,再找到
4
0x0
*
802.3
1
在该行开头加上'#'
制作启动映象
进入Win95,将Win95(早期的版本,可以用服务器安装方式安装)安装光盘的admin、nettools、netsetup、plimage.exe复制到硬盘,将启动软盘插入软驱,然后在纯MSDOS方式下执行
rplimage
a:
就会得到启动映象
net$dos.sys,再将启动映象net$dos.sys复制到启动盘上(如果启动盘空间不够,可以先删除启动盘上的一些文件以留出空间)。
启动
Linux
服务器,以
root
用户登录,将启动软盘插入软驱,执行下面的命令
mount
-t
vfat
/dev/fd0
/mnt/floppy
cp
/mnt/floppy/net$dos.sys
/var/mars_nwesyslogin
umount
/dev/fd0
然后执行setup,移动光棒至System services选项回车,出现Services设置画面,将dhcpd,nfs,mars-nwe都设为有效,退出
setup
程序,执行以下的命令以启动上述服务进程:
/etc/rc.d/rc3.d/*mars-nwe
restart
/etc/rc.d/rc3.d/*dhcpd
restart
/etc/rc.d/rc3.d/*nfs
restart
下一次再启动服务器时,上述服务进程会自动执行。
至此,所有的设置工作全部完成了,联好网络随便打开一台无盘工作站,稍等一下,出现远程引导的信息,接着会启动Win95,接下来很快就会装载Linux,在一大堆Linux的启动信息之后如果看到Linux的登录提示,就说明远程启动成功了。
Linux
无盘工作站虽然运转起来了,但还有一个问题,就是交换的问题,因为Linux是一个支持虚拟存储的操作系统,当机器内存不够时,Linux
就会把内存中暂时不用的数据换出到交换设备上,等需要时再换回来,刚才我们没有设置交换区,在无盘工作站上用free
命令就会发现交换区为零,如果无盘工作站内存较大,运行一些不大的程序,没有交换区还是可以的,但若运行大型程序就会出问题,下面介绍在服务器上设置交换区即远程交换的方法。
对于2.1.101版以前的内核,要实现远程交换可有点费事,得从网络上下载有关的补丁来修改内核代码,然后再编译内核映象,从2.1.101版后内核支持网络块设备,实现远程交换就容易了,首先编译内核时要使
Network
block
device
support
选项有效(刚才编译内核时就是这么作的),再从http://atrey.karlin.mff.cuni.cz/~pavel/nbd/nbd.html下载实用程序
nbd.14.tar.gz
,执行下面的命令
tar
zxvf
nbd.14.tar.gz
cd
nbd
./configure
make
编译完后会得到文件
nbd-server
和
nbd-client,将它们复制到
/usr/sbin
下面:
cp
nbd-server
nbd-client
/usr/sbin
然后编辑文件
/etc/rc.d/rc.sysinit,在文件最后加上一行
/usr/sbin/nbd-server
7999
/tftpboot/%s/swap
>
/dev/null
&
执行刚才的命令激活nbd服务:
/usr/sbin/nbd-server
7999
/tftpboot/%s/swap
>
/dev/null
&
下一次服务器启动时,上述命令会自动执行。
再在服务器上每个工作站目录(/tftpboot/192.168.0.1,/tftpboot/192.168.0.2等等)下为各个无盘工作站建立交换文件,命令如下(本例中交换区大小为32M):
dd
if=/dev/zero
of=swap
count=32768
bs=1024
mkswap
swap
在每个工作站目录下文件
/etc/rc.d/rc.sysinit
的最后加上两行
/usr/sbin/nbd-client
server
7999
/dev/nd0
swapon
/dev/nd0
就这么简单,再打开无盘工作站试一试启动成功后登录系统,执行命令free就会看到在显示信息的最后有这样一行:
Swap:
32764
XX
XXXX
说明交换区设置成功了。
这样,一个完整的Linux无盘工作站网络就作好了,Linux无盘工作站的用法很灵活,既可以象使用普通有盘工作站一样使用,还可以把无盘工作站当成别的Unix主机的终端,特别是可以作为X终端,运行远程Unix主机上的X应用。
最后告诉大家,如果你想采用BOOTP方式作Linux远程引导,我可以提供EPROM刻录服务,当然要收取少量的刻录费用。