在你的Android手机上运行Linux
[2020.03.06] 今日再观,真不愧乃2018年的古董文章。以前提供的链接现在已经通通失效,JuiceSSH终究不再更新,Termux拥有了更高的可玩度,也有了许多其他的替代方案。因此将此文稍作修缮,或不再有其他额外改动了。
之前试过许多方法(也就几种),像什么Complete Linux Installer,Debian noroot,利用已有的Linux构造Bootstrap之类,要么就是复杂得要命(调了两天没有调出来),要么就是鸡肋,直到发现了一款叫做Linux Deploy的软件。

这款软件是需要root才能运行的,没有root的童鞋可以转向那些Termux的教程了。只是Termux没有Linux Deploy性能好,可定制程度稍低罢了。
看来这款软件的先置需求还是不多的,随随便便就能处理好是不是?
好吧,现在步入正题,开始安装Linux Deploy(欢迎花样作死)。
1.安装Linux Deploy
虽然有些应用商店里有Linux Deploy,网上也可以下得到,但是版本估计都很旧,所以推荐到Google Play商店里下载(没有链接提供哈)。
就像安装微信一样安装好它就行了。
然后打开......是这个样子的:

你看,上面都教你怎么安装了!(笑)
2.配置Linux Deploy
如果你想要安装多个系统,建议更改一下配置文件的名称。(哎呀,强迫症又犯了,你们忽略我吧)
先点击左上的“恒等于号”

点击配置文件

点一下那支笔

既然这次我们要安装的是Ubuntu,那就写上Ubuntu好了......
更改好后点击确定
如果不想你的Linux运行时CPU休眠导致卡成龟,最好让其保持唤醒
返回,点击设置

勾选“保持CPU唤醒”,顺便把“锁定Wi-Fi"也勾上吧,嘿嘿!
3.设置安装选项
在设置安装选项之前,需要看看手机的CPU架构和/data分区剩余空间
回到主页面,点击右上方的三个点

点击状态
然后就会滚出来很多行字


比如,我的手机CPU是armv8l的,/data分区还剩15.9GB,这些信息都要记住,后面要用到(不记住好像也没什么事)
现在可以正式开始设置安装选项了,点击右下方的一个鬼畜的按钮

容器类型不用管,直接从发行版开始
由于这回我们要安装Ubuntu,那就选Ubuntu好了(废话)

接下来就是架构了,根据我们之前在状态里看到的CPU架构选择合适的架构
一般有armv8字样的CPU是64位的,选择arm64或aarch64(看哪个有选哪个,这里是arm64,那就选arm64),其他的选armhf即可(除非你的手机老到炸裂,就只能选armel了,不过太老的手机是装不上Linux Deploy的),如果有些神机是i386或者x86_64(amd64)的,直接照着选就可以了(表示膜拜)
比如我的手机是armv8l,就选arm64好了

至于发行版版本嘛,你自己选好了。由于我是更新狂,所以我选了最新的bionic(Ubuntu 18.04)(唉,强迫症又犯了,你们无视我吧 _)

这四个版本代号分别对应着Ubuntu12.04,Ubuntu14.04,Ubuntu16.04和Ubuntu18.04(应该没人会去用Ubuntu12.04了吧)
现在到了设置源地址的时候了。由于官方的源在国外,所以你若不想调两天还调不好的话,还是不要用官方源吧。这里使用中科大镜像站:http://mirrors.ustc.edu.cn/ubuntu-ports(貌似中科大和清华的镜像站越来越不稳定了)

嗯,现在可以选择安装类型了。如果你之前看到的/data分区大于等于4G,建议选择目录,这样大概是选择镜像文件的运行速度的两至六倍。假如你的手机/data分区真的没空间了,但是你有一张存储卡,可以选择镜像文件,或者分区。
不过需要注意的是,由于你的存储卡一般是fat32格式的,所以无法存储大于4G的文件,所以镜像文件的大小不能超过4G。若选择分区的话,就不会出现这种问题,但是选择分区的最大问题就是你的卡里的文件会被清空,且无法在Windows上访问你的存储卡,因为它需要被格式化成ext3或ext4格式(具体选ext3还是ext4,取决于你的手机是否支持ext4,可以通过状态查看,看那个Supported FS有没有ext4即可,若连ext3都没有,那就只能选ext2了,不过这种手机实在太古老了,我保证连Linux Deploy都装不上......)。
还有,如果你选择了分区,一定要弄清你要安装到哪个分区,在状态最底部有一个Available partitions,会显示你的存储卡的位置,一般是/dev/block/mmcblkXpY(X和Y根据情况填写),注意核对分区大小和你的存储卡大小是否匹配,若你选错了分区,你就杯具了......
至于RAM选项,这是安装到内存里,虽然速度快,但是没有3到6个G内存不要选,而且一重启就没了(所以别选RAM了吧),还有,请忽视Custom那个选项,因为那个一点用都没有๑乛◡乛๑

由于我们选的发行版是Ubuntu,所以强迫症再次发作,手动分类改名设置安装路径QwQ

为了不出现因忘记其默认生成的超难记密码而连不上ssh的尴尬局面,强烈建议修改用户密码(用户名改不改随意)

你看,这个密码多好记?!
特权用户和DNS一般不用改,不过本地化是要改的(除非你喜欢全英文)

改成zh_CN.UTF-8即可
初始化和挂载都跳过,把SSH启用打上勾,否则连不上这个Ubuntu就尬了!
下面那个VNC先不要管(虽然我知道你很可能需要它),直接点左上角那个小箭头回到主页面
这个设置安装选项貌似很复杂,但是实际上还是很简单的,大约半分钟就可以配置好
4.开始安装系统
回到主页,点击安装

肯定选择确定啦
然后就开始安装了......

根据手机性能的高低和网速的大小,安装时间4至30分钟不等

嘿嘿,我六分半就装完了(˘▾˘)
哦,对了,出现下面这种情况(就是那个W:Couldn‘t什么的)赶紧按停止键重新安装,以免浪费时间(反正过了一段时间后快要安装完时它会报错让你重装)

建议安装完后重启一波再食用

请忽视时间的问题(逃)
5.使用SSH连接容器
在Android上使用人数最多的SSH软件恐怕就是JuiceSSH了......

我在想这个软件的图标为什么那么像Lemon
这个软件打开之后是这个样子的:(请忽视一切诡异的东西吧)

先点击“连接”

点击那个有趣的加号(因为你点开JuiceSSH时是什么连接记录都没有滴,需要手动添加)

昵称随便填,比如我填了个Linux(为什么不填个NOILinux呢)
地址填127.0.0.1或localhost(反正都是代表本机)
然后点击认证那个倒三角——新建认证

昵称随便填,比如我填了个Linux......
用户名是之前配置时那个用户名,我没有改,所以是android
密码就是那个好记的xxxxxx

填好之后是这个样子

私钥不用管,千万别点左上那个返回键,而是应该点右上的那个勾(否则就重来一遍吧)
然后就会返回到填写“新建连接”的页面,再点一下右上那个勾,回到主页面,在连接那儿点击刚刚保存的连接
然后是类似这个样子

不要管,点确定,然后是这个样子

点接受即可
接着就连接上啦,可以愉快地打命令啦啦啦

按音量-可以缩小字体

按音量+可以放大字体

皮皮真开心!
来,打个gcc

什么?居然没有gcc?
那就安装一个吧!
先sudo su一波
然后apt install gcc g++

点个y然后回车
然后就刷刷刷得跑起来了!
安装好了......

输入一个gcc -v,哈,gcc已经有了!

输入一个g++ -v,哈,g++也已经有了!

这下就可以编译了!
不过只能编译,不能编辑文件是什么鬼?那就安装一个vim吧!



哈,现在vim也可以用了!
6.为容器启用图形化界面
有的童鞋并不满足于终端,还希望像普通的Ubuntu一样有图形化界面。这很简单,只需要将我们之前忽略的VNC打开就可以了!

桌面选择轻量的LXDE,一是安装快,二是运行快,三是丑陋

现在返回到主页面,点击右上方的三个小点点,然后点击“配置”......

仍然建议重启一波哦QvQ
7.配置并使用图形化界面
要用VNC连接这个毒瘤Ubuntu,需要一款名曰VNCViewer的软件,作者已经贴心地帮忙准备好了QvQ:https://wendster.win/pan/index.php?share/file&user=1&sid=5BzEJ8FY
打开之后是这个燕子的......

然后点击右下角那个加号

地址填127.0.0.1或localhost,Name就随便啦
然后点击CREATE,然后在主页面点击你创建的连接
会出现下面这个东西

记得把它的勾去掉,否则每次都会弹出这个拥有着令人做噩梦的颜色的邪恶的提示
然后就要输密码,可以把Remember passwd勾上,下次就不用输入密码了

emmmm,密码就是那个好记的xxxxxx
然后,就进去了,这个软件会弹出一个使用教程,可以看也可以跳过,反正是全英文的教程
真正连上后的样子:

哎呀,下面的任务栏太小了!原来是VNC的分辨率调的太高了,调低一点就好了
先返回到配置系统界面,然后点击图形化界面设置

哎呀,颜色深度怎么只有16位呢?还是换成24位全彩色以获得更好的视觉体验吧

好啦,回到正题。可以看到,分辨率调的非常高,高达1920x1080,要那么高分辨率干嘛?调低一点多好?就像这个样子,对于我的手机来说调到960x540比较好,那就调这么多呗

现在再次重启容器,连上VNC。嗯,现在好多了!

点一下启动器

谒!怎么中文都乱码了?原来是忘记安装中文字体了......
赶紧用SSH连上终端,敲上这么一打命令
apt update
apt install font-wqy-microhei -y
这样中文乱码这种奇异的事件就不会再有了
为了让界面稍微好看一点,并且修复一下图标的问题,再打一波命令
apt install lubuntu-default-session lubuntu-default-settings lubuntu-extra-sessions lubuntu-icon-theme -y
然后再次重启容器......
然后再次连上VNC......
好了,现在没有乱码了(咦,我的图怎么找不着了)
滑动屏幕操控鼠标点击左下角的飞鸟图案,然后点击首选项——自定义外观和体验
然后就会出现下面的界面
左边菜单选择Lubuntu-default,然后点击Apply

点击上方的图标主题,选择Lubuntu,然后点击Apply

点击上方的窗口边框,选择Lubuntu-default,然后点击Apply

现在回到窗体,点击右下方的字体,左边往下翻,翻到文泉驿微米黑,点击OK

关掉自定义外观和体验,打开终端,顺便把字体也配置一下


先sudo su一下来安装一个小软件......

安装一个Vim用于编辑文件......

哦,忘了已经安装过Vim了!
现在就可以愉快地编程啦!如果有蓝牙键盘,码起代码来会更爽呢!
教程到这里就结束啦!更多高级玩法还期待你们去挖掘(坑)呢!(欢迎花样作死)
在你的Android手机上运行Linux的更多相关文章
- android 手机上运行图像算法
在pc上调试好的图像处理算法想要在android手机上跑一下看看速度需要一下几个步骤 1.建立一个android application,通过ndk调用你写好的图像算法的c/c++ code 2. 然 ...
- 在Android手机上安装linux系统
在anroid手机中安装fedora系统.记住不只是教你安装fedora系统. 需要的备注与软件 1.一个已经root的Android手机,记住是root后的,root后的,root后的.(重要的事情 ...
- 利用Termux在Android手机上运行PHP
从 阮一峰 博客看到 [Termux 入门教程:架设手机 Server 下载文件] 想测试下,在可以跑PHP吗?经测试PHP完美运行,并且可用使用PHP内置WEB服务器,搭建网站访问:因为对linux ...
- 在 Android 手机上运行 Python 程序
- Android 手机上安装并运行 Ubuntu 12.04
ubuntu.sh脚本的原地址变动了,导致下载不了,现在更新了网盘地址.小技巧:遇到一些下载失效的时候可以试一试p2p下载工具(如 easyMule.迅雷等)试一试,说不定有人分享过~* —————— ...
- 在安卓(手机)上运行 Ubuntu (Linux)
在安卓(手机)上运行 Ubuntu (Linux) 由于x86 和 arm 是跨平台的,所使用的编译器自然也不同.如果要在电脑上编译安卓手机上的程序,则需在电脑端建立ARM交叉编译环境,这个过程是在耗 ...
- 安卓手机上运行 PC-E500 程序
目录 第1章安卓手机上运行 PC-E500 程序 1 1 PockEmul 1 2 下载 1 3 打包BASIC程序 2 4 配置PC-E500模拟器 5 5 载入e50 ...
- 如何在 Android 手机上实现抓包?
如何在 Android 手机上实现抓包? http://www.zhihu.com/question/20467503 我想知道某个应用究竟在数据提交到哪里,提交了什么.网上的教程太复杂,不想麻烦.有 ...
- delphi xe5 android 手机上使用sqlite
本篇我们介绍一下在android手机上怎样使用sqlite数据库,这里用Navigator实现 增删改查. 1.新建firemonkey mobile application 2.选择blank ap ...
随机推荐
- 关于spring cloud eureka整合ribbon实现客户端的负载均衡
1. 实现eureka整合ribbon非常简单, 1.1.首先引入所需maven依赖 <dependency> <groupId>org.springframework.boo ...
- C# a标签请求下载文件
服务器文件后台处理方式: a标签: <a href="/FileUpload/DownloadFile?file=/UploadFiles/File/bfcd676b-13a8-419 ...
- zoj3955:Saddle Point(想法题)
传送门 题意 给出n*m的矩阵,询问所有子矩阵中鞍点的个数 鞍点定义:在行唯一最小,在列唯一最大 分析 我们遍历每个点,计算该点对于答案的贡献即可. 每个点的贡献为\((2^{numa[i][j]}) ...
- bzoj 2111: [ZJOI2010]Perm 排列计数【树形dp+lucas】
是我想复杂了 首先发现大于关系构成了一棵二叉树的结构,于是树形dp 设f[i]为i点的方案数,si[i]为i点的子树大小,递推式是\( f[i]=f[i*2]*f[i*2+1]*C_{si[i]-1} ...
- Luogu P2158 [SDOI2008]仪仗队【数学/欧拉函数】by cellur925
题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图 ...
- SQL 初级教程学习(六)
1.创建视图 CREATE VIEW [Current Product List] ASSELECT ProductID,ProductNameFROM ProductsWHERE Discontin ...
- 浅谈算法——线段树之Lazy标记
一.前言 前面我们已经知道线段树能够进行单点修改和区间查询操作(基本线段树).那么如果需要修改的是一个区间该怎么办呢?如果是暴力修改到叶子节点,复杂度即为\(O(nlog n)\),显然是十分不优秀的 ...
- Hdu 5336 XYZ and Drops (bfs 模拟)
题目链接: Hdu 5336 XYZ and Drops 题目描述: 有一个n*m的格子矩阵,在一些小格子里面可能会有一些水珠,每个小水珠都有一个size.现在呢,游戏开始咯,在一个指定的空的小格子里 ...
- Hadoop YARN学习监控JVM和实时监控Ganglia、Ambari(5)
Hadoop YARN学习监控JVM和实时监控Ganglia.Ambari(5) 1.0 监控ResourceManager进程Java虚拟机中堆空间的特定部分. jstat工具,在JDK的bin目录 ...
- GCC的函数声明问题
Thinking in C++ 第四章 GCC 不需要再MAIN函数前声明 编译也能通过. G++不行.