在寻找高版本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. Android P(9.0) userdebug版本执行adb remount失败

    [DESCRIPTION]      在android P版本上如果按照“FAQ18076 android 6.0 M userdebug版本执行adb remount失败”的做法在userdebug ...

  2. Python数据预处理之清及

    使用Pandas进行数据预处理 数据清洗中不是每一步都是必须的,按实际需求操作. 内容目录 1.数据的生成与导入 2.数据信息查看 2.1.查看整体数据信息 2.2.查看数据维度.列名称.数据格式 2 ...

  3. idea git提交代码步骤(转载)

    参考一: https://blog.csdn.net/u013452337/article/details/79956604

  4. NumPy 之 存储文件和线性代数

    import numpy as np File Input and Output NumPy is able to save and load data to and from disk either ...

  5. Java httpclent请求httpclentUtils工具类

    第一种写法: import java.io.IOException; import java.io.InterruptedIOException; import java.io.Unsupported ...

  6. 【Nginx】使用certbot安装免费https证书使Nginx支持Https请求

    certbot官网:https://certbot.eff.org/lets-encrypt/centosrhel7-nginx 一.安装步骤 1)安装certbot,执行  sudo yum ins ...

  7. Linux运维技术之LVM(逻辑卷管理)

    DM :逻辑设备(模块)--->LVM 优点: 个分区) 2.1.partprobe  /dev/sdb : 使用partprobe可以不用重启系统即可配合fdisk工具创建新的分区 2.2.c ...

  8. 《快活帮》第九次团队作业:【Beta】Scrum meeting 2

    项目 内容 这个作业属于哪个课程 2016计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十三 团队作业9:BETA冲刺与团队项目验收 团队名称 快活帮 作业学习目标 (1)掌 ...

  9. ModelMetadataProviders 获取类型元数据

    var aa = ModelMetadataProviders.Current.GetMetadataForType(null, typeof(LogModel)).Properties;

  10. C# Chart 曲线(多曲线展示)

    //绑定显示曲线数据(Chart控件名:) //X轴标题 this.CurveChart.ChartAreas["ChartArea1"].AxisX.Title = " ...