Welcome to the Bochs x86 PC Emulation Software Home Page!

Bochs FAQ



Q: What resources is Bochs Software looking for?
Bochs Software is looking for financial and equipment support. A back-end for each CPU out there, needs to be written for the dynamic translation being developed currently. Bochs runs in interpreter mode on most every platform already. But, for your platform to run bochs with high-performance dynamic translation mode, I need access to loaner or donor machines to code the CPU specific back-end. Related CPU programming manuals are also desired.

In addition, I want to adding threading to the CPU emulation and other components, so multiple processor machines will be needed in the near future. I currently have single processor x86 and SPARC machines, though faster versions of those are also greatly appreciated.

If you are a CPU, OS, or platform vendor, you may benefit greatly by a port of dynamic translation to your product. Your support will lead to much faster development time, to get bochs running in high-performance mode on your product.

Q: Is bochs "freeware".
Not currently, bochs has a commercial license. Source code is available via anonymous FTP. Bochs costs $25 for use as-is. You have to negotiate a special license if you need to link it to other software. The reasons for this? The first, is that bochs is what I do for a living. Without the potential to create revenue, I can not continue it's further development. The second is that I have an inordinate amount of money and time wrapped into bochs. In short, if you valuated all the time and money I put into bochs, I passed 7 figures some time ago. I'd love to stamp the GPL or other public license on bochs. If one or more friendly companies throw their financial backing behind bochs, I will. Or perhaps I'll get the backing via licensing costs. The more people contribute, the faster that will happen. Please don't contact me with your philosophy about free software. Spend the time contacting companies who benefit from the ability to run legacy software on a new OS, and tell them about bochs.

Q: Who is the author of bochs?
Well, Kevin Lawton (myself) is the primary author of bochs. There have been bug fixes, enhancements, and code contributions from some few hundred people to date. Support has been incredible! And it's growing. Without it, I would have quit years ago.

Q: 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.

Q: Tell me about peformance when running bochs?
Up to now, bochs has exclusively used interpreter emulation technology; fetch in an instruction, decode, then execute it. I am currently in the process of adding dynamic translation, which allows for small x86 code sequences to be translated into native CPU code sequences, on-the-fly. This native code is cached, so it can be run any number of times thereafter. There's an architecture neutral part to the dynamic translation, and an architecture specific part (back-end). There needs to be a back-end for each platform bochs runs on. It's too early for me to comment on performance using dynamic translation. But, I have tested a few code sample, and I walked away with a smile on my face. I'm hoping to release the framework for this in the next release or two. It won't have many instructions translated, but those will be added incrementally, and quickly, once the framework is stable. The first backends will support Linux/x86 and BeOS/x86. Probably SPARC after that. It would be helpful if I could get a high-end PPC platform loaner. Multiple CPU's would be wonderful, but not essential. I'll need one for writing a back-end for it. Also, I want to add threading to bochs. At some point, I want to put certain parts (optionally) in their own thread. Also, I believe with very careful lightweight thread communication, it may be possible to thread the CPU emulation itself. This idea was suggested on the developer's email list.

So, back to your question. If you need speed, wait for dynamic translation. In interpreted mode, I get approximately 1.5MIPS using bochs on my 400Mhz PII Linux machine. In dynamic translation mode, you will see a lag as bochs encounters new code, then it'll get snappy and run at a much higher rate than in interpreted mode.

Q: Does bochs use a disk partition to install the OS?
No. You use a disk image file, which is simply a large file, like any other file, on your platform's disk.

Q: Why can't I use Bochs with my current Win95 installation?
Think about this. If you had two different PC's, they would require different hardware drivers. So you may not be able to safely move a disk drive with Win95 on it, from one to the other. Bochs is no different. It emulates a certain set of hardware devices, and requires each OS be configured for those devices.

Q: Is there a developer's email list for bochs?
Yes. For instructions on joining, go to Developers email-list.

Q: Is there an irc channel for bochs?
Not that I am aware of.

Q: Do you know of any snapshots of Bochs running Win95?
There are some on external project sites. Look at the main bochs web page under "What is Bochs" or other topic. I don't include any, because I'm trying to keep the web site very low bandwidth.

Q: Does bochs support a CDROM?
Not yet. However you can use the "mtools" package on quite a few platforms, to copy files from your CDROM to a disk image file. Make sure to comply with all software copyright issues.

Q: Does bochs support a sound device?
Not yet. There are efforts in this area going on by contributing authors. The emulation is of a Sound Blaster.

Q: Does bochs support a network card?
Not yet. There are also efforts in this area going on by contributing authors. The emulation is of an NE2000 NIC, and I'm told it's quite far along.

Q: What applications are known to run inside of bochs?
Well, lot's of different OS's run inside of bochs, so thousands. I'm assuming your asking about Windows programs. To give you a few, the following ones from the Winstone'98 tests worked:

Also, I've compiled an entire OS kernel inside bochs before. Not to mention, running DOOM, though at then-pathetic speeds.