Win7PE的引导方式不再使用WinNT的NTLDR方式,而是使用了Win7的BCD方式,他们在引导上的主要区别也就在于此。
1、pxeboot.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文件。
2、bootmgr.exe它也是从Win7安装盘中获得的,也放在\Windows\Boot\PXE文件夹中。它也必须放到TFTP服务器的根目录下(与WinXPPE中的setupldr.exe对应)。它的作用主要是读取启动配置文件也就是/boot/BCD,根据BCD的配置进一步加载/boot/boot.sdi文件。
3、/boot/BCD:这是bootmgr的启动菜单配置文件,跟Win7的启动菜单配置文件没有什么区别,它主要对应NT的boot.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} timeout15
Bcdedit -storec:\BCD -set {bootmgr}displayorder %GUIDl%
Bcdedit -storec:\BCD -set %GUIDl%systemroot \Windows
Bcdedit -storec:\BCD -set %GUIDl% detecthalYes
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}
4、boot.sdi:达个文件好像是通用的,将Win7光盘上的boot.sdi文件复制过来即可,必须放到TFTP服务器/boot目录下。
5、WinPE.WIM:这就是Win7PE的主映像文件了,也要放到/boot目录下。Win7PE的PXE启动过程大概是这个样子的:
首先,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的启动过程。
下面是我测试,生成bcd两种方法。
第一种:
1,把原文件bcd从iso原光盘中拷贝出来 (这里是d:\1\bcd)
2,执行‘1运出建立增加菜单.cmd’这个文件
@echo off
set path=D:\1\bcd
bcdedit /store %path%
bcdedit /store %path% /timeout 20
bcdedit /store %path% /set {globalsettings}locale zh-cn
bcdedit /store %path% /set{bootloadersettings} locale zh-cn
bcdedit /store %path% /set {bootmgr} localezh-cn
bcdedit /store %path% /set {default} localezh-cn
bcdedit /store %path% /set {memdiag} localezh-cn
bcdedit /store %path% /set {default}description "安装 Windows 7"
bcdedit /store %path% /copy {default} /d"启动 WinPE 3.0 (64位)"
bcdedit /store %path% /copy {default} /d"启动 WinPE 3.0 (32位)"
PAUSE
3,执行‘2把标识生成文本.cmd’这个文件,生成标识
@echo off
set path=d:\1\bcd
bcdedit /store %path% /enum all >bcd.txt
pause
4,查看d盘是否有一个BCD.TXT文件。这个文件的部分内容如下 {7619dcc8-fafe-11d9-b411-000476eba25f}
5,执行‘3把得到的标识符放到BCD里.CMD’这个文件
@echo off
set d_path=d:\1\bcd
setdev={7619dcc8-fafe-11d9-b411-000476eba25f}
REM 下面2行是X64的,boot\pe_x64.wim表示将引导boot目录下的pe_x64.wim文件。
REM {ab5b8f4b-8345-11eb-9d9c-005056c00008} 就是标识符,要跟上述查看BCD文件时要一致。
bcdedit /store %d_path% /set{ab5b8f4b-8345-11eb-9d9c-005056c00008} deviceramdisk=[boot]\boot\install.wim,%dev%
bcdedit /store %d_path% /set{ab5b8f4b-8345-11eb-9d9c-005056c00008} osdeviceramdisk=[boot]\boot\install.wim,%dev%
REM 下面2行是X86的,boot\pe_x86.wim表示将引导boot目录下的pe_x86.wim文件。
bcdedit /store %d_path% /set{abba045d-8345-11eb-9d9c-005056c00008} device ramdisk=[boot]\boot\pe_x86.wim,%dev%
bcdedit /store %d_path% /set{abba045d-8345-11eb-9d9c-005056c00008} osdeviceramdisk=[boot]\boot\pe_x86.wim,%dev%
pause
6,准备启动语言文件MUI,到C:\Windows\Boot\PCAT\zh-CN目录下复制bootmgr.exe.mui和memtest.exe.mui这两个文件到F:\boot\zh-cn目录下。(否则会乱码)
第二种:
1,第一步新建bcd.cmd
@echo off
Bcdedit -createstore d:\1\BCD
Bcdedit -store d:\1\BCD -create{ramdiskoptions} /d "Ramdisk options"
Bcdedit -store d:\1\BCD -set{ramdiskoptions} ramdisksdidevice boot
Bcdedit -store d:\1\BCD -set{ramdiskoptions} ramdisksdipath \boot\boot.sdi
bcdedit /store d:\1\BCD /create /d"WinPE 3.0 32bit" /application osloader
PAUSE
2,第二步把标识生成文本.cmd
@echo off
set path=d:\1\bcd
bcdedit /store %path% /enum all >bcd.txt
pause
3,第三步把id给bcd.cmd
set path=d:\1\BCD
set id={63429f05-834e-11eb-9d9c-005056c00008}
bcdedit /store %path% /set %id% systemroot\windows
bcdedit /store %path% /set %id% detecthalYes
bcdedit /store %path% /set %id% winpe Yes
bcdedit /store %path% /set %id% osdeviceramdisk=[boot]\Boot\boot32.wim,{ramdiskoptions}
bcdedit /store %path% /set %id% deviceramdisk=[boot]\Boot\boot32.wim,{ramdiskoptions}
bcdedit /store %path% /create {bootmgr} /d"Windows Boot Manager"
bcdedit /store %path% /set {bootmgr}nointegritychecks yes
bcdedit /store %path% /set {bootmgr}timeout 0
bcdedit /store %path% /default %id%
bcdedit /store %path% /displayorder %id%
@pause
这样bcd算是好了
下面是我架设tftp32测试效果
1,把以上文件放到tftp32的目录中,如下图
2,设置dhcp及动文件
3,看看效果
注意:用tftp32传输有如出现慢,是需要在bcd里加几个参数,会快很多
安装程序 Ramdisk 选项
---------------------
标识符 {ramdiskoptions}
ramdisksdidevice boot
ramdisksdipath \BOOT\BOOT.SDI
ramdisktftpblocksize 40960
ramdisktftpwindowsize 100
两个涉及到TFTP的参数,分别是windows size 和block size(也就是上面最后两个)。这两个参数就是关于TFTP的传输性能弱,全在这俩参数上。把这俩参数加到bootmgr的bcd里面。
默认的网络启动过程,网卡的使用率始终在10mbps以下徘徊(我是以我家100m带宽为例),大部分情况下更低,一个3M大小的字体文件,都要拷贝好一会儿。加上参数后,网卡的利用率立刻飙升到40mbps上下,一般都不低于20Mbps。 网络加载速度一下子快乐好几倍,再也不用傻等了,非常之爽。
微信:15312167779(系统交流学习)
邮箱:149824844@qq.com
更多我的学习技术文章:
https://boysky123.lofter.com
https://user.qzone.qq.com/149824844