无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 9335|回复: 1
打印 上一主题 下一主题

由PXE引导winPE

[复制链接]
跳转到指定楼层
1#
发表于 2011-10-30 18:37:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本文章用于记忆,好不容易实现的,怕忘记了。

先配置好远程启动所需要的服务,如DHCP、TFTP,然后就是放置PE用的文件、编辑cfg文件(用pxelinux的话)

文中很多内容是抄袭来得。

说一下版本定义,PE的版本:
  按照微软的定义,PE的版本如下:
  1.0:基于最初的Microsoft Windows XP Professional。
  1.1:基于Microsoft Windows XP Professional 含Service Pack 1 (SP1)。
  1.2:基于Microsoft Windows Server 2003。
  1.5(2004):基于Microsoft Windows XP Professional 含Service Pack 2 (SP2)。
  1.6(2005):基于Microsoft Windows Server 2003 含Service Pack 1 (SP1)。
  2.0(2006):基于Microsoft Windows Vista。
  3.0(2009):基于Microsoft Windows 7.
  winpe 1.5及以上版本才可以安装vista /win7

PE(1.x)远程启动要素(redhat上实现,所以文件名有大小写的限制):
startrom.o
TFTP服务根上的文件:
NTlDR
ntdetect.com
winnt.sif
WINPE.ISO

下面是解释
startrom.n12:这个文件从Windows 2003 SP1/SP2光盘中来,这个文件实际上也是一个符合pxe启动规范的启动文件,可以直接作为pxe服务器的启动文件来直接运行,当然,它也可以通过pxelinux的kernel命令来运行,我不知道grub4dos是否识别它的文件格式,如果能够识别,原理上它也可以使用grub4dos的kernel命令来执行,否则就使用chainloader --force命令来执行。pxelinuix需要它的名字为*.o,所以可更名为startrom.o
在Windows 2003 sp1/sp2的光盘中,还有一个startrom.com文件,它的作用跟startrom.n12是相同的,只是启动时需要按一个F12键才能继续,而startrom.n12则去掉了F12这个提示。

置于tftp服务的根目录(如tftpboot)上的:
NTLDR 大写,这个文件是从Windows 2003 SP1/SP2光盘中的setupldr.exe改名而来,它的作用应该相当于从本地硬盘启动PE的setupldr.bin,只是功能不同。
ntdetect.com:这个就是XP或2003所使用的c:\下的ntdetect.com
winnt.sif:这个是PE的启动配置文件(用来指定PE的系统目录及PE映像文件所在路径及启动选项)。
PE映像文件,如WINPE.ISO,NTLDR不支持压缩的映像,所以不能用压缩的,如WinPE.IS_要解压成WINPE.ISO

PXE启动PE的过程大致是(可能也不是很严谨):startrom.n12获得执行后,在TFTP服务器根目录下寻找ntldr(setupldr.exe),找到后加载ntldr并执行,而ntldr则在TFTP服务器的根目录下查找winnt.sif,根据winnt.sif的内容从TFTP服务器上下载PE的映像文件并根据选项进行PE的加载,在PE的加载过程中可能会用到ntdetect.com。
若出现TFTP download Faild,那么是TFTP服务根下未找到必须的文件;若出现ntdetect.com...错误,文件错吧...
用pxe引导gpxe,加载startrom.0引导PE,同样成功(同样放置文件于TFTP)。

以下全是抄袭来的
让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.ISO"
4)修改pxelinux的启动菜单文件(pxelinux.cfg/default),加入一个条目,内容如下:
LABEL netpe
MENU LABEL WinPE with Network Support for PXE boot
kernel /netpe/netperom.0
如果使用pxegrub,那么启动菜单是类似这样的:
title WinPE with Network Support for PXE boot
pxe keep
chainloader --force /netpe/netperom.0
2#
发表于 2011-11-3 13:57:40 | 只看该作者
实现的工具不提供下?我用论坛里那个一键支持PXE实现了,但是想置换软件没有成功。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-19 22:33

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表