Install Ubuntu Linux on Android with UserLAnd (No Root)
17 min read
Step‑by‑step guide to get a full Ubuntu Linux environment on your Android phone with UserLAnd, without rooting or flashing any firmware.
October 13, 2026 16:30
Running a full Linux distribution on an Android phone opens a world of command‑line tools, desktop apps, and development environments that are otherwise unavailable on a mobile OS. UserLAnd makes this possible without rooting, unlocking the bootloader, or flashing custom recoveries. This tutorial walks you through every step – from preparing your device to launching a usable Ubuntu desktop – and explains the reasoning behind each action so you can adapt the process to other distributions if needed.
Before you start
Make sure you have a stable Wi‑Fi connection and at least 2 GB of free storage. The Ubuntu root‑filesystem is about 1 GB, and the VNC client adds a few hundred megabytes. A charger nearby is recommended because the initial download and installation can keep the device busy for 15‑30 minutes.
- Device requirements: Android 5.0 (Lollipop) or newer; ARM64 or x86_64 processor works. Most modern phones meet this.
- Permissions: UserLAnd needs storage access to place its filesystem and network access to download the Ubuntu image.
- Backup: No system files are modified, but it’s good practice to back up important data before installing large apps.
Step 1 – Install UserLAnd from the Play Store
- Open the Google Play Store.
- Search for
UserLAnd (developer: UserLAnd Technologies).
- Tap Install and wait for the download to finish.
- After installation, launch the app.
- You will be greeted with a brief welcome screen; tap Continue.
Why this matters: UserLAnd provides a sandboxed Linux environment that runs as a normal Android app. It uses proot to emulate the required filesystem hierarchy, so no root privileges are required.
Step 2 – Choose the Ubuntu distribution
- On the main screen, tap the + (plus) button to add a new session.
- In the Distribution list, select Ubuntu. Versions such as 20.04 LTS and 22.04 LTS are offered; pick the one you prefer (both are stable).
- For Username, enter a name you’ll remember (e.g.,
androiduser).
- Enter a Password and repeat it. This password protects your Linux account, not the Android device.
- Tip: Use a strong password; you’ll need it for
sudo commands later.
- Leave the VNC password blank for now – we’ll set it after the first launch.
- Tap OK to create the session.
The app now begins downloading the compressed Ubuntu root‑filesystem. This can take several minutes depending on your connection speed.
Step 3 – Choose the interface (SSH vs VNC)
UserLAnd supports two ways to interact with the Linux session:
- SSH – command‑line only, accessed via any SSH client.
- VNC – graphical desktop, accessed via a VNC viewer app.
For a full Ubuntu desktop experience, we’ll use VNC. If you only need a terminal, you can skip the VNC client installation and connect with an SSH app such as Termius.
Step 4 – Install a VNC client
- Open the Play Store again and search for
VNC Viewer (RealVNC) or any free VNC client you prefer.
- Install the app and grant it the required permissions (usually none beyond network access).
Why a separate VNC client? Android does not include a native VNC viewer, so an external app is needed to render the remote desktop.
Step 5 – Launch the Ubuntu session
- Return to UserLAnd. You should see the Ubuntu session you created listed under My Services.
- Tap the session name; a dialog appears asking you to choose an interface. Select VNC and tap Start.
- UserLAnd now extracts the filesystem, sets up
proot, and starts a VNC server inside the Ubuntu environment. This process can take 1‑2 minutes on a mid‑range device.
- When the VNC server is ready, UserLAnd displays a pop‑up with the address, typically
127.0.0.1:5900. Note the port number; it may differ if you run multiple sessions.
At this point, Ubuntu is running headless, waiting for a VNC client to connect.
Step 6 – Connect with the VNC viewer
- Open the VNC Viewer app you installed earlier.
- Tap the + button to add a new connection.
- In the Address field, enter the exact address shown by UserLAnd (e.g.,
127.0.0.1:5900).
- Give the connection a name like Ubuntu Desktop.Save and then tap the entry to connect.
- The first connection will ask for a VNC password. Since we left it blank, just press OK without entering anything.
You should now see the default Ubuntu desktop – a simple grey background with a terminal window. Congratulations, you have a working Linux environment on your phone.
Step 7 – Set a VNC password (optional but recommended)
Leaving the VNC password empty means anyone with local network access could connect to your session if they know the port. To lock it down:
- In the Ubuntu desktop, open the terminal (or press
Ctrl+Alt+T if a keyboard is attached).
- Run
vncpasswd. You’ll be prompted to enter a new password and optionally a view‑only password.
- After setting the password, restart the VNC server by stopping the session in UserLAnd and starting it again.
Now any future VNC connections will require the password you just defined.
Step 8 – Install a graphical desktop environment (optional)
The default Ubuntu image ships with a very minimal window manager (Xfce is often pre‑installed, but some builds use a plain X session). If you prefer a richer desktop, you can install one now.
- In the Ubuntu terminal, update the package list:
sudo apt update
- Upgrade existing packages (optional but keeps the system current):
sudo apt upgrade -y
- Install a lightweight desktop such as Xfce:
sudo apt install xfce4 xfce4-terminal -y
- If you prefer a more modern look, you can try LXQt:
sudo apt install lxqt -y
- After installation, restart the VNC server (stop the session in UserLAnd, then start it again). The VNC client will now show the newly installed desktop.
Why a lightweight desktop? Android devices have limited RAM; heavy environments like GNOME would quickly exhaust resources, leading to sluggish performance or crashes.
Step 9 – Access Android files from Ubuntu
By default, UserLAnd mounts the /sdcard directory inside the Linux filesystem at /storage/emulated/0. To make it easier:
- In the Ubuntu terminal, create a symlink to your Android Downloads folder:
ln -s /storage/emulated/0/Download ~/Downloads
- You can now read and write files directly from the Android side. For example, to edit a text file stored on the phone:
nano ~/Downloads/example.txt
Remember that any changes you make affect the actual files on your phone, so treat the shared folder with the same caution you would any other storage area.
Step 10 – Install development tools (optional)
One of the main reasons people run Ubuntu on Android is to get access to compilers, package managers, and scripting languages.
- Install Git and build‑essential tools:
sudo apt install git build-essential -y
- Install Python 3 and pip:
sudo apt install python3 python3-pip -y
- Verify installations:
git --version
python3 --version
pip3 --version
These packages work exactly as they would on a desktop Ubuntu machine, enabling you to clone repositories, compile code, or run scripts directly on your phone.
Performance and usability tips
- Use a Bluetooth or USB keyboard. Touch navigation in a desktop environment is cumbersome; a physical keyboard dramatically improves productivity.
- Enable “Keep screen on” in Android settings. The VNC session disconnects when the screen turns off, forcing a restart.
- Allocate more RAM. UserLAnd lets you set a RAM limit per session (Settings > Advanced > RAM). If you have 4 GB or more, allocate 1 GB for smoother multitasking.
- Prefer Wi‑Fi over mobile data. Large package downloads (e.g., desktop environments) can consume hundreds of megabytes.
Troubleshooting
1. Session fails to start or crashes immediately
- Check storage space. A full
/data partition prevents the root‑filesystem from extracting.
- Review the log. In UserLAnd, tap the three‑dot menu next to the session and select View Log. Look for lines containing “
proot” or “Segmentation fault”.
- Reduce RAM allocation. If you set a high RAM limit on a low‑end device, the Linux process may be killed by Android’s OOM killer.
2. VNC client shows a black screen or “connection refused”
- Make sure the VNC server is actually running. In the Ubuntu terminal, run
ps aux | grep Xvnc. If no process appears, restart the session.
- Verify the port number. UserLAnd may assign 5901 or higher if another VNC server is already active.
- If you’re using a third‑party VNC client, ensure it supports “localhost” connections. Some clients block loopback addresses for security; try using
127.0.0.1 explicitly.
3. Keyboard input does not reach Ubuntu
- Check the VNC client’s input mode. Many viewers have a “send keyboard shortcuts” toggle – turn it off if you want all keystrokes to go to the remote desktop.
- On Android, the on‑screen keyboard may hide the VNC view. Tap the VNC viewer’s toolbar and select “Show Keyboard”.
4. Files you create in Ubuntu disappear after a reboot
- UserLAnd stores the root filesystem in
/data/data/tech.ulauncher/files/. If you clear app data (Settings > Apps > UserLAnd > Storage > Clear Data), the Linux filesystem is deleted. Avoid clearing data unless you intend to start fresh.
5. “Unable to resolve host” errors when running apt
- Make sure the Android device has an active internet connection.
- Check DNS inside Ubuntu:
cat /etc/resolv.conf. If it points to 127.0.0.1, the internal DNS server may be misconfigured. Edit the file to use a public DNS such as 8.8.8.8.
Safety warnings
- Running a Linux server on a mobile device exposes ports (e.g., VNC on 5900). If you enable Wi‑Fi hotspot or USB tethering, the VNC port could be reachable from other devices on the network. Always set a strong VNC password.
- Do not install packages that require kernel modules (e.g.,
nvidia-driver). UserLAnd operates in user space; kernel‑level changes are impossible and the installer will fail.
- Avoid running commands with
sudo that modify system files outside the UserLAnd sandbox (e.g., editing /etc/hosts is safe, but trying to modify /system will have no effect and may confuse you).
What you can do next
- Run a local web server. Install
apache2 or nginx and test serving pages on http://127.0.0.1:8080.
- Use the phone as a development board. Compile Android‑compatible binaries with the
ndk toolchain inside Ubuntu.
- Explore containerization. Docker cannot run directly because it needs kernel features, but you can experiment with
podman in user space for lightweight containers.
With Ubuntu running side‑by‑side with Android, you now have a portable Linux workstation that can handle scripting, package management, and even light GUI work without ever rooting your phone. Keep the session updated with sudo apt update && sudo apt upgrade -y every few weeks, and you’ll enjoy a stable, secure environment for months to come.