TheReasonIFail Posted March 27, 2008 Posted March 27, 2008 (edited) OK,I'm trying to setup BCD to show WinPE and WinXP. Things aren't working too well.Here is the script I'm currently using.To me it seems that when I add the entry for XP, it overwrites the PE entry.Any and all help is appreciated.@ECHO OFFSET CD=D:SET PHD=W:SET XHD=C:DISKPART -S DEFAULTPART.TXTimagex /apply %CD%\sources\boot.wim 1 %PHD%imagex /apply winxp.wim 1 %XHD%xcopy %CD%\boot\*.* /e /f %PHD%\boot\copy %CD%\bootmgr %PHD%del %PHD%\boot\bcdBcdedit -createstore %PHD%\boot\BCDBcdedit -store %PHD%\boot\BCD -create {bootmgr} /d "Boot Manager"Bcdedit -store %PHD%\boot\BCD -set {bootmgr} device bootBcdedit -store %PHD%\boot\BCD -create /d "WINPE" -application osloadernotepad winpeinst.batBcdedit -store %PHD%\boot\BCD -set <GUID> osdevice partition=%PHD%Bcdedit -store %PHD%\boot\BCD -set <GUID> device partition=%PHD%Bcdedit -store %PHD%\boot\BCD -set <GUID> path \windows\system32\boot\winload.exeBcdedit -store %PHD%\boot\BCD -set <GUID> systemroot \windowsBcdedit -store %PHD%\boot\BCD -set <GUID> winpe yesBcdedit -store %PHD%\boot\BCD -set <GUID> detecthal yesBcdedit -store %PHD%\boot\BCD -CREATE {LEGACY} /D "Windows XP"Bcdedit -store %PHD%\boot\BCD -SET {LEGACY} DEVICE BOOTBcdedit -store %PHD%\boot\BCD -SET {LEGACY} PATH \NTLDRBcdedit -store %PHD%\boot\BCD -DISPLAYORDER {LEGACY} -ADDLAST Edited March 29, 2008 by TheReasonIFail
TheReasonIFail Posted March 28, 2008 Author Posted March 28, 2008 (edited) All right, after some playing I've edited to:@ECHO OFFSET CD=D:SET PHD=W:SET XHD=C:DISKPART -S DEFAULTPART.TXTimagex /apply %CD%\sources\boot.wim 1 %PHD%imagex /apply winxp.wim 1 %XHD%xcopy %CD%\boot\*.* /e /f %PHD%\boot\copy %CD%\bootmgr %PHD%del %PHD%\boot\bcdBcdedit -createstore %PHD%\boot\BCDBcdedit -store %PHD%\boot\BCD -create {bootmgr} /d "Boot Manager"Bcdedit -store %PHD%\boot\BCD -set {bootmgr} device bootBcdedit -store %PHD%\boot\BCD -CREATE {NTLDR} /D "Windows XP"Bcdedit -store %PHD%\boot\BCD -set {NTLDR} DEVICE PARTITION=%XHD%Bcdedit -store %PHD%\boot\BCD -set {NTLDR} PATH \NTLDRBcdedit -store %PHD%\boot\BCD -create /D "Windows PE" -APPLICATION OSLOADERnotepad winpeinst.batBcdedit -store %PHD%\boot\BCD -set <GUID> osdevice partition=%PHD%Bcdedit -store %PHD%\boot\BCD -set <GUID> device partition=%PHD%Bcdedit -store %PHD%\boot\BCD -set <GUID> path \windows\system32\boot\winload.exeBcdedit -store %PHD%\boot\BCD -set <GUID> systemroot \windowsBcdedit -store %PHD%\boot\BCD -set <GUID> winpe yesBcdedit -store %PHD%\boot\BCD -set <GUID> detecthal yesBcdedit -store %PHD%\boot\BCD -DISPLAYORDER {NTLDR} <GUID>Bcdedit -store %PHD%\boot\BCD -DEFAULT {NTLDR}Bcdedit -store %PHD%\boot\BCD -TIMEOUT 2Now I get prompted for each entry, but choosing Windows XP, gives me the following error:File: \NTLDRStatus: 0xc000000dInfo: The selected entry could not be loaded because the application is missing or corrupt. Edited March 28, 2008 by TheReasonIFail
WreX Posted March 28, 2008 Posted March 28, 2008 My first comment is to be sure you have the NTLDR files (NTLDR, NTDETECT.COM, and boot.ini) in the root of the primary active partition (probably C:). My second is that you have "{ntldr} device partition=" and I think it should be "{ntldr} device boot". Here's my batch file for booting a PE WIM on C: into RAM and NTLDR:xcopy %CDROM%\BOOT\*.* /e /f /y C:\BOOT\copy %CDROM%\BOOTMGR C:\copy %CDROM%\SOURCES\BOOT.WIM C:\BOOT\BOOT.WIMIF EXIST C:\BOOT\BCD DEL C:\BOOT\BCDIF NOT EXIST C:\TEMP MD C:\TEMPIF EXIST C:\TEMP\BCD DEL C:\TEMP\BCDbcdedit -createstore C:\TEMP\BCDbcdedit -store C:\TEMP\BCD -create {bootmgr} /d "Boot Manager"bcdedit -store C:\TEMP\BCD -set {bootmgr} device bootbcdedit -store C:\TEMP\BCD -create {ramdiskoptions} /d "WinPE"bcdedit -import C:\TEMP\BCDbcdedit -set {ramdiskoptions} ramdisksdidevice partition=C:bcdedit -set {ramdiskoptions} ramdisksdipath \BOOT\BOOT.sdifor /f "tokens=3" %%a in ('bcdedit -create /d "WinPE" -application osloader') do set guid=%%abcdedit -set %guid% device ramdisk=[C:]\BOOT\BOOT.WIM,{ramdiskoptions}bcdedit -set %guid% path \WINDOWS\SYSTEM32\BOOT\WINLOAD.EXEbcdedit -set %guid% osdevice ramdisk=[C:]\BOOT\BOOT.WIM,{ramdiskoptions}bcdedit -set %guid% systemroot \WINDOWSbcdedit -set %guid% winpe yesbcdedit -set %guid% detecthal yesbcdedit -displayorder %guid% -addlastbcdedit -create {ntldr} /d "Microsoft Windows XP"bcdedit -set {ntldr} device bootbcdedit -set {ntldr} path \ntldrbcdedit -displayorder {ntldr} -addfirstbcdedit -default {ntldr}bcdedit -timeout 5bootsect /nt60 C:
TheReasonIFail Posted March 29, 2008 Author Posted March 29, 2008 (edited) SUCCESS!!!I've finally gotten Windows RE to work with XP and here is the script I used:@ECHO OFFSET CD=D:SET PHD=E:SET XHD=C:SET REGUID=572bcd55-ffa7-11d9-aae0-0007e994107dREGEDIT -S VDS.REGDISKPART -S PREPART.TXTBOOTSECT.EXE /NT60 Allimagex /apply winre.wim 1 %PHD%COPY WINXP.WIM %PHD%\Sources\Recovery\*.*IMAGEX /APPLY %PHD%\Sources\Recovery\WINXP.WIM 1 %XHD%xcopy %CD%\boot\*.* /e /f %XHD%\boot\copy %CD%\bootmgr %XHD%del %XHD%\BOOT\BCDBcdedit -CREATESTORE %XHD%\BOOT\BCDBCDEDIT -STORE %XHD%\BOOT\BCD -create {BOOTMGR} /d "Boot Manager"BCDEDIT -STORE %XHD%\BOOT\BCD -SET {BOOTMGR} DEVICE BOOTBCDEDIT -STORE %XHD%\BOOT\BCD -CREATE {NTLDR} /D "Windows XP"BCDEDIT -STORE %XHD%\BOOT\BCD -SET {NTLDR} DEVICE BOOTBCDEDIT -STORE %XHD%\BOOT\BCD -SET {NTLDR} PATH \NTLDRBCDEDIT -STORE %XHD%\BOOT\BCD -create {%REGUID%} /D "Windows Recovery Environment" -APPLICATION OSLOADERBCDEDIT -STORE %XHD%\BOOT\BCD -SET {%REGUID%} osdevice partition=%PHD%BCDEDIT -STORE %XHD%\BOOT\BCD -SET {%REGUID%} device partition=%PHD%BCDEDIT -STORE %XHD%\BOOT\BCD -SET {%REGUID%} path \windows\system32\boot\winload.exeBCDEDIT -STORE %XHD%\BOOT\BCD -SET {%REGUID%} systemroot \windowsBCDEDIT -STORE %XHD%\BOOT\BCD -SET {%REGUID%} winpe yesBCDEDIT -STORE %XHD%\BOOT\BCD -SET {%REGUID%} detecthal yesBCDEDIT -STORE %XHD%\BOOT\BCD -SET {%REGUID%} nx optinBCDEDIT -STORE %XHD%\BOOT\BCD -SET {%REGUID%} custom:46000010 yesBCDEDIT -STORE %XHD%\BOOT\BCD -DEFAULT {NTLDR}BCDEDIT -STORE %XHD%\BOOT\BCD -SET {DEFAULT} RECOVERYSEQUENCE {%REGUID%}BCDEDIT -STORE %XHD%\BOOT\BCD -SET {DEFAULT} RECOVERYENABLED YESBCDEDIT -STORE %XHD%\BOOT\BCD -DISPLAYORDER {NTLDR} {%REGUID%}REM BCDEDIT -STORE %XHD%\BOOT\BCD -TIMEOUT 2ATTRIB +R +H +S %XHD%\BOOTMGRATTRIB +R +H +S %XHD%\BOOT\and here are the command in prepart.txtSELECT DISK 0CLEANCREATE PARTITION PRIMARY SIZE=4096ASSIGN LETTER=E:FORMAT FS=NTFS QUICK LABEL="Windows RE"SET ID=27CREATE PARTITION PRIMARYASSIGN LETTER=C:ACTIVEFORMAT FS=NTFS QUICK LABEL="Windows XP"SET ID=07 Edited March 29, 2008 by TheReasonIFail
TheReasonIFail Posted April 1, 2008 Author Posted April 1, 2008 (edited) Well, it seems that sysprep is screwing with the BCD.I've edited the file to be a two part install so WinPE is installed after sysprep has run on the C: drive.I'm going to work on that today. Hopefully that will work for now.@ECHO OFFSET CD=D:SET PHD=W:SET XHD=C:SET REGUID=572BCD55-FFA7-11D9-AAE0-0007E994107DGOTO MENU:MENUECHO.ECHO What would you like to do?ECHO (Press Number followed by Enter key.)ECHO.ECHO 1. Format and image disk with Windows XP ProfessionalECHO 2. Install Windows Recovery EnvironmentECHO 3. Open A43 File ManagerECHO 4. Quit and reboot PCECHO.:CHOICESET /P C=[1,2,3,4,5,6,7]?IF "%C%"=="4" GOTO QUITIF "%C%"=="3" GOTO A43IF "%C%"=="2" GOTO WINREIF "%C%"=="1" GOTO WINXPGOTO CHOICE:WINXPECHO Preparing Disk for Windows InstallationECHO After imaging is complete, let sysprep complete before creating recovery partitionDISKPART -S DP\PREPART.TXTREGEDIT -S VDS.REGIMAGEX /APPLY WIM\XP_SYSPREP.WIM 1 %XHD%START /WAIT WSCRIPT WIMHALDETECT.VBSWPEUTIL REBOOT:WINREECHOBOOTSECT.EXE /NT60 ALLIMAGEX /APPLY WIM\WINRE.WIM 1 %PHD%COPY FILES\*.* %XHD%\WINDOWS\SYSTEM32\XCOPY %CD%\BOOT\*.* /e /f %XHD%\BOOT\COPY %CD%\BOOTMGR %XHD%DEL %XHD%\BOOT\BCDBCDEDIT -CREATESTORE %XHD%\BOOT\BCDBCDEDIT -STORE %XHD%\BOOT\BCD -create {BOOTMGR} /d "Boot Manager"BCDEDIT -STORE %XHD%\BOOT\BCD -SET {BOOTMGR} DEVICE BOOTBCDEDIT -STORE %XHD%\BOOT\BCD -CREATE {NTLDR} /D "Windows XP"BCDEDIT -STORE %XHD%\BOOT\BCD -SET {NTLDR} DEVICE BOOTBCDEDIT -STORE %XHD%\BOOT\BCD -SET {NTLDR} PATH \NTLDRBCDEDIT -STORE %XHD%\BOOT\BCD -SET {NTLDR} LOCALE EN-USBCDEDIT -STORE %XHD%\BOOT\BCD -create {%REGUID%} /D "Backup and Restore" -APPLICATION OSLOADERBCDEDIT -STORE %XHD%\BOOT\BCD -SET {%REGUID%} OSDEVICE PARTITION=%PHD%BCDEDIT -STORE %XHD%\BOOT\BCD -SET {%REGUID%} DEVICE PARTITION=%PHD%BCDEDIT -STORE %XHD%\BOOT\BCD -SET {%REGUID%} path \windows\system32\boot\winload.exeBCDEDIT -STORE %XHD%\BOOT\BCD -SET {%REGUID%} systemroot \windowsBCDEDIT -STORE %XHD%\BOOT\BCD -SET {%REGUID%} winpe yesBCDEDIT -STORE %XHD%\BOOT\BCD -SET {%REGUID%} detecthal yesBCDEDIT -STORE %XHD%\BOOT\BCD -SET {%REGUID%} nx optinBCDEDIT -STORE %XHD%\BOOT\BCD -SET {%REGUID%} custom:46000010 yesBCDEDIT -STORE %XHD%\BOOT\BCD -SET {%REGUID%} LOCALE EN-USBCDEDIT -STORE %XHD%\BOOT\BCD -DEFAULT {NTLDR}BCDEDIT -STORE %XHD%\BOOT\BCD -SET {DEFAULT} RECOVERYSEQUENCE {%REGUID%}BCDEDIT -STORE %XHD%\BOOT\BCD -SET {DEFAULT} RECOVERYENABLED YESBCDEDIT -STORE %XHD%\BOOT\BCD -DISPLAYORDER {NTLDR} {%REGUID%}BCDEDIT -STORE %XHD%\BOOT\BCD -TIMEOUT 0DISKPART -S DP\POST.TXTWPEUTIL REBOOT:A43A43.EXE:QUITWPEUTIL REBOOTI'm using the old choice.com file to get the prompts. Is there a way to do that with some more recent "technology"? Edited April 1, 2008 by TheReasonIFail
TheReasonIFail Posted June 5, 2008 Author Posted June 5, 2008 (edited) Well, I finally got it working!I first set the WinPE partition as being active, creating the BCD and moved the XP boot files to the PE partition. Now sysprep doesn't touch the BCD and we now have a fully functional machine with PE and XP.It never dawned on me that I should move the boot files from the XP partition to the PE partition.Yay!Here is what the new script looks like:@ECHO OFFSET CD=D:SET RECVY=W:SET WINXP=C:SET REGUID=572BCD55-FFA7-11D9-AAE0-0007E994107DREGEDIT -S VDS.REGDISKPART -S PREPART.TXTBOOTSECT.EXE /NT60 %RECVY%BOOTSECT.EXE /NT52 %WINXP%IMAGEX /APPLY BOOT.WIM 1 %RECVY%IMAGEX /APPLY WINXPSP3.WIM 1 %WINXP%START /WAIT WSCRIPT WIMHALDETECT.VBSATTRIB -R -H -S %WINXP%\NTLDRATTRIB -R -H -S %WINXP%\NTDETECT.COMATTRIB -R -H -S %WINXP%\BOOT.INICOPY %WINXP%\NTLDR %RECVY%\COPY %WINXP%\NTDETECT.COM %RECVY%\COPY %WINXP%\BOOT.INI %RECVY%\ATTRIB +R +H +S %RECVY%\NTLDRATTRIB +R +H +S %RECVY%\NTDETECT.COMATTRIB +R +H +S %RECVY%\BOOT.INIDEL %WINXP%\NTLDRDEL %WINXP%\NTDETECT.COMDEL %WINXP%\BOOT.INIMD %RECVY%\BOOT\XCOPY %CD%\BOOT\*.* /E /F %RECVY%\BOOT\COPY %CD%\BOOTMGR %RECVY%DEL %RECVY%\BOOT\BCDBCDEDIT -CREATESTORE %RECVY%\BOOT\BCDBCDEDIT -STORE %RECVY%\BOOT\BCD -create {BOOTMGR} /d "Boot Manager"BCDEDIT -STORE %RECVY%\BOOT\BCD -SET {BOOTMGR} DEVICE BOOTBCDEDIT -STORE %RECVY%\BOOT\BCD -CREATE {NTLDR} /D "Windows XP"BCDEDIT -STORE %RECVY%\BOOT\BCD -SET {NTLDR} DEVICE PARTITION=%WINXP%BCDEDIT -STORE %RECVY%\BOOT\BCD -SET {NTLDR} PATH \ntldrBCDEDIT -STORE %RECVY%\BOOT\BCD -SET {NTLDR} LOCALE EN-USBCDEDIT -STORE %RECVY%\BOOT\BCD -create {%REGUID%} /D "Backup and Restore" -APPLICATION OSLOADERBCDEDIT -STORE %RECVY%\BOOT\BCD -SET {%REGUID%} OSDEVICE BOOTBCDEDIT -STORE %RECVY%\BOOT\BCD -SET {%REGUID%} DEVICE BOOTBCDEDIT -STORE %RECVY%\BOOT\BCD -SET {%REGUID%} PATH \windows\system32\boot\winload.exeBCDEDIT -STORE %RECVY%\BOOT\BCD -SET {%REGUID%} SYSTEMROOT \WindowsBCDEDIT -STORE %RECVY%\BOOT\BCD -SET {%REGUID%} WINPE YESBCDEDIT -STORE %RECVY%\BOOT\BCD -SET {%REGUID%} DETECTHAL YESBCDEDIT -STORE %RECVY%\BOOT\BCD -SET {%REGUID%} NX OPTINBCDEDIT -STORE %RECVY%\BOOT\BCD -SET {%REGUID%} CUSTOM:46000010 YESBCDEDIT -STORE %RECVY%\BOOT\BCD -SET {%REGUID%} LOCALE EN-USBCDEDIT -STORE %RECVY%\BOOT\BCD -DEFAULT {NTLDR}BCDEDIT -STORE %RECVY%\BOOT\BCD -SET {DEFAULT} RECOVERYSEQUENCE {%REGUID%}BCDEDIT -STORE %RECVY%\BOOT\BCD -SET {DEFAULT} RECOVERYENABLED YESBCDEDIT -STORE %RECVY%\BOOT\BCD -DISPLAYORDER {NTLDR} {%REGUID%}BCDEDIT -STORE %RECVY%\BOOT\BCD -TIMEOUT 2WPEUTIL REBOOTInstead of manually moving the XP bootfiles, I just added it to the script. Edited June 5, 2008 by TheReasonIFail
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now