I'm using Parallels 5. What I would like to see in the virtual machine Boot Camp hard disk "Edit partitions" dialog is a radio button that allows the user to select which partition is the active partition (the one that will be booted).
I have a disk with 3 partitions - Windows Vista 64, Windows Vista 32, and Windows XP:
Code:
diskutil list
/dev/disk3
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *320.1 GB disk3
1: EFI 209.7 MB disk3s1
2: Microsoft Basic Data Windows Vista 64 85.7 GB disk3s2
3: Microsoft Basic Data Windows Vista 32 86.1 GB disk3s3
4: Microsoft Basic Data Windows XP 148.1 GB disk3s4
fdisk /dev/disk3
Disk: /dev/disk3 geometry: 38913/255/63 [625142448 sectors]
Signature: 0xAA55
Starting Ending
#: id cyl hd sec - cyl hd sec [ start - size]
------------------------------------------------------------------------
1: EE 0 0 2 - 25 127 14 [ 1 - 409639] <Unknown ID>
2: 07 25 127 15 - 1023 184 54 [ 409640 - 167352736] HPFS/QNX/AUX
3: 07 1023 254 63 - 1023 254 63 [ 167762376 - 168191584] HPFS/QNX/AUX
*4: 07 1023 254 63 - 1023 254 63 [ 335953960 - 289188448] HPFS/QNX/AUX
(Note: I believe Windows XP must be listed as the last partition of the MBR on a Boot Camp disk for it to boot properly. Vista can be listed anywhere in the MBR except position 1 which is for the EFI partition. Partitions in the MBR don't need to be ordered by start block so it's possible for the XP partition to start before the other partitions.)
I've setup the boot config on each partition so that none of them shows the partition selection screen when they boot. I use rEFIt instead to select which partition to boot. rEFIt sets the active partition in the MBR then that partition is booted directly.
Parallels has a Boot Camp option that lets me select any combination of those partitions. Any partitions that are not selected are hidden from the virtualized Windows environment. To do this, Parallels creates it's own MBR (PhysicalMbr.hds in the .pvm) which includes only the selected partitions.
There is a problem though. The MBR that Parallels creates has the active partition set the same as the one that is set in the MBR on the disk. If I want to boot my Vista 32 partition in Parallels, then I need to set the active partition to that partition (because it was set to Windows XP):
Code:
sudo fdisk -e /dev/disk3
fdisk: could not open MBR file /usr/standalone/i386/boot0: No such file or directory
fdisk: 1> flag 3
Partition 3 marked active.
fdisk:*1> print
Disk: /dev/disk3 geometry: 38913/255/63 [625142448 sectors]
Offset: 0 Signature: 0xAA55
Starting Ending
#: id cyl hd sec - cyl hd sec [ start - size]
------------------------------------------------------------------------
1: EE 0 0 2 - 25 127 14 [ 1 - 409639] <Unknown ID>
2: 07 25 127 15 - 1023 184 54 [ 409640 - 167352736] HPFS/QNX/AUX
*3: 07 1023 254 63 - 1023 254 63 [ 167762376 - 168191584] HPFS/QNX/AUX
4: 07 1023 254 63 - 1023 254 63 [ 335953960 - 289188448] HPFS/QNX/AUX
fdisk:*1> write
Writing MBR at offset 0.
fdisk: 1> exit
If I make sure the active partition is set before I create each virtual machine, then I can make a virtual machine for each partition on the Boot Camp disk and run them all at once. Sometimes, for the Windows XP virtual machine, the selected partitions switches from just #4 to #2 and #4 for some strange reason and then I'll need to reset the selection and maybe also the active partition.