网络启动PE的原理



网络启动PE的原理

网络启动就是利用DHCP服务器和TFTP服务器及客户端PXE技术,启动局域网内的客户机。网络启动过程是这样的:客户端发送动态获得IP地址的广播包到网络上,DHCP服务器在收到该广播包后,发送给客户端分配IP地址的回应包,客户端收到回应包后设置自己的IP地址,然后从DHCP服务器获得启动服务器的IP地址(TFTP服务器所在电脑的IP地址)及启动文件名(syslinuxpxelinux.0或者grub4dosgrldr,当然,也可以是startrom.n12或者使用3com Image Edit创建的pxe启动菜单文件,总之,它应该是一种由pxe启动规范规定的固定格式的可执行文件),然后客户端再联系启动服务器(TFTP服务器)获得启动文件并执行,这样基本上就完成了pxe启动过程。

一、PXE网络启动WinxpPE

网络启动WinxpPE,必需这样几个文件:

1startrom.n12:这个文件从Windows 2003 SP1/SP2光盘中的STARTROM.N1_解压而来,这个文件实际上也是一个符合pxe启动规范的启动文件,可以直接作为pxe服务器的启动文件来直接运行,这时Tftpd32服务器的DHCP选项卡里面的Boot文件文本框中应填入startrom.n12。当然,它也可以用Grub4DOS菜单的chainloader --force命令来执行。在Windows 2003 sp1/sp2的光盘中,还有一个startrom.com文件,它的作用跟startrom.n12是相同的,只是启动时需要按一个F12键才能继续,而startrom.n12则去掉了F12这个提示。这个文件可从STARTROM.CO_文件解压而来。

2ntldr:这个文件是从Windows 2003 SP1/SP2光盘中的setupldr.exe改名而来,并不是我们XP系统盘根目录的ntldr文件。这个文件必须放到TFTP服务器的根目录。setupldr.exe可以从Windows 2003 SP1/SP2光盘中的SETUPLDR.EX_解压而来。

3ntdetect.com:这个就是XP2003所使用的c:\下的ntdetect.com。这个文件也必须放到TFTP服务器的根目录。也可以从XP2003光盘获得这个文件。

4winnt.sif:这个是PE的启动配置文件(用来指定PE的系统目录及PE映像文件所在路径及启动选项),这是个文本文件,可以由记事本创建一个文本文档改名获得。这个文件也必须放到TFTP服务器的根目录。通过pxe启动的PE支持3种映像文件格式,例如,ISOIMG或者SDI。其实,SDI格式相当于IMG格式,只是SDI格式在IMG文件前加了一个文件头。一般我们都使用ISOIMG格式,但这两种格式的启动选项是有所不同的,ISO格式要在启动选项中增加一个/rdexportascd,而SDI格式还要增加一个/rdoffset选项。下面是winnt.sif文件的代码:

[SetupData]

BootDevice ="ramdisk(0)"

BootPath ="\WXPX\system32\"

OsLoadOptions ="/minint /fastdetect /rdexportascd /rdpath = \WXPE\winpe.img"

ntdetect.comwinnt.sif文件的名称由ntldr决定,可以用UltraEdit软件修改名称和路径。只需用UltraEdit打开ntldr,点击【查找与替换】,选择【查找ASCII】复选框,搜索到ntdetect.comwinnt.sif,就可以修改名称和路径。ntldr的名称由startrom.n12决定,也可以搜索ntldr字符串,进行修改,同时修改ntldr的文件名。

PXE启动PE的过程:startrom.n12获得执行后,在TFTP服务器根目录下寻找ntldr (setupldr.exe),找到后加载ntldr并执行,而ntldr则在TFTP服务器的根目录下查找winnt.sif,根据winnt.sif的内容从TFTP服务器上下载PE的映像文件并根据选项进行PE的加载,在PE的加载过程中会用到ntdetect.com

如果用Grub4DOS菜单启动PE,则菜单命令中可以,直接加载startrom.n12

Grub4DOS多启动菜单启动PE时,菜单命令如下:

title WinPE

pxe keep

chainloader--force (pd)/startrom.n12

boot

如果用pxelinux.0来启动需要将startrom.n12的文件名改为setupldr.bin,这个文件不是从Windows 2003 SP1/SP2光盘的拷贝而来的那个291KB的文件。它就是PE的启动文件。pxelinux.0只能识别setupldr.bin文件,而不能识别startrom.n12文件。

pxelinux.0多启动菜单启动PE时,菜单命令如下:

LABEL WinPE

MENU LABEL WindowsXP PE

kernelWXPE\SETUPLDR.BIN

 

二、PXE网络启动Win7PE

Win7PE的引导方式不再使用WinNTNTLDR方式,而是使用了Win7BCD方式,他们在引导上的主要区别也就在于此。

1pxeboot.0:由pxeboot.com或者pxeboot.n12改名而来,这两个文件可以从Win7安装盘中获得,将win7安装盘中的boot.wim提取到D盘,解压到boot文件夹中,在D:\boot\Windows\Boot\PXE文件夹下可以找到这个名为pxeboot.n12的文件。这个文件对应WinXPPE中的startrom.n12文件。它的放置位置一般是TFTP服务器的根目录下,它的主要作用是加载TFTP根目录下的bootmgr.exe文件。

2bootmgr.exe它也是从Win7安装盘中获得的,也放在\Windows\Boot\PXE文件夹中。它也必须放到TFTP服务器的根目录下(与WinXPPE中的setupldr.exe对应)。它的作用主要是读取启动配置文件也就是/boot/BCD,根据BCD的配置进一步加载/boot/boot.sdi文件。

3/boot/BCD:这是bootmgr的启动菜单配置文件,跟Win7的启动菜单配置文件没有什么区别,它主要对应NTboot.ini文件,由Win7的命令行程序bcdedit.exe来进行配置和修改。一个创建BCD文件启动Win7PE的例子如下:

Bcdedit -createstore c:\BCD

Bcdedit -storec:\BCD -create {ramdiskoptions} /d "Ramdisk options"

Bcdedit -storec:\BCD -set {ramdiskoptions} ramdisksdidevice boot

Bcdedit -storec:\BCD -set {ramdiskoptions} ramdisksdipath \boot\boot.sdi

:: NEW GUIDCREATED HERE

for /f"tokens=l-3" %%a in ('Bcdedit -store c:\BCD -create /d "WinPE2.0"

/applicationosloader') do SET GUIDl=%%c

Bcdedit -storec:\BCD -create {bootmgr} /d "VISTA Boot Manager"

Bcdedit -storec:\BCD -set {bootmgr} timeout 15

Bcdedit -storec:\BCD -set {bootmgr} displayorder %GUIDl%

Bcdedit -storec:\BCD -set %GUIDl% systemroot \Windows

Bcdedit -storec:\BCD -set %GUIDl% detecthal Yes

Bcdedit -storec:\BCD -set %GUIDl% winpe Yes

Bcdedit -storec:\BCD -set %GUIDl% osdevice

ramdisk=[boot]\Boot\WinPE.wim,{ramdiskoptions}

Bcdedit -storec:\BCD -set %GUIDl% device

ramdisk=[boot]\Boot\WinPE.wim,{ramdiskoptions}

4boot.sdi:达个文件好像是通用的,将Win7光盘上的boot.sdi文件复制过来即可,必须放到TFTP服务器/boot目录下。

5WinPE.WIM:这就是Win7PE的主映像文件了,也要放到/boot目录下。Win7PEPXE启动过程大概是这个样子的:

首先,pxeboot.0获得执行权限(可以由pxelinux菜单直接调用,或者将pxeboot.0直接作为PXE服务器的启动文件),然后,该文件下载TFTP服务器根目录下的bootmgr.exe并执行, bootmgr.exe再读取/boot/BCD文件获得Win7PE的启动配置,并进一步下载/boot/boot.sdi/boot/winpe.wim,然后执行winpe.wim中的winload.exe开始Win7PE的启动过程。

 

 

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值