Archive of the latest version of "Android vShell" app.

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(): termux/termux-app#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:

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

Having multiple emulated cores there is pointless. They will be executed within the same QEMU thread and as result there would not be any performance benefits. Though if this will be implemented, e.g. unstable MTTCG will be enabled, this will have serious impact on battery drain. So 1 core is the optimal value.

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...
Android Application for a user’s favorite Movies, TV shows and Anime while keeping up to date with the latest releases.

Android Application for a user’s favorite Movies, TV shows and Anime while keeping up to date with the latest releases.

New version of my Android app that shows you popular movies using themoviedb.org API.
New version of my Android app that shows you popular movies using themoviedb.org API.

New version of my Android app that shows you popular movies using themoviedb.org API. Using Modern Android Develpment skills like Kotlin, Room, Retrofit, Hilt, coroutines, Flow and Jetpack Compose.

Is a new version of code for my (Social media app) with Clean Architecture

Is a new version of code for my Social media app with Clean Architecture. I used most of Clean code tips with android, SOLID principles and design-patterns..

Freegemas libGDX is an Android and Java desktop port of Freegemas, which in turn is an open source version of the well known Bejeweled.
Freegemas libGDX is an Android and Java desktop port of Freegemas, which in turn is an open source version of the well known Bejeweled.

freegemas-gdx Freegemas libGDX is an Android, HTML 5 and Java desktop port of Freegemas, which in turn is an open source version of the well known Bej

Freegemas libGDX is an Android and Java desktop port of Freegemas, which in turn is an open source version of the well known Bejeweled.
Freegemas libGDX is an Android and Java desktop port of Freegemas, which in turn is an open source version of the well known Bejeweled.

freegemas-gdx Freegemas libGDX is an Android, HTML 5 and Java desktop port of Freegemas, which in turn is an open source version of the well known Bej

An library to help android developers working easly with activities and fragments (Kotlin version)
An library to help android developers working easly with activities and fragments (Kotlin version)

AFM An library to help android developer working easly with activities and fragments (Kotlin) Motivation Accelerate the process and abstract the logic

This project is focused on the sample using the API's new preview version of Android-L, use of transitions, shadows etc...

Android L preview example Description This project is focused on the sample using the API's new preview version of Android-L, use of transitions, shad

An unofficial version of the Android library for the Muse EEG headset

libmuse NOTE: This is an unofficial version of the Android library for interfacing with the Muse EEG headset. The Muse headset is a research-grade, lo

The simplest version of a notepad application with the feature to save pictures on a note.

PhotoNotePad Easy to write, read and organize notes with photo(s). Feature A note has... title content date color pin images Easy to write a note. Pro

Owner
null
Automatic Blue Archive (Global) decensorer

Cunny Archive Automatic Blue Archive decensor patch Works with both Android 10+ (using scoped storage) and older Android versions (using legacy storag

null 3 Oct 4, 2022
A manga reader app that can be used save / search / find and read latest manga / manhwa

A manga reader app that can be used save / search / find and read latest manga / manhwa

Sebin P Johnson 3 Nov 20, 2021
Android app which fetches a sample movies list to display. Built using Kotlin and latest Android tech stack, with an approach to clean architecture.

movies-sample-app This is an Android app which fetches a sample movies list to display. Built using Kotlin and latest Android tech stack, with an appr

Nadeem Ahmed 1 Oct 21, 2021
This app shows you the latest news within the last two hours

News This app shows you the latest news within the last two hours. also it let's

Mohamed Saleh 1 Oct 24, 2022
NewsFeedApp - An android news-feed-app which shows latest news of various sources

NewsFeedApp An android news-feed-app which shows latest news of various sources

Srihitha Tadiparthi 4 Aug 8, 2022
Implementation of the application using the latest Android Tech Stack and the GitHub REST API.

GitHub Viewer Implementation of the application using the latest Android Tech Stack and the GitHub REST API. <!-- Github login. You can change the use

Vitaliy Zarubin 53 Jan 3, 2023
Alkaa is a to-do application project to study the latest components, architecture and tools for Android development

Alkaa (begin, start in Finnish) is a to-do application project to study the latest components, architecture and tools for Android development. The project evolved a lot since the beginning is available on Google Play! ❤️

Igor Escodro 851 Jan 9, 2023
An android application where you can read the latest news

NewsApp An application where you can read the latest news, go to the details of the news and add your favorite news to your favorites. You can also se

Abdullah Furkan Titiz 6 Oct 18, 2021
Sending komq's latest YouTube & Twitch notifications via Twitter.

Komwitter Twitch & YouTube Notification Twitter Bot for komq. Used Libraries: Twitter4J Twitch4J Kotlinx.serialization and some other dependency libra

BaeHyeonWoo 4 Feb 10, 2022
A mobile application that contains up-to-date information about the latest earthquakes in Turkey, scientific explanations about earthquakes, and Turkey's earthquake map.

Recent-Earthquakes A mobile application that contains up-to-date information about the latest earthquakes in Turkey, scientific explanations about ear

Nisa Efendioğlu 3 Dec 5, 2022