从LineageOS安装zip文件中提取专有blobs¶
下载 LineageOS installation package 中的安装zip包:
mkdir ~/android/system_dump/
cd ~/android/system_dump/
wget https://mirrorbits.lineageos.org/full/flame/20231026/lineage-20.0-20231026-nightly-flame-signed.zip
我不太确定下载的安装包zip是 Extracting proprietary blobs from LineageOS zip files 哪种类型的zip,不过我看到这个zip文件解压缩后有 payload_properties.txt
和 payload.bin
,所以我推测为需要 Extracting proprietary blobs from payload-based OTAs
安装
payload.bin
(这个文件有 1.1G 大小)解压缩工具:
apt-get install python3-protobuf
备注
python3-protobuf
这个模块是用来处理 Protocol Buffers (Protobuf) (Google的数据交换格式),这个数据格式通过二进制方式可以极大提升数据交换性能
创建使用
payload.bin
解压缩工具所需的repo仓库:
git clone https://github.com/LineageOS/android_tools_extract-utils android/tools/extract-utils
git clone https://github.com/LineageOS/android_system_update_engine android/system/update_engine
从
lineage-*.zip
文件的payload.bin
中提取.img
文件:
python3 ~/android/tools/extract-utils/extract_ota.py lineage-20.0-20231026-nightly-flame-signed.zip
提取后在当前目录下会有如下
.img
文件需要挂载到system
目录下:
mkdir system/
sudo mount -o ro system.img system/
sudo mount -o ro vendor.img system/vendor/
# 这个 odm.img 没有找到
sudo mount -o ro odm.img system/odm/
sudo mount -o ro product.img system/product/
sudo mount -o ro system_ext.img system/system_ext/
然后执行
extract-files.sh
提取 blobs:
~/android/lineage/device/google/flame/extract-files.sh ~/android/system_dump/
上述命令会指示 extract-files.sh
脚本从指定目录下挂载的 system dump 提取 blobs ,而不是连接的设备
完成后就可以移除挂载并删除不需要的文件:
sudo umount -R ~/android/system_dump/system/
rm -rf ~/android/system_dump/