KVM
KVM is a Kernel module for Linux that enables virtualization at nearly native speeds. This features works only when the Host and Guest is the same architecture. For example running an x86 Virtual Machine on an Android with an x86 CPU. Even though Android (NDK) supports this feature it is impossible to use with stock devices. The reason for this is simply because of android kernels provided by all major manufacturers are missing the KVM features. Therefore in order to use KVM on android you will need is a custom rom with a kernel that supports KVM. Although such kernels may easily be found for Android devices with x86 CPU (ie Zenfone 2) it might be harder for ARM devices, read below.
Caution
The instructions and guides below are not guaranteed to work and in fact may cause damage to your device. Proceed only at your own risk!
Limbo and KVM
KVM support for Android in QEMU is now fixed with Limbo v3.0.0. The KVM accelerator features have tested successfully for Android x86 and the results yield a tremendous speed improvement as of course expected.
DSL Linux:
Booting DSL Linux in an HP Stream notebook running Android x86: ~22 seconds.
Gaming seems to be feasible withe Limbo Desktop mode which supports external mouse and keyboard.
Other OSes:
Deli Linux, TinyCore and other OSes can now boot where in emulated mode they would just hang during boot process.
DSL Linux:
Booting DSL Linux in an HP Stream notebook running Android x86: ~22 seconds.
Gaming seems to be feasible withe Limbo Desktop mode which supports external mouse and keyboard.
Other OSes:
Deli Linux, TinyCore and other OSes can now boot where in emulated mode they would just hang during boot process.
Limbo and KVM on ARM
ARM devices have not been tested yet with Limbo and KVM, there doesn't seem to be much interest in ARM on KVM though this might change in the future:
ARM already supports virtualization on their Armv7 Cortex-A15/A7/A17 processors as well as ARMv8 (64 bit) according to:
https://www.linux-kvm.org/page/Processor_support
One of the few known guides for setting up KVM on ARM is for Chromebooks with Cortex-A15 cpus, you may read it here:
http://www.virtualopensystems.com/en/solutions/guides/kvm-on-chromebook/
ARM already supports virtualization on their Armv7 Cortex-A15/A7/A17 processors as well as ARMv8 (64 bit) according to:
https://www.linux-kvm.org/page/Processor_support
One of the few known guides for setting up KVM on ARM is for Chromebooks with Cortex-A15 cpus, you may read it here:
http://www.virtualopensystems.com/en/solutions/guides/kvm-on-chromebook/
Limbo on Android x86
If you have a desktop or laptop running Android x86 you can install Limbo and try the KVM features. Android phones with x86 cpu (ie Zenfone 2) or Chromebooks on Intel architecture might also work though such devices are not tested yet!
Make sure your BIOS supports virtualization (enable it by entering BIOS) and the version of Android x86 has built in KVM support. To find out if that's the case once you boot into Android x86 from the terminal type:
cat /proc/cpuinfo
If there is a flag vmx or svm in the output you're good to go just follow the steps below to setup KVM.
Note: Android x86 5.1-rc1 contains the appropriate modules kvm and kvm_intel.
You can find download links for Android x86 5.1-rc1 ISO here
Make sure your BIOS supports virtualization (enable it by entering BIOS) and the version of Android x86 has built in KVM support. To find out if that's the case once you boot into Android x86 from the terminal type:
cat /proc/cpuinfo
If there is a flag vmx or svm in the output you're good to go just follow the steps below to setup KVM.
Note: Android x86 5.1-rc1 contains the appropriate modules kvm and kvm_intel.
You can find download links for Android x86 5.1-rc1 ISO here
Setting up KVM
Make sure you have the appropriate kernel installed for your device. Also make sure you have the KVM modules loaded. To verify this on your android terminal type:
lsmod | grep kvm
You should see kvm and kvm-intel modules loaded.
Make sure your device /dev/kvm has appropriate read/write access permissions. The preferred way is to find the uid of the Limbo app installed add to the owner group of the device. If that becomes complicated you can always type the follow command to give r/w permissions to everyone though this is not recommended and should only be used as a temporary solution:
chmod 666 /dev/kvm
Now turn on the option at the bottom of Limbo main screen called "Enable KVM". Note that this is a global setting and will apply for all your configured virtual machines. The rest is simply creating a virtual machine within limbo as you would usually do, if you don't know how read here
lsmod | grep kvm
You should see kvm and kvm-intel modules loaded.
Make sure your device /dev/kvm has appropriate read/write access permissions. The preferred way is to find the uid of the Limbo app installed add to the owner group of the device. If that becomes complicated you can always type the follow command to give r/w permissions to everyone though this is not recommended and should only be used as a temporary solution:
chmod 666 /dev/kvm
Now turn on the option at the bottom of Limbo main screen called "Enable KVM". Note that this is a global setting and will apply for all your configured virtual machines. The rest is simply creating a virtual machine within limbo as you would usually do, if you don't know how read here