Chapter 1. Introduction to Bochs

1.1. What is Bochs?

Bochs is a program that simulates a complete Intel x86 computer. It can be configured to act like a 386, 486, Pentium, Pentium II, Pentium III, Pentium 4 or even like x86-64 CPU, including optional MMX, SSEx and 3DNow! instructions. Bochs interprets every instruction from power-up to reboot, and has device models for all of the standard PC peripherals: keyboard, mouse, VGA card/monitor, disks, timer chips, network card, etc. Because Bochs simulates the whole PC environment, the software running in the simulation "believes" it is running on a real machine. This approach allows Bochs to run a wide variety of software with no modification, include most popular x86 operating systems: Windows 95/98/NT/2000/XP and Vista, all Linux flavors, all BSD flavors, and more.

Bochs is written in the C++ programming language, and is designed to run on many different host platforms[1], including x86, PPC, Alpha, Sun, and MIPS. No matter what the host platform is, Bochs still simulates x86 hardware. In other words, it does not depend on the native instructions of the host machine at all. This is both a strength and a weakness, and it's the major difference between Bochs and many other x86 emulation software such as plex86, VMware, etc. Because Bochs uses software simulation for every single x86 instruction, it can simulate a Windows application on an Alpha or Sun workstation. However, the downside of Bochs' approach is simulation performance. To model the processor accurately, Bochs must run many instructions for every simulated x86 instruction, and this makes the simulated machine many times slower than the physical machine. Commercial PC emulators (VMware, Connectix, etc.) can achieve much high emulation speed using a technique called virtualization[2], but they are nN" >

1.9. FAQ

1.9.1. Is Bochs Open Source?
1.9.2. How do you pronounce "Bochs"?
1.9.3. Who is the author of Bochs?
1.9.4. Who maintains Bochs now?
1.9.5. Tell me about performance when running Bochs.
1.9.6. Does Bochs use a disk partition to install the OS?
1.9.7. Why can't I use Bochs with my current WinXP installation?
1.9.8. Is there a developer's email list for Bochs?
1.9.9. Is there an IRC channel for Bochs?
1.9.10. Do you know of any snapshots of Bochs running Windows?
1.9.11. Does Bochs support a CD-ROM?
1.9.12. Does Bochs support a sound device?
1.9.13. Does Bochs support a network card?
1.9.14. What applications are known to run inside of Bochs?
1.9.15. I am new to Bochs, how do I start?

1.9.1. Is Bochs Open Source?

Yes! Bochs is released under the GNU LGPL, much thanks to MandrakeSoft (now called Mandriva).

1.9.2. How do you pronounce "Bochs"?

Phonetically the same as the English word "box". It's just a play on the word "box", since techies like to call their machines a "Linux box", "Windows box", ... Bochs emulates a box inside a box.

1.9.3. Who is the author of Bochs?

Kevin Lawton is the primary author of Bochs. There have been bug fixes, enhancements, and code contributions from some few hundred people, so it is not possible to list them all. Recently, Kevin has been working on a PC virtualization project called plex86. In Fall 2002, he made contributed some major CPU speedups and helped with integration and debugging of the x86-64 emulation code.

1.9.4. Who maintains Bochs now?

With Kevin's help, in April 2001, the members of the bochs-developers mailing list set up a new official Bochs site hosted by Source Forge. The admins on this project are Greg Alexander, Don Becker, Christophe Bothamy, Bryce Denney, Volker Ruppert and Stanislav Shwartsman.

1.9.5. Tell me about performance when running Bochs.

Because Bochs emulates every x86 instruction and all the devices in a PC system, it does not reach high emulation speeds. Users who have an x86 processor and want the highest emulation speeds may want to consider PC virtualization software such as plex86 or VirtualBox (free software). Another related project is QEMU.

1.9.6. Does Bochs use a disk partition to ins