vShell (Virtual Shell) — a successor of Termux project which provides an alternate implementation of the Linux terminal emulator for Android OS

Overview

vShell

vShell (Virtual Shell) — a successor of Termux project which provides an alternate implementation of the Linux terminal emulator for Android OS.

Unlike the original, this application uses QEMU to emulate x86_64 hardware to run Alpine Linux distribution. This approach allows to provide a sane distribution independent of Android OS, with own kernel and full root access giving full control over the system. Unlike Termux, vShell does not need to port software packages to Android OS. As result, there are more packages and their quality is much higher.

This application is compatible with any Android OS versions beginning from 7.0. It is not affected by Android security hardening like Termux, see issue about execve(): https://github.com/termux/termux-app/issues/1072.

Closest alternatives:

  • iSH: Linux shell terminal for IOS devices. User mode emulation.
  • UserLAnd: Rootless Linux distribution chroot for Android OS. Uses proot.

vShell is a private project even though it is Free and Open Source. It has been developed specifically for my needs. Considering that Android development is not my occupation and neither my hobby, do not expect the great UX, elegant coding solutions and so on. vShell is not newbie friendly and never was intended to be such. If you are not skilled in Linux systems, you will not have much success with this application.

Remember that I do not provide any kind of mentorship on using the packaged Linux distribution. Read the f***ing documentation! See links below:

Where to download

You can download the latest version from the GitHub Releases page.

Check the LIMITATIONS.md to learn about functional limits of this software.

For instructions about building the own copy of application, please check BUILDING.md.

This application is not distributed via Play Store, F-Droid, alternate stores, Facebook, YouTube and other social media.

Properties of emulated VM

Overview of used QEMU configuration.

Note that you cannot change configuration from the application itself. If you want to adjust QEMU settings, you will need to create your own vShell build.

CPU:

4-core x86 64-bit, with all features enabled.

Warning : This is using unstable MTTCG future, some program may be fail to run when MTTCG is enabled, also this will have serious impact on battery drain.

RAM:

Depends on how much of free RAM is available on device.

If you want to maximize the available RAM for the VM, you will need to close all heavy apps before starting vShell. Maximal amount of memory which VM can allocate is 2 GiB.

HDD:

64 GB dynamic QCOW2 image.

Default operating system installation is diskless, i.e. everything is stored in RAM except data from HDD partitions. There is a 4 GB partition for user data, like /home and /root user directories and package cache. When made some changes to system, do not forget to use lbu to save them on disk.

Since partition is bootable, you can re-install Alpine Linux or other operating system on it, if do not want to use diskless distribution variant.

Host storage:

Device shared storage is mounted as /media/host via 9P file system mounted with tag host_storage.

This is handled by /etc/fstab.

Network:

Only user-mode networking via SLiRP is supported.

Default DNS in /etc/resolv.conf:

# Google DNS which should work for everyone.
nameserver 8.8.8.8

# Fallback QEMU DNS resolver. Uses 1.1.1.1 CloudFlare DNS as upstream.
nameserver 10.0.2.3

Ports 22 and 80 are forwarded to random ports on host. Long tap on terminal screen to see the current port forwardings in context menu.

Known Issues

For now there is only one major issue which doesn't happen under normal cases. It is related to host storage mount point exported through VirtFS and leads to application force-close when you are trying to list current working directory that is already deleted on host. I can't provide fix for that and this seem to be a general QEMU issue.

Resources

  • Alpine Linux: A lightweight Linux distribution built on Musl libc and Busybox.
  • Android Terminal Emulator: One of the first terminal applications for Android OS. Now obsolete.
  • ConnectBot: The first SSH client for Android OS.
  • Limbo Emulator: A QEMU port to Android OS. Unlike vShell, this application is generic and doesn't come with OS preinstalled.
  • QEMU: A generic machine emulator and virtualizer. This is a core of the vShell app.
  • Termux: Android terminal emulator with package ecosystem. vShell borrowed some UI parts and terminal library from Termux.
You might also like...
File Picker for KMP project. Works for Android/JVM/Web.

KFilePicker File Picker for KMP project. Works for Android/JVM/Web. Setup Add Jitpack maven { url

Android App development internship project to create woman home screen for clothing company The Swastika.

Android App development internship project to create woman home screen for clothing company The Swastika.

A template project that builds a SDL application programmed in Zig to Android from scratch

A template project that builds a SDL application programmed in Zig to Android from scratch

An Android project to showcase a multi-brand design system.
An Android project to showcase a multi-brand design system.

Table of contents Introduction Structure Architecture Implementation Testing Roadmap Introduction This is an Android showcase project based on Pokémon

This project is an investigation of Hystrix in the Kotlin language

from-paris-to-berlin-circuit-breaker Technologies used This project is an investigation of Circuit-Breakers in the Kotlin language 👇 👇 👇 🚧 🚧 🚧 U

A VikeLabs project meant for navigating around UVic

maps This is a VikeLabs project meant for navigating around UVic. It's structured as a multi-module gradle project with an api server and a web app (i

ArduinoJava - A project that uses the JSSC library
ArduinoJava - A project that uses the JSSC library

ArduinoJava este es un proyecto que utiliza la libreria JSSC para connectarse al

UpSchool Capstone Project - Course selling application with MVVM, LiveData, DataBinding, Retrofit, Room Database, Navigation Component,  Adapter, Firebase Auth, Picasso, Lottie
UpSchool Capstone Project - Course selling application with MVVM, LiveData, DataBinding, Retrofit, Room Database, Navigation Component, Adapter, Firebase Auth, Picasso, Lottie

UpSchool Capstone Project - Course selling application with MVVM (Model, View, ViewModel), LiveData, DataBinding, Retrofit, Room Database, Navigation Component(NavGraph, BottomNav), Adapter, Firebase Auth, Picasso, Lottie

SL4A brings scripting languages to Android by allowing you to edit and execute scripts and interactive interpreters directly on the Android device.

#Scripting Layer for Android (SL4A) SL4A brings scripting languages to Android by allowing you to edit and execute scripts and interactive interpreter

Owner
null
Android Emulator Container Scripts

This is a set of minimal scripts to run the emulator in a container for various systems such as Docker, for external consumption. The scripts are compatible with both Python version 2 and 3.

Google 1.5k Dec 29, 2022
Built and Tested with emulator

Built and Tested with emulator "Nexus 5". Libraries Used: Volley : For webservices GSON : For saving and retrieving data in shared preferences Picasso

null 0 Nov 2, 2021
Using Resilience4J, this is a Demo project which uses a Library as background and manages all its requests.

Using Resilience4J, this is a Demo project which uses a Library as background and manages all its requests. This library can rent books online and the usage rate is extremely high. There is a reactive way to access, which is the one normally used, but sometimes, the system needs a bit of help from an old machine running a non-reactive MVC Spring application using JPA. Let's make this in Kotlin and find the best solution!

João Filipe Sabino Esperancinha 2 Jan 10, 2022
Memory safer implementation of android.os.Handler

Android Weak Handler Memory safer implementation of android.os.Handler Problem Original implementation of Handler always keeps hard reference to handl

Badoo Tech 1.5k Jan 5, 2023
Android validation library which helps developer boil down the tedious work to three easy steps.

AwesomeValidation Introduction Implement validation for Android within only 3 steps. Developers should focus on their awesome code, and let the librar

Jing Li 1.1k Dec 17, 2022
An auto IBCS API response status checking tool which test tax, address and account module

IB IBCS API Test Tool An auto IBCS API response status checking tool which test tax, address and account module. Getting Started Cd to the cloned dire

Gabriel Liu 0 Oct 15, 2021
Recruitment Task App - record time which a user spends on tasks defined by himself

Recruitment-Task The purpose of this application is to record time which a user spends on tasks defined by himself. The user can add new tasks. New ta

Sylwester Zieliński 0 Feb 9, 2022
Starter-Android-Library - Starter Android Library is an Android Project with Modular Architecture.

Starter-Android-Library - Starter Android Library is an Android Project with Modular Architecture.

OpenBytes 1 Feb 18, 2022
Purpose for this base architectural project is to load it with all latest components and libraries So it become reference for all kind of Android projects

The purpose of this base architectural project is to load it with all the latest components and libraries, So it becomes a reference for all kinds of Android projects

null 7 Dec 7, 2021
Tutorial For openJDK 11 and AGP 7.0.0+ | Tutorial Multi Library Android in 1 Project | Groovy

jitpack-library-guide For openJDK 11 and AGP 7.0.0 + Please read every single note for detail Tutorial Click Here Kotlin DSL Click Here Repository for

Faisal Amir 7 Dec 10, 2022