An Open-Source ARM Virtualization System
As ARM CPUs grow in performance and ubiquity across phones, netbooks, and embedded computers, providing virtualization support for ARM-based devices is increasingly important. The KVM for ARM project is focused on creating a open-source KVM-based virtualization solution for ARM-based devices that can run virtual machines efficiently. We are exploring both software-only and hardware-assisted approaches, the latter by leveraging ARM virtualization extensions.
Because ARM is not virtualizable, our software-only approach uses lightweight paravirtualization, a script-based method to automatically modify the source code of an operating system kernel to allow it to run in a virtual machine. Lightweight paravirtualization is architecture specific, but operating system independent. It is minimally intrusive, completely automated, and requires no knowledge or understanding of the guest operating system kernel code. By leveraging KVM, which is an intrinsic part of the Linux kernel, KVM/ARM’s code base can be always kept in line with new kernel releases without additional maintenance costs, and can be easily included in most Linux distributions. We have implemented a KVM/ARM prototype based on the Linux kernel used in Google Android, and demonstrated its ability to successfully run nearly unmodified Linux guest operating systems.
Our hardware-assisted approach focuses on KVM support for the Virtualization Extensions for Cortex-A15. While hardware is not yet available, we have implemented a KVM/ARM prototype leveraging these extensions that operates using FAST models and can successfully run unmodified Linux guest operating systems.
Related Publications
Resources
- kvmarm Mailing List – Follow new patches and system discussions and browse through archives
- kvmarm-user Mailing List – Ask questions on how to boot and use the system
- Kernel Source code: https://github.com/columbia/linux-kvm-arm
- QEMU Source code: https://github.com/columbia/qemu (follows Linaro qemu/master)
- Development guide (in collaboration with Virtual Open Systems).


