Pixel6 GKI 内核编译

news2024/9/22 21:35:06

前言

前段时间写了一篇关于pixel4 Android内核编译编译内核的流程。 但是随着Android版本的提升Google开始推崇GKI方式发内核模式,这种模式可以方便供应商剥离内核和驱动的捆绑性,官方抽象出一部分接口(GKI)提供给产生使用极大便利和解耦开发复杂性。
在pixel4 Android内核编译文章用了很多方式去解决内核校验问题,但是在Pixel6中这个得到缓解。

本文主要讲解一些自己一些心得和体会核心流程基于官方构建 Pixel 内核教程。

开始

本文使用pixel 6作为实验手机。

pixel 6是一个比较特殊的手机,因为刷入GKI内核需要额外需要从出厂镜像提取供应商镜像。(pixe 7不需要)。

根据官网介绍 pixel6 支持以下GKI内核版本。
在这里插入图片描述
本文使用android14-gs-pixel-6.1 作为内核版本。

下载出厂镜像

我们根据文档需要先下载AP1A.240505.004 (11583682)这个版本出厂完整镜像。镜像下载地址
下载后解压后如下文件树。你可以注意到里面有一个flash-all.sh。这个脚本用于刷一个完整出厂镜像到手机上。

tree ./
./
├── abl.img
├── android-info.txt
├── bl1.img
├── bl2.img
├── bl31.img
├── boot.img
├── bootloader-oriole-slider-1.3-11403664.img
├── d3m2.ec.bin
├── dtbo.img
├── evt.ec.bin
├── fastboot-info.txt
├── flash-all.bat
├── flash-all.sh
├── flash-base.sh
├── gsa.img
├── image-oriole-ap1a.240505.004.zip
├── ldfw.img
├── modem.img
├── pbl.img
├── product.img
├── proto11.ec.bin
├── pvmfw.img
├── radio-oriole-g5123b-130914-240205-b-11405587.img
├── super_empty.img
├── system_ext.img
├── system.img
├── system_other.img
├── tzsw.img
├── vbmeta.img
├── vbmeta_system.img
├── vbmeta_vendor.img
├── vendor_boot.img
├── vendor_dlkm.img
└── vendor.img

0 directories, 34 file

为了方便不出错(在pixel4 就因为bootloader低版本问题踩过坑)建议将pixel 刷一次这个出厂镜像(称为底包),手机重启bootloader后执行./flash-all.sh即可。

接着我们需要下载对应内核分支源码

repo init -u https://android.googlesource.com/kernel/manifest -b android14-gs-pixel-6.1
repo sync -c --no-tags

上面的命令会下载好内核源码,接着接着我们需要拷贝出厂镜像一些东西到内核源码中。

提取出厂镜像部分文件到内核源码

这一步官方提供详细步骤不在演示
在这里插入图片描述

修改内核(可选)
这里根据你的需求修改源码,这里我们修改一个文件关闭经syscall会调用的函数flip_close
在这里插入图片描述
代码比较简单只是加了一句打印

编译内核
执行命令如下:

tools/bazel run --config=fast --config=stamp //private/google-modules/soc/gs:slider_dist

执行完成后会在out输出各种镜像文件和驱动。

 tree out/slider/dist/
out/slider/dist/
...
├── vendor-bootconfig.img
├── vendor_boot.img
├── vendor_dlkm.img
├── vendor_boot.img
...

0 directories, 263 files

刷入内核
重启手机进入bootloader模式然后无脑键入一下命令即可完成刷入

fastboot oem disable-verification

fastboot flash boot        out/slider/dist/boot.img
fastboot flash dtbo        out/slider/dist/dtbo.img
fastboot flash vendor_boot out/slider/dist/vendor_boot.img
fastboot reboot fastboot
fastboot flash vendor_dlkm out/slider/dist/vendor_dlkm.img

重启可以看到你DIY的系统。

root并查看修改是否生效(可选)
由于刷的底包并没有root权限,这里你可以有多种方式开启root去查看上面我们添加的内核日志。
这里我采用magisk方式举例:
Magisk构建产物地址
下载安装Magisk.apk到手机
在这里插入图片描述
out/slider/dist/boot.img传入手机存储中
如:

adb push out/slider/dist/boot.img /sdcard

打开magisk修补boot.img
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

提取修补好的boot.img并刷入手机

adb reboot bootloader
# 建议先试用是否有用再刷入
# fastboot boot xxx.img 临时使用xxx.img引导系统启动,下次启动失效。用于测试
fastboot flash boot xxx.img

键入下面的命令查看内核日志输出

adb shell 
su 
dmesg

在这里插入图片描述

参考

官方构建 Pixel 内核教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1938596.html

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

相关文章

python-爬虫实例(1):获取京东商品评论

目录 前言 道路千万条,安全第一条 爬虫不谨慎,亲人两行泪 获取京东商品评论信息 一、实例示范 二、爬虫四步走 1.UA伪装 2.获取Url 3.发送请求 4获取响应数据进行解析并保存 总结 前言 道路千万条,安全第一条 爬虫不谨慎,亲…

【BUG】已解决:AttributeError: ‘str‘ object has no attribute ‘get‘

已解决:AttributeError: ‘str‘ object has no attribute ‘get‘ 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识&#xff0c…

JVM中的GC流程与对象晋升机制

JVM中的GC流程与对象晋升机制 1、JVM堆内存结构2、Minor GC流程3、Full GC流程4、总结 💖The Begin💖点点关注,收藏不迷路💖 在Java虚拟机(JVM)中,垃圾回收(GC)是自动管…

Let’s Encrypt申请证书流程(附带问题解决方式)

文章目录 前言Let’s Encrypt 和 OpenSSL的区别文章相关 正文1、安装snapd2. 使用snapd安装certbot3. 生成证书(需要指定nginx)5. Nginx.conf的配置 问题1、error: system does not fully support snapd原因解决方式 2、The error was: PluginError(‘Ng…

宠物医院管理系统视频介绍

千呼新零售2.0系统是零售行业连锁店一体化收银系统,包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体,线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货、宠物等连锁店使用。 详细介绍请…

实现给Nginx的指定站点开启目录浏览功能

一、问题描述 需要实现在浏览器上可以浏览Nginx部署网站内容并下载一些常用的软件安装包、文件资料等内容;并且针对一些文件夹或内容需要进行认证后才能查看;有一些格式类型的文件也不能够访问查看。 二、问题分析 1、实现浏览器上可以浏览下载文件内容; 2、针对一些文件…

H3CNE(计算机网络的概述)

1. 计算机网络的概述 1.1 计算机网络的三大基本功能 1. 资源共享 2. 分布式处理与负载均衡 3. 综合信息服务 1.2 计算机网络的三大基本类型 1.3 网络拓扑 定义: 网络设备连接排列的方式 网络拓扑的类型: 总线型拓扑: 所有的设备共享一…

继承和多态(下)

目录 1.多态 2.多态成立的条件 虚函数重写: 虚函数重写的两个例外 3.override 和 final 4.重载,重定义(隐藏)和重写 5.抽象类 接口继承和实现继承 6.多态的原理 虚函数表 多态的原理 动态绑定和静态绑定 7.单继承虚表…

C语言高校人员管理系统

该系统使用easyx插件。 以下是部分页面 以下是部分源码&#xff0c;需要源码的私信 #define _CRT_SECURE_NO_WARNINGS 1//vs的取消报警 #include<easyx.h> #include<stdio.h> #include<stdlib.h>#define width 1280 #define height 840 #define font_w 35 …

《样式设计002:tab切换与底部swiper滑动块》

描述&#xff1a;在开发小程序过程中&#xff0c;发现一些不错的案例&#xff0c;平时使用也比较多&#xff0c;稍微总结了下经验&#xff0c;以下内容可以直接复制使用&#xff0c;希望对大家有所帮助&#xff0c;废话不多说直接上干货&#xff01; 一、tab切换与底部swiper滑…

AD9826 spi读写源码贡献

AD9826是一款专为成像应用设计的模拟信号处理器&#xff0c;它采用三通道架构&#xff0c;设计用于对三线彩色CCD阵列的输出进行采样和调理。这款处理器集成了多个关键功能组件&#xff0c;包括输入箝位电路、相关双采样器(CDS)、偏移DAC和可编程增益放大器(PGA)&#xff0c;并…

新手小白的pytorch学习第八弹------分类问题模型和简单预测

目录 1 启动损失函数和优化器2 训练模型创建训练和测试循环 3 预测和评估模型 这篇是接着新手小白的pytorch学习第七弹------分类问题模型这一篇的&#xff0c;代码也是哟~ 1 启动损失函数和优化器 对于我们的二分类问题&#xff0c;我们经常使用 binary cross entropy 作为损…

秋招突击——7/19——队列同步器AQS学习

文章目录 引言基础知识简介AQS接口和示例第一类&#xff1a;访问和修改同步状态的方法第二类&#xff0c;5个重写的方法第三类&#xff0c;9个模板方法 队列同步器实现原理同步队列独占式同步获取和释放共享式同步获取和释放独占式同步获取和释放 相关面试题怎么理解Lock和AQS的…

如何解决热插拔时的电压过冲

摘要 热插拔是指将上电电压源连接到电子器件的输入电源或电池连接器。热插拔产生的电压瞬态尖峰会损坏器件内部的集成电路。该文解释了此类电压瞬变的根本原因&#xff0c;并提供了防止这些瞬变损坏电子产品中的集成电路(IC) 的可能设计。 1 引言 当将高于 5V 的 USB 适配器…

达梦数据库的系统视图v$dmwatcher

达梦数据库的系统视图v$dmwatcher 查询当前登录实例所对应的守护进程信息&#xff0c;注意一个守护进程可以同时守护多个组的实例&#xff0c;因此查询结果中部分字段&#xff08;N_GROUP、SWITCH_COUNT&#xff09;为守护进程的全局信息&#xff0c;并不是当前登录实例自身的…

BUUCTF - Web - 1

文章目录 1. [极客大挑战 2019]EasySQL 1【SQL注入-万能密码】2. [极客大挑战 2019]Havefun 1【前端代码审计-注释泄漏】3. [HCTF 2018]WarmUp 1【PHP代码审计】4. [ACTF2020 新生赛]Include 1【PHP伪协议】5. [ACTF2020 新生赛]Exec 1【命令注入-基础】6. [GXYCTF2019]Ping Pi…

张量网络碎碎念:CGC

在本系列 上一篇文章 中&#xff0c;我介绍了张量网络的一些基础概念。其中很大一部分来自 github 上一个教程。事实上&#xff0c;该教程的大部分内容来自 e3nn 官网。 除了上篇文章介绍的一些可视化技巧&#xff0c;官网还提供了其他一些可视化模块。使用这些功能能使我们更深…

windows USB 设备驱动开发-开发Type C接口的驱动程序(三)

编写 USB Type C 端口控制器驱动程序 如果 USB Type-C 硬件实现 USB Type-C 或电源传送 (PD) 物理层&#xff0c;但未实现供电所需的状态机&#xff0c;则需要编写 USB Type-C 端口控制器驱动程序。 在 Windows 10 版本 1703 中&#xff0c;USB Type-C 体系结构已得到改进&am…

云监控(华为) | 实训学习day5(10)

Gaussdb安装和连接idea GaussDB的安装 首先关闭防火墙 systemctl disable firewalld.service 永久关闭防火墙&#xff08;发生在下次启动&#xff09; systemctl stop firewalld.service 关闭本次防火墙 查看防火墙状态systemctl status firewalld.service 查询的状态是Dead表…

【算法】百钱买百鸡问题算法详解及多语言实现

问题描述 百钱买百鸡问题是一个经典的数学问题&#xff0c;题目要求用100文钱买100只鸡&#xff0c;公鸡5文钱一只&#xff0c;母鸡3文钱一只&#xff0c;小鸡3只一文钱&#xff0c;问公鸡、母鸡、小鸡各买多少只&#xff1f; 目录 问题描述​编辑 解决方案 Python实现 Ja…