Warning
I would highly recommend that anyone wishing to compile QEMU from CVS should first look at the Qemu Compilation page. Specifically it would be wise to ensure their environment is setup correctly to enable them to compile QEMU from the latest stable version on the author’s home page before attempting this.
That said, there’s really very little difference between the procedure on this page and that on the Qemu Compilation page. It makes sense therefore for this page to only detail the differences rather than duplicate the entire compilation procedure as this would mean we have two pages to maintain every time QEMU changes!
Pre-requisites
As outlined on the Qemu Compilation page you will need the Linux kernel sources or headers and the necessary version of GCC to compile QEMU. You’ll also need various libraries that QEMU compiles against (SDL and the like). It’s all detailed over there on that page. Come back when you have those things sorted.
Obtaining the source
Getting the source from cvs presumes you have the cvs program installed. If you don’t then you should go do that now using whatever package management system your Linux distribution has. Once done you simply navigate to a directory where you like to do compiling and type the following command to obtain the source for QEMU.
cvs -z3 -d:pserver:anonymous@cvs.sv.gnu.org:/sources/qemu co qemu
You may also want the KQEMU kernel accelerator. This is now open source (it wasn’t previously). We need to go get it, so in the same place you typed the above command type this.
wget -c http://qemu.org/kqemu-1.3.0pre10.tar.gz
Note: The above link is currently (6th February 2007) valid, this may change when the author updates the KQEMU package. If the above does not work, simply visit the author’s home page and follow the necessary links to download the KQEMU package to this directory.
Before compiling
Navigate into the qemu directory which is created by cvs
cd qemu
Unpack the KQEMU package.
tar zxvf ../kqemu-1.3.0pre10.tar.gz
Set the necessary environment variables (if required).
export CPP=g++-3.4 export CC=gcc-3.4
Compiling
Clean up any previous compiles
make clean
Run configure. Note: I keep my kernel source in a directory in my home under /src. You will need to change that
./configure --prefix=/usr/local --cc=gcc-3.4 --host-cc=gcc-3.4 --kernel-path=/home/alan/src/`uname -r`/
If all goes well, we compile.
make
That’s it!
Now you can go back to the Qemu Compilation page to find out how to package this all up with “checkinstall” (for example).
Alternatively you could install using the following command (which you might want to run with sudo or as root).
make install
Running it!
Note: I just ran the above commands to prove they work, I also packaged up using checkinstall and then just typed qemu. Here’s the result. Looks good!
QEMU PC emulator version 0.8.1, Copyright (c) 2003-2005 Fabrice Bellard usage: qemu [options] [disk_image] 'disk_image' is a raw hard image image for IDE hard disk 0 Standard options: -M machine select emulated machine (-M ? for list) -fda/-fdb file use 'file' as floppy disk 0/1 image -hda/-hdb file use 'file' as IDE hard disk 0/1 image -hdc/-hdd file use 'file' as IDE hard disk 2/3 image -cdrom file use 'file' as IDE cdrom image (cdrom is ide1 master) -boot [a|c|d] boot on floppy (a), hard disk (c) or CD-ROM (d) -snapshot write to temporary files instead of disk image files -m megs set virtual RAM size to megs MB [default=128] -smp n set the number of CPUs to 'n' [default=1] -nographic disable graphical output and redirect serial I/Os to console -k language use keyboard layout (for example "fr" for French) -audio-help print list of audio drivers and their options -soundhw c1,... enable audio support and only specified sound cards (comma separated list) use -soundhw ? to get the list of supported cards use -soundhw all to enable all of them -localtime set the real time clock to local time [default=utc] -full-screen start in full screen -win2k-hack use it when installing Windows 2000 to avoid a disk full bug -usb enable the USB driver (will be the default soon) -usbdevice name add the host or guest USB device 'name' Network options: -net nic[,vlan=n][,macaddr=addr][,model=type] create a new Network Interface Card and connect it to VLAN 'n' -net user[,vlan=n][,hostname=host] connect the user mode network stack to VLAN 'n' and send hostname 'host' to DHCP clients -net tap[,vlan=n][,fd=h][,ifname=name][,script=file] connect the host TAP network interface to VLAN 'n' and use the network script 'file' (default=/etc/qemu-ifup); use 'fd=h' to connect to an already opened TAP interface -net socket[,vlan=n][,fd=h][,listen=[host]:port][,connect=host:port] connect the vlan 'n' to another VLAN using a socket connection -net socket[,vlan=n][,fd=h][,mcast=maddr:port] connect the vlan 'n' to multicast maddr and port -net none use it alone to have zero network devices; if no -net option is provided, the default is '-net nic -net user' -tftp prefix allow tftp access to files starting with prefix user -smb dir allow SMB access to files in 'dir' user -redir [tcp|udp]:host-port:[guest-host]:guest-port redirect TCP or UDP connections from host to guest [[-net|user]] Linux boot specific: -kernel bzImage use 'bzImage' as kernel image -append cmdline use 'cmdline' as kernel command line -initrd file use 'file' as initial ram disk Debug/Expert options: -monitor dev redirect the monitor to char device 'dev' -serial dev redirect the serial port to char device 'dev' -parallel dev redirect the parallel port to char device 'dev' -pidfile file Write PID to 'file' -S freeze CPU at startup (use 'c' to start execution) -s wait gdb connection to port 1234 -p port change gdb connection port -d item1,... output log to /tmp/qemu.log (use -d ? for a list of log items) -hdachs c,h,s[,t] force hard disk 0 physical geometry and the optional BIOS translation (t=none or lba) (usually qemu can guess them) -L path set the directory for the BIOS and VGA BIOS -kernel-kqemu enable KQEMU full virtualization (default is user mode only) -no-kqemu disable KQEMU kernel module usage -std-vga simulate a standard VGA card with VESA Bochs Extensions (default is CL-GD5446 PCI VGA) -no-acpi disable ACPI -loadvm file start right away with a saved state (loadvm in monitor) -vnc display start a VNC server on display During emulation, the following keys are useful: ctrl-alt-f toggle full screen ctrl-alt-n switch to virtual console 'n' ctrl-alt toggle mouse and keyboard grab When using -nographic, press 'ctrl-a h' to get some help.
The above should also give you some idea of the new command line options available.
Leave a Reply
You must be logged in to post a comment.