There are many apps in Android that can run or emulate other operating systems, via utilizing hardware support for platform virtualization technologies, or via terminal emulation. Some of these apps support having more than one emulation/virtual file system for different OS profiles, thus the ability to have or run multiple OS's. Some even have support to run the emulation via a localhost SSH connection (letting remote ssh terminal apps on device access the OS emulation/VM, VNC, and XSDL. If more than one of these apps that support these protocols or technologies are available on the android device, via androids ability to do background tasking the main emulator/VM app on android can be used to launch multiple emulation/vm OS, which the other apps can connect to, thus multiple emulated/VM OS's can run at the same time. However, there are a few emulator or VM apps that require that the android device to be rooted for the app to work, and there are others that do not require such. Some remote terminal access apps also have the ability to access Android's internally implemented Toybox, via device loopback support. Some VM/emulator apps have a fixed set of OS's or applications that can be supported.
Since Android 8 (Oreo) and later versions of Android, some of these apps have been reporting issues as Google has heightened the security of file-access permissions on newer versions of Android. Some apps have difficulties or have lost access to SD card. [1] [2] It is also been reported that some of the apps have trouble utilizing packages like udisks2, Open vSwitch, Snort (software), and Mininet, due to new hardware or Android API restrictions on apps that have been put into place in the recent years. [3] [4] Due to this, many of these app developers and their community members are stating that the emulation/VM app can run itself and an OS without being rooted, however not all packages will be able to run unless the device is rooted. [3] [4] [5] [6]
The following is a list of OS emulators and OS virtualization Android apps.
App Name | Type | Device architecture & OS version requirement | Guest OS architecture | Requires rooted device | Connection technologies | References |
---|---|---|---|---|---|---|
Termux | Enhanced Terminal Emulator | /Android 7.0 + | same as host | No | Emulation inside app (none) | [7] [8] [9] |
UserLAnd Technologies | Compatibility layer | /Android 5.0 + | same as host (sometimes emulates Aarch packages for ARM devices if "arm64" package is not available, but "aarch32" or "aarch64" package is available.) | No | SSH, VNC, XSDL (supports access from another app on the phone that links to these technologies.) | [10] [11] |
SPC/AT | Computer system emulator | arm only for the android version of VM | X86-64 PC, and various other platforms | [12] [13] | ||
GNURoot Debian | Compatibility layer | ?/Android versions below 5.0 | same as host | No | [14] [15] [16] | |
AnLinux | Compatibility layer (utilizes Termux) | ARMv7, ARM64, x86, x86-64/Android 5.0 + | same as host | No | SSH, VNC (similar support statement like in UserLAnd.) | [17] [18] |
VMOS (software) | platform virtualization app | ?/Android 5.0+ | same as host | No | Emulation inside app (none) | [19] [20] |
AndroNIX | Compatibility layer (utilizes Termux) | ARMv7, ARM64, x86-64/Android 5.1 + | same as host | No | [21] [22] | |
LinuxDeploy | Compatibility layer | ARM, ARM64, X86, x86-64, emulation mode (ARM ~ 86)/Android 4.0.3 + | Yes | [23] [24] [25] | ||
linux on dex | Samsung phones only / Android version below 10 | No | [26] [25] [27] | |||
VMware Horizon Client | Desktop virtualization | ?/Android 5.0 + | Connected to a server: | No | [28] [29] | |
Vectras VM | platform virtualization app | Android 5.0 + | x86, arm | No | Emulation inside app (none) | [30] |
Limbo PC emulator | platform virtualization app | No | Emulation inside app (none) | [31] |
App Name | Notes | Ref |
---|---|---|
JuiceSSH | Other than just local loopback, the app can do SSH, telnet, and Mosh. | [32] [33] [34] |
ConnectBot | Other than just local loopback, the app can do telnet and SSH. | [35] |
Termius | Other than just local loopback, the app can do telnet, SSH, and SFTP. | [36] [37] [38] |
A Linux distribution is an operating system made from a software collection that includes the Linux kernel and often a package management system. They are often obtained from the website of each distribution, which are available for a wide variety of systems ranging from embedded devices and personal computers to servers and powerful supercomputers.
In software engineering, a compatibility layer is an interface that allows binaries for a legacy or foreign system to run on a host system. This translates system calls for the foreign system into native system calls for the host system. With some libraries for the foreign system, this will often be sufficient to run foreign binaries on the host system. A hardware compatibility layer consists of tools that allow hardware emulation.
QEMU is a free and open-source emulator. It emulates the processor of a computer through dynamic binary translation and provides a set of different hardware and device models for the machine, enabling it to run a variety of guest operating systems. It can be interoperated with Kernel-based Virtual Machine (KVM) to execute virtual machines at near-native speed. QEMU also provides emulation for user-level processes, allowing applications compiled for one processor architecture to run on another.
Platform virtualization software, specifically emulators and hypervisors, are software packages that emulate the whole physical computer machine, often providing multiple virtual machines on one physical platform. The table below compares basic information about platform virtualization hypervisors.
Kernel-based Virtual Machine (KVM) is a free and open-source virtualization module in the Linux kernel that allows the kernel to function as a hypervisor. It was merged into the mainline Linux kernel in version 2.6.20, which was released on February 5, 2007. KVM requires a processor with hardware virtualization extensions, such as Intel VT or AMD-V. KVM has also been ported to other operating systems such as FreeBSD and illumos in the form of loadable kernel modules.
The Android Package with the file extension apk is the file format used by the Android operating system, and a number of other Android-based operating systems for distribution and installation of mobile apps, mobile games and middleware. A file using this format can be built from source code written in either Java or Kotlin.
ChromeOS, sometimes styled as chromeOS and formerly styled as Chrome OS, is a Linux distribution developed and designed by Google. It is derived from the open-source ChromiumOS operating system and uses the Google Chrome web browser as its principal user interface.
The Android Debug Bridge is a programming tool used for the debugging of Android-based devices. The daemon on the Android device connects with the server on the host PC over USB or TCP, which connects to the client that is used by the end-user over TCP. Made available as open-source software under the Apache License by Google since 2007, its features include a shell and the possibility to make backups. The adb software is available for Windows, Linux and macOS. It has been misused by botnets and other malware, for which mitigations were developed such as RSA authentication and device whitelisting.
Sailfish OS is a paid Linux-based operating system based on free software, and open source projects such as Mer as well as including a closed source UI. The project is being developed by the Finnish company Jolla.
Fire OS is an operating system based on the Android Open Source Project (AOSP). It is developed by Amazon for their devices. Fire OS includes proprietary software, a customized user interface primarily centered on content consumption, and heavy ties to content available from Amazon's storefronts and services.
Windows Subsystem for Linux (WSL) is a feature of Microsoft Windows that allows for using a Linux environment without the need for a separate virtual machine or dual booting. WSL is installed by default in Windows 11. In Windows 10, it can be installed either by joining the Windows Insider program or manually via Microsoft Store or Winget.
Anbox is a free and open-source compatibility layer that allows Android applications to run on Linux distributions by using containerization techniques. Originally introduced by Canonical, Anbox executes Android applications in a lightweight system container, isolated from the host system for security and efficiency.
UserLAnd Technologies is a free and open-source compatibility layer mobile app that allows Linux distributions, computer programs, computer games and numerical computing programs to run on mobile devices without requiring a root account. UserLAnd also provides a program library of popular free and open-source Linux-based programs to which additional programs and different versions of programs can be added.
VMOS is a virtual machine app that runs on Android, which can run another Android OS as the guest operating system. Users can optionally run the guest Android VM as a rooted Android OS. The VMOS guest Android operating system has access to the Google Play Store and other Google apps. The first Android virtual machine to offer Google Play services and other Google apps was VMOS.
Android devices have the ability to run virtual machines or emulate other operating systems. It does this either via desktop virtualization, platform virtualization, or emulation via compatibility layer.
Foliate is a free and open-source program for reading e-books in Linux. In English, foliate is an adjective meaning to be shaped like a leaf, from the Latin foliatus, meaning leafy.
Termux is a free and open-source terminal emulator for Android which allows for running a Linux environment on an Android device. Termux installs a minimal base system automatically; additional packages are available using its package manager, based on Debian's.
The Linux kernel can run on a variety of devices made by Apple, including devices where the unlocking of the bootloader is not possible with an official procedure, such as iPhones and iPads.
MicroEmulator — is a free and open-source platform independent J2ME emulator allowing to run MIDlets on any device with compatible JVM. It is written in pure Java as an implementation of J2ME in J2SE.