Build LineageOS for pixel6
Build LineageOS for pixel6
LineageOS 是一个基于 Android 的开源操作系统,以其高度的定制性、安全性和隐私保护而闻名。它起源于著名的 CyanogenMod 项目,并在 2016 年重组后继续发展,目前已经成为拥有庞大用户群和活跃开发者社区的开源项目。本节的内容是关于给pixel6 编译LineageOS,在参照lineageOS 官网的编译流程 https://wiki.lineageos.org/devices/raven/build/ 并不能很顺利的编译,会碰各种各样的错误。
首先按照lineageOS 官网build 文档搭建对应的环境,比如所需的python 环境,Java 环境等,还有一些依赖库,这里要注意的是python 必须是3.8 版本,不然在执行breakfast 会报错。
1 |
|
然后同步源码,之后拉取要编译设备的配置文件和内核文件。
1 |
|
这里在执行breakfast 的时候,会出现vendor/google/raven/raven-vendor.mk does not exit...
错误。
这是由于没有vendor blob 的原因,在官方文档中有说明这一点
其实如果把lineageOS不同设备的编译文档都看一遍,lineageOs 对于不同的设备来说,其实基础源码库都是相同的,不同的点在于下载vender device 对应的vendor 代码。要解决breakfast 的问题,需要从lineageOS 设备中提取专有的blob,官方的解决办法如下: https://wiki.lineageos.org/extracting_blobs_from_zips , 官网中提供了三种办法来提取专有的blob,我尝试了重lineageOS 安装包中提,编译的过程中会出现很多的错误,虽然不断修正错误,但依旧于事无补。
在这里找到了直接同步设备vendor的办法: https://gist.github.com/fourkbomb/261ced58cd029c5f7742350aafdd9825 。
从 https://github.com/TheMuppets/manifests/blob/lineage-21.0/muppets.xml 获取到raven/vendor,然后加入到 .repo/local_manifests/roomservice.xml
重新同步一下代码 repo sync
现在执行breakfast raven
解决完 vendor blob 的问题后,基本上编译不会出其他的问题了,编译一路畅通。
1 |
|
最后将编译出来的产物直接刷入到设备中即可。
我还尝试将pixel 6P 编译出来的Kernelsu 镜像单独刷入到LineageOS 中,系统没有出现其他的异常,可能得益于GKI ,android官方的boot.img 和 lineageOS 编译出来的boot.img 是通用的。
这里需要说明一下,GKI(通用内核)推出后,部分设备的内核和Android的源码库可以分离、单独编译内核和系统。不过Lineage还是放一起的,比如在pixel 6P 中,内核和系统源码已经分离了,在pixel 5中内核代码和系统源码还是在一起的,对pixel 内核有定制化需求的可以直接使用lineageOS。