Virtualization options like VirtualBox cover the needs of many users when it comes to running different operating systems under the same hardware. However, those programs have a certain “player” profile, with few advanced options. Those who need to emulate much more specific elements—processors, buses, and ports—should use Bochs, an open-source x86 emulator.
Virtualizing an operating system is simple these days. Environments like VirtualBox and VMWare practically guide the user, with polished assistants that handle all the heavy work. In fact, you don't even need to worry about external drivers, but what you gain in ease is usually lost in versatility. In the case of VirtualBox, the program lets us modify the behavior of some ports, mainly COM and USB, as well as the chipset and the type of network card.
Unlike virtualization, a full emulation environment delivers more functions, including access to many types of processors, loading alternative BIOS, modifying RTC parameters, and specifying the communication protocol on a keyboard, among other things. For developers, there is always that situation where a program must run on old hardware, and there may be no components available to evaluate it directly on the metal. That’s when Bochs appears.
What is Bochs?
Its official site defines it as a multiplatform open-source IA-32 emulator. IA-32 is nothing more than the third generation of the x86 architecture, first implemented in the historic Intel 80386 in the mid-'80s. Although Bochs lets us do things like run old games in a stable emulation, the truth is that would be too basic an application for its capabilities.
Bochs can emulate more than a dozen x86 processors, from the old Pentium MMX to the Arrandale chips of 2010, including some classic AMD examples like the K6-2 and the Athlon 64. Bochs works with .img images (meaning you have to take the trouble to create them), and if you expect high performance, Bochs won't help you much. The goal is accurate emulation, not speed.
Not for Everyone
The first and perhaps only rule every potential user should learn is that Bochs is not easy to use. The official documentation demands patience, and there are many online tutorials, but if you’re expecting an experience similar to VirtualBox or VMWare, it's best to stay on those platforms. I'd even go so far as to say Bochs doesn't have the end user in mind.
Its high flexibility is aimed at those who must run and debug software under very specific hardware conditions. Now, if you don't mind working with multiple hand-made images (beyond the assistance provided by the built-in bximage utility), you'll find Bochs is much more powerful than the usual virtualizers. It has versions for Windows, Linux, and even can be installed on Android, with a bit of effort (remember that for Android you also have Magic DosBox).