Bochs

Description
Bochs is a highly portable open source IA-32 (x86) PC emulator written in C++, that runs on most popular platforms. It includes emulation of the Intel x86 CPU, common I/O devices, and a custom BIOS. Currently, bochs can be compiled to emulate a 386, 486, Pentium, Pentium Pro or AMD64 CPU, including optional MMX, SSE, SSE2 and 3DNow instructions. Similar emulators are Qemu (free/libre and cost-free) and vmware (commercial and proprietary)

What can I do with Bochs?
Bochs is capable of running most Operating Systems inside the emulation including Linux, Windows 95, DOS, and Windows NT 4 (maybe Windows XP/2k/2k3).

Install Bochs
To install bochs on a gentoo machine all you have to do is emerge it :

Configure Bochs
Bochs is very configurable, and has a very simple way to do that.

How is it configured
1. Through the command line

2. Through the ~/.bochsrc file

Bios Images
As a normal PC, Bochs needs to have a bios and a vga bios. Bochs does NOT come with fixed ones, so you MUST define a Bios image and a VGA Bios Image, otherwise emulated PC will not start. When you emerge bochs, it installs all the available Bios images at ls -la /usr/share/bochs/

To specify the Bios image you must do it with romimage option and for the VGA Bios image, the option is vgaromimage. To start bochs with BIOS-bochs-latest and VGABIOS-lgpl-latest you have to run: Start Bochs with BIOS-bochs-latest Bios image and VGABIOS-lgpl-latest VGA Bios image.

Yeah, bochs started, but what's that? You are now at the options menu, here you can just press 5 (Start emulation) and ENTER. But a windows pops up and dissapears, this is because nothing is selected to boot up. (be patient..)

Ok now we know how to select the Bios image and VGA Bios image, but isn't very annoying to add those arguments everytime you want to run bochs? So what we can do is, add those parameters at.

Open your favorite editor and edit/create the ~/.bochsrc file.

As a normal pc, bochs needs to know where to boot from (cdrom, floppy, hard-disk).

...to be continued.