前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux Deploy:在Android上部署Linux

Linux Deploy:在Android上部署Linux

作者头像
美丽应用
发布2018-07-20 11:00:04
10K0
发布2018-07-20 11:00:04
举报
文章被收录于专栏:美丽应用美丽应用

文章更新:

  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
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
result-2016-10-25-20-32-07.png

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

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

Screenshot_20161021-160229.png
Screenshot_20161021-160229.png

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

Screenshot_20161021-162913.png
Screenshot_20161021-162913.png

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

Screenshot_20161025-192219.png
Screenshot_20161025-192219.png

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

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

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

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

Screenshot_20161025-191426.png
Screenshot_20161025-191426.png

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

Screenshot_20161025-191457.png
Screenshot_20161025-191457.png

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

Screenshot_20161025-192244.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
Screenshot_20161025-194835.png

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

Screenshot_20161025-200159.png
Screenshot_20161025-200159.png

  其中:

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

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

Screenshot_20161025-200916.png
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:

https://play.google.com/store/apps/details?id=ru.meefik.linuxdeploy

JuiceSSH:

https://www.coolapk.com/apk/com.sonelli.juicessh

https://play.google.com/store/apps/details?id=com.sonelli.juicessh

Turbo FTP:

https://play.google.com/store/apps/details?id=turbo.client

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-10-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章更新:
  • 问题提出:
  • 解决方案:
  • 相关内容:
  • 资源下载:
    • Linux Deploy:
      • JuiceSSH:
        • Turbo FTP:
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档