While trying to build BartPE earlier this week, I was perplexed at the problem that got me stuck. I know I had encountered this before, and not having to work with Windows for quite a while, I could no longer recall what I did in the past. This seems to be a common problem on forums and I have helped a lot of people stuck in this problem before.
To give you a better picture, I built BartPE for USB using PE2USB. After being successful at building the USB, I plugged it on the computer to be cloned and.. ERROR!
Remove disks or other media. Press any key to restart.
The USB device seems to be ok, as I tried it with other computers. So I rebuilt the BartPE using PE Builder. Same result. The same error results regardless of whether the source is Windows XP Pro SP3 or Windows Server 2003 SP1.
It seems that the common denominator is the Windows 7 on the Thinkpad and the Windows 7 on the desktop. So I tried the build on a VirtualBox Windows XP Pro SP3. The same exact procedure I followed to build resulted in success.
And it hit me -- the bootsectors or boot code written by Windows 7 is different from Windows XP. When using Windows 7 on your machine and building BartPE or WinPE 1.x, you have to write a version 5 boot code (NTLDR) on the USB flash drive. Native Windows 7 format utilities default to version 6 (BOOTMGR) boot code. And this results in errors when booting an XP-based WinPE/BartPE.
As seen above, the bootsect.exe was able to write version 5 bootcode to the USB flash drive and I was able to boot to BartPE without errors.
The reverse applies to Windows XP machines creating WinPE version 2 or version 3. You will have to run bootsect.exe to put version 6 boot code to the USB flash drive to properly boot.
The standalone file bootsect.exe can be downloaded from here. Don't worry it is virus-free and runs regardless of whether your version of Windows is 32-bit or 64-bit.