编译OrangeFox之一

作者 : Iseri Nina

接上文,在此之后研究起了如何大改文石系统,在咸鱼上挂了个刷机服务。

而文石的系统及Recovery均有反回滚设计,就算你拿到了上几个版本的upx,解密为update.zip也并没有用。

什么是防回滚保护?

防回滚保护是 Android 8.0 新增的一项功能,目的是为防止将系统回退到有安全漏洞的版本。

当升级有防回滚保护的系统版本,如果之后降级到未被允许的旧版本,手机将无法启动系统,并且不能通过常规刷机方式恢复。

按照 Android 设备完整性要求,运行 Android 9.0 及以上版本的手机都应加入防回滚保护。

^ 注:文石并没有严格执行以上策略:所有qcom均未熔丝/BL并未上锁,只是Fastboot被阉割了几项功能,且recovery做了反回滚限制。

(那GMS就约等于Play Integrity一项也没过,何意之有)

因此研究起如何编译第三方的Recovery。

鉴于没有内核源码树及设备树,从Poke5S中用Twrpdtgen提取出了设备树。

注:twrpdtgen需要clone整个AIK,网络不佳情况下会AIK Extraction Failed,解决方案是整个Github Actions等overseas env。

于是借鉴了一点Google出来的资料开始编译。

  1. 装依赖(Ubuntu-Based)
mkdir ~/workdir
cd ~/workdir
sudo apt install git aria2 -y
git clone https://gitlab.com/OrangeFox/misc/scripts 
cd scripts
sudo bash setup/android_build_env.sh
sudo bash setup/install_android_sdk.sh
  1. 同步Twrp/OrangeFox源码树
mkdir -p ~/workdir/OrangeFox_sync
cd ~/workdir/OrangeFox_sync
git clone https://gitlab.com/OrangeFox/sync.git 
cd sync/
./orangefox_sync.sh --branch 12.1 --path ~/workdir/fox_12.1
  1. 默认源码树开编
cd ~/workdir/fox_12.1
git clone https://github.com/nekohashizuku2333333333/twrp_device_onyx_poke5s device/onyx/Poke5S
cd device/onyx/Poke5S/
source build/envsetup.sh
export LC_ALL="C"
lunch
mka adbd recoveryimage

以上仅为测试 编译多数不会通过

  1. 因为不通过编译所以第一次修改
修改设备树: 
device/onyx/Poke5S/omni_Poke5S.mk:
将 "vendor/aosp/config/common.mk"改成"vendor/twrp/config/common.mk"

因为在Android 11+中PRODUCT_STATIC_BOOT_CONTROL_HAL被移除;
device/onyx/Poke5S/device.mk:
"PRODUCT_STATIC_BOOT_CONTROL_HAL := \
    bootctrl.bengal \
    libgptutils \
    libz \
    libcutils" 改成
"PRODUCT_PACKAGES += \
    bootctrl.bengal \
    libgptutils \
    libz \
    libcutils"

device/onyx/Poke5S/BoardConfig.mk:
"BOARD_USES_RECOVERY_AS_BOOT := false"改为true(否则不生成Recovery.img)

在其下加入:
"TW_BRIGHTNESS_PATH := "/sys/class/backlight/panel0-backlight/brightness"
TW_MAX_BRIGHTNESS := 255
TW_DEFAULT_BRIGHTNESS := 102
TW_INCLUDE_NTFS_3G := true
TW_HAS_EDL_MODE := true"
  1. 修改后编译可以通过。

但是很明显,问题很大:不显示,任何方式均无响应。

经查看recovery log得知:已经可以进入recovery,但是分区一个也没有挂载;同时图形完全无法初始化。

那么下一篇我们就来折腾一下其他的东西。

(未完结)


版權聲明: 本部落格所有文章除特別聲明外,均採用 CC BY 4.0 許可協議。轉載請註明來源 Iseri Nina !
  目錄