linux开发视角root手机并部署相关开发工具

Posted 落子无悔!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux开发视角root手机并部署相关开发工具相关的知识,希望对你有一定的参考价值。

最近毕设实验接近尾声, 需要使用各种算法在不同的硬件平台上进行性能测试, 之前已经成功部署到了NanoPC-T4的板子上, 所以接下来的想法是在一台手机上面看能不能部署相应的计算框架测试算法性能;

本文主要是通过各种工具快速的实现手机root, 并且通过root后的权限安装相应的工具, 在通过adb工具, 将手机链接到电脑上面, 在通过命令行进行操作;

扩展:
如果说安卓手机能够通过root的方式实现跟Linux一样的操作, 那其实每一台手机都可以搭建一个小型的Linux服务器, 比如在手机上挂载个硬盘作为家庭共享盘, 也可以在手机上安装个HomeKit作为智能家居,智能安防的主控, 也可以搭建个备份数据库, 遵照每周备份一些重要的资源;
由于当前手机硬件性能已经非常强了,并且各种外设(屏幕, 摄像头, OTG, 红外)齐全, 从而实现上面这些对性能要求不高的想法简直是轻而易举; 先去咸鱼上spending 100RMB to purchase one phone, redme 4A

我已经在阿里云将下面用的的工具和包分享出来了, 有需要的请自行下载
https://www.aliyundrive.com/s/6X9dZZUMxHH

1. 红米4A的root

1.1 下载自带root的固件进行刷机

市面上有很多刷剧工具, 这里用的是极兔刷机, 在rom市场找到对应的机型, 在找到自带root权限的系统包, 购买后进行一键刷机, 价格也就10+MBR, 省去了很多的资料查找的麻烦, 然后他会有个刷机教程, 按照刷机教程进行操作即可

1.2 刷剧过程中遇到的问题

  1. 小米手机有锁, 这个根据上面的那个刷机提示, 在手机上登录自己的小米账户并且授权认证; 然后在去小米官网下载 MiFlash2017-12-12-0-ex 在电脑上面打开后登录自己的小米账户, 点击解除锁即可

  2. 购买的包刷到一半提示空间不足, 然后手机无法开机

    • 如下图所示, 找到官方原厂固件包, 重新刷回原来的系统



      然后在回到1.1 中, 刷到最后会提示请按住手机音量加键, 等到出现界面后选择recovery, 进入recovery界面后, 会自动运行root激活脚本, 等待结束后会自动重启手机, 大约十分钟后, 手机就获得了root能力了
  3. 第三个问题是数据线问题, 有些数据线不支持数据传输或者接口松动, 导致的root失败, 更换数据线就好了

2. adb的使用

ADB(android Debug Bridge)是Android SDK中的一个工具, 使用ADB可以直接操作管理Android模拟器或者真实的Andriod设备。
ADB主要功能有:
1、在Android设备上运行Shell(命令行)
2、管理模拟器或设备的端口映射
3、在计算机和设备之间上传/下载文件
4、将电脑上的本地APK软件安装至Android模拟器或设备上

讲道理, 之前的工作应该已经将adb drive安装完, 能够识别 Android并且进入adb shell

2.1 添加环境变量

将 包含adb.exe 的文件夹放到一个位置后, 插入到系统的环境变量中

2.2 将 “/” 挂载为可读可写

通过数据线将手机连接到电脑, 此时有个root权限认证, 在手机的弹框点击确定即可

C:\\Users\\admin>adb shell # 进入手机的shell
shell@rolex:/ $ su # 切换root用户
root@rolex:/ # mkdir zjq # 创建文件夹
mkdir: 'zjq': Read-only file system # 出错, 当前系统只读
mount -o remount ,rw / # 修改当前系统为可读可写
root@rolex:/ # mkdir zjq # 创建文件夹成功

3. 安装开发工具 Linuxploy

  1. Linuxploy是一个Android APP
  2. Linuxploy相当于各种Linux版本的容器接口, 跟电脑上面的docker很像
  3. 可以通过Linuxploy APP 加载一个Linux容器到 Android本地

3.1 安装启动Ubuntu到Android

这里由于买的SD卡还没回来, 所以还没尝试, 但是看了很多视频, Linuxploy配置centos都很简单, 启动后通过局域网或者数据线连接到电脑的shell即可实现服务器的搭建

虽然SD没回来, 但是我发现我的16G内存还有8G内存的剩余, 所以就尝试了一下, 结果还成功了

先放一张结果图

总的操作如下图所示

第一步. 手机左上角三条横杠之设置

  1. 设置 屏幕常亮, 锁定WiFi, CPU唤醒
  2. PATH变量 system/xbin
  3. 调试模式 打开

第二步. 配置文件

  1. 删除当前的配置文件, 然后新建改名为Ubuntu即可

第三步. 手机右下角三道杠之容器设置

  1. 发行版 Ubuntu
  2. 架构 armhf
  3. 源地址 http://mirror.tuna.tsinghua.edu.cn/ubuntu-ports/
  4. 安装类型: 镜像 (镜像的含义就是整个系统都在一个文件中)
  5. 安装路径: $ENV_DIR/linux.img (安装到本地, 这里没有SD卡, 所以选择安装到本地)
  6. 安装路径 $EXTERNAL_STORAGE/linux.img (安装到SD卡)
  7. 镜像大小 5120 (我尝试使用2048即2G, 但是安装完后显示ssh启动失败, 没有改文件, 这是因为空间太小, 默认不安装基础工具, 所以这里尽可能的大一些空间)
  8. 文件系统 ext4
  9. 用户名和密码 这里自己设置 (最好不要设置root 想要进入root登录后可以通过su 命令进入)
  10. 初始化: 允许使用初始化系统
  11. ssh 启动 ssh 服务
  12. 返回

第四步. 点击安装

等待大约20分钟, 期间会如果出现 download packages... fail 表明网络较差, 点击停止然后重新安装即可

第五步. 点击启动

看到ssh start 了, 表示可以通过ssh进行连接了, 这时候, 电脑跟手机如果连接到了同一个路由器上, 就可以直接通过ssh工具进行连接了!!!

3.2 Ubuntu初始化操作

这里对刚安装完成的Ubuntu进行初始化操作很简单, 无非就是安装常用的工具, 比如vim, 修改下载源等, 具体操作见另一个arm的Ubuntu系统初始化部署

注意默认的zjq用户用的是/bin/sh, 这里需要更改成 /bin/bash 不然无法tab补全等操作

sudo vi /etc/passwd
zjq:x:60000:60000::/home/zjq:/bin/bash

a 安装gcc

b 挂载64G的内存卡到/home路径下

因为 zjq用户的文件路径是 /home/zjq

d 安装conda python

因为 conda 所有的环境都放到了/home/zjq

c 安装 vim, zip, wget, lrzsz

e 安装各种依赖

4. 给手机部署一些基础工作

tvm编译并测试

收获

  1. 之前总觉得手机root比较麻烦, 其实不然, 所有的手机机型对应的root方案其实在网上都公开了, 并且有很多爱好者都已经打包好直接用即可
  2. 通过各种GitHub上的开源工具, 其实目前已经实现了像是arm, amd, Intel等不同硬件平台对应的Linux系统, 也就是大一统早就实现了, 只是我们仅仅关注于某些方面从而忽略了整个世界的发展
  3. 所以我期待的未来应该是跟LLVM编译器框架的形式一样, 分为前端中间和后端, 即前端操作系统的不同应用, 中间操作系统, 后端不同的硬件平台;
  4. 因为即使新的硬件平台,无非就是多出来不同的寄存器用于专项的处理些特殊的任务, 比如机器学习的Graph, 但是操作系统其实依旧是在操作着这些通用的寄存器实现, 所以不管底层硬件怎么变化, 上层系统其实都大体相同, 不同的是一些特殊的任务处理, 而这些特殊任务有很多coder在maintain
  5. 通过容器技术, 可以打通所有的硬件平台, 不是一般的厉害, 以后再也不怕手机下岗后没用了, 由此可见, 当前硬件资源其实已经很丰富了, 只不过没有一个行之有效的方法把这些资源给利用起来而已!!!

以上是关于linux开发视角root手机并部署相关开发工具的主要内容,如果未能解决你的问题,请参考以下文章

如何开启小米手机5的ROOT权限

红米手机5获取Root超级权限的步骤

如何获取红米手机5A的Root权限

如何获取红米手机5A的Root权限

开发视角看Linux系统监控命令

小米root权限怎么开启miui12