标签 linux deploy 下的文章

文章更新

20170410 初次成文

问题提出

其实这篇文章构思很久了,拖到现在才写...原因就在于在Linux Deploy上部署图形环境是一件坑多活累的工作:一来是因为兼容性原因,部署好的图形界面环境存在数量可观的Bug,并且小苏也无力解决这些Bug。二来是因为基础的Linux环境才是图形界面环境部署的前提,而最近由于各种原因,使用原始的部署方法已经越来越难部署成功基础的Linux环境了。

但这样看来,第一点倒不是什么大问题:毕竟手机不是为运行专业的Linux发行版而生,所以存在Bug是难免的,只要图形界面能部署成功并且大家可以正常进入图形界面,小苏的任务就完成了。问题就在于第二点:由于国内网络运营商的DNS污染与镜像源站的同步原因,基础的Linux环境能否正常部署成功都是个问题,更别说图形界面的部署了。

解决方案

所以在这篇文章中,小苏将直接使用上一篇文章中提到的的方法,在此基础上部署图形环境:

Linux Deploy:使用Repository部署Linux系统

因为作者的Repository中包含了基础的Linux环境组件,我们可以将作者的Repository导入镜像来直接部署好Linux基础环境,再在此环境之上部署图形界面。这么一来,基础的Linux环境是否部署成功就不是我们担心的问题了。

所以在这里,小苏默认你已经阅读完上一篇文章的内容,并且根据上一篇文章的方法成功部署了基础的Linux环境。

进入Linux Deploy,点击右下角的"下载"图标进入配置界面,保持其他选项不变,修改以下配置项:

INIT:
打勾:启用自定义脚本执行
(INIT的其他配置保持不变)

图形界面:
打勾:允许图形界面启动
图形子系统:VNC
图形化界面设定:保持默认配置
桌面环境:按需选择,小苏这里选择的是Xfce
(实际上小苏也推荐大家选择Xfce,原因在于XTerm太过简陋,LXDE桌面环境倒是好一些,但是"ubuntu-lxde_arm"这个Repository是免费的,可以直接导入作者为我们部署好的ubuntu+ssh+lxde+vnc环境,而Mate桌面环境需要下载更多的软件包和依赖组件,且Bug数量更为可观)

2017-04-10_5_12_10_下午.jpg

2017-04-10_5_12_23_下午.jpg

2017-04-10_5_12_29_下午.jpg

配置完毕后,回到主界面,按下"菜单键",选择"配置"让我们刚才的的设置生效:

2017-04-10_5_21_25_下午.jpg

2017-04-10_5_21_31_下午.jpg

配置完毕后,点击底部的"停止"按钮停止Linux系统,再点击"启动"按钮启动Linux系统,接着我们登入SSH,在终端中执行:

sudo apt-get install ttf-wqy-zenhei #安装中文字库

中文字库安装完毕后,执行以下命令启动VNC:

vncserver

终端会返回以下结果:

New 'X' desktop is localhost:1

Starting applications specified in /home/android/.vnc/xstartup
Log file is /home/android/.vnc/localhost:1.log

证明vncserver已启动成功。

(注意,在某些时候,第一次执行vncserver命令时系统将要求你设定一个小于8位数的VNC密码,你需要输入两次密码之后提交,VNC密码设定完成之后还会有一个提示,不用理会,键入n提交即可)

进入图形界面

接着我们使用VncViewer来连接到我们刚刚部署好的的图形界面:

打开VncViewer,点击右下角的"+"按钮添加VNC会话:

Address:
127.0.0.1:5901
Name:
Localhost - Ubuntu@Xfce

其中,"Address"项为VNC服务器所在的地址。由于我们需要连接本机的VNC服务器,所以填写127.0.0.1即可,此外我们还需要在地址后指定VNC端口,因为刚刚终端返回的信息:New 'X' desktop is localhost:1指定了此次桌面会话号为1,所以端口就为5900+1=5901。如果我们开启了多个虚拟桌面,它们的会话号为2,3,4...,那么各自的端口即为5902,5903,5904...依次类推。并且,服务器地址与端口之间需要用英文冒号隔开。"Name"项为用户为此VNC会话指定的地址,我们为了区别其他会话,填写的是Localhost - Ubuntu@Xfce,实际上随便填写什么都可以。

这些信息填写完毕后,点击"CREATE"按钮提交:

2017-04-10_7_03_42_下午.jpg

2017-04-10_7_03_47_下午.jpg

确认信息无误后,点击下面绿色的"CONNECT"按钮开始连接VNC会话(如果你之前没有设定过VNC密码,但在连接VNC连接过程中仍然需要你输入密码时,那么你可以输入android用户的密码试试):

2017-04-10_7_08_13_下午.jpg

2017-04-10_7_08_19_下午.jpg

好了...图形界面的部署过程到此为止,剩下的你们自己折腾吧(/doge脸)~

可能遇到的问题

  1. 当你开启了一个VNC会话,停止Linux系统再启动Linux系统后,再次执行vncserver命令,系统可能会报出以下错误:

2017-04-10_9_03_44_下午.jpg

这时候,你可以执行以下两条命令:

rm -rf /tmp/.X[1-9]-lock
rm -rf /tmp/.X11-unix/X[1-9]

执行完毕后,再执行vncserver,会话号就会被重置为1了。为了防止每次停止再启动Linux系统后带来的这个问题,我们可以编辑/etc/rc.local文件,在此文件的exit 0之前插入这两条命令:

sudo vim /etc/rc.local #编辑/etc/rc.local

2017-04-10_9_13_26_下午.jpg

编辑完成后,保存即可,进行这步操作后,在启动Linux系统后和停止Linux系统之前,Linux Deploy都会替我们执行这两条命令,这样一来之后就不会再报错了~

  1. vncserver默认的分辨率是1024×768,但市面上的大部分手机屏幕的分辨率都是720P(1280×720),1080P(1920×1080),甚至2K(2560×1440),vncserver默认的1024×768分辨率可能会造成VNC画面不能填充满屏幕的情况,这时候,我们有必要修改VNC分辨率以适应屏幕,经过测试,拿小苏的1080P屏幕来说,将分辨率设为为720P可使VNC图像充满屏幕且不影响显示效果。调节方法就是在每次执行vncserver命令时在后面加上-geometry参数,例如我需要把VNC分辨率调为720P(1280×720),那么在启动vncserver时,执行:

vncserver -geometry 1280x720

即可将新开启的VNC虚拟会话屏幕分辨率设为1280×720。值得注意的是,命令中的1280x720里的x是小写字母x,而不是数学中的乘号×

下面是1280×720分辨率和1024×768分辨率的对比(将VNC Viewer画面缩小到最小):

2017-04-10_9_41_37_下午.jpg

2017-04-10_9_41_42_下午.jpg

很明显,在小苏的1080P屏幕上,将VNC分辨率设为1280×720可使图像填充满屏幕且视觉效果更佳。

如果你觉得每次启动vncserver时输这么一长串命令有点儿麻烦,那么可以编辑~/.bashrc文件,在下图所示的位置增加一行alias定义:

vim ~/.bashrc #编辑~/.bashrc

alias vncserver='vncserver -geometry 1280x720' 

2017-04-10_9_50_55_下午.jpg

之后,每次执行vncserver命令后,新开启的VNC会话的分辨率都会被设为1280×720。

资源下载(VNC Viewer)

酷市场:

http://www.coolapk.com/apk/com.realvnc.viewer.android

Google Play:

https://play.google.com/store/apps/details?id=com.realvnc.viewer.android

文章更新
20170408 初次成文

问题提出:
在之前的文章中,小苏为大家介绍过使用常规方式和使用镜像方式部署Linux系统的方法,但是这两种方法各有利弊:

使用常规方式部署时,镜像大小可以灵活调节,但这种方法需要设备在连接网络的情况下下载大量数据,由于运营商的DNS污染或者由于镜像源站同步的原因,即使更换软件源为国内镜像源,部署时也总会出现部署失败的提示。使用镜像方式部署Linux系统时,虽然可以免去部署时下载大量数据的麻烦,但是使用别人部署好的镜像,初始实现的功能依别人部署好的镜像而定,不能个性化定制系统,也不能调整镜像大小。

所以,有没有一种部署成功率比较高,又不需要从软件源站下载大量数据,且可以灵活调整镜像大小的部署方式呢?

答案当然是肯定的。那就是先在Linux Deploy中部署和安装所需要的环境和软件包,然后使用Linux Deploy的导出功能,将Rootfs打包为tar.gz文件,之后,我们只需要将此tar.gz文件导入Linux Deploy,就可以完整还原打包时的Linux系统了。

解决方案:
贴心的作者为我们做好了一些基础的Rootfs以方便我们部署Linux系统,这些Rootfs放置在Linux Deploy的"Repository"中,有些遗憾的是,这些Repository大多是需要到Play商店购买后才能被导入进Linux Deploy中的,但是小苏注意到,有一些Repository似乎可以无需购买,直接导入,比如debian_arm这个Repository:

2017-04-08_4_36_14_下午.jpg

导入此Repository后,回到Linux Deploy主界面,点击右下角的"下载"图标进入配置界面,我们可以看到"源地址"已经被配置为一个远程服务器上的tgz(tar.gz)文件:

2017-04-08_4_37_54_下午.jpg

我们观察这项配置:

http://hub.meefik.ru/rootfs/debian_arm.tgz

似乎就是http://hub.meefik.ru/rootfs/加上Linux Deploy中各"Repository"的名称。

我们拿一个需要付费的的Repository试一下:

http://hub.meefik.ru/rootfs/archlinux_arm.tgz

2017-04-08_4_48_17_下午.jpg

2017-04-08_4_50_19_下午.jpg

似乎还真的是可用的...
所以...看起来这是个彩蛋(喵喵脸)...

于是,在Linux Deploy中,各Repository的真实地址如下:

开始配置:
我们可以根据这些Repository下的提示,修改配置文件,由于各Repository的发行版,架构和版本都已经在说明中指定了,比如ubuntu_arm这个Repository:

ubuntu_arm
Ubuntu 16.04 LTS (Xenial Xerus) ARM base system.)

在描述中指定了此Repository对应的发行版是Ubuntu,版本是Xenial,架构为ARM(armhf)。这也意味着,我们必须在配置界面填写与选择的Repository相同的信息。比如我们选定ubuntu_arm这个Repository来部署Linux系统,那么我们只需要进行以下几步操作:

1.下载此tar.gz文件:

http://hub.meefik.ru/rootfs/ubuntu_arm.tgz

并且记好此文件的路径,下面以下路径为例:
/storage/emulated/0/Download/ubuntu_arm.tgz

2.新建一个配置文件,进入配置界面,做以下配置(未提到的项请保持默认设置):

Containerization method:chroot
发行版:Ubuntu
架构:armhf
发行版版本:xenial
源地址:/storage/emulated/0/Download/ubuntu_arm.tgz
(即刚刚下载的tgz文件存放的路径)
安装类型:文件
(即使用"镜像"方式部署Linux系统)
安装路径:自定
(安装路径代表镜像文件存放的路径,下图以/storage/emulated/0/Linux/ubuntu_arm.img为例)
镜像大小:自定
(即部署完成后,Linux系统的"本地磁盘"大小,下图以1024m为例,不建议超过4096m)
用户名:android
(即部署完成后,系统默认的普通用户)
密码:自定
(此普通用户的密码,下图以sun12345为例)
Privileged user:root messagebus
(这一项照着填就好)
本地化:zh_CN.UTF8
(即部署完成后,Linux系统的语言环境,zh_CN.UTF8指语言环境为中文,如果喜欢英文语言环境,选择en_US.UTF8即可)
SSH:
打勾:允许SSH服务器启动("SSH"的其他项保持默认设置)

2017-04-08_7_10_07_下午.jpg

3.配置完成后,我们就可以开始部署Linux系统了。在部署之前,小苏强烈建议大家挂国外梯子进行部署。因为在Repository中,作者使用各发行版的官方软件源作为软件源,这样一来,一是服务器节点远离中国,软件包下载速度一般都很慢,二是在我国ipv6还未普及,使用官方软件源在部署过程中有一定几率解析到ipv6地址,出现无法连接到服务器的情况并造成部署失败的情况。

挂好梯子后,我们回到Linux Deploy的主界面,按下菜单键,选择"安装"开始部署:

2017-04-08_7_20_02_下午.jpg

2017-04-08_7_20_53_下午.jpg

我们可以看到,从开始部署(19:15:19)到完成部署(19:17:05),仅仅用了1分44秒的时间就可部署完毕。并且整个过程中只需要下载附加组件(本次部署只启用了SSH连接,所以在部署过程中只下载了SSH有关的软件包,如果你启用了图形界面,在这个过程中还会下载图形环境和VNC等组件)。

如果你想部署图形界面,请看这篇文章:

Linux Deploy:部署图形界面环境

资源下载:
如果上面的官方Repository下载太慢或者无法下载的话,可以试试小苏离线到PCloud中的Repository:

PCloud:
https://my.pcloud.com/publink/show?code=kZVAOIZuQvQ3cdywbVO1WUMpW135Rfy1MjV
(但在网络通畅的情况下小苏还是首推官方的Repository,毕竟PCloud免费账户每月只有50G的下载流量/doge脸)

文章更新

20170201 初次成文

问题提出

在之前的文章中:

Linux Deploy:在Android上部署Linux

小苏为大家介绍了使用Linux Deploy在Android系统中部署Linux系统的方法,但是文章发布后,有一部分朋友按照文中的方法无法部署成功。于是小苏在这里发布另一种备选方案 - 使用小苏部署好的Linux镜像来部署Linux系统。

这种方法只支持Ubuntu和Kail Linux(因为小苏只部署了这两个镜像,其他的没有尝试)。原理是将小苏手机上部署好的Linux镜像提取出来,大家下载镜像压缩包并解压,再在Linux Deploy中经过简单配置就可以直接挂载和启动Linux系统了,免去部署的步骤,所以成功率应该会高一些~

解决方案

下面介绍Ubuntu镜像的使用方法:

  1. 安装Busybox
  2. 下载小苏部署好的Ubuntu镜像的zip压缩包(文末给出链接,200m左右),解压到手机内部存储或者外置SD卡,会得到一个大小为2040m的img文件(在这里小苏以img镜像文件存储路径为/sdcard/linux/ubuntu.img为例)。
  3. 安装并打开Linux Deploy,拉开侧边栏,选择"配置文件",点击右上角的"+"按钮新建一个名为"Ubuntu"的配置文件并应用。

4.回到主界面,点击右下角"下载图标",进入配置界面,具体配置如下,其中的用户名和密码也不用改哦~

Screenshot_20170201-160311.png

Screenshot_20170201-160101.png

Screenshot_20170201-160114.png

Screenshot_20170201-160123.png

其中,Ubuntu的源地址为:

http://mirror.tuna.tsinghua.edu.cn/ubuntu-ports/
  1. 配置完成后,回到主页面,点击左下角的"启动"按钮,即可正常挂载启动Linux系统~
  2. 值得注意的是,在SSH连接进Linux的命令行界面时,用户名为:android,密码为:sun12345,连接即可~

部署Kail Linux的步骤和Ubuntu相似,你只需要下载小苏部署好的Kail Linux镜像,在这里小苏以img镜像文件存储路径为/sdcard/linux/kail_linux.img为例,新建一个名为Kail_Linux的配置文件,按以下截图配置,配置完成后,在主界面启动Linux系统即可~

Screenshot_20170201-161437.png

Screenshot_20170201-161447.png

Screenshot_20170201-161455.png

Screenshot_20170201-161502.png

其中,Kail Linux的源地址为:

http://mirrors.ustc.edu.cn/kali/

在以上小苏部署好的两个镜像中,小苏仅仅部署好了SSH,如果你想开启图形界面,那么你可以在选项中配置好图形界面和桌面环境的选项,回到主界面,按下菜单键,选择"配置"更新一下Linux配置即可自动配置好图形界面和桌面环境。

镜像下载

百度云:
http://pan.baidu.com/share/link?shareid=2944186938&uk=3357893188

分流下载:
http://repo.mlapp.cn/Images/

文章更新

20161025 初次成文
20170422 微小修正

问题提出

因为小苏在很久之前就听说在安卓上可以跑Linux系统,期间各种工具也试了很多(包括这个),但是要么是使用方法不得当,要么是和ROM不兼容,总之是一直都没成功,所以这类软件总是下了用,用了卸,想起来的时候再下了用...无限循环。直到之前,看了一篇简单的关于Linux Deploy的使用教程之后茅塞顿开,在Android上成功跑起了Ubuntu,所以写这篇文章来记录一下。

解决方案

Linux Deploy是一款可以在Android设备上部署Linux环境的应用,在小苏这种非专业人士来看,其原理大概是在Android的Linux层跑一个chroot或者proot容器,然后再在容器中运行我们准备好的另外一个Linux系统。值得注意的是,这与我们熟知的虚拟机技术不同,新的Linux系统将和Android系统平行运行(非专业解释不要深究)。

在使用Linux Deploy之前,我们需要获取手机的Root权限,获取Root权限后,由于原机自带的Linux命令集不完整,我们需要安装Busybox来扩充Linux命令集。

Screenshot_20161025-202736.png

安装完成后,我们将使用Linux Deploy在Android设备上部署Ubuntu系统:

点击界面最右下方的"下载"图标进入配置文件的设置界面进行如下设置(我也不知道开发者为什么会用这么一个"下载"图标作为配置文件设置界面的图标):

Containerization method:"chroot"

发行版:"Ubuntu"

架构:保持默认值

发行版版本:"yakkety"(即Ubuntu 16.10)

源地址:http://mirror.tuna.tsinghua.edu.cn/ubuntu-ports/(这里我们采用默认方式部署,即在软件源中下载Linux组件和必要的软件包的方式部署,因为默认源速度不佳,为了不下载一天一夜,我们这里使用的是清华大学的开源镜像源,如果你采用Repository方式部署(之后的文章会讲到),这里的"源地址"应该填写Repository文件(后缀为tgz/tar.gz)文件的本地或远程路径)

安装类型:这一选项的话小苏有两种建议,"目录"和"文件",如果对Linux不太熟悉并且/data分区剩余空间≥2g的话,小苏建议使用"目录"的安装方式,如果对Linux比较熟悉或者/data分区剩余空间<2g的话,小苏建议使用"文件"的安装方式。在这里,为了操作方便,小苏使用"目录"的安装方式,但在实际使用中,为了不占用/data分区空间,小苏建议大家采用"文件(镜像)"的安装方式。

安装路径:"安装路径"选择"目录"时,这个选项将定义系统安装在哪个路径中,默认路径为${ENV_DIR}/rootfs/linux,即安装在/data/user/0/ru.meefik.linuxdeploy/env/rootfs/linux目录下。"安装类型"选择"文件"时,这个选项将定义Linux系统安装在哪个镜像文件中,默认值为外置存储/linux.img

镜像大小(MB)(安装类型"选择"文件"时可用):这个选项将定义系统所在镜像文件的大小。系统安装之前将在安装目录创建一个大小为设置的镜像大小的空文件用来存放系统文件和数据(相当于新Linux系统的总磁盘空间)。小苏建议不要用默认值,填写2048m足够了。

文件系统(安装类型"选择"文件"时可用):选择"自动"。

用户名:这个选项为登录系统时的用户名,默认为"android",可以随意更改。

用户密码:这个选项为Ubuntu系统中用户的密码,可以根据自己的习惯填写。

Privileged Users:保持默认值"root"

DNS服务器:可以保持默认值,也可自定义填写DNS服务器地址(如114.114.114.114等)

本地化:建议保持默认值POSIX,如果有其他需求,比如需要让ssh返回结果为中文或者让图形界面的显示语言为中文时,选择"zh_CN.UTF8"

INIT/MOUNTS项:若有需求时可以设置,无需求可以忽略。

允许SSH服务器启动:打开此选项

SSH设置:保持默认

允许图形界面启动:若有需求可以设置,这里暂时不打开这个选项(之后的文章将会为大家介绍如何部署图形界面)。

result-2016-10-25-20-32-07.png

设置完成后,按返回键返回到应用主界面,按下菜单键,选择"安装"开始Linux系统的安装,安装过程中需要一直保持网络连接(建议在WIFI下安装,大概需要几百兆流量)。

当看到终端输出">>>deploy"时,代表安装已开始:

Screenshot_20161021-160229.png

当看到终端输出"<<<deploy"时,代表安装已完成:

Screenshot_20161021-162913.png

点击主界面下方的"启动"按钮可以启动新安装的系统,点击"停止"可以停止系统。

Screenshot_20161025-192219.png

至此,系统部署部分描述完毕。

部署完毕后,我们需要用到lJuiceSSH/ConnectBot之类的SSH工具来登录系统(这里以JuiceSSH为例)。

成功启动系统后我们打开JuiceSSH,依次点击 "连接" - 右下角"+"按钮 进入新建连接界面:

昵称:可随意填写,我们以"Localhost - Android"为例
类型:SSH
地址:127.0.0.1

Screenshot_20161025-191426.png

认证:选择"新建"跳转到"新建认证"界面:
昵称:同样可以随意填写,我们同样以"Localhost - Android"为例
用户名:填写"配置文件设置"界面的"用户名",默认为android
密码:填写"配置文件设置"界面的设置的"用户密码"

Screenshot_20161025-191457.png

点击右上角的"√"图标保存并返回到"新建连接"界面,再次点击"√"图标保存,在"连接列表"中点击刚刚新建的这个项目连接到我们刚刚部署好的系统,连接成功后界面如下:

Screenshot_20161025-192244.png

因为我们是通过普通用户android登陆系统的,接下来我们需要设置超级用户(root)的密码并且以超级用户的身份登陆系统:

在终端中键入:

sudo passwd root

终端将会提示用户输入root用户的密码并且再次输入一次以确认(输入密码时密码将不可见,连*都不会显示),设置完毕后,在终端键入命令su并输入刚刚设置好的root用户密码即可切换到root用户。

文件的管理:
如果你是通过"目录"方式部署的Linux系统,那么你可以直接使用R.E.管理器访问/data/user/0/ru.meefik.linuxdeploy/env/rootfs/linux即可管理新系统中的文件,如果你是通过"文件"方式部署的Linux系统,管理文件等操作就得依靠SFTP了(当然使用SSH方式也没问题,但是小苏还是觉得SFTP更方便些)。当我们使用普通用户身份登录SFTP时,由于权限原因,我们无权操作大多数文件。所以我们需要以超级用户身份登录SFTP。但默认配置是不允许root用户登录SSH和SFTP的,所以我们需要进行如下设置:

在Linux Deploy中启动部署好的系统,以android用户登录到SSH,在终端中执行:

sudo apt-get install -y vim #安装vim编辑器

当然啦,使用系统自带的vi编辑器也是可以的,如果你对vi编辑器比较熟悉也可以使用vi编辑器编辑文件。vim编辑器安装完成后我们继续在终端执行:

vim /etc/ssh/sshd_config #使用vim编辑器打开/etc/ssh/sshd_config这个文件

打开文件后,键入i进入编辑模式,点击终端任意空白位置可以弹出特殊键键盘,使用上下光标滚动浏览文件,在文件的#Authentication部分找到PermitRootLogin这一项,将其改为yes,改动完成后点击特殊键键盘中的"ESC"键退出编辑模式,键盘键入:wq!保存并强制退出文件完成对文件的编辑操作。

Screenshot_20161025-194835.png

打开Linux Deploy,停止后再启动Linux系统。打开"Turbo客户端" - 侧边栏 - 创建一个新账户 - SFTP 来新建一个SFTP连接(部分文件管理器,比如ES文件浏览器(ESFileExplorer),SE文件管理器(SolidExplorer)也带有SFTP功能,如果不想安装TurboFTP的话,可以用它们来代替):

Screenshot_20161025-200159.png

其中:

用户名为:root
密码为刚刚设置好的root用户的密码
主机名为:127.0.0.1

其他项保持默认,点击右上角的"保存"图标保存配置,在侧边栏的连接列表中我们将以root用户连接到SFTP并管理文件:

Screenshot_20161025-200916.png

当然,修改完sshd_config文件,停止并启动Linux系统后,你也可以直接以root用户连接到SSH了。

介绍完安装,介绍一下卸载吧~你可以通过以下方法完全卸载Linux Deploy:

1.如果你使用"目录"的方式部署的Linux系统,那么在Linux Deploy内"停止"Linux系统,接着直接卸载Linux Deploy并重启手机即可完全卸载;
2.如果你使用"文件(镜像)"方式部署的Linux系统,你需要先"停止"Linux系统,然后删除放置在内置存储下的镜像文件,镜像文件路径就是上文在部署Linux系统之前提到的"安装路径"这一项,如果此项未经修改,则镜像路径为外置存储/linux.img,接着卸载Linux Deploy并重启手机即可完全卸载。

相关内容

使用上述方法仍然部署失败?试试这个:
Linux Deploy:使用Repository部署Linux系统(推荐方案)

还是部署失败?这是备选方案:
备选方案:在Linux Deploy上使用镜像部署Linux系统

如果你想部署图形界面,请看这篇文章:
Linux Deploy:部署图形界面环境

资源下载:

Linux Deploy

酷安网/Google Play

JuiceSSH

酷安网/Google Play

Turbo FTP

ApkPure/Google Play