|
这个也是折腾了好久才成功的,分享给各位。
问题的由来
在使用PXE的应用时,由于TFTP协议过于老旧效率比较低,和HTTP FTP ISCSI相比,百兆网络环境约为6M对12M,当网络环境为千兆时,差距更明显为6M对38M,在TFTP下载如今越来越大的wim文件时更是让人心烦。
步骤1
WINDOWS7开始,微软为了解决这个问题,公布了修改BCD的一个参数ramdisktftpblocksize,可有效提升TFTP下的传输效率。具体命令为
bcdedit /enum all /store d:\vvv\bc7
bcdedit /store d:\vvv\bc7 /set {ramdiskoptions} ramdisktftpblocksize 8192
以上的bc7是网络启动win7PE的bcd文件,当然是在管理员模式下修改。8192这个值也可换成 4096, 8192, 16384,但实测8192最好,网上还可搜到这个参数ramdisktftpwindowsize,实测没什么效果。
步骤2
以上修改好了BCD的WIN7PE在千兆PXE环境下可立刻感受到速度的提升,实测和硬盘启动PE接近。但也出现了一个问题,改过了参数的BCD在百兆的网卡使用时会卡在下载boot.sdi时不动。解决办法就是在menu菜单中增加一项菜单,分别在终端为百兆和千兆时选不同的菜单启动不同的BCD来启动同一个pe.wim,这当然不够方便。
步骤3
借助grub4dos的外置工具chkpci和fat,参考chenall大侠的dpms.bat以及网上下载的pcidevs.txt写了个批处理gbit.bat,终于解决了这个问题。能够在终端为百兆和千兆时自动判断网卡类型自动选择不同BCD文件启动pe.wim,千兆速度飞快,百兆也正常。
gbit.bat内容
!BAT
;下面这个是发现千兆网卡的标志位
write 0x60000 0
;装载CHKPCI外部命令
insmod CHKPCI
;创建的内存盘存放临时文件
map --floppies=2
map --mem (md)+5760 (8)
map --hook
echo -n 膻 > (8)+40
write --offset=0xc (8) \2\2\1\0\2\xf0\0\x80\x16\xf0\x9\0\x24\0\2
write --offset=0x26 (8)+1 \x29DPMSchenall.netFAT12
write --offset=0x1fe (8)+2 \x55\xAA\xf0\xff\xff
/fat mkfile size=4096 (8)/chkpci.pci
;下面这句是将本机的网卡信息保存到chkpci.pci文件中
/CHKPCI -net /pcidevs.txt > (8)/chkpci.pci
;这是在网卡信息文件chkpci.pci中寻找千兆网卡的标志Gigabit,并在标志位写1
cat --locatei=Gigabit (8)/chkpci.pci && write 0x60000 1
;这是去掉内存盘
map --unmap=8
map --rehook
read 0x60000 && goto :OK
:NO
;这是启动百兆的BCD
echo ONLY 100M SLOW
chainloader --force (pd)/pxeboot7.7pe
goto :exit
:OK
;这是启动千兆的BCD
echo YES 1000M FAST
chainloader --force (pd)/pxeboot5.7pe
:EXIT
menu.lst中的内容
title WINPE7全能___400M
pxe keep
/gbit7.bat
附件中包含相关的文件。 |
评分
-
查看全部评分
|