diff --git a/Changelog b/Changelog index 185bd1d7247c55f23fee731678b3b59710cc7256..5d92f07e471c94ef5d53988dd4549be87a6e0856 100644 --- a/Changelog +++ b/Changelog @@ -1,3 +1,10 @@ +version 0.4.1: + + - more accurate timer support in vl. + - more reliable NE2000 probe in vl. + - added 2.5.66 kernel in vl-test. + - added VLTMPDIR environment variable in vl. + version 0.4: - initial support for ring 0 x86 processor emulation diff --git a/Makefile b/Makefile index 40089eedb001a784d3ced136a29b1cc92ec88aac..a83bd7404d32fbc2af6397d53a9e3c816afbdb37 100644 --- a/Makefile +++ b/Makefile @@ -189,6 +189,7 @@ distclean: clean rm -f config.mak config.h install: $(PROGS) + mkdir -p $(prefix)/bin install -m 755 -s $(PROGS) $(prefix)/bin # various test targets diff --git a/VERSION b/VERSION index e6adf3fc7bb711e3d88c13f2bb5e1b91f865d361..44bb5d1f74358758e75a906eebebb458e9de7fcb 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.4 \ No newline at end of file +0.4.1 \ No newline at end of file diff --git a/qemu-doc.texi b/qemu-doc.texi index a113a23d299aaa5b50892bc169c9788bc35d6222..3242c6bd8a984c08beed0da7fd222e0dadc66424 100644 --- a/qemu-doc.texi +++ b/qemu-doc.texi @@ -47,7 +47,7 @@ QEMU generic features: @item Self-modifying code support. -@item Precise exception support. +@item Precise exceptions support. @item The virtual CPU is a library (@code{libqemu}) which can be used in other projects. @@ -128,7 +128,7 @@ generic dynamic code generation architecture of QEMU. @end itemize -@chapter QEMU User space emulation invocation +@chapter QEMU User space emulator invocation @section Quick Start @@ -315,7 +315,8 @@ sh: can't access tty; job control turned off Then you can play with the kernel inside the virtual serial console. You can launch @code{ls} for example. Type @key{Ctrl-a h} to have an help about the keys you can type inside the virtual serial console. In -particular @key{Ctrl-a b} is the Magic SysRq key. +particular, use @key{Ctrl-a x} to exit QEMU and use @key{Ctrl-a b} as +the Magic SysRq key. @item If the network is enabled, launch the script @file{/etc/linuxrc} in the @@ -334,9 +335,24 @@ a real Virtual Linux system ! @end enumerate -NOTE: the example initrd is a modified version of the one made by Kevin +NOTES: +@enumerate +@item +A 2.5.66 kernel is also included in the vl-test archive. Just +replace the bzImage in vl.sh to try it. + +@item +vl creates a temporary file in @var{$VLTMPDIR} (@file{/tmp} is the +default) containing all the simulated PC memory. If possible, try to use +a temporary directory using the tmpfs filesystem to avoid too many +unnecessary disk accesses. + +@item +The example initrd is a modified version of the one made by Kevin Lawton for the plex86 Project (@url{www.plex86.org}). +@end enumerate + @section Kernel Compilation You can use any Linux kernel within QEMU provided it is mapped at @@ -372,6 +388,20 @@ As you would do to make a real kernel. Then you can use with QEMU exactly the same kernel as you would boot on your PC (in @file{arch/i386/boot/bzImage}). +If you are not using a 2.5 kernel as host kernel but if you use a target +2.5 kernel, you must also ensure that the 'HZ' define is set to 100 +(1000 is the default) as QEMU cannot currently emulate timers at +frequencies greater than 100 Hz on host Linux systems < 2.5. In +asm/param.h, replace: + +@example +# define HZ 1000 /* Internal kernel timer frequency */ +@end example +by +@example +# define HZ 100 /* Internal kernel timer frequency */ +@end example + @section PC Emulation QEMU emulates the following PC peripherials: @@ -388,7 +418,7 @@ Serial port (port=0x3f8, irq=4) @item NE2000 network adapter (port=0x300, irq=9) @item -Dumb VGA (to print the @code{uncompressing Linux kernel} message) +Dumb VGA (to print the @code{Uncompressing Linux} message) @end itemize @chapter QEMU Internals @@ -405,9 +435,9 @@ Like Valgrind [2], QEMU does user space emulation and dynamic translation. Valgrind is mainly a memory debugger while QEMU has no support for it (QEMU could be used to detect out of bound memory accesses as Valgrind, but it has no support to track uninitialised data -as Valgrind does). Valgrind dynamic translator generates better code +as Valgrind does). The Valgrind dynamic translator generates better code than QEMU (in particular it does register allocation) but it is closely -tied to an x86 host and target and has no support for precise exception +tied to an x86 host and target and has no support for precise exceptions and system emulation. EM86 [4] is the closest project to user space QEMU (and QEMU still uses @@ -433,8 +463,8 @@ system emulator. It requires a patched Linux kernel to work (you cannot launch the same kernel on your PC), but the patches are really small. As it is a PC virtualizer (no emulation is done except for some priveledged instructions), it has the potential of being faster than QEMU. The -downside is that a complicated (and potentially unsafe) kernel patch is -needed. +downside is that a complicated (and potentially unsafe) host kernel +patch is needed. @section Portable dynamic translation