I have an android device (Dell Venue 8) which runs on an Intel x86 CPU, and I was wondering if there was any application like VirtualBox or VMware that could run a 32-Bit linux distros, Windows XP 32-Bit, etc, via Virtualization. I'm aware of various Emulation softwares like Qemu and Bochs, but I wanted something that could directly virtualize instead of emulating, since both the host device and the Guest OS are of the same architecture.
I found myself stumbling in the general vicinity of these forums with some similar questions and decided to share some info on the off chance any other wandering curious computer enthusiast happens to walk on by.
Method #1: EMULATION
A kid managed to get XP running on Android using the tools you mentioned at the begining. You can see in his comments how there was significant performance loss. One of the key issues here is an inability to translate drivers. There will also be a lot of bottle necking that occurs when you sneak in some unsupported stuff.
Method #2: ROOTING AND FLASHING
It required gaining root, unlocking the bootloader, flashing a custom recovery, among other many other things. I managed to get multiboot from ARM supported OS's Ubuntu Touch, Cyanogen, and stock. I could probably throw windows 10 on it if i wanted to.
Method #3: KERNEL VIRTUALIZATION
Assuming your hardware supports virtualization, KVM is an option for back-end stuff if you dont need a GUI.
Method #4: BAREMETAL HYPERVISOR
There is a white paper on it, but i cant post the link because of my new account, so here is a copy of the conclusion :
Virtualizing a modern mobile platform involves dealing with devices such as camera, compass, gps, etc, for which PV frontend and backend drivers do not exist today. If only one VM needs access to one of these devices at a time, you can simply assign the device to the VM, remapping the corresponding MMIO regions and interrupts. If multiple VMs need access to the device simultaneously, you have to write a new pair of PV frontend and backend drivers. Fortunately many open source implementations of PV frontends and backends for different class of devices already exist in Linux and other operating systems. Something similar is likely to already exist. The difficulty of writing a new pair of PV frontends and backends increases with the complexity of the device you are trying to share. If the device is simple, such as the compass, writing the new pair of drivers is going to very easy. If the device is complex, such as a 3d graphic accelerator, writing the new pair of frontends and backends is going to be difficult.
Here is another paper on the KVM/ARM dynamic:
Seems as though for now we are stuck with what the software developers are willing to write for us, or with what we are willing to write for ourselves. These systems were meant to be largely proprietary, some frustration is to be expected I suppose.
You could try LinuxonAndroid.
Rooting the phone gives opportunity to boot several Linux distros. In theory you should be able to do it with Linux Deploy or similar tools.
However, even without rooting, you will be able to execute Linux binaries & even simulate a Linux distribution. There is a tool called Termux on Google Play Store. But I don't know whether it is available for X86 devices yet. (There are alternatives that too won't require Rooting: GNURoot Debian & a bunch of GNURoot Apps by Corbin Champion, Debian No-root etc..) These are available for ARM Devices and I think they are available for X86 also.
However if not available, you can do it with a decent time for hacking & a good terminal emulator app. See Proot-me on github - A user space implementation of chroot that can create fake rootfs where you can install native binaries, using busybox which provides dpkg & rpm..
Terminal emulators are known to work with simple, small binaries like busybox. However, PRoot is how the above-said non root apps implement Linux package management. Therefore, even if these apps are not available for your platform, it is not very hard for a geek within you to set up a native Linux environment with package management on any platform..
Note: To execute binaries from a terminal shell, it will be necessary to append the
Apart from all the options mentioned, one can also try using UserLand app. App is available on Google play-store for easy download. It has an easy setup for Ubuntu. User do not need to have root access to be able to use this app, so thats an advantage here. For further info, one can go to their product page : https://userland.tech/
Virtualization is now possible on Android, thanks to several upgrades and patches to the SDK. Currently, there is an app that offers virtualization on Android in running multiple "same apps" on a single phone named Parallel. It works without manipulating the system files and without root access. Google it. This article also explains it.