At this useful question, Why does a cloned Windows 7 BCD contain incomplete data (and, therefore, prevent booting)? they are asking a similar but different thing, the useful answers were not what I was looking for at all. My answer would not fit in well at that location, there is no XP, and the action I am doing is very specific and simpler.
I clone using the (compressed) image file method. That clone file of the C: partition is then sent to the backup system partition D:. Because of the use of disk IDs (GUID) everytime I send the image file to the new location, it has to be fixed before it will boot.
After research and many repeated clonings of a very specific setup, I now have a batch file that in 3 seconds, I can "fix" up the boot on My cloned partition.
The changes to be made on my system were to be made to a partition with the letter D, if that is not the correct partition you will have to alter the instances of D: . In my testing the partition is on the front of the disk, there is no reserve, there is no partition before it.
After booting to the Backup clone system, the OS decided to letter the partition with C: this works out very well, for my uses.
Ths pic shows it booted to the backup and how the letter itself has changed when it is booted there.
If you do not know what this does or why, do not use it, it is very specific, to the exact layout I use.
CLONEbootFix.Bat
Echo OFF
CLS
Color 0C
Echo ************** CLONE BATCH ***************
timeout /T 1 > NUL
Echo.
Echo ************** BCD EDIT D ***************
Echo.
Echo.
Echo Do you want to make the D: Drive or Partition to be bootable to Windows 7
Echo By messing with the BCD? You must type Yes If you wish to do it.
Echo.
SET /P Choice1=type "YES" "NO" ? -
IF /I "%Choice1%"=="YES" GOTO DOIT
Echo.
Echo You did not indicate yes, so It will not proceed.
Echo.
Echo It will now exit.
Echo.
pause
Exit
:DOIT
Echo.
Echo * * * Setting OS device * * *
Echo.
bcdedit /store D:\boot\bcd /set {default} osdevice boot
Echo.
Echo * * * Setting Default Device Boot * * *
Echo.
bcdedit /store D:\boot\bcd /set {default} device boot
Echo.
Echo * * * Setting Boot Manager * * *
Echo.
bcdedit /store D:\boot\bcd /set {bootmgr} device boot
Echo.
Echo * * * Setting Memory Diagnostics Location * * *
Echo.
bcdedit /store D:\boot\bcd /set {memdiag} device boot
Echo.
pause
exit
Only the 4 BCDedit lines are nessisary, so you can trim it down if desired, there is no error checking, just trying to make sure it is not run by misteak.
I created this for my own purposes, I cannot guarentee that it will work for your purpose, or that everything will work correct. It just would have helped me out to find this done.
Remember to re-Label (rename) your drive/partition , because the letters might not mean anything.
After sending the Image to the Backup partition, I then boot into the original system as always. Once in the original system, I run the batch to "fix" this backup system partition so it will also boot. It is Fixed preferably before the original is damaged in some way. I can always access some GUI OS even if the original disk has a hardware failure, or gets a virus or dies, or will not boot, or If I mess up the software on the one.