分类: 系统运维
2008-04-20 15:04:07
PXE网络安装浅析
前言
问
题的由头来自于解决方案中心大量机器的大量重复安装,每当有一个项目请求,或者是新机器的批量上架,往往带来无聊耗时的介质安装过程,如果介质的存放没有
常规,导致一时无法找到安装介质或安装介质版本不对,会直接造成工作效率的下降。更甚的是,光驱的损坏往往意味着机器生命的结束。
这些安装过程中有在HP安腾服务器上的,有在HP9000 PA-RISC服务器的,还有在HP PC服务器上的;有装HP-UX的,有装LINUX的,也有装WINDOWS的;除此以外,各种工具应用软件如C/C++,JAVA等等等等;另外还有第三方软件如ORACLE,BEA等;加上所有以上这些的各种不同版本,带来了环境准备的费时和费力。
在寻找解决方案的时候接触到了INTEL正极力推广的PXE,越来越多的厂家开始支持它并逐渐成为行业标准,不仅HP PROLIANT服务器,在有些HP安腾服务器和PC机、笔记本中也开始支持PXE,由于HP-UX有自成的软件IGNITE实现软件的安装分发和部署(),所以本文只以IA32架构说明PXE服务的工作机理和实现方式,当然同样适用于所有支持PXE的客户端。
什么是PXE
PXE是Pre-boot Execution Environment的缩写,由INTEL和SYSTEMSOFT公司在上世纪90年代提出,用于实现一种通用的、统一的、可与网卡和驱动无关的无盘网络远程启动和远程安装方式。可以设想PXE是从前BOOTP的升级版(怎么看都象),只不过实现标准更一致、实现方式更灵活罢了,正如不支持BOOTP网卡的客户端无法实现无盘网络启动一样,必须是支持PXE的客户端才能访问PXE服务器。
实践初步 – 那时我不懂PXE
问题即以提出,从何处入手呢?由于小型机优越的LANBOOT能力以及与HP—UX IGNITE功能的集成,只好向IA32架构的PROLIANT服务器开刀了,毕竟在上面也有W2K,W2003,RH3,RH4,SLES9,RF4等等OS的安装需求。
早就知道HP有个RDP(快速部署包)软件,是刀片机少不了的好工具,Windows和Linux软件的快速多机同时安装、部署和分发,镜像、备份/恢复无所不能。于是从同事那儿打听到了下载地址把它宕了下来,文档看起来有点复杂不易搞懂,但也并不妨碍安装,在原来方案中心架构的W2K_AS DHCP服务器上装起来毫不费力。随便挑一台网络上的PROLIANT服务器上试试,开机、选F12进PXE BOOT,一切如同想象中那么美好,PXE菜单出来了。菜单中的条目也还好理解。Initial代表着第一次上来,当然是准备安装了(理解基本正确)。Managed代表着已经登陆造册,想必是安装完成,等待部署和分发(理解错误,在后面的安装过程中才知道,从安装到完成要经历无数次REBOOT过程,在每次REBOOT后,PXE会记住上一次安装的机器和安装的点,因为可能有无数台机器正在安装)。
执行INITIAL,…(此处省略辛劳若干,详见TIPS),客户端会在RAM中执行下传来的DOS镜象,并执行RDP附带的功能强大的BootWorks等待执行服务器端传过来的脚本,是骡子(Win),是马(Linux),还是驴(各种硬件配置等及后续安装程序)需要在服务器端来决定。
服务器端软件安装好之后,除了一个CONSOLE外,还提供一个的WEB访问方式来回应客户端INITIAL的请求,输入帐号/密码后,要安装的客户端服务器和所需安装的OS模板脚本呈现出来,只要简单地拖拽就可以一次性实现完全的WIN和LINUX自动安装了。
RDP安装TIPS:
(1)Windows Administrator的密码不要超过15位,否则嘿嘿…,一定要长密码也行,那就事前建一个帐号把密码设短点儿,并在软件安装过程中设置(事后设置发生错误无法DEBUG,麻烦得很,注意SHARE目录的权限设置和LOGIN帐号/密码)。
(2)一定要在安装过程中把WIN9X(WIN95 OSR2以后版)盘准备好备用,否则后建BOOT DISK时会难你一下。
(3)如果要后建或对PXE BOOT DISK有何改动的话,在网卡类型选择中请选UNDI。
(4)如果你的DHCP服务于多个网段的话,请打开路由上DHCP RELAY。
(5)如果不对SHARE下lib\osconfig\xxx\default.txt做改动的话,Windows自动安装会要求输入产品ID-KEY。
RDP服务器有WIN版和LINUX版,WIN版也支持LINUX安装和部署,但LINUX版不支持WINDOWS安装和部署。WIN版的第二张盘需在有NFS的LINUX操作系统下安装与配置,需预先准备所有想要的DISTRO,在配置时加载(当你的DISTRO新于RDP所列的DISTRO,改动会麻烦得你不想再用RDP安装LINUX了,后来也确实如此,在RDP PXE BOOT MENU里新添一个选项,改用SysLinux的pxelinux.0启动LINUX)。
再探索 – PXE理论学习
RDP产品安装配置不是太难,使用也还算容易,但过程中出现的一些问题和麻烦还是促使我查阅PXE的文档资料,并对整个PXE BOOT过程有了相对的了解。
究其根本,PXE环境基于现有的网络协议TCP/IP,DHCP和TFTP,如果说有什么比较特别的话,就是PXE使用了DHCP所允许的DHCP VENDOR OPTION扩展,来使PXE客户端和PXE服务器端互相识别与交互,而通常意义的DHCP/BOOTP服务器并不受这个扩展的打扰而忽略掉这些扩展的OPTION(虽然他们使用同样的端口号通讯)。
简单说来,PXE协议走以下几步的操作流程:
PXE客户端发起一个DHCPDISCOVER的广播,包内含DHCP的PXE扩展以标识自己为PXE客户,假使存在一个可以执行PXE协议的DHCP服务器或代理DHCP服务器(PROXY DHCP),分配完地址的以后的几步中,服务器发给客户端一个启动服务器(BOOT SERVER含TFFTP)的列表以“重定向”,客户端按“表”索骥发现启动服务器并从启动服务器上接收启动文件名,并启动TFTP CLIENT去下载这个启动文件,最后在内存中执行这个镜象文件。(其实除了PXE扩展,与BOOTP没有什么不同)
注意,在DHCP里出现了一个“重定向”的概念,其实在部署上它是个服务(4011端口),有两种方法实现,第一,把现有的DHCP改造或替换成即可支持动态地址分配又可重定向PXE客户端的DHCP服务器(含PROXY DHCP服务)。第二,在现有的DHCP服务器外,加入一个只做“重定向”的PROXY DHCP服务器。
以上二图分别是PXE BOOT的两种实现方法,由于DHCP和Bootp/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 LINUX和AIX都提供PXE SERVER(FOR HP—UX的怎么找都没找到,SHIT),而且INTEL的PXE PDK,MS的RIS(W2K)和ADS-NBS(W2003)都提供或集成一个WINDOWS环境下的PXE SERVER。另外,还有一些如何对现有DHCP进行PXE扩展配置的TIPS(如我现用的WIN2K DHCP,见),虽不提供完整的PXE支持,但在一些IMAGE文件的支持下(如SysLinux,BpBatch等等),也可支持LINUX或WINDOWS的菜单式远程网络启动,也不需要RDP般的启动+配置两步走模式,直接从客户端菜单上一次搞定。
在解决完PXE SERVER之后,只剩下如何定制或选用各式安装映象文件的问题了。从上两图看,最后一步是NBP映象文件的下载和在内存中执行,本人推荐SysLinux的pxelinux.0(),已经足够好用了,通过pxelinux.cfg目录文件配置菜单和放置各个启动文件,有些LILO的感觉,对于LINUX玩家实在是小CASE。至于LINUX启动映象文件initrd.img和vmlinuz,大概不用我在这里多嘴,注意对应版本就好了。WINDOWS的映象文件和方法会稍稍麻烦一些,介绍,上面有软件包下载和详细的WINDOWS无接触式安装说明(不使用WINDOWS的RIS,免费且含原码),同样,可通过pxelinux.0的菜单启动。
后续 - 可以抛弃RDP吗?