Using Quickemu to test latest Ubuntu MATE builds

If you want to help us with testing latest builds of Ubuntu MATE - you can use Quickemu application which is written by Martin Wimpress and based on mature virtualisation application named QEMU. So the testing is done in the virtual environment and will not cause any harm for real physical hardware.

To use virtualisation at full speed you have to enable it in the BIOS/UEFI of your device.

Below is how I'm doing this last days while testing Ubuntu MATE 20.10 (Groovy Gorilla) daily builds.

Obtaining ISO

At first we need to get latest daily build of groovy. It is located in http://cdimage.ubuntu.com/ubuntu-mate/daily-live/current/ .

If you plan to test the ISO on daily basis - it is recommended to use zsync application which downloads only changed parts of the ISO file.

It is available from official repository, install it with

sudo add-apt-repository universe
sudo apt-get install zsync

Then we need to prepare a folder for ISO testing with command below:

mkdir ~/iso-testing

To (re)download the ISO we need to jump to this folder and, use zsync-command below:

cd ~/iso-testing

zsync http://cdimage.ubuntu.com/ubuntu-mate/daily-live/current/groovy-desktop-amd64.iso.zsync

The groovy-desktop-amd64.iso file will be downloaded fully first time.

You can update it every time later by running the above command again.

Installing and setting up Quickemu

The Quickemu application is located at https://github.com/wimpysworld/quickemu .

To install it we need to have Git installed with:

sudo apt-get install git

Then we need to clone Quickemu repository:

cd ~/iso-testing
git clone https://github.com/wimpysworld/quickemu.git

Quickemu application needs qemu-virgil installed from Snap as shown below:

sudo apt-get install snapd
snap install qemu-virgil --edge
snap connect qemu-virgil:kvm

Finally on Ubuntu 18.04 LTS you have to execute additional commands to include your user into KVM (kernel virtual-machine) group:

sudo apt-get install qemu-kvm cpu-checker
sudo usermod -a -G kvm $USER

and reboot.

So we have Quickemu and QEMU installed and can move forward to VM configuration.

Preparing virtual machines for ISO testing

Quickemu and underneath QEMU allows us to set two kinds of virtual machines - legacy (BIOS) and modern (EFI). For the most productive testing we need to test both.

To create configuration file for legacy (BIOS) VM we can use the single long command below:

cat << EOF > ~/iso-testing/groovy-legacy.conf
boot="legacy"
guest_os="linux"
iso="/home/$USER/iso-testing/groovy-desktop-amd64.iso"
disk_img="/home/$USER/iso-testing/groovy-desktop-amd64-legacy.qcow2"
disk=16G
EOF

The virtual hard-disk in command above is 16 gigabytes, you may want to increase it for your needs.

To create configuration file for modern (EFI) VM we can use the single long command below:

cat << EOF > ~/iso-testing/groovy-efi.conf
boot="efi"
guest_os="linux"
iso="/home/$USER/iso-testing/groovy-desktop-amd64.iso"
disk_img="/home/$USER/iso-testing/groovy-desktop-amd64-efi.qcow2"
disk=16G
EOF

Testing ISO

So we have downloaded ISO-file and created two configurations for the VMs.

To launch legacy (BIOS) VM we should use commands below:

cd ~/iso-testing/quickemu
./quickemu --vm ../groovy-legacy.conf

To launch modern (EFI) VM we should use commands below:

cd ~/iso-testing/quickemu
./quickemu --vm ../groovy-efi.conf

It is recommended to remove virtual hard disk files before testing new ISO.

You can do it manually or by providing --delete option to ./quickemu command.

Reporting test results

If you are interested - you can participate in ISO testing on the corresponding page - http://iso.qa.ubuntu.com/qatracker/milestones/413/builds for Ubuntu 20.10 daily builds.

Select Ubuntu MATE Desktop amd64 build here and then follow instructions in testcases.


Known issues:

  • if your graphics card is old and you get the following message on launch of the virtual machine

    qemu_gl_create_compile_shader: compile vertex error 0:2(10): error: GLSL ES 3.00 is not supported. Supported versions are: 1.10, 1.20, and 1.00 ES

    To remove this message you need to force software rendering with LIBGL_ALWAYS_SOFTWARE=1 ./quickemu --vm ../groovy-legacy.conf .

5 Likes