最近遇到的FFBM模式反复重启,正常模式可以开机。看log有很多dm-verity报错,但是具体为什原因不清楚,通过查阅高通文档得知原因如下:
高通文档中明确说了:从Android 14(U)开始,不再支持FFBM(Fast Factory Boot Mode)。
原因是谷歌代码中默认使能了APEX,PRODUCT_COMPRESSED_APEX := true
将adbd和相关模块压缩到capex,并在首次启动时压缩到data分区,这与FFBM不需要挂载data分区的设计相冲突,因此导致无法找到相关模块,此时设备就会反复重启。
system/core/rootdir/init.rc
service boringssl_self_test32 /system/bin/boringssl_self_test32
reboot_on_failure reboot,boringssl-self-check-failed
stdio_to_kmsg
# Explicitly specify that boringssl_self_test32 doesn't require any capabilities
capabilities
user nobody
service boringssl_self_test64 /system/bin/boringssl_self_test64
reboot_on_failure reboot,boringssl-self-check-failed
stdio_to_kmsg
# Explicitly specify that boringssl_self_test64 doesn't require any capabilities
capabilities
user nobody
service boringssl_self_test_apex32 /apex/com.android.conscrypt/bin/boringssl_self_test32
reboot_on_failure reboot,boringssl-self-check-failed
stdio_to_kmsg
# Explicitly specify that boringssl_self_test_apex32 doesn't require any capabilities
capabilities
user nobody
service boringssl_self_test_apex64 /apex/com.android.conscrypt/bin/boringssl_self_test64
reboot_on_failure reboot,boringssl-self-check-failed
stdio_to_kmsg
# Explicitly specify that boringssl_self_test_apex64 doesn't require any capabilities
capabilities
user nobody
可以通过修改代码去正常使用FFBM,高通说是不推荐,改的话建议是在factory版本吧apex关掉,正常版本还是打开。
高通提供的修改点如下:
build/make/target/product/updatable_apex.mk
- PRODUCT_COMPRESSED_APEX := true
+ PRODUCT_COMPRESSED_APEX := false
或者是修改mk文件
device/qcom/qssi_64/qssi_64.mk
$(call inherit-product, $(SRC_TARGET_DIR)/product/updatable_apex.mk)
+ PRODUCT_COMPRESSED_APEX := false
主要是把apex关掉就可以了,实测有效,关闭之后不再反复重启。