在寻找高版本Android固件的过程中遇到一个Android6.0的固件, 刷上去之后发现没有Root. 因为原发布者设置了收费的QQ群, 固件开机图上就是QQ群号, 满以为交了钱之后应该能有Root教程, 结果完全没有, 还被原发布者踢出群.

于是只能自己Root, 顺便将碍眼的开机图片换掉.

Root需要准备的材料

TTL引线

首先要将TTL连线引出, 这会涉及到焊板子

TTL转USB线

我用的是PL2302芯片的TTL转USB线, 这个在win7和ubuntu下都自带有驱动. 对应的软件Win7下建议用xshell或secureCRT, Ubuntu下建议使用GTKTerm

软件

su和daemonsu: 这个要从同一类型(芯片组), 同一内核版本的已经Root的电视盒子固件上复制. 因为现在R3300L盒子的不同安卓版本其内核都是3.14.29, 所以这两个文件是通用的.

SuperSu 和 RootExplorer: 前者是必须的, 后者可选

Root的过程

Root其实就是要将不带uid限制的su和daemonsu(其实也是su)放到/system/xbin/ 下, 将其权限设为0755, 再运行 /system/xbin/daemonsu --auto-daemon & 命令让daemon运行在后台, 然后在Android界面上运行SuperSU, 让SuperSU完成最后的Root工作, 等SuperSU更新完文件提示重启, Root就完成了.

实际的步骤要复杂一些

  • 首先要通过TTL访问命令行, 这个固件在TTL启动后, 直接是root shell, 所以这一步没什么问题
  • 然后将/system分区挂载为可写, 通过 mount -o rw,remount /system 命令实现
  • 将软件都复制到U盘, 连上盒子之后, 在TTL Shell命令行将su, daemonsu复制到 /system/xbin/ 下, 并修改权限 chmod 0755 su daemonsu
  • 在安卓界面上安装SuperSU, RootExplorer
  • 在TTL Shell命令行运行/system/xbin/daemonsu --auto-daemon &  然后ps检查是否有daemon的进程
  • 在安卓界面运行SuperSU开始Root, 如果前面步骤正确, 这一步SuperSU会提示是否更新文件, 按普通更新即可, 等十几秒后SuperSU会提示完成要重启
  • 重启后就不需要再运行daemonsu了, 直接运行SuperSU检查Root结果

制作自带Root的固件

制作已经Root的固件相对而言就更麻烦一点, 因为要把上面提到的要素都准备好, 并且固件当中可以改的只是 /system 下面的内容, 因为这些在 system分区下, 其他地方的内容是不方便修改的. 这边涉及到的工具主要有linux下的工具 https://github.com/natinusala/linux-amlogic-toolkit  和windows下的解包和打包工具 Amlogic CustomizationTool. 前者的打包存在bug, 所以只用于对system.img进行修改, 后者用于制作最外层的解包打包.

用 linux-amlogic-toolkit 解开的 system 分区会挂载在 output/system/ 目录下, 因为里面都是owner为root的文件, 所以要用sudo进行修改, 将su和daemonsu复制进 xbin目录, 并修改权限为 0755, chown 为 root:2000 (这个根据目录里其他文件的属性进行修改), 然后将前一步中安装好的SuperSU, RootExplorer 的安装目录(在 /data/app) 复制过来, 放到这里的app目录下, 检查并确认权限和owner是否和其他的app一样. 这样文件都准备好了. 还缺一个随开机启动的 daemonsu.

这时候要检查一下运行中的盒子, 看看根目录下的 init.rc 这个文件, 查找service 关键词, 能看到一系列开机启动的服务, 看看其中有没有这条 service ... /system/bin/install-recovery.sh, 这个路径不是固定的, 有些系统放在了 /system/etc/下, 确定位置后, 直接修改(或创建) install-recovery.sh 文件, 写入以下内容

#!/system/bin/sh

# Run SuperSU deamon
/system/xbin/daemonsu --auto-daemon &

.再chmod 0755 将文件属性改为可执行, 这样就都准备好了.

接下来就是再通过 linux-amlogic-toolkit 的recreate 将system分区打包为 system.PARTITION, 然后通过 CustomizationTool 将固件解包(只需要解level1), 将system.PARTITION 替换成新的, 再打包, 一个自带Root的固件就完成了.

在固件刷机完启动后, 在界面上运行SuperSU按提示更新文件, 待更新完文件重启后, 新系统就已经Root了.

TWRP 3.0.2.0 Recovery

可以使用S905X的TWRP作为S905L的recovery, 文件在 https://github.com/botfap/A95X-Linux-BuildEnv/tree/master/recovery

相比系统自带的recovery, TWRP的命令行各种命令是相当完整的, 几乎等价于一个小linux系统. TWRP的使用方式有两种:

  • 格式化一个U盘或TF卡, 我使用的是一张2G的TF卡, 格式化为FAT, 将 twrp-s905x.img-v3.0.2 文件重命名为 recovery.img, 放到TF卡根目录下, 连上盒子, 用reboot update启动
  • 将 twrp-s905x.img-v3.0.2 重命名为 recovery.PARTITION, 直接打包在固件里, 这样系统进入recovery时, 就是TWRP recovery了.

修改Logo和Bootanimation

修改Logo, 直接在linux-amlogic-toolkit 解开的 /output/logo/ 目录中替换 bootup 文件就可以了. 图像文件必须是BMP格式的16bit或者24bit, 不支持8bit(这个试过, 肯定不行), 再recreate 后, 用生成的 logo.PARTITION去打包.

修改bootanimiation, 在 /system/media 下, 替换 bootanimation.zip, 根据Google的格式说明 , 里面分两部分, 一部分是desc.txt, 一部分是包含顺序文件名的png文件的目录.

desc.txt文件格式

# Line1
WIDTH HEIGHT FPS WIDTH: animation width (pixels)
HEIGHT: animation height (pixels)
FPS: frames per second, e.g. 60 # Line 2 ~ N:
TYPE COUNT PAUSE PATH [#RGBHEX [CLOCK1 [CLOCK2]]] TYPE: a single char indicating what type of animation segment this is:
p -- this part will play unless interrupted by the end of the boot
c -- this part will play to completion, no matter what
COUNT: how many times to play the animation, or 0 to loop forever until boot is complete
PAUSE: number of FRAMES to delay after this part ends
PATH: directory in which to find the frames for this part (e.g. part0)

注意目录里的图片不能太多, 最好控制在50张以内, FPS也不能太高, 最好在20以内, WIDTH和HEIGHT设置得不对会导致动画不显示. 另外bootanimation.zip的权限也要设置为0644, 否则系统无法读取, 就会显示默认的ANDROID动画字符.

在Ubuntu下打zip包的命令如下, 用winrar这类工具打包的似乎系统不认.

zip -0qry -i \*.txt \*.png \*.wav @ ../bootanimation.zip *.txt part*

Preinstallapps

在/system/media 目录下还有一个 preinstallapps.tar 文件, 这个是用来在第一次启动时预装app的, 调用在/system/bin/preinstallapps.sh, 由某处 init.*触发. 如果要清理的话最好在rm之后touch一个同名空文件在那里, 避免启动时错误.

TTL Shell

在TTL Shell里可以通过 /system/etc/mkshrc 这个文件执行一些初始化命令, 功能等价于.profile 或者 .bashrc, 在里面绑一些alias.

播放H.265 X265 10bit格式的视频

在运行安卓6的R3300L上, 用最新的VLC 3.2.3, 小白播放器1.2.0都无法正常播放HEVC H.265/X265 10bit的视频, 具体表现为, 如果使用硬解则声音正常显示花屏, 如果使用软解则声音正常显示停滞. MX Player因为没下载到v7a的版本, 所以没法测试. 能完美播放的是SPMC-16.7.4, 下载地址为 https://github.com/koying/SPMC/releases/download/16.7.4-spmc/SPMC-16.7.4-spmc-94d913d-armeabi-v7a.apk 因为SPMC是Kodi的folk, 本身带了播放局域网SMB视频的能力, 所以可以完全取代VLC和小白播放器了.

R3300L Android相关的记录的更多相关文章

  1. Echarts的相关问题记录与应用

    一.相关问题记录: 1.对图表的div进行隐藏操作,使用hide()或display:none,重新展示时,会造成图表无法获取高度,导致图表的高宽不符合预期: 解决方法:最后调用一下resize()函 ...

  2. arcgis android 图上记录gps轨迹

    原文  arcgis android 图上记录gps轨迹 public class MainActivity extends Activity { MapView mMapView; Location ...

  3. 安装adt插件后工具栏不显示android相关图标

    一:问题 安装好ADT后,工具栏不显示android相关的图标: 二:解决办法 这是ec设置问题,解决办法: Eclipse ->window->Perpective->custom ...

  4. eclipse安装adt插件后工具栏不显示android相关图标

    到eclipse官网下载luna(开发android,推荐此版本,当前最新版4.4.2)版本的eclipse http://ftp.jaist.ac.jp/pub/eclipse/technology ...

  5. piezo film 压电相关信息记录 (2018-05-04 更新)

    piezo film 压电相关信息记录 起因需要使用 Piezo 做一些设计 http://www.te.com.cn/chn-zh/videos/transportation/piezo-film- ...

  6. saltstack 开发相关命令记录

    SALT API开发相关命令记录. 查看当前的salt key信息salt-key -L 测试被控主机的连通性salt '*' test.ping 远程命令执行测试salt '*' cmd.run ' ...

  7. 【Android实战】记录自学自己定义GifView过程,能同一时候支持gif和其它图片!【有用篇】

    之前写了一篇博客.<[Android实战]记录自学自己定义GifView过程,具体解释属性那些事! [学习篇]> 关于自己定义GifView的,具体解说了学习过程及遇到的一些类的解释,然后 ...

  8. Vue-cli 多页相关配置记录

    Vue-cli 多页相关配置记录 搭建一个顺手的MPA项目脚手架,其实根据项目的不同目录结构和打包配置都可以进行灵活的调整.这次的项目可能是包含各种客户端和管理后台在一起的综合项目所以需要将样式和脚本 ...

  9. Android 环境搭建记录

    Android 环境搭建记录 官网 https://developer.android.com/ studio 下载地址 官方下载 jikexueyuanwiki 国内镜像 studio历史版本 安装 ...

随机推荐

  1. linux的bash特性

    Shell本身是应用程序,是用户与操作系统之间完成交互式操作的一个接口程序,为用户提供简化的操作. Bourne Again Shell,简称bash,是Linux系统中默认的shell程序. Bas ...

  2. 自制微擎AI面相识别算术阈值

    有时在朋友圈或其他地方会看到一些AI面相的分享链接或小程序,不是面相算命的有多吸引人,而是前面有"AI"两个字母.于是我就上网找了一下相关代码,发现了一个微擎系统的面相模块.下载下 ...

  3. SpringCloud学习第二章-SpringBoot

    SpringCloud 学习前提     SpringCloud是基于SpringBoot构建的,因此他延续了SpringBoot的契约模式以及开发方式.下面将讲到SpringBoot的构建方式. S ...

  4. SpringBoot2.x搭建SpringBootAdmin2.x

    1 说明 全部配置基于1.8.0_111 当前SpringBoot使用2.0.5 SpringBootAdmin基于Eureka进行Client发现,Eureka搭建参见SpringBoot2.x搭建 ...

  5. jmeter使用小结

    写这篇短文主要想详细介绍一下jmeter中取样器.逻辑控制器.前置处理器.后置处理器.定时器.配置元件等,可能看起来比较繁杂,其实里面很多操作是类似的,一篇总结和记录的博客: jmeter官方用户手册 ...

  6. Django 之 restframework 版本控制的使用以及源码分析

    Django rest_framework 之 版本控制 一.何为版本控制: ​ 用于版本的控制 二.内置的版本控制类: from rest_framework.versioning import Q ...

  7. 百度云人脸识别API人脸库管理

      from urllib import request import base64 import requests import re import json import urllib impor ...

  8. Python 字符集

    什么是字符? 1.在Python中,字符串中的内容都是字符. 2.什么是字符编码(encode)和字符集(charset)? 计算机只能识别数值,而字符不能识别,为了让计算机能处理字符,必须将字符和数 ...

  9. Linux-导入已安装的Linux系统

    之前在安装过一个Linux系统,由于重装电脑需要将之前安装的系统重新移动到VMWare中,让Linux系统能够重新运行起来,这样也省去了每次重新安装系统的麻烦. 废话不多说,咱们直接看是如何做? 1) ...

  10. python基础语法10 函数递归,模块,软件开发目录规范

    函数递归: 函数递归指的是重复 “直接调用或间接调用” 函数本身, 这是一种函数嵌套调用的表现形式. 直接调用: 指的是在函数内置,直接调用函数本身. 间接调用: 两个函数之间相互调用间接造成递归. ...