Running Etherboot within Bochs

Orginal documentation by Michael Brown Based on an idea suggested by H. Peter Anvin Wikified By Tim Fletcher Reformatted by Anselm M. Hoffmeister

What is Bochs?

Bochs is a program that simulates a complete Intel x86 computer, including hardware. It can be used to test Etherboot. There is a special pseudo NIC (“pnic”) implemented in Bochs, with a corresponding driver in Etherboot. (There is also an NE2000 ISA driver in Bochs, but it doesn't seem to quite work.)

Getting Bochs running

  • Get the bochs source code:
         cvs login
         cvs co bochs
  • Configure bochs with
    ./configure --enable-all-optimisations --enable-pci --enable-ne2000 --enable-pnic 
  • Other potentially useful configure options:
    • --prefix=/usr

      to force use of standard file locations

    • --enable-debugger

      to enable the internal debugger

  • Build bochs:
  • Configure Etherboot with CONFIG_PCI_DIRECT: add the line

    to the end of src/arch/i386/Config.

  • Build bin/pnic.zrom:
    make bin/pnic.zrom 
  • Load the TUN/TAP kernel module:
    modprobe tun 
  • You should see the device /dev/net/tun is created automatically if you're using devfs, otherwise you may have to create it by hand with:
    mknod /dev/net/tun c 10 200 
  • Grant yourself write access to /dev/net/tun:
    su -c 'chown <your user id> /dev/net/tun' 
  • The alternative to this is to run Bochs as root. Don't do that.
  • Add the following fragment to /etc/dhcpd.conf:
    subnet netmask { 
           range dynamic-bootp; 

    You will also need to add in any of your usual declarations for Etherboot, e.g.

    filename "vmlinuz.ltsp";

    . Note that this setup assumes that your DHCP server, TFTP server etc. all live on the machine you are using for running Bochs. If not, then you're on your own.

  • Change back to this directory and run bochs from your Bochs source tree:
    cd /path/to/Etherboot/contrib/bochs 
  • Select option 5 (Begin simulation). You will be prompted for your root password. This is required in order to configure the tun1 network interface and to restart the DHCP server.
  • You should see Bochs start up and attempt to boot from the network, with a screen that looks like this:
    VGA BIOS - Version 2.40
         Copyright (C) 1990-2000 Elpin Systems, Inc.
         All rights reserved.
         Licensed for use with bochs, courtesy of MandrakeSoft.
         For information on this or other VGA development products, contact
         Elpin Systems at: (800) 723-9038 or
         Bochs BIOS, 1 cpu, $Revision: 1.9 $ $Date: 2004/03/10 14:04:59 $
         Etherboot 5.3.6 (GPL) Tagged ELF for [PNIC]
         Relocating _text from: [00091020,0009fb50) to [01ef14d0,01f00000)
         Boot from (N)etwork or (Q)uit?
         Probing pci nic...
         [pnic] - Detected Bochs Pseudo NIC MAC FE:FD:00:00:00:01 (API v1.0) at 0xdc00
         Searching for server (DHCP)...
         ..Me:, Server:

Serial console

You can use the program serial-console to obtain a virtual serial console for Etherboot running within Bochs. Simply run


on a spare tty (e.g. a separate xterm window) before starting Bochs, and ensure that you have compiled Etherboot with appropriate settings such as


There is a manual page for serial-console; use

man ./serial-console.1

to view it.


  • Packet forwarding/masquerading - document what must be set up.
  • Mention possibility of using RFB as the display device - in conjunction with the serial console, gives you a test facility that can be accessed remotely.
  • Mention use of BOCHSBP instruction (xchgw bx) to avoid need to calculate breakpoints.

Further information

… about Etherboot as extension ROM for Bochs is available.

QR Code
QR Code bochs (generated for current page)