给 Pixel6 构建 LineageOS 21.0
封面:Pixiv@わろじく
之前已经构建过一次了,但没有写blog记录,现在记录一下从头开始,给Pixel6 构建基于 Android14 的 LineageOS
准备
按照官方文档 https://wiki.lineageos.org/devices/oriole/build/ 进行操作,这里选择Ubuntu20.04进行操作,避免环境上的更多问题,反正就是 apt 安装环境然后配置,repo之类的可以配置一下镜像
拉取代码
把文档修改成要拉取的分支lineage-21.0,改成清华源
1 | |
然后参考清华源的文档https://mirrors.tuna.tsinghua.edu.cn/help/lineageOS/修改 xml 文件
然后同步代码
1 | |
就可以漫长等待了
准备专有二进制
拉取完代码后,继续按照 LineageOS 文档操作
1 | |
这个步骤貌似没走镜像,建议开着代理。然后就会收到报错
这时候你需要一台运行着 LineageOS 的手机,或者找 LineageOS 刷机包解出来。很遗憾的是,LineageOS 不对旧版本刷机包提供存档,只能找别人收集的 https://lineage-archive.timschumi.net/#oriole。我这里用的是lineage-21.0-20241223-nightly-oriole-signed.zip
没有extract-files.py,刷机包只有payload.bin,因此按照https://wiki.lineageos.org/extracting_blobs_from_zips_manually#extracting-files-from-payload-based-otas来提取
然后就会发现行不通,妈的怎么文档不一样了 https://github.com/LineageOS/lineage_wiki/commit/0c60a8a6bc6b9321185be6e54ffa0c815b32991e
反正就是挂载system.img到system/,然后尝试把剩下其他的 img 挂载到system/里面,能挂载的都挂载上,不能挂载就算了
然后到~/android/lineage/device/google/oriole下面运行
1 | |
然后包出问题的
解出来的包并没有bootloader-*.img的文件,搜索发现abl.img、bl1.img、bl2.img等已经是解出来的。查看extract_files.sh文件,可以发现里面调用了prepare-firmware.sh,里面调用 fbpacktool 解包 bootloader,因此可以直接把这行注释掉。文件路径如下
1 | |
重新运行
1 | |
然后
1 | |
开始构建
按照文档
1 | |
当然不会这么顺利
发生了些冲突
在~/android/lineage/device/google/raviole/oriole/proprietary-files-vendor.txt里,可以看到发生了变更,这是前面extract-files.sh导致的
经过分析,可以通过在~/android/lineage/device/google/raviole/oriole/skip-files-vendor.txt添加上运行extract-files.sh要排除的文件
1 | |
然后重新运行
1 | |
再重新运行
1 | |
我配置 24G RAM + 24G SWAP,仍然有爆内存的情况
后面修改成 24 + 48 终于没爆了,推荐 64GB 内存编译
然后等就是了
最后构建出来的刷机包在~/android/lineage/out/target/product/oriole下面
测试
然后这一步应该清数据刷入真机测试一下的,懒得测了