- 论坛徽章:
- 0
|
当年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)
都设置为有效
以上设置完成后,退出内核编译设置程序,会出现一个对话框: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.80server 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
c000p -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/procprocdefaults0 0
其余
的
行全部删除,然后增加一行
server:/tftpboot/192.168.0.1/nfs defaults1 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,找到下面
的
行
# 40x10eth0802.31
将该行开头
的
'#'去掉,再找到
40x0 *802.31
在该行开头加上'#'
制作启动映象
进入Win95,将Win95(早期
的
版本,可以用服务器安装方式安装)安装
光盘
的
admin\nettools\netsetup\rplimage.exe 复制到硬盘,将启动软盘插入软驱,然后在纯MS
Dos
方式下执行 rplimage a: 就会得到启动映象 net$dos.sys,再将启动映象 net$dos.sys 复制到启动盘上(如果启动盘空间不够,可以先删除启动盘上
的
一些
文件
以留出空间)。
启动
Linux
服务器,以 root 用户登录,将启动软盘插入软驱,执行下面
的
命令 mount -t vfat /dev/fd0 /mnt/floppycp /mnt/floppy/net\$dos.sys /var/mars_nwe\sys\login 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-cl
IE
nt,将它们复制到 /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:32764XX XXXX
这说明交换区设置成功了。
通过以上步骤,一个完整
的
Linux 无盘工作站网络就作好了,Linux 无盘工作站
的
用法很灵活,既可以象使用普通有盘工作站一样使用,还可以把无盘工作站当成别
的
Unix
主机
的
终端,特别是可以作为 X 终端,运行远程 Unix 主机上
的
X 应用。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/46348/showart_396531.html |
|