One of the main uses for desktop virtualization is running multiple operating systems on one machine. But when it comes to embedded OSes, however, you need hardware emulation tools to help you run the OS on unsupported hardware.
With desktop virtualization, you can work with OSes other than the one your PC is actually running. It reduces the need for dual-booting and provides a sandbox for the second OS where it can run without affecting anything else in the system.
You may even want to test operating systems that are rarely used on the desktop -- or OSes that don't work on the desktop at all because they're written for an entirely different processor type. These are called "embedded OSes," but they come with some challenges.
What's an embedded OS?
An embedded OS is a type of operating system created to run in dedicated hardware environments or on systems that aren't intended for interactive use.
Some are designed for the same processor types that power the desktop -- the x86/x64 CPU family that we know so well. This kind of embedded OS is often called an appliance. They primarily run on headless hardware (hardware that has no display capability), function with little direct interaction and offer low-level functionality.
Other embedded OSes run on entirely different processor types, which means if you want to do any work with them, you have two choices. You can get your hands on the hardware needed for that embedded OS and run it in its native environment, but that's not always practical or convenient.
Instead, you can run emulation technology designed for that specific hardware. That will allow you to run and interact with the embedded OS from a desktop that couldn't normally support that operating system.
Much like server or desktop virtualization, hardware emulation provides the user with a simulated presence of different kinds of hardware or storage, network access, and so on. The packaging and presentation is different for an emulator, but the concepts and execution are the same, so experience with virtualization gives you a leg up on using hardware emulation technology.
Hardware emulation tool options
An emulator is similar to a virtualization system, but it is designed to simulate the workings of an entirely different hardware platform than the one it runs on -- for instance, ARM, PowerPC or an even more old-school processor such as the Z80, instead of the x86/x64 chipset.
If you want to explore cross-platform emulation, start with the open source package QEMU. Aside from being free, it supports a staggering range of processor types: PowerPC, Sparc, MIPS, ARM and many others. Android, for instance, can be run in QEMU with the proper preparation. If you're a developer, that's a handy way to run applications without having to resort to buying a phone or using your own as a guinea pig.
Each processor type in QEMU also comes with a variety of available devices, which may be crucial depending on what kind of emulation project you have at hand. For instance, for ARM systems, there are various prepackaged emulations for different kinds of tablets or phones. QEMU is hardly the only processor emulator in town, but it stands out as being the most long-lived, best-supported and most hardware-agnostic.
You can also use ARMware emulator for ARM devices only, or the Softgun emulator, designed for ARM-based embedded systems with minimal resources. These hardware emulation tools share the same basic principles as QEMU, but they may not be as easy to use out of the box. (Be prepared to spend a good deal of time staring at a command line.)
It's not inconceivable that virtualization tools could eventually include emulation for different processor types, especially with growing interest in the ARM processor family as an alternative to Intel/AMD CPUs. That said, the use cases are still highly specialized, and that would take a lot of work on the part of developers.