2001.10.30 吴峰光

本站提供对无盘启动的支持。本文就此作一简单介绍。

一、概述

无盘启动,更确切的说是网络启动,可算是最为轻松和简便的启动方式了。
目前还很少有人了解它,因为目前的软硬件条件尚未完全成熟。
但是可以预见,不远的未来(最近几年吧),将会是无盘启动的时代。

无盘启动可以由netboot,etherboot及pxe实现。
现在一般选用的是etherboot,而pxe方式是未来的方向,只是在目前条件尚未成熟。

二、现有的服务

198提供了DHCP,TFTP,NFS等服务,用以支持无盘客户端。

本站提供如下类型的网络启动模块:
   -->> 启动进入Linux
        无须在本机上安装Linux系统,您就可以启动进入一个全功能的linux系统(debian/woody).
        您可用root登陆系统,无需输入密码。
        感觉就像是自己装的Linux,没有任何功能上的限制,除了你不能更改/。
        特别适合如下用途:
        □linux初学者学习使用
        □供有经验的linux用户作为应急系统:比如在一个裸机上装操作系统,本地系统损坏时进行紧急修复.
   -->> 加载Windows98启动盘
   -->> 加载多种Linux版本的安装程序

三、客户端
   要享受网络启动,首先要求您拥有一块PCI网卡,并在卡上插有一块EPROM无盘启动芯片。
   能满足后一条件的恐怕很少,不过没关系,现在有一种非常简便的EPROM替代方式。
   那就是准备一张无有用数据的软盘,往其中写入一段小小的网络启动驱动代码(通常是16K/32K)
   然后就可以用它启动电脑,进入网络启动界面啦!
   具体操作:
   	从file://202.38.73.198/diskless/etherboot/下载:
	-->> rawrite.exe
	-->> 子目录lzdsk下与您的网卡配套的驱动代码映像文件
	运行rawrite.exe,输入映象文件名,即可制作无盘启动引导软盘,进行“无盘”启动了。

当您使用etherboot启动盘成功启动后
第一步:DHCP服务器会给出你的网络配置,并给出一个菜单,在其中列出了所有可用的服务。
第二步:选中其中一项之后,即进入第二步,从TFTP服务器下载相应的映象文件。
第三步:控制权交给此映象文件,启动进入linux/freebsd/dos等操作系统。

四、服务端设置
   自动化系系网:
       由202.38.73.198(本站)提供DHCP、TFTP及NFS-ROOT支持。
   校内其它子网:
       有兴趣提供这一服务的同学,有如下三种选择,可简可繁。
           1、简单的提供DHCP
           2、提供DHCP及TFTP
           3、提供完整配套的DHCP、TFTP以及NFS-ROOT
	前两种方案比较简单,对服务器也没有什么负担,它们起到了前期引导启动的作用,
	而后期的NFS-ROOT负载全部转由198服务期提供。
	第三种方案实际上就是要新建一整套无盘系统,那就非常的繁了。

1. DHCP解决方案
这适用于简单的为实验室内部网络提供网络启动支持.
操作:
您需要运行dhcpd,并在/etc/dhcpd.conf中合适的地方加入如下的语句:
	next-server			202.38.73.198;
	filename			"/tftpboot/nc.nbi";
	option tftp-server-name 	"202.38.73.198";
	option root-path    		"202.38.73.198:/croot,flags=hard,nolock,intr,v3";

其中第二行的文件名按您的需要而定。在73.198上的/tftpboot/目录下有一些现成可用的映像文件,供您选择使用:
nc.nbi                全功能的Linux
bare.nbi              受限的Linux,不能存取本地硬盘、软盘及光盘,不能动态加载内核模块
win98.nbi             win98启动盘
suse.nbi              SuSE 7.3 安装启动
redhat.nbi            Redhat 7.2 安装启动
mandrake.nbi          Mandrake 8.1 安装启动

2. DHCP+TFTP解决方案
相对于1,其好处是可以提供一个菜单,让客户端自由选择想加载启动的映像文件.
操作:
a) 开启tftp服务,并从本站/diskless/tftpboot/目录下载所有文件至本地/tftpboot目录.
b) 开启dhcp服务,并在/etc/dhcpd.conf中合适的地方加入如下语句:
(注意:请勿直接copy&paste,内含特殊字符!)
	option option-128	e4:45:74:68:0:0;
	option option-129	"ramdisk_size=102400";
	option option-160	"timeout=15:default=192";
	option option-184	"['/tftpboot/motd'#";
	option option-192   "[33mNetwork Computer[37m - a full functional GNU/Linux system:::/tftpboot/nc.nbi:";
	option option-193   "[33mBare WorkStation[37m - a bare diskless GNU/Linux system:::/tftpboot/bare.nbi:";
	option option-194   "[33mRedhat   7.2 Installation Disk[37m:::/tftpboot/redhat.nbi:";
	option option-195   "[33mMandrake 8.1 Installation Disk[37m:::/tftpboot/Mandrake.nbi:";
	option option-196   "[33mSuSE     7.3 Installation Disk[37m:::/tftpboot/suse.nbi:";
	option option-197   "[34mWin98 boot[37m - Windows 98 bootdisk:::/tftpboot/win98.nbi:";

3. DHCP+TFTP+NFS解决方案
进一步增加NFS支持,主要是用来构建自己的无盘linux系统.
适合于快速建立集群系统,用于并行运算.
无盘系统的构建方法多种多样,需要拥有较好的Linux基础。
这里我仅简单的介绍一下自己的方案。

我的原则是:创建和维护简单而方便,扩展性和伸缩性好,通用性和适用范围广。

简单步骤如下(假设您已具有Linux无盘启动的初步知识):
1、在一台普通的机子上安装一个debian/woody系统,进行初步的系统配置。
2、将此系统完整的拷贝到服务器的目录/croot下。
3、在服务器上配置运行nfsd。将/croot通过NFS共享:
	#/etc/exports
	/croot		*(ro,no_root_squash)
4、在服务器上配置运行dhcpd,tftpd。
5、缺省的/etc,/var等目录,客户端需要拥有写入权,因此需要在客户端内存建立虚拟的文件系统。
   把/croot下的etc/,var/,root/等目录精简并打包,放在/croot/nfsboot/目录下。
   系统启动时下面的脚本会建立若干tmpfs文件系统,并把这些压缩包解开还原到其中去。
6、在/croot/etc/init.d/下新建nfsboot.sh脚本文件,并建立链接
   ln -s /croot/etc/init.d/nfsboot.sh /croot/etc/rcS.d/S03nfsboot.sh
   使之能在系统启动的初期自动执行。
7、编译客户端内核,分别使用etherboot及mknbi制作启动软盘及映像文件。

参考资料:
在198上你能找到全部的配置参考资料.比如:
ftp://202.38.73.198/diskless/ 			etherboot及mknbi源代码
ftp://202.38.73.198/diskless/dhcpd.conf.sample	dhcpd配置文件模板
ftp://202.38.73.198/diskless/etherboot/		已编译好的各种etherboot启动文件
ftp://202.38.73.198/diskless/tftpboot/		已打包好的由mknbi制作的网络启动映象文件
(NFS) 202.38.73.198:/croot			NFS-ROOT,整个系统都给你了噢。
(NFS) 202.38.73.198:/croot/etc/init.d/nfsboot.sh 网络启动初始化脚本,呵呵,本系统运行的关键之处。
(NFS) 202.38.73.198:/croot/etc/nfsboot/		已打包的精简版本/etc,/var等目录

若有什么问题,请与我联系:
wfg@mail.ustc.edu.cn
fengguang_wu@bbs
posted on 2013-11-18 22:35  heidsoft  阅读(666)  评论(0编辑  收藏  举报