How to Run Linux on Android Devices

The Android logo and the Linux penguin logo.

Did you know that Android devices are powered by a modified Linux kernel? Underneath that hand-held ease of use is one of the most powerful operating system kernels on the planet. That doesn’t mean, however, Android enjoys a full-blown Linux distribution. Quite the contrary. The Android kernel is very restrictive, so you won’t feel the power and flexibility that is found with the Linux platform.

Why Would You Want to Run Linux on Android?

There are a number of good reasons why you might want to run Linux on an Android device. The primary reason is to have all those outstanding applications available to you. Another reason is that Linux is far more flexible than Android. There are quite a large number of tasks you can undertake with Linux that you can’t on Android (such as developing, serious image editing/creation, or simply work with a real desktop environment). For some, the fact that it’s possible is reason enough to do it.

Why Would You Not Want to Run Linux on Android?

The biggest reason to not want to run Linux on Android is that, because of the small form factor of smartphones, most solutions render a desktop that can be very challenging to use. Imagine packing an entire desktop GUI into such a small screen. It makes for a very challenging proposition. Couple that with having to use your finger to move a standard mouse cursor around, and the idea sounds far better than the reality. Another issue with running a Linux desktop on Android is that a very particular functionality most likely won’t work (within Linux). The said functionality is the phone. That’s right, you won’t be placing calls from a Linux desktop on your phone … at least not while the Linux desktop is running.

But it’s still possible.

Why Hasn’t Linux Been Officially Ported to a Mobile Device?

At one time, Canonical developed a mobile device that ran a special version of Ubuntu, called Ubuntu Touch. This device was a spectacular flop and was on and off the market in the blink of an eye.

There are other companies attempting to produce a Linux phone. The one company that has made the most strides so far is Purism, with the Librem 5. This device looks quite promising, but that’s a promise that has been made for quite some time (with no delivery yet). Fingers crossed it comes to fruition.

Ultimately, the biggest reason a pure Linux phone hasn’t succeeded is because of the GUI. One of the biggest advantages of Linux is choice … which also happens to be a problem when trying to create such a device. What desktop do you use? Even after the choice is made, the desktop has to be completely re-imagined, in order to function on such a small screen.

It’s not easy.

Is It Possible?

In a word, yes. With the help of a number of possible applications, any user can install Linux on their Android device. The problem is, it’s never easy (and the end results are very often disappointing). And yet, it’s done. How? There are a few methods of making this happen. One such method requires the rooting of your Android device. Rooting an Android device is not only quite the challenge, but it can also lead to what’s called “bricking”. When a phone is “bricked” it no longer functions. The biggest downfall, however, is that rooting your device could void your warranty.

Fortunately, there are ways to get Linux on your device without rooting. Do understand, your mileage may vary. The most reliable (and easiest) method for running Linux on your Android device is an app, found in the Google Play Store, called UserLAnd.


UserLAnd allows you to run a full Linux distribution on top of Android, without having to root your device. For most users, this will be the easiest solution, but it’s not without its problems. Once you’ve started a running a Linux session, you have to move the screen around a lot to work with windows (as it doesn’t always scale perfectly … depending upon your screen size). It’s also somewhat awkward to work with some applications when your using gestures in place of a mouse. Even so, with UserLAnd, you can, with relative ease, install Arch Linux, Debian, Kali Linux, and/or Ubuntu on your device. How this works is complicated, but effectively UserLAnd:

  • Installs an additional “layer” on your device that runs the chosen version of Linux.
  • Allows users to then connect to a Linux session with either SSH or VNC (using bVNC) to remote into the running Linux session.

Here’s how to run Ubuntu with UserLAnd.

  1. Install UserLAnd on your Android device. This installation is done from within the Google Play Store.

    Screenshot of installing UserLAnd.

    Once the installation completes, tap OPEN to open UserLAnd.

    Screenshot of giving UserLAnd the necessary permissions to run.

    From the UserLAnd window, tap the Ubuntu entry. You will be prompted to tap OK and then ALLOW (to give the app the necessary permissions for storage and then photos, media, and files).

    Screenshot of creating a new UserLAnd Session.
  2. Type a Username, Password, and VNC Password for the Ubuntu session. The only requirements for these entries are that the VNC Password must be between 6-8 characters long. When you’ve completed this, tap CONTINUE.

    Screenshot of choosing a connection tool.
  3. In the resulting window, tap to select VNC and then tap CONTINUE.

    Screenshot of installing bVNC.

    At this point, UserLAnd will download all the necessary assets for the Ubuntu session. Depending upon the speed of your connection, this can take some time. During this process, you will be redirected back to the Google Play Store, where you must tap to install bVNC (if you haven’t already done so). When prompted, tap INSTALL.

  4. Once bVNC installs, tap the device Back Button to return to UserLAnd.

    Screenshot of a new UserLAnd session.
  5. Tap the Sessions tab and tap +. In the resulting window give the session a name, select apps:Ubuntu from the Filesystem drop-down, select SSH from the Service Type drop-down, and tap Save (icon in the upper right corner).

    Screenshot of the Ubuntu desktop on UserLAnd.

    From the UserLAnd main window, tap the Session tab and then tap Ubuntu. The Ubuntu session will open to a desktop environment, where you can zoom in and out, or move the desktop around until it’s centered on your screen. Depending on your device, this session will be almost unreadable. Fortunately, you can (using the standard Android gestures) zoom in and out of the session

    Screenshot of GIMP running on Ubuntu in UserLAnd.

    At this point, you can open applications from the “start” menu (at the bottom right corner of the desktop), or open a terminal window and install applications. Say, for example, you want to run the GIMP image editor. To install GIMP open a terminal window, tap the “start” menu button, tap System Tools > LXTerminal, and type the command sudo apt-get install gimp -y. The installation will run and, once it completes, you can then run GIMP from start > Graphics > Gimp. GIMP will open and you can start using it as you would on the desktop (only a bit smaller and not as easy to navigate without a mouse).

    Screenshot of disconnecting a session.
  6. When you’re done, close any running apps, tap anywhere on the screen, tap the three vertical dots, and tap Disconnect.

  7. You are back at the main UserLAnd window, where you can manage your sessions or go back to using Android.