type
status
date
slug
summary
tags
category
icon
password
从谷歌拉取源码编译
写在前面:解锁AVB!!!!
刷自己编译的内核务必要解锁BL,解锁AVB。
谷歌tensor芯片有一个计数器,刷错次数太多永久变砖。所以一定要先解锁,先解锁,先解锁!!!
二者都会导致手机恢复出厂设置,最好拿到就开。
BL不用赘述,开启OEM之后,fastboot flash unlock即可。
解锁AVB:
提取线刷包中的vbmeta.img(位置同boot.img)在bootloader下刷写注意,在完成刷写后将会进入安全模式,提示系统以损坏,需要格式化系统以完成校验的禁用,所以建议拿到手机后立马关闭,省的以后关闭需要初始化而犯难。
恢复方法
原理:
查看FASTBOOT源码,可以发现其禁用验证的方法就是在vbmeta.img 偏移120的位置以小端序的方式读一个32bit的值,将其与1或运算以设置g_disable_verity ,与0x02之后设置g_disable_verification
也就是如果关闭两个的情况下此处值为(0011) = 3 。
Magisk免手动关闭验证刷入boot也是patch的这个位置。但magisk并不修改vbmeta.img本身,而是在boot.img中做了一些手脚让手机启动的时候加载boot.img中的魔改vbmeta.img。
所以如何判断是否已经真的关闭了,只要看一下vbmeta
通过
dd
命令读出vbmeta.img
查看120偏移位置的值如果为3即为关闭了。
因此对于联发科等手机来说,无需解锁bl就可以用量产工具刷机的,都可以直接用量产工具提取vbmeta.img,手动修改这个位置为3,之后用量产工具刷回去,就可以刷自定义的patched_boot.img了。
注意先安装依赖 不然后续可能导致找不到头文件
1.repo换源
‣
问题是,自己别装repo了,下载这玩意要么./运行,要么直接放到Path里,直接就是repo命令了。
随后可以直接repo init之类的
更新
repo的运行过程中会尝试访问官方的git源更新自己,如果想使用tuna的镜像源进行更新,可以将如下内容复制到
~/.bashrc
里2.repo init
在https://source.android.com/docs/setup/build/building-pixel-kernels中查看pixel6Pro的内核信息。
注意一定要看英文网站,中文网站更新缓慢信息错误。

如图,记住branches,和GKI Kernel版本。
新建一个工作目录
别急着同步仓库,这manifest下下来里面还是谷歌的网址,压根连不上
同步仓库
同步完没有的目录就是用不到。如果要用到的没有说明要用到的是错的,重新看教程吧。
3. 更新vendor ramdisk/Update the vendor ramdisk
从线刷包里面提取出来xxxx.zip,解压出来(和提取boot.img在一块的地方),有个
vendor_boot.img
解包这个就能得到ramdisk
拷贝到对应目录

如图,解包出来的文件时
ramdisk_
,把它拷贝到工作目录下,prebuilts后面这个img的位置。替换。4.编译

按照官方的说法来讲,pixel6和pro似乎也得用kleaf,实则是在放屁。刚我们刚看的那个表最新版本也不过
android13-5.10
,只要build_slider.sh就可以了。直接在工作目录
./build_slider.sh
就可以编译注意这样编译是使用了一些预编译的东西,来加快编译的速度,如果自己修改了某些东西,这样编译出来的东西反而和没改一样,不行。
BUILD_AOSP_KERNEL=1 ./build_slider.sh
这样就可以设置,从工作目录/aosp目录里的源码来编译。因为我们修改源码都是在aosp/目录里面修改的
5.内核修补启用CONFIG_BPF_KPROBE_OVERRIDE
只要修改配置文件,就可以改变这些CONFIG预设的开启/关闭
首先我们是直接使用了
build_slider.sh
进行编译的,这里面加载了配置文件,nano看一下就可以知道用到的是哪一个配置文件。
aosp/build.config.gki.aarch64
用配置工具进行配置
前面的CONFIG里面就写我们从nano看到的配置 后面是使用了config.sh这个配置工具,menuconfig是图形界面的配置。
按/之后,可以输入要修改的配置的名称,就能看到它依赖的东西,以及它所在的位置

确保这些全都是=y
exit,直接回车/随便输入一个文件名 退出这个配置工具。注意命令行输出。

可以看到这个配置工具,其实就是去修改了这个文件的内容而已。nano看一下内容,搜索

可见已经打开。
去aosp/目录,使用git commit提交一下(不用push),避免脏内核。这里配图是已经提交过的,如果是红色字就git add一下文件,然后commit。

如果不在git commit之后编译,则
git
会在内核版本字符串中附加一个“dirty”标志。这个标志表示当前源码树不是一个干净的状态,存在未提交的更改。例如:6.编译结果
按照我们上文所说的命令,注意一定要有这个环境变量AOSP这个写成1,才能把我们刚才在aosp文件夹做出来的修改给编译进去。
KernelSU不支持eadb开发,这里编译出来的内核只开了上面一个功能,没修补root。拿手机magisk修补一下root,刷入即可。
输出的结果存在于out/mixed/dist之中,只要boot.img,直接修补并刷入就可以。


- Author:Lynnette177
- URL:https://next.lynnette.uk/article/android_kernel_compile
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts