Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3820951
  • 博文数量: 197
  • 博客积分: 10086
  • 博客等级: 上将
  • 技术积分: 5145
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-13 10:50
文章分类

全部博文(197)

文章存档

2011年(2)

2009年(30)

2008年(165)

我的朋友

分类: 系统运维

2008-04-20 15:04:07

PXE网络安装浅析

 

前言

 

问 题的由头来自于解决方案中心大量机器的大量重复安装,每当有一个项目请求,或者是新机器的批量上架,往往带来无聊耗时的介质安装过程,如果介质的存放没有 常规,导致一时无法找到安装介质或安装介质版本不对,会直接造成工作效率的下降。更甚的是,光驱的损坏往往意味着机器生命的结束。

 

这些安装过程中有在HP安腾服务器上的,有在HP9000 PA-RISC服务器的,还有在HP PC服务器上的;有装HP-UX的,有装LINUX的,也有装WINDOWS的;除此以外,各种工具应用软件如C/C++JAVA等等等等;另外还有第三方软件如ORACLEBEA等;加上所有以上这些的各种不同版本,带来了环境准备的费时和费力。

 

在寻找解决方案的时候接触到了INTEL正极力推广的PXE,越来越多的厂家开始支持它并逐渐成为行业标准,不仅HP PROLIANT服务器,在有些HP安腾服务器和PC机、笔记本中也开始支持PXE,由于HP-UX有自成的软件IGNITE实现软件的安装分发和部署(),所以本文只以IA32架构说明PXE服务的工作机理和实现方式,当然同样适用于所有支持PXE的客户端。

 

什么是PXE

 

PXEPre-boot Execution Environment的缩写,由INTELSYSTEMSOFT公司在上世纪90年代提出,用于实现一种通用的、统一的、可与网卡和驱动无关的无盘网络远程启动和远程安装方式。可以设想PXE是从前BOOTP的升级版(怎么看都象),只不过实现标准更一致、实现方式更灵活罢了,正如不支持BOOTP网卡的客户端无法实现无盘网络启动一样,必须是支持PXE的客户端才能访问PXE服务器。

 

实践初步 那时我不懂PXE

 

问题即以提出,从何处入手呢?由于小型机优越的LANBOOT能力以及与HPUX IGNITE功能的集成,只好向IA32架构的PROLIANT服务器开刀了,毕竟在上面也有W2KW2003RH3RH4SLES9RF4等等OS的安装需求。

 

早就知道HP有个RDP(快速部署包)软件,是刀片机少不了的好工具,WindowsLinux软件的快速多机同时安装、部署和分发,镜像、备份/恢复无所不能。于是从同事那儿打听到了下载地址把它宕了下来,文档看起来有点复杂不易搞懂,但也并不妨碍安装,在原来方案中心架构的W2K_AS DHCP服务器上装起来毫不费力。随便挑一台网络上的PROLIANT服务器上试试,开机、选F12PXE BOOT,一切如同想象中那么美好,PXE菜单出来了。菜单中的条目也还好理解。Initial代表着第一次上来,当然是准备安装了(理解基本正确)。Managed代表着已经登陆造册,想必是安装完成,等待部署和分发(理解错误,在后面的安装过程中才知道,从安装到完成要经历无数次REBOOT过程,在每次REBOOT后,PXE会记住上一次安装的机器和安装的点,因为可能有无数台机器正在安装)。

 

执行INITIAL(此处省略辛劳若干,详见TIPS),客户端会在RAM中执行下传来的DOS镜象,并执行RDP附带的功能强大的BootWorks等待执行服务器端传过来的脚本,是骡子(Win),是马(Linux),还是驴(各种硬件配置等及后续安装程序)需要在服务器端来决定。

 

服务器端软件安装好之后,除了一个CONSOLE外,还提供一个WEB访问方式来回应客户端INITIAL的请求,输入帐号/密码后,要安装的客户端服务器和所需安装的OS模板脚本呈现出来,只要简单地拖拽就可以一次性实现完全的WINLINUX自动安装了。

 

RDP安装TIPS

(1)Windows Administrator的密码不要超过15位,否则嘿嘿,一定要长密码也行,那就事前建一个帐号把密码设短点儿,并在软件安装过程中设置(事后设置发生错误无法DEBUG,麻烦得很,注意SHARE目录的权限设置和LOGIN帐号/密码)。

(2)一定要在安装过程中把WIN9XWIN95 OSR2以后版)盘准备好备用,否则后建BOOT DISK时会难你一下。

(3)如果要后建或对PXE BOOT DISK有何改动的话,在网卡类型选择中请选UNDI

(4)如果你的DHCP服务于多个网段的话,请打开路由上DHCP RELAY

(5)如果不对SHARElib\osconfig\xxx\default.txt做改动的话,Windows自动安装会要求输入产品ID-KEY

RDP服务器有WIN版和LINUX版,WIN版也支持LINUX安装和部署,但LINUX版不支持WINDOWS安装和部署。WIN版的第二张盘需在有NFSLINUX操作系统下安装与配置,需预先准备所有想要的DISTRO,在配置时加载(当你的DISTRO新于RDP所列的DISTRO,改动会麻烦得你不想再用RDP安装LINUX了,后来也确实如此,在RDP PXE BOOT MENU里新添一个选项,改用SysLinuxpxelinux.0启动LINUX)。

 

 

再探索 – PXE理论学习

 

RDP产品安装配置不是太难,使用也还算容易,但过程中出现的一些问题和麻烦还是促使我查阅PXE的文档资料,并对整个PXE BOOT过程有了相对的了解。

 

究其根本,PXE环境基于现有的网络协议TCP/IPDHCPTFTP,如果说有什么比较特别的话,就是PXE使用了DHCP所允许的DHCP VENDOR OPTION扩展,来使PXE客户端和PXE服务器端互相识别与交互,而通常意义的DHCP/BOOTP服务器并不受这个扩展的打扰而忽略掉这些扩展的OPTION(虽然他们使用同样的端口号通讯)。

 

简单说来,PXE协议走以下几步的操作流程:

PXE客户端发起一个DHCPDISCOVER的广播,包内含DHCPPXE扩展以标识自己为PXE客户,假使存在一个可以执行PXE协议的DHCP服务器或代理DHCP服务器(PROXY DHCP),分配完地址的以后的几步中,服务器发给客户端一个启动服务器(BOOT SERVERTFFTP)的列表以“重定向”,客户端按“表”索骥发现启动服务器并从启动服务器上接收启动文件名,并启动TFTP CLIENT去下载这个启动文件,最后在内存中执行这个镜象文件。(其实除了PXE扩展,与BOOTP没有什么不同)

 

注意,在DHCP里出现了一个“重定向”的概念,其实在部署上它是个服务(4011端口),有两种方法实现,第一,把现有的DHCP改造或替换成即可支持动态地址分配又可重定向PXE客户端的DHCP服务器(含PROXY DHCP服务)。第二,在现有的DHCP服务器外,加入一个只做“重定向”的PROXY DHCP服务器。

 

 

 

以上二图分别是PXE BOOT的两种实现方法,由于DHCPBootp/tftp本身非常简单而且好配置,可以肯定地说,实施PXE的关键在于实施PROXY DHCP。回想安装RDP后在WINDOWS SERVICE中新出现的PXE SERVER当属PROXY DHCP服务,而在原DHCP SERVER OPTION中新出现的#60 tag – “PXEClient”,表明DHCP服务和PROXY DHCP服务在同一服务器内部(即上图第一种情况)。

 

GOOGLE上搜索“PXE SERVER”或“PROXY DHCP”会得到很多结果,其中象开源的ISC DHCP V3等都已经支持PXE扩展,另外如RH LINUXAIX都提供PXE SERVERFOR HPUX的怎么找都没找到,SHIT),而且INTELPXE PDKMSRISW2K)和ADS-NBSW2003)都提供或集成一个WINDOWS环境下的PXE SERVER。另外,还有一些如何对现有DHCP进行PXE扩展配置的TIPS(如我现用的WIN2K DHCP,见),虽不提供完整的PXE支持,但在一些IMAGE文件的支持下(如SysLinuxBpBatch等等),也可支持LINUXWINDOWS的菜单式远程网络启动,也不需要RDP般的启动+配置两步走模式,直接从客户端菜单上一次搞定。

 

在解决完PXE SERVER之后,只剩下如何定制或选用各式安装映象文件的问题了。从上两图看,最后一步是NBP映象文件的下载和在内存中执行,本人推荐SysLinuxpxelinux.0),已经足够好用了,通过pxelinux.cfg目录文件配置菜单和放置各个启动文件,有些LILO的感觉,对于LINUX玩家实在是小CASE。至于LINUX启动映象文件initrd.imgvmlinuz,大概不用我在这里多嘴,注意对应版本就好了。WINDOWS的映象文件和方法会稍稍麻烦一些,介绍,上面有软件包下载和详细的WINDOWS无接触式安装说明(不使用WINDOWSRIS,免费且含原码),同样,可通过pxelinux.0的菜单启动。

 

 

后续 -  可以抛弃RDP吗?

 

综上所述,通过开源系统无代价地搭建一个支持PXE启动和远程网络安装的环境实际上并不是件十分困难的事,尤其是当考虑到高昂的RDP许可证费用的时候,不得不重新回头看一看RDP的实际价值,如果你只是需要一个可以支持PXE启动和网络安装的环境,大可不必采用RDP的方案,然而如果你还需要后续的软件网络分发和部署,可能RDPBootWorks Agent可以发挥一定的作用,而且RDP的系统映象创建和恢复也许是其价值的最大体现,对生产和作业系统应该能够发挥一定的作用。
阅读(1478) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~