I'm looking for a way to set up a computer so that the disk is partitioned for multi-booting to two operating systems: Linux and Windows.
Whichever one is booted, I want the other to be accessible as a VM guest, ie when booted into Linux, the Windows partition must be bootable as a VM.
My preferred Virtualization software is VirtualBox but if there is no way I will look at another option. It doesn't even absolutely have to be the same virtualization software under each operating system.
How do I partition the disks? Should I use or should I avoid EFI labels? In what order should I install the operating systems? What boot-loaders should I use and can I get these to be maintained without extra effort. Will the installed virtualization software device drivers and the guest add-on / drivers gracefully step out of the way when the specific operating system is loaded as the host / guest operating system? Is there any specific versions of Windows for which this is impossible/near impossible?
For bonus points I'd like to add Solaris and other Linux distributions.
P.S. The main reason for this requirement is to be able to run virtualization software under each operating system! Occasionally I want to investigate the differences between virtualization under different host operating systems.