Microsoft Virtual PC

From OSDev.wiki
Jump to navigation Jump to search
Emulators
PC Emulators
PC Virtual Machine Monitors
PowerPC Emulators

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 :)

Pros/cons:

  • 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.
  • PRO: Works on 64-bit OS WinXP, WinVista, Win7 and with updated version of VMM.SYS on Win8/8.1 link
  • 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. (updated link)
  • 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.

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.