Skip to main content

Actual Virtual Machines Come to Android via UserLAnd


For years, UserLAnd (and its predecessor GNURoot) has had one job: get a real Linux distribution running on your Android phone or tablet, with no root, no unlocked bootloader, and no PC involved. The engine behind that has always been proot - a clever piece of software that fakes a Linux root filesystem on top of Android's own kernel.

Clever, but faking it has limits. So we added a second engine. Starting with this release, UserLAnd can run your distro inside an actual virtual machine - a separate Linux kernel, booted on your device, using the same hardware virtualization the OS itself uses.

You pick it per filesystem, right where you always chose your connection type. The dropdown now reads:

  • Standard (proot) - the classic UserLAnd experience, on every device
  • Virtual Machine (pro) - a genuine VM, on devices that support it

What proot actually does - and why it hits a wall

proot doesn't create a Linux system. It intercepts your programs' system calls one at a time and rewrites them on the fly, so that when Debian's apt asks for /etc/apt/sources.list, it quietly gets a file inside UserLAnd's private app directory instead. Every path is translated. Every "root" operation is pretended at. Underneath, you are still an ordinary, unprivileged Android app talking to Android's kernel.

That design is why UserLAnd works at all without root, and it deserves enormous credit. But it also means:

  • Every syscall pays a toll. Interception adds overhead to file and process operations — the exact things package managers, compilers, and build systems do millions of times.
  • You are not really root. You can't mount filesystems, load kernel modules, create network namespaces, or manage devices. Software that expects those things — containers, some daemons, anything that touches the kernel directly — simply doesn't work.
  • Android's rules are still your rules. SELinux policy, the phantom-process killer, background execution limits, and the kernel's own restrictions apply to everything running inside your "Linux" session, because it isn't a separate system.
  • Isolation is thin. Your Linux processes are Android processes wearing a costume. They share the host kernel with everything else on the device.

What a virtual machine changes

The new backend is built on the Android Virtualization Framework (AVF) and pKVM, the protected hypervisor built into modern Android devices. UserLAnd boots a real Linux kernel with your distribution's root filesystem on a virtual disk. Nothing is intercepted or rewritten, because nothing needs to be — inside the VM, Linux is just Linux.

Concretely, that buys you:

  • Real root, real kernel. Mounting filesystems, loading modules, namespaces, cgroups, raw sockets, device nodes — the whole kernel surface is yours, because it's your kernel. Software that flatly refused to run under proot has a real chance here.
  • Native syscall speed. No ptrace interception in the hot path. Compiles, package installs, and anything filesystem-heavy stop paying the translation tax.
  • Real isolation. A VM is a hardware-enforced boundary. Whatever you install, break, or experiment with inside your distro is contained by the hypervisor. Wreck the guest and Android doesn't blink — and the repair option rebuilds the disk from scratch.
  • Freedom from Android's process rules. Your VM's processes aren't Android processes. Android's app lifecycle policies don't reach inside them.
  • A predictable machine. A stock kernel and a normal disk means normal Linux behavior — the kind that matches the documentation instead of a footnote about "unless you're on proot."

How it feels to use

Almost exactly like UserLAnd always has, which was the whole point.

You still tap a filesystem, you still get a terminal or desktop the same way you always did. What's different is what's underneath, plus a handful of new controls that only a real VM can offer:

  • Per-launch CPU and RAM. The connection dialog now has a "Use all CPU cores" checkbox and a memory slider, bounded by what your device actually has. Give a build job every core and half your RAM; give a background shell far less. It's a choice you make each launch, not a buried global setting.
  • Optional Android storage sharing. Tick "Share Android storage" and your device's shared storage is mounted inside the guest at /sdcard. Leave it unticked and the VM is fully sealed off from your files. Also a per-launch choice.
  • Sound and microphone. Audio works in VM sessions, matching what proot sessions have.
  • Roomy disks. Each VM filesystem gets a 32 GB sparse ext4 image that only consumes what you actually use.
  • The same distros. Debian, Ubuntu, Kali, Arch, and Alpine, with desktop flavors like XFCE and LXDE, pulled as standard OCI images.

Requirements, honestly stated

Hardware virtualization isn't available everywhere, and we'd rather tell you up front than let you find out halfway through a download. The VM option appears only when your device genuinely supports it:

  • Android 14 or newer. Custom VM images simply don't exist as an OS feature before that.
  • A 64-bit ARM device. pKVM is ARM64-only.
  • An OEM that shipped virtualization support. UserLAnd checks the device's own virtualization feature flag rather than guessing from a model list, so the answer is your manufacturer's, not ours.

There's also a one-time setup wizard. The VM engine lives in a small companion app, UserLAnd VM, which needs permissions Android only grants over ADB. The wizard walks you through enabling Developer Options and Wireless Debugging, pairs with your own device locally using a 6-digit code, then installs and configures the companion app for you. Nothing leaves your device and no PC is required — UserLAnd talks to itself over the loopback interface. You'll see exactly what's being installed and what it's being granted before anything happens, and you can cancel.

The Virtual Machine backend is a pro feature. proot remains free, unchanged, and fully supported.

So should you switch?

Not always — and that's why both engines ship side by side, selectable per app.

Stay on proot when your device is older, isn't ARM64, or is short on RAM. For a quick shell, a text editor, or a Python script, proot is still an excellent answer.

Reach for the VM when you're compiling something big, running services or containers, doing security work that needs real kernel features, or you simply want a Linux box that behaves like a Linux box. That's the ceiling proot could never raise — and it's gone now.

Grab the update, create a new filesystem, and look for Virtual Machine in the execution backend list. If your device can do it, so can you.

Comments

Popular posts from this blog

What is UserLAnd?

UserLAnd is the easiest way to run Linux on Android.  It is distributed through the Play Store.  It does not require you to root your device.  It is simple to use and powerful.

The Internet Archive is Coming Back Online and So are our Gaming Apps

  About 1 month ago UserLAnd Technologies' apps which allow you to play retro games on Android stopped working.  The reason for this is that these apps act as a sort of browser extension for what the Internet Archive  has archived.  The apps provide a way to meaningfully use these games on Android, but we don't host the games ourselves.  This generally works well but the Internet Archive suffered multiple attacks (DDoS, databases hacked and website defaced) at the beginning of October.  The end result was that all of their services went offline.  The team at the Internet Archive prioritized getting the Wayback Machine and other services working before they restored their collection of games.  The good news is that the games (and other sw) are now back online.  Their blog has a summary of what is working currently.  I am guessing we will see some slowness and some random outages as they continue to restore and improve their services, bu...

Our Different Plans for Thunderbird on Android

  Revealed: Our Different Plans for Thunderbird on Android A little while ago, it was announced that Thunderbird was, sort of, coming to Android . When we saw that announcement, the UserLAnd Technologies team thought "Why don't we bring it to Android for real?".  So we have and it is now on the Play Store . This is the first release of the actual desktop version of Thunderbird for Android. It has some bumps currently, for example there is a awkward pause before Thunderbird is displayed, but we will improve BirdBox over time and we don't see any issues that cannot be solved in future releases. We are charging for this app to help fund our open source work, but you can run Thunderbird in our free app, UserLAnd , if desired. BirdBox will allow us to create a more convenient and tailored experience for Thunderbird users. Any improvements developed while working on BirdBox will find their way back into UserLAnd. Lastly, I have some promo codes if desired.  Email us at sup...