<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/building-android-for-qemu-a-step-by-step-guide-99zpjshxg" -->

---
title: Building Android for Qemu: A Step-by-Step Guide | daily.dev
description: A step-by-step guide for building Android Open Source Project (AOSP) 6.x and running it on QEMU with a virtual GPU powered by Mesa/Virglrenderer. Covers...
canonical: https://daily.dev/posts/building-android-for-qemu-a-step-by-step-guide-99zpjshxg
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Building Android for Qemu: A Step-by-Step Guide | daily.dev
og:description: A step-by-step guide for building Android Open Source Project (AOSP) 6.x and running it on QEMU with a virtual GPU powered by Mesa/Virglrenderer. Covers...
og:url: https://daily.dev/posts/building-android-for-qemu-a-step-by-step-guide-99zpjshxg
og:image: https://api.daily.dev/og/posts/99ZPJsHxg.png
og:image:alt: Building Android for Qemu: A Step-by-Step Guide
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Building Android for Qemu: A Step-by-Step Guide

**[Collabora Blog](https://daily.dev/sources/collabora)** · 4 min read · 0 upvotes · 0 comments

## Summary

A step-by-step guide for building Android Open Source Project (AOSP) 6.x and running it on QEMU with a virtual GPU powered by Mesa/Virglrenderer. Covers installing dependencies on Ubuntu 16.04, building Virglrenderer, compiling QEMU with x86_64 and aarch64 targets, building the mainline Linux kernel with required Android and VirtIO kernel configs, syncing and building AOSP for the Linaro x86_64 target, applying SW_SYNC patches from Gustavo Padovan, and assembling a bootable boot.img to launch Android under QEMU. Aimed at Linux host developers who need GPU access and driver modification capabilities not available in the stock Android emulator.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.collabora.com/news-and-blog/blog/2016/09/02/building-android-for-qemu-a-step-by-step-guide>

## Questions this post answers

### What kernel config options are required to run Android on QEMU with VirtIO support?

Running Android on QEMU requires enabling a specific set of kernel options: CONFIG_ANDROID=y, CONFIG_ANDROID_BINDER_IPC=y, CONFIG_DRM_VIRTIO_GPU=y, CONFIG_VIRTIO=y, CONFIG_VIRTIO_PCI=y, CONFIG_VIRTIO_BLK=y, CONFIG_VIRTIO_NET=y, CONFIG_VIRTIO_CONSOLE=y, CONFIG_SYNC=y, CONFIG_SW_SYNC=y, CONFIG_SYNC_FILE=y, and several SELinux and audit options. These enable Android's IPC, virtual GPU, network, block, and sync fence subsystems inside the QEMU guest.

_Developers working on Android kernel bringup for QEMU track config requirements like these on daily.dev._

### Why use QEMU instead of the stock Android emulator for Android kernel or GPU driver development?

QEMU with Virglrenderer gives the Android guest access to a virtual 3D GPU backed by the host machine's graphics capabilities, which the stock Android emulator does not support in the same way. This makes it possible to develop and modify GPU drivers inside the guest, using Mesa and Virglrenderer to supply the virtual GPU layer.

_Android platform engineers exploring GPU driver work on emulated targets find relevant discussions on daily.dev._

## Similar posts on daily.dev

- [Android virtualization](https://daily.dev/posts/android-virtualization-prpwdg7qo) · Quartex Pascal · 18 upvotes · 1 comments
- [Building Your Own Operating System From Scratch \(A Practical Getting-Started Guide\)](https://daily.dev/posts/building-your-own-operating-system-from-scratch-a-practical-getting-started-guide--bcelcqpq7) · Medium · 0 upvotes · 0 comments
- [Build and Debug QEMU in Docker](https://daily.dev/posts/build-and-debug-qemu-in-docker-l9yzdyyqk) · MCU on Eclipse · 0 upvotes · 0 comments
- [Making a micro Linux distro](https://daily.dev/posts/making-a-micro-linux-distro-opv8lmaob) · Hacker News · 21 upvotes · 3 comments
- [I paired an old Android phone with a Proxmox VM, and it's my favorite gaming handheld now](https://daily.dev/posts/i-paired-an-old-android-phone-with-a-proxmox-vm-and-it-s-my-favorite-gaming-handheld-now-ir5dk5pso) · XDA Developers · 0 upvotes · 0 comments

---

Tags: [#linux](https://daily.dev/tags/linux), [#android](https://daily.dev/tags/android)

[View this post on daily.dev](https://daily.dev/posts/building-android-for-qemu-a-step-by-step-guide-99zpjshxg)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Building Android for Qemu: A Step-by-Step Guide","url":"https://daily.dev/posts/building-android-for-qemu-a-step-by-step-guide-99zpjshxg","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/building-android-for-qemu-a-step-by-step-guide-99zpjshxg"},"datePublished":"2026-08-11T08:57:04.427Z","dateModified":"2026-08-11T09:28:53.107Z","description":"A step-by-step guide for building Android Open Source Project (AOSP) 6.x and running it on QEMU with a virtual GPU powered by Mesa/Virglrenderer. Covers...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/a3c1f8a2b67f7a10f7706ea50d4e1a86?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/a3c1f8a2b67f7a10f7706ea50d4e1a86?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Collabora Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Collabora Blog","logo":"https://media.daily.dev/image/upload/s--ZGZ0FjqS--/f_auto,q_auto/v1786438306/logos/collabora?_a=BAMAMicg0","url":"https://daily.dev/sources/collabora"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/building-android-for-qemu-a-step-by-step-guide-99zpjshxg","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"linux,android","timeRequired":"PT4M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Collabora Blog","item":"https://daily.dev/sources/collabora"},{"@type":"ListItem","position":3,"name":"Building Android for Qemu: A Step-by-Step Guide"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/building-android-for-qemu-a-step-by-step-guide-99zpjshxg#faq","mainEntity":[{"@type":"Question","name":"What kernel config options are required to run Android on QEMU with VirtIO support?","acceptedAnswer":{"@type":"Answer","text":"Running Android on QEMU requires enabling a specific set of kernel options: CONFIG_ANDROID=y, CONFIG_ANDROID_BINDER_IPC=y, CONFIG_DRM_VIRTIO_GPU=y, CONFIG_VIRTIO=y, CONFIG_VIRTIO_PCI=y, CONFIG_VIRTIO_BLK=y, CONFIG_VIRTIO_NET=y, CONFIG_VIRTIO_CONSOLE=y, CONFIG_SYNC=y, CONFIG_SW_SYNC=y, CONFIG_SYNC_FILE=y, and several SELinux and audit options. These enable Android's IPC, virtual GPU, network, block, and sync fence subsystems inside the QEMU guest. Developers working on Android kernel bringup for QEMU track config requirements like these on daily.dev."}},{"@type":"Question","name":"Why use QEMU instead of the stock Android emulator for Android kernel or GPU driver development?","acceptedAnswer":{"@type":"Answer","text":"QEMU with Virglrenderer gives the Android guest access to a virtual 3D GPU backed by the host machine's graphics capabilities, which the stock Android emulator does not support in the same way. This makes it possible to develop and modify GPU drivers inside the guest, using Mesa and Virglrenderer to supply the virtual GPU layer. Android platform engineers exploring GPU driver work on emulated targets find relevant discussions on daily.dev."}}]}
```

