diff --git a/native/jni/Android.mk b/native/jni/Android.mk index 59d60a204..95ab27058 100644 --- a/native/jni/Android.mk +++ b/native/jni/Android.mk @@ -68,7 +68,8 @@ LOCAL_SRC_FILES := \ magiskpolicy/rules.cpp \ magiskpolicy/policydb.cpp \ magiskpolicy/statement.cpp \ - magiskpolicy/sepolicy.c + magiskpolicy/sepolicy.c \ + magiskboot/pattern.cpp LOCAL_LDFLAGS := -static include $(BUILD_EXECUTABLE) diff --git a/native/jni/init/twostage.cpp b/native/jni/init/twostage.cpp index eda8baefd..d02940933 100644 --- a/native/jni/init/twostage.cpp +++ b/native/jni/init/twostage.cpp @@ -18,6 +18,8 @@ entry.val = &line[val##0]; #define FSR "/first_stage_ramdisk" +extern uint32_t patch_verity(void *buf, uint32_t size); + void FirstStageInit::prepare() { if (cmd->force_normal_boot) { xmkdirs(FSR "/system/bin", 0755); @@ -124,6 +126,11 @@ void FirstStageInit::prepare() { // Redirect system mnt_point so init won't switch root in first stage init if (entry.mnt_point == "/system") entry.mnt_point = "/system_root"; + + // Force remove AVB for 2SI since it may bootloop some devices + auto len = patch_verity(entry.fsmgr_flags.data(), entry.fsmgr_flags.length()); + entry.fsmgr_flags.resize(len); + entry.to_file(fp.get()); } }