PXE服务器架设指南及PXE启动WinPE

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

PXE服务器架设指南及PXE启动WinPE(含PE2.0)解决方案总结PXE服务器架设指南及PXE启动WinPE(含PE2.0)解决方案总结作者:Climbing(xclimbing@msn.com)创建日期:2007年5月28日最后修改日期:2007年6月17日(增加启动PE2.0有关总结)这个总结源于“sysoft时空论坛的这个求助帖子(点击访问)”,这个求助帖子发布的时间已经很早了(2006年10月份),据我所知,这大概是当时我经常访问的各论坛里第一个讨论通过PXE启动PE的帖子(当然,后来的讨论证明,很多人都在研究这个东西,并且国外早就有人解决了这个问题),而且在大家的努力下成功的找到了解决方案,当时,grub4dos还不支持pxe启动方式。但是,那个帖子中的讨论内容比较乱,没有条理。现在随着grub4dos对pxe启动方式的支持,又有很多人尝试使用grub4dos通过pxe启动pe(而且总是报告失败),所以这个问题又重新提到了桌面上来,而我发现很多人通过pxe启动WinPE之所以失败(无论是用pxelinux还是用grub4dos),并不是因为启动方法或者PXE服务器设置有问题,而是不了解pxe启动PE的过程和原理,所以有必要在这里总结一下。当然,我对通过PXE启动PE的原理也只是通过实践的猜测,可能下面讲述的原理并不严谨,但大体是还是正确的,至少可以解决大部分人遇到的问题。详细的严谨的过程还需要有关高手进一步阐述,也希望高手们对我的总结加以批评指正。1、PXE启动服务器的架设简单说来,PXE服务器就是DHCP服务器+TFTP服务器。网络启动过程大概是这样的(可能并不严谨):客户端发送动态获得IP地址的广播包到网络上,DHCP服务器在收到该广播包后,发送给客户端分配IP地址的回应包,客户端收到回应包后设置自己的IP地址,然后从DHCP服务器获得启动服务器的IP地址(DHCP服务器066选项,这就是TFTP服务器的IP地址)及启动文件名(DHCP服务器067选项,这里的启动文件名就是pxelinux.0或者支持pxe的grub4dos的grldr,当然,也可以是startrom.n12或者使用3comImageEdit创建的pxe启动菜单文件,总之,它应该是一种由pxe启动规范规定的固定格式的可执行文件),然后客户端再联系启动服务器(TFTP服务器)获得启动文件并执行,这样基本上就完成了pxe启动过程。在Unix或者Linux系统下,DHCP服务器和TFTP服务器一般都是分开设置的,两台服务器甚至可以在两台不同的机器上,其实Windows下的设置也是一样的,但在Windows下,我们可以通过使用HaneWinDHCP服务器软件或TFTPD32,这样使用一个软件就搞定了两台服务器(我个人推荐使用HaneWinDHCP服务器软件,但TFTPD32设置起来更简单一些,就是效率有些低),详细的设置方法请自己摸索,你只要知道,在设置PXE服务器时,要设置好DHCP和TFTP两个服务器,其中DHCP服务器要设置启动服务器名(066选项)和启动文件名(067选项)。下面提供一个我在给下属单位讲课时所写的pxe服务器设置讲义(比较简略,但有截图,你如果理解了上述原理,应该不难搞定):、PXE启动PE1.0的原理首先声明,这里讲的方法不见得适应于所有的PE,基本上基于无忧启动论坛老九(lxl1638)所制作的PE(例如老毛桃定制的版本)都应该是可以的,这些PE都是基于RAMDisk方式启动的,我试验时,深山红叶的PE是不能这样启动的。通过PXE启动PE需要这么几个文件:1)startrom.n12:这个文件从Windows2003SP1/SP2光盘中来,这个文件实际上也是一个符合pxe启动规范的启动文件,可以直接作为pxe服务器的启动文件来直接运行,当然,它也可以通过pxelinux的kernel命令来运行,我不知道grub4dos是否识别它的文件格式,如果能够识别,原理上它也可以使用grub4dos的kernel命令来执行,否则就使用chainloader--force命令来执行。在Windows2003sp1/sp2的光盘中,还有一个startrom.com文件,它的作用跟startrom.n12是相同的,只是启动时需要按一个F12键才能继续,而startrom.n12则去掉了F12这个提示。2)ntldr:这个文件是从Windows2003SP1/SP2光盘中的setupldr.exe改名而来,它的作用应该相当于从本地硬盘启动PE的setupldr.bin,但两者并不相同,但它决不是我们平常所使用的ntldr。这个文件必须放到TFTP服务器的根目录。3)ntdetect.com:这个就是XP或2003所使用的c:\下的ntdetect.com。这个文件也必须放到TFTP服务器的根目录。4)winnt.sif:这个是PE的启动配置文件(用来指定PE的系统目录及PE映像文件所在路径及启动选项)。这个文件也必须放到TFTP服务器的根目录。通过pxe启动的PE支持3种映像文件格式,例如,ISO、IMG或者SDI。其实,SDI格式相当于IMG格式,只是SDI格式在IMG文件前加了一个文件头。一般我们都使用ISO或IMG格式,但这两种格式的启动选项是有所不同的,ISO格式要在启动选项中增加一个/rdexportascd,而SDI格式还要增加一个/rdoffset选项。下面是Winnt.sif的示例:复制内容到剪贴板代码:[SetupData]BootDevice=ramdisk(0)BootPath=\I386\SYSTEM32\OsLoadOptions=/minint/fastdetect/rdpath=\netpe.c\winpe.img;OsLoadOptions=/minint/fastdetect/rdexportascd/rdpath=WINPE.ISO另外,winnt.sif文件中还要注意的就是BootPath选项,默认它指向\I386\SYSTEM32目录,但老毛桃的PE将I386目录修改成了WXPE,那么这里要作对应的修改,同时还要修改2)中的ntldr文件,将其中所有的I386替换为WXPE。只是修改winnt.sif是没有用的。后面我们讲通过PXE启动多个PE时还要讲更多的hackPE启动文件的方法。5)PE映像文件(IMG或者ISO或者SDI格式,例如WinPE.IMG):这里特别要注意的就是PE的映像文件一定不能使用cab压缩格式,如果你用老毛桃的PE,一定要将它光盘根目录下的WinPE.IS_解压缩成winpe.iso然后放到这里使用。这样,IMG格式的PE就比较有优势了,因为IMG格式是硬盘分区映像格式,你可以对这个分区使用NTFS文件系统并加上NTFS压缩,基本上压缩率也接近cab压缩格式,这样img文件就没有必要使用cab压缩但仍然具有cab的压缩率,而且img格式可以直接使用VirtualDiskManager(VDM)挂载并进行编辑,修改起来比较方便。另外,这个PE映像文件没有必要放在TFTP服务器的根目录下,例如上面的winnt.sif中就将winpe.img放在了TFTP服务器的/netpe.c/目录下。PXE启动PE的过程大致是(可能也不是很严谨):startrom.n12获得执行后,在TFTP服务器根目录下寻找ntldr(setupldr.exe),找到后加载ntldr并执行,而ntldr则在TFTP服务器的根目录下查找winnt.sif,根据winnt.sif的内容从TFTP服务器上下载PE的映像文件并根据选项进行PE的加载,在PE的加载过程中可能会用到ntdetect.com。3、让PXE服务器支持同时启动多个PE(1.0)的设置方法通过上面的讲述,我们已经明白了通过PXE启动PE的一个概况,由于PE通过PXE启动时,要求NTLDR(setupldr.exe)、winnt.sif和ntdetect.com必须放在TFTP服务器的根目录,那么要想让PXE服务器支持同时启动多个PE,必须对文件名进行hack,其中ntdetect.com是PE启动时共用的,没有必要进行修改,但ntldr和winnt.sif由于只跟一个PE有关,所以文件名必须进行更改。假设我们要启动的第二个PE的映像文件名为netpe.iso,该映像文件放在TFTP根目录下的netpe目录下,ISO中的I386目录被改成了WXPE,由于该PE通过pxe启动时不能再使用ntldr和winnt.sif,那么这两个文件我们对应改成:netpe和netpe.sif,详细的hack过程如下:1)startrom.n12:这个文件没有必要放到TFTP服务器的根目录下,可以将它跟PE映像文件放到同一个目录下,文件名可以起成netperom.0,由于它启动时要查找TFTP服务器根目录下的ntldr,所以必须使用十六进制编辑器(UltraEdit)打开它进行修改,将该文件中的所有ntldr字符串查找替换成netpe。2)将原来的ntldr(setupldr.exe)改名为netpe并放到TFTP服务器的根目录下,用UE打开并将所有的winnt.sif字符串替换为netpe.sif,同时将所有的I386字符串替换为WXPE。3)新建一个文件,名为netpe.sif,放到TFTP服务器根目录下,内容如下:复制内容到剪贴板代码:[SetupData]BootDevice=ramdisk(0)BootPath=\WXPE\SYSTEM32\OsLoadOptions=/minint/fastdetect/rdexportascd/rdpath=\NETPE\NETPE.ISO4)修改pxelinux的启动菜单文件(pxelinux.cfg/default),加入一个条目,内容如下:LABELnetpeMENULABELWinPEwithNetworkSupportforPXEbootkernel/netpe/netperom.0如果使用pxegrub,那么启动菜单是类似这样的:titleWinPEwithNetworkSupportforPXEbootpxekeepchainloader--force/netpe/netperom.0基本上,上面所讲的就包括了有关PXE启动PE的所有内容,下面提供一个我的TFTP服务器目录结构(包括pxelinux.cfg/default)下载包,供大家参考:、PXE启动PE2.0的原理首先声明,我个人从来没有制作甚至使用过PE2.0,因为从心理上我一直比较排斥它,感觉它是微软为了打压BartPE才出来的东西,而且体积也很大,没有PE1.0的短小精悍,从功能上也没有发现它比PE1.0有什么优胜的地方(最新的不一定是最好的)。所以,这篇总结纯粹是为了方便对相关的技术感兴趣的人参考而做的,这里总结的东西都是参考别人的帖子再加上我的理解而做出来的,纯粹是纸上谈兵,没有任何实践基础,因此错漏难免,敬请各位高手批评指正。参考帖子:1)=106600,由titanbai站友提供的PXE启动PE2.0的详细技术细节,感谢titanbai站友的无私奉献!2)=100886,由“原名丢了”站友提供的PXE启动多个PE2.0的设置文档(英文),来源于911CD论坛。其实PXE启动PE2.0的原理大体与启动PE1.0的原理相似,只是换了几个启动文件而已。首先,PE2.0的引导方式不再使用NT的NTLDR方式,而是使用了VISTA的BCD方式,PE1.0和PE2.0在

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功