最近毕设实验接近尾声, 需要使用各种算法在不同的硬件平台上进行性能测试, 之前已经成功部署到了NanoPC-T4的板子上, 所以接下来的想法是在一台手机上面看能不能部署相应的计算框架测试算法性能;
本文主要是通过各种工具快速的实现手机root, 并且通过root后的权限安装相应的工具, 在通过adb工具, 将手机链接到电脑上面, 在通过命令行进行操作;
扩展:
如果说安卓手机能够通过root的方式实现跟Linux一样的操作, 那其实每一台手机都可以搭建一个小型的Linux服务器, 比如在手机上挂载个硬盘作为家庭共享盘, 也可以在手机上安装个HomeKit作为智能家居,智能安防的主控, 也可以搭建个备份数据库, 遵照每周备份一些重要的资源;
由于当前手机硬件性能已经非常强了,并且各种外设(屏幕, 摄像头, OTG, 红外)齐全, 从而实现上面这些对性能要求不高的想法简直是轻而易举; 先去咸鱼上spending 100RMB to purchase one phone, redme 4A cortex A53 四核, 2G内存, 16G存储
我已经在阿里云将下面用的的工具和包分享出来了, 有需要的请自行下载
市面上有很多刷剧工具, 这里用的是极兔刷机, 在找到对应的机型, 在找到的系统包, 购买后进行一键刷机, 价格也就10+MBR, 省去了很多的资料查找的麻烦, 然后他会有个刷机教程, 按照刷机教程进行操作即可
-
小米手机有锁, 这个根据上面的那个刷机提示, 在手机上登录自己的小米账户并且授权认证; 然后在去小米官网下载 在电脑上面打开后登录自己的小米账户, 点击解除锁即可
-
购买的包刷到一半提示空间不足, 然后手机无法开机
- 如下图所示, 找到官方原厂固件包, 重新刷回原来的系统
然后在回到 中, 刷到最后会提示请按住手机音量加键, 等到出现界面后选择recovery, 进入recovery界面后, 会自动运行root激活脚本, 等待结束后会自动重启手机, 大约十分钟后, 手机就获得了root能力了
- 如下图所示, 找到官方原厂固件包, 重新刷回原来的系统
-
第三个问题是数据线问题, 有些数据线不支持数据传输或者接口松动, 导致的root失败, 更换数据线就好了
ADB(Android Debug Bridge)是Android SDK中的一个工具, 使用ADB可以直接操作管理Android模拟器或者真实的Andriod设备。
ADB主要功能有:
1、在Android设备上运行Shell(命令行)
2、管理模拟器或设备的端口映射
3、在计算机和设备之间上传/下载文件
4、将电脑上的本地APK软件安装至Android模拟器或设备上
讲道理, 之前的工作应该已经将安装完, 能够识别 并且进入了
将 包含 的文件夹放到一个位置后, 插入到系统的环境变量中
通过数据线将手机连接到电脑, 此时有个root权限认证, 在手机的弹框点击确定即可
- 是一个
- 相当于各种Linux版本的容器接口, 跟电脑上面的很像
- 可以通过 加载一个Linux容器到 本地
注意: 该方案是没有sd卡, 仅仅是想玩一下Linux, 推荐这样, 但是注意需要存储大于4G的空间
这里由于买的SD卡还没回来, 所以还没尝试, 但是看了很多视频, Linuxploy配置centos都很简单, 启动后通过局域网或者数据线连接到电脑的shell即可实现服务器的搭建
虽然SD没回来, 但是我发现我的16G内存还有8G内存的剩余, 所以就尝试了一下, 结果还成功了
先放一张结果图
总的操作如下图所示
第一步. 手机左上角三条横杠之设置
- 设置 屏幕常亮, 锁定WiFi, CPU唤醒
- PATH变量
- 调试模式 打开
第二步. 配置文件
- 删除当前的配置文件, 然后新建改名为即可
第三步. 手机右下角三道杠之容器设置
- 发行版
- 架构
- 源地址
- 安装类型: 镜像 (镜像的含义就是整个系统都在一个文件中)
- 安装路径: (安装到本地, 这里没有SD卡, 所以选择安装到本地)
- 安装路径 (安装到SD卡)
- 镜像大小 (我尝试使用2048即2G, 但是安装完后显示ssh启动失败, 没有改文件, 这是因为空间太小, 默认不安装基础工具, 所以这里尽可能的大一些空间)
- 文件系统
- 用户名和密码 (最好不要设置 想要进入登录后可以通过 命令进入)
- 初始化: 允许使用初始化系统
- ssh 启动
- 返回
第四步. 点击安装
等待大约20分钟, 期间会如果出现 表明网络较差, 点击停止然后重新安装即可
第五步. 点击启动
看到 了, 表示可以通过ssh进行连接了, 这时候, 电脑跟手机如果连接到了同一个路由器上, 就可以直接通过ssh工具进行连接了!!!
注意: 这样挂载的SD卡到Linux下, 无法执行可执行文件, 因为sd卡所属的组是sd-card, 在Linux系统是root, 总之就是没有权限, 查了一圈也没有具体的解决方案, 因此挂在sd卡只能作为文件存储, 要想大量的工具开发, 那还得是将整个Linux系统挂到sd卡上面, 这里见3.3节
因为 用户的文件路径是
-
插入tf卡到手机上面
-
通过数据线连接到电脑
-
在powershell中查看tf卡的名称 确定 卡的位置是
这里每个的标号都一样, 必须这样查看 -
在 → 左下角设置 → 挂载 →启动(Android资源) → 挂载点列表→将 挂载到 (即Linux中的对应的是安卓上面的)路径 → 拷贝 到
-
关闭容器Linux, 然后重新修改挂载路径 见下图
- 到这里, Linux下的就对应与手机里面的了
注意: 先卸载之前安装的Linux: 在左上角 三个杠 设置, 移除环境
a. 给SD卡分区
注意: Linux安装最好是安装到ext4的单独分区格式下
利用分区助手, 将插入电脑进行分区
b. 按照3.1节的步骤, 只需要修改安装格式和安装路径
-
安装类型: 分区
-
安装路径: 这里的X表示存储, Y表示分区
- 手机存储
- sd卡
- 分区1FAT32
- 分区2Swap
- 分区3Ext4
综上所示, 这里应该修改为
c. 点击右上角的三个点, 点击更新设置
d. 点击右上角的三个点, 点击 下载Linux并安装到ext4分区中
e. 点击启动 通过ssh登录即可
这里对刚安装完成的Ubuntu进行初始化操作很简单, 无非就是安装常用的工具, 比如vim, 修改下载源等, 具体操作见另一个arm的Ubuntu系统初始化部署
注意默认的用户用的是, 这里需要更改成 不然无法tab补全等操作
a 安装常用或者必备工具
c 安装 vim, zip, wget, lrzsz
d 安装llvm-10
直接去官网下载预装二进制版本
然后解压到手机的路径下, 设置环境变量
e Linuxdeploy安装python和各种python包
由于我的实验主要就是底层和上层 所以只需要搞定的各种依赖包就可以跑起来了, 但是在安装包时出现了很多问题, 下面给出解决方案和的操作; 这里注意我尝试利用里面的环境但是失败了, 然后在尝试使用的环境也失败了, 又考虑到其实我的实验只要是个 版本以上的就都OK, 所以直接使用了原带的