diff --git a/BoardConfig.mk b/BoardConfig.mk index 5ddd84e..698c8a9 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -1,11 +1,12 @@ # # Copyright (C) 2023 The Android Open Source Project -# +# Copyright (C) 2019-Present A-Team Digital Solutions # SPDX-License-Identifier: Apache-2.0 # DEVICE_PATH := device/motorola/rtwo +TW_MAINTAINER := BOBtheBlinker OF_MAINTAINER := BOBtheBlinker # Bootloader @@ -114,7 +115,22 @@ TARGET_COPY_OUT_VENDOR := vendor # Properties TARGET_VENDOR_PROP += device/motorola/rtwo/vendor.prop -AB_OTA_UPDATER := false +AB_OTA_UPDATER := true + +AB_OTA_PARTITIONS += \ + boot \ + dtbo \ + init_boot \ + product \ + recovery \ + system \ + system_dlkm \ + system_ext \ + vbmeta \ + vbmeta_system \ + vendor \ + vendor_dlkm \ + vendor_boot # Android Verified Boot BOARD_AVB_ENABLE := true diff --git a/device.mk b/device.mk index a187c2a..31bd890 100644 --- a/device.mk +++ b/device.mk @@ -1,6 +1,6 @@ # # Copyright (C) 2023 The Android Open Source Project -# +# Copyright (C) 2019-Present A-Team Digital Solutions # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at diff --git a/recovery/root/init.recovery.qcom.rc b/recovery/root/init.recovery.qcom.rc index 76857ee..664c64e 100644 --- a/recovery/root/init.recovery.qcom.rc +++ b/recovery/root/init.recovery.qcom.rc @@ -1,5 +1,5 @@ # Copyright (c) 2017-2018,2020 The Linux Foundation. All rights reserved. -# +# Copyright (C) 2019-Present A-Team Digital Solutions # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright @@ -89,3 +89,14 @@ on boot on property:ro.boot.usbcontroller=* setprop sys.usb.controller ${ro.boot.usbcontroller} write /sys/class/udc/${ro.boot.usbcontroller}/device/../mode peripheral + +service rtwo-vab-state-sanitize /system/bin/rtwo-vab-state-sanitize.sh + class core + user root + group root + disabled + oneshot + seclabel u:r:recovery:s0 + +on boot + start rtwo-vab-state-sanitize diff --git a/recovery/root/system/bin/rtwo-battery-bootstrap.sh b/recovery/root/system/bin/rtwo-battery-bootstrap.sh index 089b398..08688d4 100755 --- a/recovery/root/system/bin/rtwo-battery-bootstrap.sh +++ b/recovery/root/system/bin/rtwo-battery-bootstrap.sh @@ -1,4 +1,6 @@ #!/system/bin/sh +# BOBtheBlinker +# Copyright (C) 2019-Present A-Team Digital Solutions kmsg() { diff --git a/recovery/root/system/bin/rtwo-crypto-identity.sh b/recovery/root/system/bin/rtwo-crypto-identity.sh index ead9c6f..f452458 100755 --- a/recovery/root/system/bin/rtwo-crypto-identity.sh +++ b/recovery/root/system/bin/rtwo-crypto-identity.sh @@ -1,4 +1,6 @@ #!/system/bin/sh +# BOBtheBlinker +# Copyright (C) 2019-Present A-Team Digital Solutions resetprop ro.build.version.release 16 resetprop ro.build.version.sdk 36 diff --git a/recovery/root/system/bin/rtwo-vab-state-sanitize.sh b/recovery/root/system/bin/rtwo-vab-state-sanitize.sh new file mode 100755 index 0000000..d3aefd6 --- /dev/null +++ b/recovery/root/system/bin/rtwo-vab-state-sanitize.sh @@ -0,0 +1,95 @@ +#!/system/bin/sh +# BOBtheBlinker +# Copyright (C) 2019-Present A-Team Digital Solutions + +TAG="rtwo-vab-state" +META="/metadata" +META_DEV="/dev/block/bootdevice/by-name/metadata" +OTA_DIR="${META}/ota" +STATE_FILE="${OTA_DIR}/state" +SNAPSHOT_DIR="${OTA_DIR}/snapshots" +LOG_FILE="/tmp/rtwo-vab-state.log" + +log_msg() { + echo "${TAG}: $*" >> "${LOG_FILE}" +} + +log_msg "starting guarded Virtual A/B state check" + +# Wait for metadata to become mounted, or mount it ourselves once its +# block-device node becomes available. +COUNT=0 +while [ "${COUNT}" -lt 80 ]; do + if grep -q " ${META} " /proc/mounts; then + break + fi + + if [ -e "${META_DEV}" ]; then + mkdir -p "${META}" + mount -t f2fs "${META_DEV}" "${META}" >/dev/null 2>&1 || true + + if grep -q " ${META} " /proc/mounts; then + break + fi + fi + + sleep 0.25 + COUNT=$((COUNT + 1)) +done + +if ! grep -q " ${META} " /proc/mounts; then + log_msg "metadata unavailable; leaving OTA state untouched" + exit 0 +fi + +if [ ! -f "${STATE_FILE}" ]; then + log_msg "no OTA state file present" + exit 0 +fi + +if [ -s "${STATE_FILE}" ]; then + log_msg "OTA state file is non-empty; preserving it" + exit 0 +fi + +if [ ! -d "${SNAPSHOT_DIR}" ]; then + log_msg "snapshot directory missing; preserving state file" + exit 0 +fi + +if find "${SNAPSHOT_DIR}" \ + -mindepth 1 \ + -maxdepth 1 \ + -print -quit 2>/dev/null | + grep -q .; then + log_msg "snapshot directory is not empty; preserving state file" + exit 0 +fi + +# Only the known harmless entries may exist. Anything else could represent +# genuine OTA state, so fail safely and preserve everything. +UNEXPECTED="$( + find "${OTA_DIR}" \ + -mindepth 1 \ + -maxdepth 1 \ + ! -name state \ + ! -name snapshots \ + ! -name allow-forward-merge \ + -print -quit 2>/dev/null +)" + +if [ -n "${UNEXPECTED}" ]; then + log_msg "unexpected OTA entry found: ${UNEXPECTED}; preserving state file" + exit 0 +fi + +rm -f "${STATE_FILE}" + +if [ -e "${STATE_FILE}" ]; then + log_msg "failed to remove empty OTA state file" + exit 0 +fi + +sync +log_msg "removed empty OTA state file; no snapshots were present" +exit 0 diff --git a/recovery/root/system/etc/recovery.fstab b/recovery/root/system/etc/recovery.fstab index b2bca78..c59b90b 100644 --- a/recovery/root/system/etc/recovery.fstab +++ b/recovery/root/system/etc/recovery.fstab @@ -1,5 +1,5 @@ # Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. -# +# Copyright (C) 2019-Present A-Team Digital Solutions # Redistribution and use in source and binary forms, with or without # modification, are permitted (subject to the limitations in the # disclaimer below) provided that the following conditions are met: diff --git a/recovery/root/system/etc/twrp.flags b/recovery/root/system/etc/twrp.flags index e09d546..d476447 100644 --- a/recovery/root/system/etc/twrp.flags +++ b/recovery/root/system/etc/twrp.flags @@ -1,3 +1,4 @@ +# Copyright (C) 2019-Present A-Team Digital Solutions # mount point fstype device device2 flags # Symlinked partitions /system_image emmc /dev/block/bootdevice/by-name/system flags=backup=0;flashimg;display="System Image" @@ -9,23 +10,23 @@ /system_dlkm_image emmc /dev/block/bootdevice/by-name/system_dlkm flags=backup=0;flashimg;display="System_DLKM Image" # Physical partitions -/metadata ext4 /dev/block/bootdevice/by-name/metadata flags=backup=1;wipeingui;display="Metadata" -/boot emmc /dev/block/bootdevice/by-name/boot flags=backup=1;flashimg;display="Boot" -/recovery emmc /dev/block/bootdevice/by-name/recovery flags=backup=1;flashimg;display="Recovery" -/init_boot emmc /dev/block/bootdevice/by-name/init_boot flags=backup=1;flashimg;display="Init Boot" +/metadata f2fs /dev/block/bootdevice/by-name/metadata flags=backup=1;wipeingui;display="Metadata" +/boot emmc /dev/block/bootdevice/by-name/boot flags=slotselect;backup=1;flashimg;display="Boot" +/recovery emmc /dev/block/bootdevice/by-name/recovery flags=slotselect;backup=1;flashimg;display="Recovery" +/init_boot emmc /dev/block/bootdevice/by-name/init_boot flags=slotselect;backup=1;flashimg;display="Init Boot" /persist ext4 /dev/block/bootdevice/by-name/persist flags=display="Persist" /efs ext4 /dev/block/bootdevice/by-name/efs flags=backup=1;display="EFS" /sec_efs ext4 /dev/block/bootdevice/by-name/sec_efs flags=backup=1;display="SEC EFS" /modem emmc /dev/block/bootdevice/by-name/modem flags=backup=1;display="Modem" /dsp emmc /dev/block/bootdevice/by-name/dsp /misc emmc /dev/block/bootdevice/by-name/misc -/dtbo emmc /dev/block/bootdevice/by-name/dtbo flags=backup=1;flashimg;display="Dtbo" +/dtbo emmc /dev/block/bootdevice/by-name/dtbo flags=slotselect;backup=1;flashimg;display="Dtbo" /optics_image emmc /dev/block/bootdevice/by-name/optics flags=backup=1;flashimg;display="Optics Image" /prism_image emmc /dev/block/bootdevice/by-name/prism flags=backup=1;flashimg;display="Prism Image" -/vbmeta_system emmc /dev/block/bootdevice/by-name/vbmeta_system -/vendor_boot emmc /dev/block/bootdevice/by-name/vendor_boot flags=backup=1;flashimg;display="Vendor Boot" +/vbmeta_system emmc /dev/block/bootdevice/by-name/vbmeta_system flags=slotselect;backup=1;flashimg;display="Vbmeta System" +/vendor_boot emmc /dev/block/bootdevice/by-name/vendor_boot flags=slotselect;backup=1;flashimg;display="Vendor Boot" /vbmeta_samsung emmc /dev/block/bootdevice/by-name/vbmeta_samsung -/vbmeta emmc /dev/block/bootdevice/by-name/vbmeta flags=backup=1;flashimg;display="Vbmeta" +/vbmeta emmc /dev/block/bootdevice/by-name/vbmeta flags=slotselect;backup=1;flashimg;display="Vbmeta" /vm-bootsys ext4 /dev/block/bootdevice/by-name/vm-bootsys /imagefv emmc /dev/block/bootdevice/by-name/imagefv /efuse emmc /dev/block/bootdevice/by-name/efuse diff --git a/recovery/root/system/lib64/hw/android.hardware.boot@1.0-impl-1.2-qti.so b/recovery/root/system/lib64/hw/android.hardware.boot@1.0-impl-1.2-qti.so new file mode 100644 index 0000000..edd273d Binary files /dev/null and b/recovery/root/system/lib64/hw/android.hardware.boot@1.0-impl-1.2-qti.so differ diff --git a/recovery/root/system/lib64/libboot_control_qti.so b/recovery/root/system/lib64/libboot_control_qti.so new file mode 100644 index 0000000..d0be80a Binary files /dev/null and b/recovery/root/system/lib64/libboot_control_qti.so differ diff --git a/recovery/root/system/lib64/librecovery_updater.so b/recovery/root/system/lib64/librecovery_updater.so new file mode 100644 index 0000000..1d2fb1f Binary files /dev/null and b/recovery/root/system/lib64/librecovery_updater.so differ diff --git a/recovery/root/vendor/etc/init/android.hardware.keymaster@4.0-strongbox-service-qti.rc b/recovery/root/vendor/etc/init/android.hardware.keymaster@4.0-strongbox-service-qti.rc index c2b0fc1..bfc57f5 100644 --- a/recovery/root/vendor/etc/init/android.hardware.keymaster@4.0-strongbox-service-qti.rc +++ b/recovery/root/vendor/etc/init/android.hardware.keymaster@4.0-strongbox-service-qti.rc @@ -1,3 +1,5 @@ +# Copyright (C) 2019-Present A-Team Digital Solutions + on init start vendor.keymaster-sb-4-0 diff --git a/recovery/root/vendor/etc/vintf/manifest.xml b/recovery/root/vendor/etc/vintf/manifest.xml index ae33825..4ce97be 100644 --- a/recovery/root/vendor/etc/vintf/manifest.xml +++ b/recovery/root/vendor/etc/vintf/manifest.xml @@ -1,3 +1,4 @@ +