oneplus6总结记录-Lineage19.1-android12

news2024/11/14 19:04:32

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

解决思路

修改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.coloradmin.cn/o/2240352.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习笔记——PLCT:milk-v duo(持续更新)

买板子 官方标配有可能是单板&#xff08;如下图&#xff09;无工具包&#xff0c;记得买之前问一下客服。

Kubernetes-ArgoCD篇-01-简介

1、什么是Argo CD Argo CD 是针对 Kubernetes 的声明式 GitOps 持续交付工具。 Argo CD官方文档地址&#xff1a;https://argo-cd.readthedocs.io Argo CD源码地址&#xff1a;https://github.com/argoproj/argo-cd 1.1 关于Argo Argo是一个开源的项目&#xff0c;主要是扩…

【Python】轻松实现机器翻译:Transformers库使用教程

轻松实现机器翻译&#xff1a;Transformers库使用教程 近年来&#xff0c;机器翻译技术飞速发展&#xff0c;从传统的基于规则的翻译到统计机器翻译&#xff0c;再到如今流行的神经网络翻译模型&#xff0c;尤其是基于Transformer架构的模型&#xff0c;翻译效果已经有了质的飞…

父子线程间传值问题以及在子线程或者异步情况下使用RequestContextHolder.getRequestAttributes()的注意事项和解决办法

用到的工具类&#xff1a; Slf4j Configuration Lazy(false) public class SpringContextUtil{public static HttpServletRequest getRequest() {ServletRequestAttributes servletRequestAttributes (ServletRequestAttributes) RequestContextHolder.getRequestAttributes()…

FRTC8563实时时钟芯片的作用

FRTC8563是NYFEA徕飞公司推出的一款实时时钟芯片&#xff0c;采用SOP-8封装形式。这种封装形式具有体积小、引脚间距小、便于集成等特点&#xff0c;使得FRTC8563能够方便地应用于各种电子设备中&#xff0c;如&#xff1a;安防摄像机、监控摄像机、行车记录仪、车载电子等。 F…

怎么样绑定域名到AWS(亚马逊云)服务器

1&#xff0c;拿着你买的域名去亚马逊申请一个证书。申请证书分两种&#xff0c;一种是去亚马逊后台填域名手动申请 &#xff0c;另一种是通过API来申请&#xff0c;类似如下代码&#xff1a; 2、证验证书。有两种方式&#xff1a;一种是通过邮件&#xff0c;另一种去到域名提供…

从0开始深度学习(28)——序列模型

序列模型是指一类特别设计来处理序列数据的神经网络模型。序列数据指的是数据中的每个元素都有先后顺序&#xff0c;比如时间序列数据&#xff08;股票价格、天气变化等&#xff09;、自然语言文本&#xff08;句子中的单词顺序&#xff09;、语音信号等。 1 统计工具 前面介绍…

边缘计算在工业互联网中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 边缘计算在工业互联网中的应用 边缘计算在工业互联网中的应用 边缘计算在工业互联网中的应用 引言 边缘计算概述 定义与原理 发展…

蓝桥杯——杨辉三角

代码 package day3;public class Demo2 {public static void main(String[] args) {// TODO Auto-generated method stub// for (int i 0; i < 10; i) {// for (int j 0; j < 10; j) {// System.out.print("外&#xff1a;"i"内&#xff1a;&qu…

uniapp中多角色导致tabbar过多的解决方式

由于项目时间较紧张&#xff0c;找了很多却没找到特别合适的方法&#xff0c;最后使用了此方式。 一、自己封装tabbar组件 这里就不介绍怎么封装了&#xff0c;先说一下缺点&#xff1a; 1.跳转会有白屏问题&#xff08;并且搜了好多资料以及查看官网发现没有特别合适的方法…

【JVM】关于JVM的内部原理你到底了解多少(八股文面经知识点)

前言 &#x1f31f;&#x1f31f;本期讲解关于HTTPS的重要的加密原理~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那么废话不…

机器学习 ---模型评估、选择与验证(1)

目录 前言 一、为什么要有训练集与测试集 1、为什么要有训练集与测试集 2、如何划分训练集与测试集 二、欠拟合与过拟合 1、什么是欠拟合与欠拟合的原因 2、什么是过拟合与过拟合的原因 一些解决模型过拟合和欠拟合问题的常见方法&#xff1a; 解决过拟合问题&#…

第74期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以找…

SpringBoot(八)使用AES库对字符串进行加密解密

博客的文章详情页面传递参数是使用AES加密过得,如下图所示: 这个AES加密是通用的加密方式,使用同一套算法,前端和后端都可以对加密之后的字符串进行加密解密操作。 目前线上正在使用的是前端javascript进行加密操作,将加密之后的字符串再传递到后端,PHP再进行解密操作。…

JavaScript逆向爬虫教程-------基础篇之JavaScript密码学以及CryptoJS各种常用算法的实现

目录 一、密码学介绍 1.1 为什么要学密码学?1.2 密码学里面学哪一些 二、字符编码三、位运算四、Hex 编码与 Base64 编码 4.1 Hex 编码4.2 Base64 编码 五、消息摘要算法 5.1 简介5.2 JS中的MD5、SHA、HMAC、SM3 六、对称加密算法 6.1 介绍6.2 加密模式和填充方式6.3 CryptoJ…

《实时流计算系统设计与实现》-Part 2-笔记

做不到实时 做不到实时的原因 实时计算很难。通过增量计算的方式来间接获得问题的&#xff08;伪&#xff09;实时结果&#xff0c;即使这些结果带有迟滞性和近似性&#xff0c;但只要能够带来尽可能最新的信息&#xff0c;那也是有价值的。 原因可分成3个方面&#xff1a; …

gdb调试redis。sudo

1.先启动redis-server和一个redis-cli。 2.ps -aux|grep reids查看redis相关进程。 3.开始以管理员模式附加进程调试sudo gdb -p 2968.注意这里不能不加sudo&#xff0c;因为Redis 可能以 root 用户启动&#xff0c;普通用户无法附加到该进程。否则就会出现可能下列情形&#…

长连接配置以及断线重连

目录 长连接index 主要进行连接 import SockJS from "sockjs-client"; import Stomp from "stompjs"; import { notification } from "antd"; // 网络请求API import { nowApiAddressObj } from "../api/nowApiAddressObj";// 工具 i…

LeetCode【0054】螺旋矩阵

本文目录 1 中文题目2 求解方法&#xff1a;数学模拟2.1 方法思路2.2 Python代码2.3 复杂度分析 3 题目总结 1 中文题目 给定一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例&#xff1a; 提示&#xff1a; 1 ≤ m …

万字长文解读深度学习——训练(DeepSpeed、Accelerate)、优化(蒸馏、剪枝、量化)、部署细节

&#x1f33a;历史文章列表&#x1f33a; 深度学习——优化算法、激活函数、归一化、正则化深度学习——权重初始化、评估指标、梯度消失和梯度爆炸深度学习——前向传播与反向传播、神经网络&#xff08;前馈神经网络与反馈神经网络&#xff09;、常见算法概要汇总万字长文解读…