AXW0 2015-07-23
1无盘工作站及其原理
1.1无盘工作站
无盘工作站是没有硬盘的计算机终端。
它本身不含有硬存储设备,机器引导时需要借助网络上的服务器来传输操作系统启动文件到本地内存,才可以完成启动。因此,无盘工作站必须具有CPU、主板、内存、网卡和远程启动设备。远程启动设备主要以芯片的形式固化或接插在网卡上,在系统启动时负责连接服务器,获取IP地址,指导服务器上的操作系统启动文件到本地内存的传输。目前,远程启动芯片主要有RPL和PXE两种,后者为前者的升级版,目前正在被广泛使用。
1.2PXE芯片启动原理
PXE芯片在远程启动时,首先要进行一个DHCP会话过程来获取一个IP地址和相关信息,以便进行后续的文件传送;IP地址获取成功后,PXE芯片触发TFTP会话过程,根据DHCP过程获取的相关信息向服务器请求启动文件,服务器接到请求后,根据本地策略,发送相应的启动文件,工作站接收到启动文件后,开始本地启动过程。
以上是PXE芯片无盘工作站启动过程的简单描述,DHCP协议的相关内容可参考RFC2131标准化文档,TFTP协议的相关内容可参考RFC1350标准化文档。
对于Linux操作系统来说,PXE所需要下载的启动文件是配置文件和内核文件。其中,配置文件在DHCP应答报文中包含,通过TFTP会话过程获取;内核文件的名称和位置在配置文件中给出,同样需要通过TFTP会话过程获取;内核文件获取成功后,系统开始进行本地启动,当启动过程进行到需要装载文件系统时,PXE会根据配置文件,向服务器请求连接根文件系统(该文件系统为NFS网络根文件系统)所对应的服务器目录,若成功,则启动结束。下页图1-1给出了这一过程的交互模型。
Linux无盘工作站的详细启动流程如下:
Step1工作站加电,PXE芯片进行自检;
Step2准备启动,PXE芯片发送DHCP请求;
Step3服务器收到工作站送出的请求,发送DHCP应答,内容包括客户端的IP地址,预设网关,DNS服务器及开机映象文件(配置文件和内核)位置;
Step4工作站上的PXE芯片根据配置文件位置,开始TFTP会话请求下载该文件;
Step5加载映象文件,开始本地启动,挂载NFS网络根文件系统;
Step6出现Login行,启动成功。
图1-1PXE芯片启动过程中的网络交互
1.3配置过程概述
根据上面的叙述不难得知,配置无盘工作网络环境的核心工作在于无盘网络文件服务器的配置,而文件服务器的配置又是由DHCP、TFTP等几个部分组成的。因此不难得知,配置Linux无盘工作站的网络环境,依次需要完成以下工作:
(1)选择并安装无盘网络文件服务器上的Linux操作系统;
(2)配置该操作系统的基本网络环境;
(3)配置DHCP服务器;
(4)配置TFTP服务器;
(5)为工作站创建工作目录、配置文件和内核文件;
(6)为工作站构建合理的、标准化的Linux文件系统;
(7)启动工作站,进行必要的调试。
2详细配置说明
2.1操作系统的选择和安装
首先,要为服务器选择一个适用于无盘工作站网络环境的操作系统。这个操作系统应该具有网络功能强大,处理速度优化,稳定性高等特点。在选择操作系统时,切忌选择具有服务器版本的PC机系统,而是要选择专门为服务器和大机器应用而开发的网络操作系统。经过考虑,本次配置决定选择RedHatEnterpriseLinuxAdvancedServer4(RHAS4)操作系统,该系统是RedHat公司专门为企业服务器所设计的操作系统,其内核版本高低适中,稳定性好,网络功能十分强大,贴近标准Linux,易于操作和管理。
2.2基本网络环境配置
构建最基本的网络环境是任何网络服务器都必须做好的事情。这一部分的内容包括配置IP地址、子网掩码、主机名称和DNS服务器等内容,如果使用拨号或虚拟拨号网络,还应该配置相应的Modem和PPP协议支持。这部分操作在RHAS4中十分简单,只需在桌面环境下的最顶部依次选择“应用程序”—“系统设置”—“网络”,即可按照提示完成,如果未安装桌面环境,则使用ifconfig命令配置即可。
2.3配置DHCP服务
DHCP服务需要对/etc/dhcpd.conf文件进行配置,将这个文件用vi或gedit打开就可以进行配置了。在命令行中输入vi/etc/dhcpd.conf或者gedit/etc/dhcpd.conf,将以下内容按括号中的说明修改后粘贴进去,保存退出即可。(开头有#的行为注释行,不必粘贴)
#---------------------------------------------------------------------------------------------------------------
#DHCPServerConfigurationfile.
#see/usr/share/doc/dhcp*/dhcpd.conf.sample
#
#(DHCP-DNS互动)
ddns-update-styleinterim;
#(忽略客户端更新)
ignoreclient-updates;
#(允许bootp协议启动)
allowbootp;
allowbooting;
#(子网作用域)
subnet192.168.1.0netmask255.255.255.0{
#---defaultgateway(默认网关信息,前三个选项依次为路由器IP,子网掩码,DNS)
optionrouters192.168.1.1;
optionsubnet-mask255.255.255.0;
optiondomain-name-servers192.168.1.1;
optiontime-offset-18000;
#(地址池范围)
rangedynamic-bootp192.168.1.2192.168.1.253;
#(IP地址租期,单位为秒,粗体部分根据需要自行设置;-1为永远不过期,不推荐)
default-lease-time14400;
max-lease-time86400;
}
#(以配置一台工作站c1的DHCP分配策略为例)
#(几行的含义依次为:工作站名称,服务器名称,工作站MAC地址,要分配给工作
#站的IP地址,启动配置文件的位置,NFS根文件系统的路径)
#(启动配置文件的位置和NFS根文件系统的路径与后续步骤的配置密切相关,粗体部#分会根据后续配置内容的变化而变化)
hostc1{
server-name"server";
hardwareethernet00:30:18:63:55:02;
fixed-address192.168.1.3;
filename"/tftpboot/pxelinux.0";
optionroot-path"/tftpboot/192.168.1.3"
}
#(若还有其他机器,则按这种方法继续进行配置hostc2…)
#---------------------------------------------------------------------------------------------------------------
2.4配置TFTP服务
TFTP服务需要在/etc/xinetd.d中进行注册性配置,将这个文件用vi或gedit打开就可以进行配置了。在命令行中输入vi/etc/xinetd.conf或者gedit/etc/xinetd.conf,将以下内容追加到文件末尾,保存退出即可。
includedir/etc/xinetd.d
servicetftp
{
socket_type=dgram
protocol=udp
wait=yes
user=root
server=/usr/sbin/in.tftpd
}
2.5工作系统内核编译
无盘工作站需要根据它自身的特殊性来量身定做特殊的内核,因此首先要了解无盘工作站有哪些特点。经上述叙述不难得知,无盘工作站必须支持DHCP/BOOTP协议启动,而且必须支持NFS文件系统为其根文件系统,还要支持相关的网络设备。内核的选取也十分重要,版本太低的内核功能很少,安全性差;版本太高的内核又会不稳定。经过考虑,本次配置采用了2.6.23版本的Linux内核,该内核源码包的下载地址为:
http://www.at.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.tar.gz。
内核下载完成后,依次在终端中执行如下命令:
cplinux-2.6.23.tar.gz/usr/src
cd/usr/src
tarzxflinux-2.6.23.tar.gz
cdlinux-2.6.23
makemenuconfig
按照无盘工作站的特点,设定内核编译选项,包括CPU类型、禁止模块功能、DHCP/BOOTP启动协议和NFS文件系统支持,以下是配置方法:
(1)Processortypeandfeatures项目下面的选项必须根据无盘工作站的CPU类型设置,而不是根据服务器的CPU类型设置;
(2)Loadablemodulesupport该项目下面的所有选项都禁止,即不支持模块功能(无盘所需的设备,如网卡,都必须编译进内核,不能编译成模块);
(3)Networking--->Networkingoptions,将带*项选中:
IP:kernellevelautoconfigurationIP:DHCPsupportIP:BOOTPsupport[]IP:RARPsupport<---notneeded(4)FileSystem--->NetworkFileSystems,将带*项选中:
NFSfilesystemsupportProvideNFSv3clientsupportRootfilesystemonNFS(5)BlockDevices,将带*项选中:Loopback device supportNetwork block device support再进行其它选项的检查,把Bluetooth等不需要的冗余项去掉,保存退出即可。依次执行如下命令:
makedep
makebzImage
最后生成的bzImage即为编译好的新内核文件,根据最后的提示信息,可以从生成该文件的路径中将其拷贝出来。
2.6配置工作目录和启动文件
根据2.1节配置文件的后半部分不难得知,每一台工作站都需要配置特定的DHCP选项,其中的黑体部分就是该工作站在服务器上工作的目录,这个目录的名称可能会随着需求的不同或配置者的喜好不同而不同。在本文档中,为了保护本次配置的完整性,我们将按照DHCP配置文件中指定的主机名称(c1)、主机IP地址(192.168.16.3)和工作总目录/tftpboot/**来进行配置。首先,我们建立/tftpboot总目录,然后依次执行如下命令:
mkdir/tftpboot(建立/tftpboot总目录,所有机器的工作目录均存于其中)
cpbzImage/tftpboot(将先前编译好的bzImage文件拷贝到/tftpboot下)
chmod777/tftpboot/bzImage(设定文件属性为可读可写可执行,该步骤可选)
cd/tftpboot
mkdir192.168.1.3(建立c1主机的工作目录,这里以其IP地址命名,可根据需要修改)
到这里,我们已经完成了c1主机工作目录的创建,并且已经把为无盘工作站编译好的新内核放置在总目录中了,接下来就是为c1主机创建配置文件和启动文件的时候了。
在本次配置中,使用pxelinux.0作为机器的启动文件,正如DHCP配置文件中所写的一样,工作站先通过TFTP得到这个文件,然后根据这个文件的指示去查找配置文件,再根据配置文件的指示,通过TFTP得到内核文件。pxelinux.0文件包含在软件包syslinux中,该软件包下载地址为http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-3.53.tar.gz。
下载完成后就可以解开压缩获取pxelinux.0文件了,依次执行如下命令:
tarzxfsyslinux-3.53.tar.gz
cp./syslinux-3.53/pxelinux.0/tftpboot
该命令获取pxelinux.0文件并将其复制到总目录/tftpboot下,正好对应DHCP配置文件中的filename"/tftpboot/pxelinux.0"行,不难理解,DHCP服务的回应报文将会带回/tftpboot/pxelinux.0这个文件名,使得后续的TFTP过程可以使用该文件名发出正确TFTP文件传送请求。
上面曾经提到,pxelinux.0将指示工作站去获得配置文件,进行进一步的启动,因此,我们必须明白pxelinux.0寻找配置文件的策略,以便安放配置文件。这个策略十分简单,它的动作就是指示工作站去下载pxelinux.0文件所在目录下的pxelinux.cfg子目录下的以工作站得到的IP地址的十六进制数表示同名的文件。就本例而言,该配置文件的所在位置应为/tftpboot/pxelinux.cfg/C0A80103(192.168.1.3的十六进制数值表示)。根据这个固有策略,我们就可以继续进行配置了。
mkdir/tftpboot/pxelinux.cfg
cd/tftpboot/pxelinux.cfg
viC0A80103或geditC0A80103
将以下内容按括号中的说明修改后粘贴进去,保存退出即可。(开头有#的行为注释行,不必粘贴)
#---------------------------------------------------------------------------------------------------------------
defaultlinux
labellinux
#(下面的bzImage即为编译生成的新内核名称,可根据需要修改)
kernelbzImage
#(下面的192.168.1.3即为c1主机的工作目录,可根据需要修改)
appendip=dhcproot=/dev/nfsrootrwenforcing=0nfsroot=./192.168.1.3vga=normal
#---------------------------------------------------------------------------------------------------------------
使用PXELINUX(pxelinux.0)时,对于某些系统来说,有时需要使用TSIZE参数的tftp服务器软件,该软件的下载地址是
http://www.kernel.org/pub/software/network/tftp/tftp-hpa-0.48.tar.gz,安装方法就是典型的MAKE三步曲法,这里不再详细说明。
2.7配置工作站文件系统
Linux无盘工作站需要有一套相对严整的Linux文件系统,该系统需要存储到该无盘工作站的工作目录下,在本例中即/tftpboot/192.168.1.3目录下。基本的Linux文件系统需要包含bin、usr、home等基本目录,这些目录可以在现有的Linux下复制,也可以取其他文件系统作为模板来生成,这个构造出来的文件系统决定了工作站上使用的Linux的具体版本。
如果用复制本机的办法生成文件系统,则工作站上的Linux版本与服务器上的会完全一样,这种方法的可操作性非常好,但因为服务器上的文件系统过于庞大,往往使得工作站在用户登录时出现几次短暂的黑屏,影响使用者的心情和整体效果。用复制本机的办法生成文件系统的操作可通过依次执行如下命令来完成:
cd/tftpboot/192.168.1.3
cp–a/bin
cp–a/dev
mknoddev/nfsrootb2550
chmod600dev/nfsroot
cp–a/etc
cp–a/home
cp–a/lib
rm–rflib/modules
cp–a/root
cp–a/sbin
cp–a/var
mkdirproc
mkdirusr
mkdirtmp
chmod777tmp
touchfastboot
chattr+ifastboot
如果以其他Linux系统为模板来构造无盘工作站的文件系统,需要在其他机器上安装尽量小的Linux,对其进行文件系统的全拷贝。这种方法配置的工作站上的Linux版本和类型取决于模板Linux系统。这个操作要求配置者对模板Linux系统的特性有比较深入的了解,可操作性不强,但因为构造出的Linux文件系统往往比较小,可以使系统启动相对较快。具体配置过程在此从略,可参照上述过程进行。
以复制本机文件系统的方法为例,在本例中,工作站上的操作系统是RHAS4,与服务器上的相同,由于该系统不是传统机器上的ext2/3文件系统,所以还需要进行其内部的etc/fstab文件系统表的配置,依次执行如下命令(基于主机c1的例子说明):
cd/tftpboot/192.168.1.3
vietc/fstab或geditetc/fstab
删除所有不带有“noneproc”的行,#注释行可以保留,并在文件最末尾追加一行:
server:/tftpboot/192.168.1.3/nfsdefault11
存盘退出即可。
上述配置完成后,还需要对特定主机的工作目录进行一些功能上的配置方可使得其正常工作。这些配置属于NFS文件系统访问上的相关配置,可依次执行如下命令来实现:
cd/tftpboot/192.168.1.3
vietc/exports或geditetc/exports
使用以下内容覆盖原内容,并保存退出(基于主机c1的例子说明,#表注释)。
#etc/exports:theaccesscontrollistforfilesystemswhichmaybeexported
#toNFSclients.Seeexports(5).
#(设置主机对服务器目录的NFS访问控制,*表示任何主机均可,该行只需书写一次)
/tftpboot/192.168.1.3c1(rw,sync,no_root_squash)
/tftpboot*(ro,sync,no_root_squash)
2.8其他配置
服务器上的主机名称配置:仍以c1为例,IP地址为192.168.1.3。在桌面环境下的最顶部依次选择“应用程序”—“系统设置”—“网络”,选择“主机”选项卡,使用“新建”按钮,在弹出的对话框中输入IP地址192.168.1.3,主机名c1.domain,别名c1,保存即可。如果没有安装图形界面,可编辑/etc/hosts,在文件末尾增加相应的条目即可,条目的书写格式可参照该文件中其它行的格式。