Dual Boot 7/XP from USB

#1
Hi!

I have 2 hard discs. They both boot fine independently. One with 7 the other with XP. So what i would like to do is to boot from a USB stick and leaving intact the actual boot configurations.

I found the chainload explanation from this page. The Boot Process. It's not clear in my mind when the menu of choices is displayed. MBR? Bootsector? or Bootmgr?

Here is what i tried so far. Format the USB stick with NTFS. GO here: Use EasyBCD to create a bootable USB. For step 5 i changed "Add New Entry | ISO" for "Add New Entry | Windows" and made 2 entries (7 and XP). Steps 7 and 8 were skipped.

From this point the dual boot is a success. One thing can be improve from what i understand. The USB stick cannot be safely removed. When i boot with 7, the file "USB drive":\Boot\BCD is use by the OS. This file on the USB stick is clearly a copy of "System Reserved Partition":\Boot\BCD". How can i change the chainloading to use ...\Boot\BCD from the hard disc instead of the USB stick ? Can that be accomplish and how ?

Thank you in advance!
Jean
 

mqudsi

Mostly Harmless
Staff member
#2
You can't.

At boot, Windows will load the BCD for the bootloader as a registry hive in the memory. The only thing you can do is
a) use a small USB stick and leave it plugged in the back of the PC
b) unsafely remove
c) set up OSes as VHDs
 
#3
Thanks for your quick reply!

Code:
At boot, Windows will load the BCD for the bootloader as a registry hive in the memory.
The memory hive "BCD" just have to be loaded from the disc instead of the USB stick.

The way i understand it. Is the MBR on the USB stick points/contains codes to display the menu of choices. And based on that choice chain to the next step which is the proper BOOT SECTOR on hard disc. One boot sector makes XP the active partition and then chain/load to NTLDR. Another boot sector makes 7 the active partition and then chain/load to BCD (which is loaded as a memory hive).

Still as i understand it. There is no obligation to go MBR (usb) -> BOOTSECTOR (usb) -> BOOTMGR (usb). It can be MBR (usb) -> BOOTSECTOR (disc) -> BOOTMGR (disc)

May be you have reference that explains the details of chainloading ?

Jean
 

Terry60

Knows where his towel is.
Staff member
#4
Bootmgr won't chain to another copy of itself. It either calls a Vista/7 Boot loader (winload.exe) or chains to a different boot manager. (NTLDR, grub, grub2 e.g.). Either way the BCD on the active partition of the first drive in the boot sequence stays as the permanently open registry hive.
To do what you want, you can use grub4dos on your USB stick and that will successfully chain to either bootmgr or NTLDR, and each will believe it initiated the boot without any knowledge that the USB stick played any part.
I do something similar as described here, but the grub4dos partition is on a HDD. I have successfully tried it on a USB stick too, but it was too slow, so I reverted to the HDD.
 

mqudsi

Mostly Harmless
Staff member
#5
As Terry says, it won't chain itself directly.

You *can* make it work, but it'll be ugly.

You'll have to go BOOTMGR (usb) -> NeoGrub (usb) -> BOOTMGR (disk) -> Windows

You'll need to delete the two Windows entries on the USB, add a NeoGrub entry instead, and chainload the disk's BOOTMGR from there.