当前位置: 首页 > article >正文

oneplus6总结记录-Lineage19.1-android12

本文只是自用笔记、备忘、…

解决思路

修改linux内核的rootfs的某个必然会被执行的脚本 以监控android启动进度

我自编译的LineageOS-19.1 内核启动正常、卡在LineageOS弧形图标(android门口)

由于我不太熟悉android源码,

因此最容易办法是 修改linux内核启动后的第一个进程之后的根文件系统rootfs中的某个必然会被执行的脚本,

在其中增加类似监控的脚本 并将结果日志写入sd卡文件,该脚本自身必须具备侦测当前启动阶段、确保自身只能有一份运行,

因为 android不能正常启动,所以无法从外部操作手机,而该监控脚本相当于是从外部操作手机的

失败记录

增加android服务失败(对android源码不熟悉)

试图增加android服务,

重新编译、手机启动到android卡住界面,

重启到fastboot、到twrp ,

twrp的adb查看手机sd卡中 vendor/myLogScript.sh 都没有 ,更不用说脚本运行了,

充分说明 对android源码不熟悉的问题, 应该修改linux内核的rootfs的某个必然会被执行的脚本 以监控android启动进度,更容易

https://github.com/LineageOS/android_system_core.git : /app4/lineage19_oneplus6/system/core
/app4/lineage19_oneplus6/system/core/libcutils/fs_config.cpp
/app4/lineage19_oneplus6/system/core/rootdir/init.rc

https://github.com/TheMuppets/proprietary_vendor_oneplus.git /sdm845-common: /app4/lineage19_oneplus6/vendor/oneplus/sdm845-common
/app4/lineage19_oneplus6/vendor/oneplus/sdm845-common/sdm845-common-vendor.mk
/app4/lineage19_oneplus6/vendor/oneplus/sdm845-common/myLogScript.sh

问题

1. oneplus6主板电路可能有不同版本

不充分的理由是 LineageOS官方OTA包(16.1, 17.1)在此oneplus6设备上启动变砖(应该是内核崩溃), 而LineageOS-17.1也应该有其存在用途(旧版电路主板的oneplus6)


  • Lineage-17.1(android10) 启动变砖: 下载网页/lineage-17.1-20210420-nightly-enchilada-signed.zip

这说明 该OTA包中的vendor、设备树 可能是针对 前一期的oneplus6,

由此可知 一加厂商 销售的 oneplus6 的电路板 并不统一 可能存在后续更新,

因此才造成LineageOS-17.1中的旧设备树 在我这台oneplus6设备上 内核崩溃

2. LineageOS也并非全开源,其构建过程被其隐藏


OTA包LineageOS-19.1-nightly-enchilada.zip正常启动手机,但并未提供构建过程,

使用LineageOS19.1编译出的OTA包LineageOS-19.1-enchilada-UNOFFICIAL.zip内核启动正常但卡在android门口(LineageOS的弧形LOGO)

由此猜测 LineageOS的OTA的编译过程中有更多设置是隐藏的 不愿提供的

后续比对我编译的OTA包(内核正常启动、卡在android门口)和同版本LineageOS提供的正常OTA包, 会进一步验证此猜测

步骤

1. oneplus6线刷

oneplus6 线刷包(android9)

  • 主 OnePlus6-brick-enchilada_22_K_52_210716_repack-HOS-10_0_11.zip/readme.md

  • 备 enchilada_22_K.52_210716_repack–HOS-10.0.11.zip/readme.md

2. oneplus6手机root

oneplus6 APatch-root.md

Magisk不支持自定义/system/bin/su路径?而APatch支持

3. 放弃oneplus官方伪开源,选择支持更多设备的LineageOS

既然 oneplus官方开源是伪的、毫无优势,那么何必拘泥于该厂商?不如选择支持更多这类设备的LineageOS

当然LineageOS也并非全开源,其构建过程也是自有隐藏的问题/2


oneplus官方伪开源 OnePlus Open Source Software,

oneplus官方明确声明自oneplus3t起, 不再发布linux内核设备树,

至此oneplus其实也只比小米等厂商多一个优势: 更容易解锁bootloader的优势而已

oneplus和小米等设备的 vendor驱动 、设备树 都只能 从其真机或已验证正常的OTA包中提取设备树

比如 vendor驱动仓库 OnePlusOSS/android_vendor_oneplus_SDM845.git 提供的是二进制文件

4. oneplus6正常刷入、正常启动的Lineage-OTA包LineageOS-[19.1,20.0,21.0].nightly-enchilada-signed.zip

既然LineageOS官方OTA包(16.1, 17.1)在此oneplus6设备上启动变砖(崩溃),那么我自己编译这两版本肯定也是结果相同的

因此 自己编译应该选择LineageOS(19.1,20.0,21.0),不要选择LineageOS(16.1, 17.1)


  • Lineage-16.1(android9) TODO

  • Lineage-17.1(android10) 启动变砖: 下载网页/lineage-17.1-20210420-nightly-enchilada-signed.zip

  • Lineage-18.1(android11) 启动变砖: 下载网页/lineage-18.1-20220421-nightly-enchilada-signed.zip

  • Lineage-19.1(android12) 正常进android: 下载网页/lineage-19.1-20221227-nightly-enchilada-signed.zip

  • Lineage-20.0(android13) 正常进android: 下载网页/lineage-20.0-20240214-nightly-enchilada-signed.zip

  • Lineage-21.0(android14) 正常进android: 下载页面/lineage-21.0-20241106-nightly-enchilada-signed.zip

  • Lineage-22.1(android15) TODO

参考1 oneplus6-lineage-ota.md

5. LineageOS-19.1 编译(启动内核崩溃)

sdm845(oneplus6)的启动漰溃ramdump被提交3e7f37解析-内核启动日志报错(空指针、Oops)

6. qualcomm的ramdump抓取(串口900E端口)

ramdump日志获取正常: sketch–qualcomm-QXDM-QPST-boot_stuck_log.md#qpst-get-ramdump-log

7. qualcomm的ramdump解析(linux内核启动控制台日志表明可能是vendor驱动错)

ramdump解析正常(拿到linux内核崩溃日志): lineage-17.1/ramdump-parse.md

8. LineageOS-19.1(官方)OTA包解开(payload.bin解包、system.img挂载、vendor.img挂载)与TheMuppets/proprietary_vendor_oneplus.git/sdm845-common作文件列表md5sum比对(补全后者PRODUCT_COPY_FILES少复制文件后,则我自编译19.1内核启动正常,但卡在LineageOS弧形图标即android门口)

vendor提取: lineage-17.1–otaExtractVendor-19.1-Official/vendor-extract/OTA-payload.bin-extract–oneplus6-LineageOS16.1.md

vendor比较:lineage-17.1–otaExtractVendor-19.1-Official/otaOfficialVentor-compare-to-TheMuppets----proprietary_vendor_oneplus-sdm845Common/compare.md

修复内核崩溃,
TheMuppets/proprietary_vendor_oneplus.git不缺少文件,只是 编译过程 TheMuppets/proprietary_vendor_oneplus.git : vendor/oneplus/sdm845-common/sdm845-common-vendor.mk 的 PRODUCT_COPY_FILES 少复制了一些文件

9. LineageOS-19.1(官方)OTA包和我自编译OTA包 作 目录树扩展名统计比对(发现差异)

比较目录树扩展名统计结果文件 bcompare <(curl https://gitlab.com/oneplus6_enchilada/wiki/-/raw/dev/lineage-17.1--otaExtractVendor-19.1-Official/vendor-extract/Sys_imgMntD_tree_extendAggregate.txt) <(curl https://gitlab.com/oneplus6_enchilada/wiki/-/raw/dev/lineage-17.1--otaExtractVendor-19.1-My/vendor-extract/Sys_imgMntD_tree_extendAggregate.txt) 得到差异

  1. OTA包/:payload.bin:/system.img:/system/apex/x.apex : 我未展开 而 官展开

我自编译OTA包的比如com.android.adbd.apex是未展开的单独文件,

而官方OTA包的比如com.android.adbd是展开的目录

…更多差异待分析


http://www.kler.cn/a/389682.html

相关文章:

  • MySQL:CRUD
  • Gsensor加速度传感器数据异常及概率性卡死
  • DApp开发:定制化解决方案与源码部署的一站式指南
  • kafka消费数据太慢了,给优化下
  • 【知识科普】SPA单页应用程序介绍
  • 【vue2.0入门】vue单文件组件
  • 密码学的基本原理
  • [ARM-2D 专题]6.脏矩形定义的宏使用技巧和分析
  • node.js电子发票(铁路电子客票)查验接口,让您的企业报销流程更顺畅
  • Java List——针对实习面试
  • 【Java多线程】线程安全及解决方案(详解)
  • monkey-安卓稳定性测试
  • Web3 游戏周报(11.03 - 11.09)
  • springboot苍穹外卖实战:十一:复盘总结
  • 除草机器人算法以及技术详解!
  • Debezium日常分享系列之:异步 Debezium 嵌入式引擎
  • 【计算机图形学】3DIT的训练数据总结
  • 问:说说Spring中构造函数注入和Setter注入的区别?
  • Maven 中央仓库地址 mvnrepository.com
  • Maven从浅入深(理解篇)
  • K8S之Prometheus 部署(二十)
  • 《实时流计算系统设计与实现》-Part 1-笔记
  • 算法每日双题精讲——滑动窗口(长度最小的子数组,无重复字符的最长子串)
  • FreeRTOS学习11——时间片任务调度
  • 基于多设计模式下的同步异步日志系统
  • C0028.在Clion中快速生成头文件中声明的函数的方法