To get bochs running is fairly simple:
-1. Get the bochs source code:
- a) cvs -d:pserver:anonymous:@cvs.sourceforge.net:/cvsroot/bochs login
- b) cvs -d:pserver:anonymous:@cvs.sourceforge.net:/cvsroot/bochs co bochs
-
-2. 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
-
-3. Build bochs:
+1. Build the utilities in this directory:
make
-4. Configure Etherboot with CONFIG_PCI_DIRECT: add the line
- CFLAGS += -DCONFIG_PCI_DIRECT
- to the end of src/arch/i386/Config.
+2. Get the bochs source code:
+ cvs -d:pserver:anonymous@bochs.cvs.sourceforge.net:/cvsroot/bochs \
+ login
+ cvs -d:pserver:anonymous@bochs.cvs.sourceforge.net:/cvsroot/bochs \
+ co bochs
-5. Build bin/pnic.zrom:
- make bin/pnic.zrom
+3. Configure bochs with
+ pushd bochs
+ ./configure --enable-all-optimisations --enable-pci --enable-pnic \
+ --enable-debugger --enable-magic-breakpoints --enable-disasm
+ popd
-6. 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
+4. Build bochs:
+ make -C bochs
-7. 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.
+5. As root, set up a TAP virtual network device:
+ /sbin/modprobe tun
+ chmod o+rw /dev/net/tun
+ ./tunctl -u <username> -t tap0
+ /sbin/ifconfig tap0 up 10.254.254.2 netmask 255.255.255.0
-8. Add the following fragment to /etc/dhcpd.conf:
+6. As root, add the following fragment to /etc/dhcpd.conf:
subnet 10.254.254.0 netmask 255.255.255.252 {
range dynamic-bootp 10.254.254.1 10.254.254.1;
}
machine you are using for running Bochs. If not, then you're on
your own.
-9. Change back to this directory and run bochs from your Bochs source tree:
- cd /path/to/Etherboot/contrib/bochs
- /path/to/bochs/source/tree/bochs
+7. As root, restart dhcpd
+ /etc/init.d/dhcpd restart
-10. 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.
+8. Build Etherboot images
+ pushd ../../src
+ make bin/pnic.dsk
+ popd
-11. You should see Bochs start up and attempt to boot from the network,
- with a screen that looks like:
-
-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 www.elpin.com
-
-Bochs BIOS, 1 cpu, $Revision$ $Date$
-
-
-Etherboot 5.3.6 (GPL) http://etherboot.org 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: 10.254.254.1, Server: 10.254.254.2
-Loading 10.254.254.2:/tftpboot/kernel
+9. Start Bochs
+ ./bochs/bochs -q
+ You should get to the debugger prompt "<bochs:1>". Type "c" to
+ start running Bochs.
+You should see Bochs start up, load up Etherboot and attempt to boot
+from the network.
You can use the program "serial-console" to obtain a virtual serial
console for Etherboot running within Bochs. Simply run
"./serial-console" 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
- CFLAGS+= -DCONSOLE_DUAL -DCOMCONSOLE=0x3F8 -DCONSPEED=9600
+before starting Bochs, and ensure that you have enabled CONSOLE_SERIAL
+in config.h.
There is a manual page for "serial-console"; use
"man ./serial-console.1" to view it.