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 distro, Windows XP 32-Bit, etc, via Virtualization. I'm aware of various emulation software 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'd love something like this. I've found a couple of qemu ports for Android, but they're all really dodgy and I wouldn't trust them (download apks from mysterious forums)...– David GivenCommented Aug 14, 2015 at 16:01
-
Related: How do I run Windows or Linux as a virtual machine on Android?– Irfan LatifCommented Mar 6, 2020 at 19:48
5 Answers
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 beginning. You can see in his comments how there was a significant performance loss. One of the key issues here is an inability to translate drivers. There will also be a lot of bottlenecking that occurs when you sneak in some unsupported stuff.
Method #2: ROOTING AND FLASHING
It required gaining root, unlocking the bootloader, and 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
https://www.linux-kvm.org/page/Main_Page
Assuming your hardware supports virtualization, KVM is an option for back-end stuff if you don't need a GUI.
Method #4: BAREMETAL HYPERVISOR
There is a white paper on it, but I can't 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.
-
4So this might actually be an answer to the question. But could you explain why this is an answer? What does linux on android do that would answer this question. Commented Feb 18, 2015 at 2:48
-
LinuxonAndroid's website appears to have been taken over by malware scammers. Commented Sep 22, 2023 at 16:53
Apart from all the options mentioned, one can also try using the UserLand app.
The app is available on Google Play Store for easy download. It has an easy setup for Ubuntu. Users do not need to have root access to be able to use this app, so that's an advantage here.
For further info, one can go to their product page: https://userland.tech/
-
1OP wants a full-virtualization solution that can host Linux and Windows. You are suggesting a PRoot (non-root
chroot
; an OS-level virtualization) based solution. They are different things. Commented Mar 4, 2020 at 11:55
Rooting the phone gives the 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 $path
variable.
-
How Linux Deploy or GNURoot or Termux are related to full-virtualization environment where you can run Linux or Windows?
chroot
orproot
is a very simple OS-level virtualization which cannot host a full OS. Termux provides no virtualization at all, instead runs binaries built for Android environment. Commented Mar 4, 2020 at 12:34 -
@IrfanLatif in termux you can run reasonably complete full distro using proot. It's possible to run debian armhf / aarch64 binaries built for real distro like debian without much performance loss. Any other virtualization will be much slower.– user259715Commented Jun 27, 2021 at 10:52
-
Correct. But the
proot
/chroot
solution doesn't address OP's question: "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" Commented Jun 27, 2021 at 11:13
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 by running multiple "same apps" on a single phone named Parallel. It works without manipulating the system files and without root access.
-
2App cloning has nothing to do with OS-level virtualization or full-virtualization or hardware emulation. Commented Mar 4, 2020 at 12:28