Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
Michael Brown 2f392ee13e Need write permission to /dev/net/tun, not just read. 18 gadus atpakaļ
..
.cvsignore Added tunctl (since it is difficult to find for many distros). 18 gadus atpakaļ
Makefile Added tunctl (since it is difficult to find for many distros). 18 gadus atpakaļ
README Need write permission to /dev/net/tun, not just read. 18 gadus atpakaļ
bochsrc.txt Hardcoded paths to ../../src/bin avoid one step in the instructions. 18 gadus atpakaļ
serial-console Updated to syntax required by latest bochs CVS. 18 gadus atpakaļ
serial-console.1 Initial revision 19 gadus atpakaļ
tunctl.c Added tunctl (since it is difficult to find for many distros). 18 gadus atpakaļ

README

Running Etherboot within Bochs
==============================

Michael Brown <mbrown@fensystems.co.uk>
Based on an idea suggested by H. Peter Anvin <hpa@zytor.com>.

$Id$

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.)

To get bochs running is fairly simple:

1. Build the utilities in this directory:
make

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

3. Configure bochs with
pushd bochs
./configure --enable-all-optimisations --enable-pci --enable-pnic \
--enable-debugger --enable-magic-breakpoints --enable-disasm
popd

4. Build bochs:
make -C bochs

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

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;
}
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.

7. As root, restart dhcpd
/etc/init.d/dhcpd restart

8. Build Etherboot images
pushd ../../src
make bin/pnic.dsk
popd

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.



Serial console
==============

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

There is a manual page for "serial-console"; use
"man ./serial-console.1" to view it.



TODO
====

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,%bx) to avoid need to
calculate breakpoints.