|
@@ -1,5 +1,5 @@
|
1
|
|
-Running Etherboot within qemu
|
2
|
|
-=============================
|
|
1
|
+Running gPXE within qemu
|
|
2
|
+========================
|
3
|
3
|
|
4
|
4
|
Michael Brown <mbrown@fensystems.co.uk>
|
5
|
5
|
|
|
@@ -9,13 +9,10 @@ To get qemu running is fairly simple:
|
9
|
9
|
make
|
10
|
10
|
|
11
|
11
|
2. Get the qemu source code:
|
12
|
|
- cvs -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/qemu \
|
13
|
|
- login
|
14
|
|
- cvs -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/qemu \
|
15
|
|
- co qemu
|
|
12
|
+ svn co svn://svn.savannah.nongnu.org/qemu/trunk qemu
|
16
|
13
|
|
17
|
14
|
2a. Patch the qemu code. There is currently a bug that causes qemu to
|
18
|
|
- execute Etherboot incredibly slowly. The bug seems to be related
|
|
15
|
+ execute gPXE incredibly slowly. The bug seems to be related
|
19
|
16
|
to the relative prioritisation of CPU and I/O operations within
|
20
|
17
|
qemu. This patch (which I found via Google) isn't a proper fix,
|
21
|
18
|
but it does work around the problem:
|
|
@@ -23,13 +20,9 @@ To get qemu running is fairly simple:
|
23
|
20
|
|
24
|
21
|
3. Configure qemu with
|
25
|
22
|
pushd qemu
|
26
|
|
- ./configure --enable-system
|
|
23
|
+ ./configure --target-list=i386-softmmu,x86_64-softmmu
|
27
|
24
|
popd
|
28
|
25
|
|
29
|
|
- Note that qemu will not compile with gcc4; if your system's
|
30
|
|
- default compiler is gcc4 then specify the path to gcc3 using
|
31
|
|
- e.g. --cc=gcc-3.3.6
|
32
|
|
-
|
33
|
26
|
4. Build qemu:
|
34
|
27
|
make -C qemu
|
35
|
28
|
|
|
@@ -44,7 +37,7 @@ To get qemu running is fairly simple:
|
44
|
37
|
range dynamic-bootp 10.254.254.1 10.254.254.1;
|
45
|
38
|
}
|
46
|
39
|
You will also need to add in any of your usual declarations for
|
47
|
|
- Etherboot, e.g. 'filename "vmlinuz.ltsp";'. Note that this setup
|
|
40
|
+ gPXE, e.g. 'filename "vmlinuz.ltsp";'. Note that this setup
|
48
|
41
|
assumes that your DHCP server, TFTP server etc. all live on the
|
49
|
42
|
machine you are using for running qemu. If not, then you're on
|
50
|
43
|
your own.
|
|
@@ -52,7 +45,7 @@ To get qemu running is fairly simple:
|
52
|
45
|
7. As root, restart dhcpd
|
53
|
46
|
/etc/init.d/dhcpd restart
|
54
|
47
|
|
55
|
|
-8. Build Etherboot floppy disk images and pad to 1.44MB
|
|
48
|
+8. Build gPXE floppy disk images and pad to 1.44MB
|
56
|
49
|
pushd ../../src
|
57
|
50
|
make bin/rtl8139.pdsk
|
58
|
51
|
popd
|
|
@@ -62,8 +55,8 @@ To get qemu running is fairly simple:
|
62
|
55
|
-net nic,model=rtl8139 -net tap,ifname=tap0 \
|
63
|
56
|
-boot a -fda ../../src/bin/rtl8139.pdsk
|
64
|
57
|
|
65
|
|
-You should see qemu start up, load up Etherboot and attempt to boot
|
66
|
|
-from the network.
|
|
58
|
+You should see qemu start up, load up gPXE and attempt to boot from
|
|
59
|
+the network.
|
67
|
60
|
|
68
|
61
|
|
69
|
62
|
|
|
@@ -71,8 +64,8 @@ Serial console
|
71
|
64
|
==============
|
72
|
65
|
|
73
|
66
|
You can use the program "serial-console" to obtain a virtual serial
|
74
|
|
-console for Etherboot running within qemu. Run "./serial-console" on
|
75
|
|
-a spare tty (e.g. a separate xterm window) before starting qemu, and
|
|
67
|
+console for gPXE running within qemu. Run "./serial-console" on a
|
|
68
|
+spare tty (e.g. a separate xterm window) before starting qemu, and
|
76
|
69
|
ensure that you have enabled CONSOLE_SERIAL in config.h.
|
77
|
70
|
|
78
|
71
|
When serial-console starts, it will print out the message "Slave pty
|