1、序言

经过多日的折腾,终于有点小小成就!期间反反复复,多次尝试,有好几次都有了放弃的念头;但最终还是坚持了下来,仔细学习研究的文章有好几十篇,各种工具到处找。为了总结经验教训,也为了有同样需求的朋友少走一点弯路,很有必要把这个过程记录下来,供大家参考!

  • 很重要的一条经验,也算是教训吧:完美主义有时候真害死人,不要在一个地方死磕,你实现不了的,也许别人也实现不了,因为目前根本就没有这样的条件。如:

    • Termux 在 Android5.1 下安装 CentOS,找不到合适的源。(准确地说应该是在Android7以下)
    • LinuxDeploy 中安装 Docker,可以安装成功,但不能运行;看到有人成功了,但效率低下,所以放弃了Docker。

成就展:(呵呵…)


2、Android5.1系统

1)BusyBox+LinuxDeploy 方案

手机要root,必须的;否则Linux Deploy无法使用;只要手机root后,在更低版本上应该也可以安装

(1)root手机

这一步比较痛苦,但又是必须的。root成功后,手机上能删尽删,能冻结的尽量冻结,给后面的安装运行留下尽可能多的操作空间和性能提升。

以金立F100A手机为例;只有1G的内存,精简后相当的流畅;精简后的模样。

关于系统的精简,有单独的文章讲解。
【图文详解】RE文件管理器手工精简Android系统


(2)安装BusyBox

  • 点左上角三横杠进入

  • 设置完成后,点左上角返回箭头,开始安装;如果还是英文,可以退出后重新进入,就变成中文了

(3)安装LinuxDeploy

过程简单,可以参考下面博客

  • Linux Deploy 安装与使用 - coolape - 博客园 (cnblogs.com)

    • PATH变量/system/xbin

(4)安装 CentOS

  • 尽量用默认的源http://mirror.centos.org/altarch/

    • 如果默认源不行,可以试试这两个:

      • http://chinanet.mirrors.ustc.edu.cn/centos-altarch/
      • http://mirrors.aliyun.com/centos/
  • 安卓手机架构一般是aarch64
  • 安装路径 :安装在手机自带的存储空间中,则在路径开头加上${ENV_DIR};安装在 sdcard 中,加上${EXTERNAL_STORAGE}
  • 开启SSH
  • 点Linux Deploy左上角的三个横杠进入;修改配置文件名称,然后配置 Liunx Deploy

  • 修改配置文件名称,然后返回

  • 配置 Liunx Deploy,然后返回

  • 配置 CentOS,然后返回


关于挂载的补充说明

  • 设置挂载:挂载目录如果不存在的话,会自动创建

# Android机系统路径
/storage/sdcard0/xxx
# 外部扩展卡路径
/storage/sdcard1/xxx
# CentOS中路径
/usr/local/xxx
  • 手机Android中的目录结构:/sdcard/mycentos

  • CentOS 中的目录结构:/mnt/myapp

  • 启动:如果添加挂载点之前已经安装好CentOS,就不需要重新安装。依次清空、配置、启动即可

  • 测试挂载:两端都可以操作,是双向的

    Android中添加,CentOS中删除

CentOS中添加,Android中删除

挂载的一个用途:利用SSH连接向手机传送文件 rz指令


  • 点Linux Deploy右上角的三个点进入,配置、安装


  • 启动CentOS


  • SSH连接



(5)安装Java运行环境

此时可以用ssh方式在电脑上操作

具体安装方法参考: 【Linux】6、软件安装:rpm、压缩包、yum_土味儿~的博客-CSDN博客

  • 想在CentOS中安装Docker,可以安装,但反复尝试运行不成功;看到有人运行成功,但性能很低,所以就放弃了Docker,改为安装Java运行环境,直接运行Jar包。

  • 选择与系统架构一致的jdk,否则运行时会提示 无法执行二进制文件;如: jdk-8u321-linux-aarch64.tar.gz

  • ssh远程安装jdk;上传指令 rz,如果没有 rz 指令,用 yum install lrzsz -y 安装

    rz 上传参考于:xshell 使用命令上传、下载文件 - 七星瓢虫6 - 博客园 (cnblogs.com)


  • 配置java环境变量;配置文件:/etc/profile,可以用 vi /etc/profile命令,在profile文件的最后加上

    # jdk1.8.0_321就是java的安装目录,该目录下有bin,bin下有java...等命令;最后不要加/
    JAVA_HOME=/usr/local/java/jdk1.8.0_321# 各参数中间用冒号分隔,不是分号。最前面有.
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jarexport PATH=$PATH:$JAVA_HOME/bin
    

  • 让环境变量生效

    # 以下两条命令执行一条即可;二者等价
    source /etc/profile. /etc/profile
    

(6)运行jar包

2)Termux 方案

由于Android版本太低,很多源不支持,导致Termux下安装CentOS不成功;放弃

3、Android7以上系统

Android7以上版本,可以采用下面两种方案,不用root,有比较多的源支持,相对简单,暂时省略

1)Termux方案

2)Aidlux方案

【图文详解】Android手机系统精简 搭建Linux集群硬件环境 Jdk运行HelloWorld相关推荐

  1. linux地柜查找文件_图文详解 文件柜内DIY自己的Linux集群机

    专业3D图形渲染中需要进行大量的浮点运算(包括物理实体.几何转换.剪切.光效,以及三角形设定)和整数运算(包括三角形设定和像素渲染),是一项CPU密集型任务,通常处理这项繁重任务的一个办法就是使用计算 ...

  2. Hadoop详解(五)——ZooKeeper详解,ZooKeeper伪分布搭建和集群搭建,Hadoop集群搭建,sqoop工具的使用

    ZooKeeper简介 什么是ZooKeeper? ZooKeeper是Google的Chubby一个开源的实现,是Hadoop分布式协调服务. 它包含了一个简单的原语集,分布式应用程序可以基于它实现 ...

  3. VMware搭建分布式集群基础环境

    VMware搭建分布式集群基础环境 1. 前言 在日常学习.工作当中,我们经常需要用到分布式集群环境,如zookeeper集群.redis集群.大数据集群等,而通常并没有那么多的物理机器可以使用,因此 ...

  4. 如何基于Jupyter notebook搭建Spark集群开发环境

    摘要:本文介绍如何基于Jupyter notebook搭建Spark集群开发环境. 本文分享自华为云社区<基于Jupyter Notebook 搭建Spark集群开发环境>,作者:apr鹏 ...

  5. 基于VMWare虚拟机搭建Linux集群

    基于VMWare虚拟机搭建Linux集群 1.虚拟机的安装 2.下载CentOS系统 3.虚拟机安装CentOS系统 4.虚拟机和本机文件通信 5.虚拟机网络配置 6.本机物理机下载Xshell连接操 ...

  6. sqlserver故障转移集群和alwayson的区别_详解SQL Server 2016 + AlwaysOn 无域集群

    搭建 WSFC 配置计算机的 DNS 后缀 1.配置计算机的 DNS 后缀,注意在同个工作组 2.每个节点的机器都要做域名解析,修改 host 文件C:WindowsSystem32driverset ...

  7. centos7搭建Linux集群,CentOS 7下Kafka集群安装

    一.环境操作系统和软件版本介绍 1.环境操作系统为CentOS Linux release 7.2.1511 (Core) 可用cat /etc/RedHat-release查询 2.软件版本 Kaf ...

  8. Centos8 搭建linux集群

    Centos8.2服务器 (三台) Xshell7(成功连接三台服务器) 2.搭建前的准备 以下代码均在Xshell7下执行 更改主机名(所有服务器都执行) hostnamectl set-hostn ...

  9. 深入浅出 详解Android Surface系统(1)

    文章来自:http://mobile.51cto.com/android-259922.htm 本文详细介绍了Android中的Surface系统,采用情景分析的办法,详解了何为SurfaceFlin ...

最新文章

  1. sd.js帮助您简化繁重的获取数据、存储数据(CRUD)骚操作(吐槽~在安卓9.0以下或者IOS10.X以下手机端H5页面不支持,在这两种情况下的系统只能使用ajax或者原生js请求后台数据)
  2. [置顶] Android面试题目之二:整形转换为字符串
  3. 在linux中进程表示的是,Linux进程的表示
  4. 对象 普通po转_谈谈C++对象的构造
  5. 全网首个OpenPrompt尝鲜报告:Prompt研究者必备实验利器
  6. 通过XmlSerializer 实现XML的序列化与反序列化
  7. 【leetcode】Search for a Range
  8. HBase-再看HBase
  9. 用doxygen自动生成文档
  10. 毕设日志——下一步计划2019.4.17
  11. Objective-C 中 NULL、nil、Nil、NSNull 的定义及不同
  12. 我用 CSS 告诉你,我每天是怎么度过的~
  13. jboss7学习2-jboss7入门(端口和访问的ip问题)
  14. mongodb 导出txt_MongoDB导出软件
  15. 数字相控阵雷达的优势(Benefits of Digital Phased Array Radars)1
  16. SQL注入语句(详细)
  17. 珊瑚橙怎么配色配色?橙色优学教你如何玩转2019年度流行色
  18. 伊斯坦布尔之旅第一天:蓝色清真寺和圣索菲亚博物馆
  19. 饥荒独立服务器在线模式收不到,Windows 服务器搭建Don’t Starve Together饥荒独立服务器教程...
  20. 英语时态:一般、否定疑问句、现表将来(中文练到无停顿)

热门文章

  1. 【总结】1296- 总结 12 个常见移动端 H5 与 Hybrid 开发问题
  2. “缴费”和“交费”的区别
  3. linux概述及环境搭建
  4. 用文心大模型生成剪纸风格的城市插画
  5. 矩阵的主元+秩+矩阵等价
  6. win7matlab2016启动闪退,大白菜修复win7系统启动matlab出现闪退的图文方案
  7. 在html中对页面大小的设置吗,网页设计一般页面尺寸怎么设置呢?
  8. [开源][130522]DIY简易红外遥控信号发射器
  9. C语言外推法求搜索区间程序,一维搜索外推法程序设计实验报告.doc
  10. c语言编程输出主析取范式,c++编程:从键盘上任意输入一个主析取范式,输出与之等值的主合取范式...