Setup Virtual Machine using QEMU in Ubuntu

QEMU (Quick EMUlator) is a type – 2 or hosted hypervisor. Other examples of hosted hypervisors are VMware Player, Oracle VirtualBox & Parallels Desktop for Mac. QEMU, released under GPLv2, supports both machine emulation as well as virtualization. Hence, it is capable to run different Operating Systems and Programs on supported architectures. It is written by Fabrice Bellard. At the time of writing the article, the latest stable release of QEMU is 4.1.0. In this article, we would discuss how to setup Virtual Machine using QEMU in Ubuntu distribution.

First, we will install QEMU and create a qcow2 disk image. Then, we would attach a CD-ROM (ISO Image) to the disk image to install an Operating System.

Note: Following operations would require you to have superuser privileges. In case you don’t have one, then contact your System Administrator for assistance.

Install QEMU in Ubuntu

Since, QEMU package is already available in standard Ubuntu repository. Therefore, we would update the Ubuntu repository first to make the latest version of the package available. Thereafter, we would install the package and related dependencies (if any). So, open a terminal and issue the following –

sudo apt update
sudo apt install qemu-kvm
Create a disk image for Virtual Machine using qemu-img

Now, we will create a disk image using command-line utility qemu-img. With qemu-img, we can manage our disk images offline.

qemu-img create -f file_format <image_name> image_size

where,

-f is used for file format (raw, qcow2 etc.)

For instance,

qemu-img create -f qcow2 test-img.qcow2 5G

This would create a file test-img.qcow2 of size 5 GB.

Install an Operating System in Disk image

Next, we need to install an Operating System in the disk image. So, we will attach an installation media (ISO image) to the Virtual Machine. Hence, issue the following in terminal –

qemu-system-x86_64 -cdrom iso_image -cpu host -enable-kvm -m RAM_size -smp number_of_cores -drive file=disk_image,format=qcow2

where,

-cdrom is for iso_image,

-cpu host is to emulate the host processor. There is a list of supported architectures available – qemu-system-x86_64 -cpu ?

-enable-kvm starts QEMU in KVM mode,

-m is for memory (RAM),

-smp is to specify the number of cores a VM could use.

For instance,

qemu-system-x86_64 -cdrom /path/to/iso_image  -cpu host -enable-kvm -m 2048 -smp 2 -drive file=/path/to/disk_image/test-img.qcow2,format=qcow2

Now, install an Operating System of your choice in disk image.

Run Virtual Machine (disk_image) through QEMU

To run a Virtual Machine, above code needs to be modified a bit. We would just remove the CD-ROM attached.

qemu-system-x86_64 -cpu host -enable-kvm -m RAM_size -smp number_of_cores  -drive file=/path/to/disk_image,format=qcow2

For instance,

qemu-system-x86_64 -cpu host -enable-kvm -m 2048 -smp 2 -drive file=/path/to/disk_image/test-img.qcow2,format=qcow2

In conclusion, we have discussed how to setup Virtual Machine using QEMU in Ubuntu distribution.

Note: For i386 architecture, we can use qemu-system-i386 command in place of qemu-system-x86_64.

To enable audio in QEMU Virtual Machine, follow the article here.