Hosts/Linux: Difference between revisions

From QEMU
(Build instructions for Debian and related Linux distributions)
 
No edit summary
Line 14: Line 14:
so you have to install some additional packages before you can build QEMU.
so you have to install some additional packages before you can build QEMU.


=== Debian GNU Linux / Ubuntu Linux / Linux Mint ===
=== Fedora Linux / Debian GNU Linux / Ubuntu Linux / Linux Mint ===


Debian and Debian based or similar distributions normally include
Fedora, Debian and Debian based or similar distributions normally include
compiler and compilation tools (gcc, make, ...) in their default installation.
compiler and compilation tools (gcc, make, ...) in their default installation.


Line 28: Line 28:
* git-email, used for sending patches
* git-email, used for sending patches
* libsdl1.2-dev (23 MiB), needed for the SDL based graphical user interface
* libsdl1.2-dev (23 MiB), needed for the SDL based graphical user interface
* gtk2-devel, for a simple UI instead of VNC


=== Getting the source code ===
=== Getting the source code ===
Line 40: Line 41:


The resulting directory qemu is your QEMU root directory.
The resulting directory qemu is your QEMU root directory.
=== Simple build and test ===
QEMU supports builds in this directory (not recommended) or
QEMU supports builds in this directory (not recommended) or
in an extra directory (out-of-tree builds, recommended).
in an extra directory (out-of-tree builds, recommended). There can be  
 
any number of out-of-tree builds, so if you plan to make cross builds,  
There can be any number of out-of-tree builds, so if you plan
debug and release builds, out-of-tree builds are what you need.
to make cross builds, debug and release builds, out-of-tree builds
are what you need.


Here is my typical build scenario:
'''Here is my typical build scenario:'''


  # Switch to the QEMU root directory.
  # Switch to the QEMU root directory.
Line 60: Line 62:
  cd ../../..
  cd ../../..


Now let's start a simple test:
'''Now let's start a simple test:'''


  bin/debug/native/x86_64-softmmu/qemu-system-x86_64 -L pc-bios
  bin/debug/native/x86_64-softmmu/qemu-system-x86_64 -L pc-bios


This test runs the QEMU system emulation which boots a PC BIOS.
This test runs the QEMU system emulation which boots a PC BIOS.
=== Simple build and test with KVM ===
This example will show an in-tree build.
# Switch to the QEMU root directory
cd qemu
# Configure QEMU for x86_64 only - faster build
./configure --target-list=x86_64-softmmu --enable-debug
# Build in parallel - my system has 4 CPUs
make -j4
'''Getting ready to install a guest OS in a VM:'''
# Create a disk for the VM
./qemu-img create -f qcow2 test.qcow2 16G
# Download an install ISO - I have Fedora 20
ls -la Fedora-Live-Desktop-x86_64-20-1.iso
-rwxr-xr-x. 1 xxxxx xxxxx 999292928 May  4 16:32
'''Run QEMU with KVM enabled (w/o VNC):'''
If you have gtk2-devel installed, this will launch a simple UI
and you can install your OS.
x86_64-softmmu/qemu-system-x86_64 -m 1024 -enable-kvm \
-drive if=virtio,file=test.qcow2,cache=none \
-cdrom Fedora-Live-Desktop-x86_64-20-1.iso
'''Run QEMU with KVM enabled (with VNC):'''
If you you prefer VNC, try this:
x86_64-softmmu/qemu-system-x86_64 -m 1024 -enable-kvm \
-drive if=virtio,file=test.qcow2,cache=none \
-cdrom Fedora-Live-Desktop-x86_64-20-1.iso \
-vnc :1
Connect using your favorite VNC viewer to localhost:1 and install your OS.


=== Cross builds ===
=== Cross builds ===

Revision as of 17:55, 16 May 2014

QEMU on Linux hosts

This documentation is work in progress - more information needs to be added for different Linux distributions.

Linux is QEMU's main host platform. Therefore it is the platform which gets most support. Both 32 and 64 bit Linux hosts are supported. Most of the following instructions are valid for both variants.

Building QEMU for Linux

Most Linux distributions already provide binary packages for QEMU (or KVM).

Usually they also include all packages which are needed to compile QEMU for Linux. The default installation of most distributions will not include everything, so you have to install some additional packages before you can build QEMU.

Fedora Linux / Debian GNU Linux / Ubuntu Linux / Linux Mint

Fedora, Debian and Debian based or similar distributions normally include compiler and compilation tools (gcc, make, ...) in their default installation.

Required additional packages

  • git (30 MiB), version manager
  • glib2.0-dev (9 MiB), this automatically includes zlib1g-dev

Recommended additional packages

  • git-email, used for sending patches
  • libsdl1.2-dev (23 MiB), needed for the SDL based graphical user interface
  • gtk2-devel, for a simple UI instead of VNC

Getting the source code

If you want the latest code, follow the development of the code, work with several versions or maybe even contribute to the code, you will need a local copy of the QEMU code repository which is managed using git.

Get the code like this:

git clone git://git.qemu.org/qemu.git

The resulting directory qemu is your QEMU root directory.

Simple build and test

QEMU supports builds in this directory (not recommended) or in an extra directory (out-of-tree builds, recommended). There can be any number of out-of-tree builds, so if you plan to make cross builds, debug and release builds, out-of-tree builds are what you need.

Here is my typical build scenario:

# Switch to the QEMU root directory.
cd qemu
# Prepare a native debug build.
mkdir -p bin/debug/native
cd bin/debug/native
# Configure QEMU and start the build.
../../../configure --enable-debug
make
# Return to the QEMU root directory.
cd ../../..

Now let's start a simple test:

bin/debug/native/x86_64-softmmu/qemu-system-x86_64 -L pc-bios

This test runs the QEMU system emulation which boots a PC BIOS.

Simple build and test with KVM

This example will show an in-tree build.

# Switch to the QEMU root directory
cd qemu
# Configure QEMU for x86_64 only - faster build
./configure --target-list=x86_64-softmmu --enable-debug
# Build in parallel - my system has 4 CPUs
make -j4

Getting ready to install a guest OS in a VM:

# Create a disk for the VM
./qemu-img create -f qcow2 test.qcow2 16G
# Download an install ISO - I have Fedora 20
ls -la Fedora-Live-Desktop-x86_64-20-1.iso
-rwxr-xr-x. 1 xxxxx xxxxx 999292928 May  4 16:32

Run QEMU with KVM enabled (w/o VNC):

If you have gtk2-devel installed, this will launch a simple UI and you can install your OS.

x86_64-softmmu/qemu-system-x86_64 -m 1024 -enable-kvm \
-drive if=virtio,file=test.qcow2,cache=none \
-cdrom Fedora-Live-Desktop-x86_64-20-1.iso

Run QEMU with KVM enabled (with VNC):

If you you prefer VNC, try this:

x86_64-softmmu/qemu-system-x86_64 -m 1024 -enable-kvm \
-drive if=virtio,file=test.qcow2,cache=none \
-cdrom Fedora-Live-Desktop-x86_64-20-1.iso \
-vnc :1

Connect using your favorite VNC viewer to localhost:1 and install your OS.

Cross builds

Cross building for non-native architectures is quite common. TODO: add description.

Native builds

Running QEMU on Linux

System emulation

All QEMU system emulation should be working.

User mode emulation

User mode emulation is also supported.

Links