---
website: https://www.qemu.org
obj: application
repo: https://github.com/qemu/qemu
rev: 2024-05-02
---

# QEMU
QEMU is an open-source emulator and virtualizer that enables running operating systems and various software applications on different hardware architectures. It supports [emulation](../emulation/Emulation.md) of various CPU architectures, including x86, ARM, PowerPC, and SPARC, among others. It allows running [virtual machines](../tools/Virtual%20Machine.md).

## QCow Image
qcow is a file format for disk image files used by QEMU. It stands for "QEMU Copy On Write" and uses a disk storage optimization strategy that delays allocation of storage until it is actually needed. Files in qcow format can contain a variety of disk images which are generally associated with specific guest operating systems. Three versions of the format exist: qcow, qcow2 and qcow3 which use the .qcow, .qcow2 and .qcow3 file extensions, respectively.

**Create a new image**: `qemu-img create -f qcow2 -s 10G my_image.qcow2`

## Usage
### x86
To use QEMU, you typically need a disk image containing the operating system you want to emulate.

```
qemu-system-x86_64 -drive <disk_image>
```

#### Options

| Option               | Description                                                                                                                                           | Example                                                                    |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| `-cpu <cpu>`         | Specifies the CPU model or architecture to emulate. This flag is useful for emulating different CPU types.                                            | `qemu-system-x86_64 -cpu host`                                             |
| `-smp <smp>`         | Specifies the number of CPU cores to emulate in the [virtual machine](../tools/Virtual%20Machine.md).                                                 | `qemu-system-x86_64 -hda <disk_image> -smp 4`                              |
| `-m <mem>`           | Sets the amount of RAM to allocate for the [virtual machine](../tools/Virtual%20Machine.md).                                                          | `qemu-system-x86_64 -m 2G -hda <disk_image>`                               |
| `-netdev <netdev>`   | Configures networking for the [virtual machine](../tools/Virtual%20Machine.md).                                                                       | `qemu-system-x86_64 -hda <disk_image> -netdev user,id=network0`            |
| `-device <device>`   | Adds a specific device to the [virtual machine](../tools/Virtual%20Machine.md), such as a network interface card (NIC), graphics card, or sound card. | `qemu-system-x86_64 -hda <disk_image> -device e1000,netdev=network0`       |
| `-display <display>` | Specifies the display driver to use for the [virtual machine](../tools/Virtual%20Machine.md). Useful for setting up a graphical interface.            | `qemu-system-x86_64 -hda <disk_image> -display gtk`                        |
| `-monitor`           | Opens a monitor console for managing and interacting with the [virtual machine](../tools/Virtual%20Machine.md) during runtime.                        | `qemu-system-x86_64 -hda <disk_image> -monitor stdio`                      |
| `-vga <vga>`         | Specifies the graphics card model to emulate. Options include cirrus, std, vmware, qxl, and virtio.                                                   | `qemu-system-x86_64 -hda <disk_image> -vga virtio`                         |
| `-enable-kvm`        | Enables KVM (Kernel-based Virtual Machine) acceleration if supported by the host system. This improves performance significantly.                     | `qemu-system-x86_64 -hda <disk_image> -enable-kvm`                         |
| `-drive <drive>`     | Allows more advanced configuration of disk drives, including specifying disk format, caching mode, and other options.                                 | `qemu-system-x86_64 -drive file=<disk_image>,format=qcow2,cache=writeback` |
| `-cdrom <cdrom>`     | Specifies the CD-ROM image to use for booting or installing from a CD.                                                                                | `qemu-system-x86_64 -cdrom <cdrom_image>`                                  |
| `-soundhw <soundhw>` | Specifies the sound hardware to emulate in the [virtual machine](../tools/Virtual%20Machine.md).                                                      | `qemu-system-x86_64 -hda <disk_image> -soundhw hda`                        |