|
注:此文主要给使用pxe启动PE ghost装os的朋友参考,适合小规模装机使用,不是初级教程,如果你对pxe启动还不是很了解, 可以先搜索论坛了解相关设置。
* 映射网络驱动器脚本参考了chenall的pe
* wselect 下载http://home.mnet-online.de/horst.muc/w32dial.htm
* ris-linux 下载http://oss.netfarm.it/guides/pxe.php
原文来自http://jamesdai2002.spaces.live.com/,
e-mail: jamesdai2002@hotmail.com
公司一直用XPPE和RIS给PC安装os, 随着PC硬件的不断更新,发现xp pe也老了,经常需要更新硬盘控制器和网卡驱动,非常麻烦,于是增加了一个Win7 PE, 放在公司服务器上(因为同时有很多个pe/ris在服务器上pxe启动,所以启动菜单也是必须的).
1. PE image制作
无忧论坛上有很多网友制作的现成的pe, 都带有桌面和应用软件,系统也做了一些精简,下载了一些都发现不太合适,有的没网卡驱动,有的太花哨了一点,不实用,还是用微软提供的aik tools来做,图形桌面对于装os也不是必须的,改用wselect menu来代替。
安装win7 AIK中文版本,copype.cmd x86 c:\winpe_x86 生成winpe.wim
原版的win7pe共160M,中文字体有点大,大概有40M, 用imagex /apply c:\winpe_x86\winpe.wim 1 i: 解压到I:盘, 替换掉其中的几个大字库。
修改windows\system32\startnet.cmd, 增加下面的内容(%%里面的内容可用实际的地址和名称替换)
:映射网络驱动器
if "%n%"=="400" goto :服务器不通
net use P: [url=]\\%PXE_SERVER%\%SHARE_NAME%[/url] %SHARE_PASS% /user:%SHARE_USER% 2>NUL
net use P: [url=]\\%PXE_SERVER%\%SHARE_NAME%[/url] %SHARE_PASS% /user:%SHARE_USER%@%COMPUTERNAME% 2>NUL
if exist %ExtProgramFiles%\ext_run.cmd goto :装载外部配置文件
set/an+=1 >nul
goto :映射网络驱动器
:装载外部配置文件
if exist %ExtProgramFiles%\ext_run.cmd call %ExtProgramFiles%\ext_run.cmd
重新用 imagex /capture /boot /compress maximun c:\winpe_x86\mype.wim "pe" 制作成新的pe, 大约120M
2. Wselect Menu制作。
微软原版的win 7 PE启动后,自动加载startnet.cmd, 其中包含wpeinit.exe, 加载网卡驱动,然后map一个网络驱动器,成功后运行网络盘上的ext_run.cmd
在ext_run.cmd中包含wselect制作的menu(类似wbat), 只是运行在windows cmd下面。

P:
cd %ExtProgramFiles%
:menu
wselect pemenu.txt "PE选择菜单,使用键盘上下键和回车键选择:" ""
if %errorlevel%==1 goto :item1
if %errorlevel%==2 goto :item2
if %errorlevel%==3 goto :item3
if %errorlevel%==4 goto :item4
if %errorlevel%==5 goto :item5
if %errorlevel%==6 goto :item6
if %errorlevel%==7 goto :item7
exit
3. BootMgr的pxe启动
A. bootmgr是vista/win7的引导工具, 要想bootmgr实现多个pe的引导,必须使用bootmgr的菜单,如果同时用pxelinux或者grub4dos, 就变成双重菜单,很不方便,需要使用ultraedit一类的工具修改一些字符串以满足启动多个pe的需要。
以vista自带的bootmgr为例, bootmgr使用校验和,数字签名来保护程序本身不被修改,bootmgr.exe在0x130有一个校验和,修改完成后需要重新计算(如果校验和为112233,这此次需修改成332211)。
数字签名无法破解,幸好可以通过配置文件关闭检查,bcdedit {bootmgr} -set nointegritychecks Yes
B. 当PXE启动加载bootmgr时,缺省会和boot server(也就是wds server)通信,端口为udp 4011, pxe客户端会发送请求包到4011, 等待一个boot menu的配置, 如果boot server没有回应,会发送8个dhcp request packet, 每个2s, 会延迟约16s,如果16秒后服务器仍未响应,则加载tftproot下boot\bcd配置文件,为避免16秒的延迟,需要在tftp server运行一个daemon程序(可下载ris linux 0.4改写),根据请求的字符串,发送一个配置文件路径和名称。
通过修改bootmgr中PXEclient字符串, 可使客户端发送的字符串不同,回应的bcd文件也可以不同,实现不用的bootmgr文件对应不同的bcd文件(当然直接修改bootmgr里面的boot\bcd字符串也可以, 不过有延迟)
pxeboot.0(PXEBoot.com改名)-->bootmgr.exe--->boot\bcd----->win7pe.wim
pxeboo1.0(PXEBoot.com改名)-->bootmg1.exe(修改pexclient字符串)--->boot\pxew7pe01(这个名称由ris-linux发送)--->w7pe01.wim
pxeboo2.0(PXEBoot.com改名)-->bootmg2.exe(修改pexclient字符串)--->boot\pxexppe01(这个名称由ris-linux发送)-->startrom.0(可加载pe1.x或者ris, 优点是使用相对路径,ntldr可以放到任意目录下)
120M WIN7 PE相比XP PE还是大很多,不过由于tftp传输效率的提高,实际加载和启动时间差别不是很大,大约1分钟左右。
win7和XP相比对网络的利用率提高了很多,同样100M的网络,使用windows文件共享copy文件,win7的网络利用率在95%以上,XP只有70%,当然Win7PE也不是万能的,才用了几天就发现一个dell pc的网卡驱动没有,还好ms提供了命令可以直接添加驱动,就手工添加一下了。
|
|