Microsoft Virtual PC
|PC Virtual Machine Monitors|
Microsoft Virtual PC is Microsoft's release of a product line they acquired from Connectix in February 2003. It natively provides support for Windows operating systems, but, using the 'Other' option, it is possible to install and run pretty much any Operating System. (Tested with Linux and several hobbyist OSes.)
It has a very similar feel to the VMware PC emulator, and provides most of the same functions, and is free. A free downloadable version of VPC is available from Microsoft's website.
Summary: It is okay, but doesn't have an integrated debugger. Pretty fast though :)
- PRO: It provides PCI configuration method 1 support and SMBIOS (Bochs seemingly does not)
- PRO: Fixed size disk images are very easy to work with and can be shared by Virtual PC and Bochs :)
- PRO: Supports "dynamically expanding" disk images that start at a miniature size and expand when data is added.
- PRO: If you integrate a simple debugger and serial I/O into your OS, you can debug it over a named pipe. Just enter \\.\pipe\yourpipename into the configuration page for COM1 or COM2, and connect your debugger (on the host PC) to the same pipe.
- CON: 15- and 24-bit graphics modes aren't supported in the emulated S3 Trio (but they are in the real one), they screw up the display. It looks like some kind of 1980's computer with a defective CRT. Oddly enough, 32-bit color _is_ supported. See this post on Virtual PC Guy's MSDN blog.
- CON: It only supports a minimal set of hardware - just enough for decent use. It doesn't support VBE 3.0 (the one with protected-mode access), BIOS32 for PCI (although that is easily implemented without the BIOS), or loopback mode for the serial UARTs.
- CON: Apparently doesn't support 64-bit hardware. Tested on a machine with a Core 2 Duo (64-bit) and it triple-faulted..
- CON: No APM support and minimal ACPI support
- CON: Windows only; can't run it on non-windows operating systems
Bug in Virtual PC
Virtual PC will throw an undefined opcode exception if a multibyte-nop (e.g. nopl (%eax,%eax,1)) is executed. Recent compilers will use them as an optimization and may cause your Kernel to not run on VPC.
Windows Virtual PC
Microsoft Virtual PC for Windows 7 was renamed to Windows Virtual PC. It works on 64 bit versions of Windows unlike it's predecessor, but still doesn't emulate a 64 bit environment. The main differences is lack of GUI floppy addition (if you want a floppy disk, you need to directly edit config). However, it has the advantage of a simple interface, and virtual PCs are treated as a folder under Windows 7, where you can create a VM in the top bar of explorer.