本文介绍一种将安卓手机作为linux主机乃至局域网服务器使用的方式。
背景知识
安卓手机使用的Android操作系统脱胎于Linux操作系统,但是他并不是一种Linux(的发行版)。他们之间在系统框架(android多了一层java虚拟机)、底层驱动(android有HAL层)等等方面都有差异,因此两者貌似是无法互相替代的。对于使用者来说,安卓手机既是娱乐工具也是生产力工具,而Linux主机往往是纯粹的生产力工具,在生产力工具的意义上,能够把安卓手机当成Linux主机来使用么?通常来说是不行的,使用Termux的话就未必不行了。
Termux是一个安卓系统上的终端模拟器软件,移植了GNU/Linux系统下的常见软件到Android系统上,他并不是虚拟机之类的东西,只是一个软件。他的所有文件都在此目录下:
一旦删除手机上的Termux软件,该目录下的一切也会被删除。
Termux并不是一个Linux发行版。但是通过Termux,我们仍然可以使用安卓手机进行一些通常认为是在linux主机上进行的工作:
参照本文对安卓手机进行配置以后,你可以像访问linux主机一样访问他,无论是通过本地终端连接还是通过ssh进行远程终端连接,用于学习linux的命令行操作是不是很方便呢。
一些来自官方的说明:
Termux 并不是一个Root工具,不会提供Root权限,除非你的技术超强,足以破坏安卓系统的安全策略。 Termux 主要面向非Root用户,所以通常不需要Root设备。 除非你有以下需求: 修改设备的固件。 控制操作系统或内核的参数。 以非交互方式安装或卸载应用。 得到对文件系统的完全读写权限。 直接访问硬件设备例如蓝牙、Wi-Fi模块或者串口通信。 通过chroot在Android上安装Linux发行版。 完全控制你的设备。 如果没有以上需求,尽量不要Root你的设备,Root的坏处一般大于好处。 Android 应用都是在沙盒中运行的,每个应用都有自己的Linux用户id和SELinux标签。Termux也不例外,Termux中的所有程序都使用和Termux同样的用户id运行,用户id也许是 这种格式,并且不能更改。 所有的包(除了必须Root才能用的包),都被去掉了 多用户,setuid/getuid和其它类似的功能。同时 ftpd, httpd 和 sshd 的默认端口也分别被修改为 8021, 8080 和 8022 。 Termux安装系统要求: 安卓版本 7.0 - 12.0 (经验证鸿蒙手机系统2.0也是可以的) CPU架构: AArch64, ARM, i686, x86_64 最少200兆的存储空间。
以下进入正题。
一、termux安装及上手使用
1.从F-Droid下载Termux相关软件包。
Termux:API使Termux具有控制硬件的能力:
2.安装完成后,华为手机需要进行设置以避免termux被系统乱杀,保持他运行
3.Termix的用户界面非常简单,只有4个元素:
就是从app列表中点开termux后看到的命令行窗口,可以输入linux命令,举例如下
终端窗口下方有一些快捷键,有的是系统键盘缺少的键(如Tab),有的是命令行常用的符号(如 / )。
通过在终端窗口任意位置长按来调出,有复制粘贴、重置及退出终端、自定义终端界面等功能。
从屏幕左侧向内滑动(或先在左侧短按在滑动)可显示。有切换或新建终端会话、呼出系统键盘等功能
在系统通知栏显示的termux通知项。有退出终端会话(所有终端会话!)、唤醒锁定(即使没有会话运行也会保持termux在后台运行)等功能。
termux也可以安装x11程序和vnc来开启图形界面,本文不详述。
二、termux进阶配置
1.换源(清华源)
进入Termux程序,以下在命令行界面操作
也可以使用进行换源操作。
2.使用pkg升级
的就是,只是运行前会执行一次,保证安装的是最新版本。
3.安装配置ssh
4.通过 Termux 使用 adb 连接手机
接下来就可以使用命令连接手机了,甚至可以连接本机,详见(37条消息) #Android--无需 ROOT 实现自动化脚本,让你的手机拥有无穷的可能(非宣传 APP)投笔丶从戎的博客-CSDN博客安卓自动化脚本开发
5.apt安装
6.termux安装配置http-server,用于下载手机存储空间的文件
是基于nodejs的一个轻量级HTTP服务,可以将本机的任何目录发布成一个网站服务。
7.备份termux文件
如果不只是随便玩一下就卸载Termux,那么备份是 必要的。
三、安装ubuntu
在termux里面安装一个全功能的linux,本文以安装ubuntu为例。安装方式参考:
进入ubuntu时可以看到,当前是以root登录的。然而我所用的华为p30手机是难以破解root的,所以termux只能以普通用户运行,这又是怎么回事呢?因为termux下有个东东叫proot。
PRoot 是一个 chroot, mount –bind, 和 binfmt_misc 的用户空间实现。这意味着,用户不需要任何特殊权限和设置就可以使用任意目录作为新的根文件系统或者通过QEMU运行为其它CPU架构构建的程序。 PRoot 通过伪造系统调用的参数和返回值,可以使程序看起来像运行在root用户下,但它并不提供任何方法来真正的提权。确实需要root权限去修改内核或硬件状态的程序将无法工作。
也可以使用来安装linux发行版,本文不详细介绍。