AK3: add support for avb patching (#70)
- this supports custom kernel users to continue not having to fastboot reflash vbmeta with --disable-verity and --disable-verification, now that Magisk 24303+ no longer patches avb out of the fstab on-the-fly at boot time - checks for an avb option in the fstab entry for the current partition - if found, it checks if verity or verification is disabled on the top-level vbmeta, and if so, appends a hashtree and FEC data to the partition and updates the hashtree descriptor in the vbmeta partition referenced in the avb option
This commit is contained in:
1 parent
f81b0b2db6
commit
bc736e9ce1
5 files changed
+67
-2
No files matched your search
@@ -94,6 +94,50 @@ lptools_static: Apache License 2.0
|
|||||||
Source not required, however, respective source is provided:
|
Source not required, however, respective source is provided:
|
||||||
https://github.com/phhusson/vendor_lptools
|
https://github.com/phhusson/vendor_lptools
|
||||||
|
|
||||||
|
httools_static: MIT
|
||||||
|
|
||||||
|
Copyright (c) 2022 capntrips
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
|
Source not required, however, respective source is provided:
|
||||||
|
https://github.com/capntrips/HashtreePatcher
|
||||||
|
|
||||||
|
fec: Apache License 2.0
|
||||||
|
|
||||||
|
Copyright (c) 2013-2015, The Android Open Source Project
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
Source not required, however, respective source is provided:
|
||||||
|
https://android.googlesource.com/platform/system/extras/+/refs/tags/android-12.1.0_r5/verity/fec/
|
||||||
|
|
||||||
|
|
||||||
## Optional Binary Licenses:
|
## Optional Binary Licenses:
|
||||||
|
|
||||||
|
|||||||
@@ -3,4 +3,4 @@
|
|||||||
# Dummy file; update-binary is a shell script (DO NOT CHANGE)
|
# Dummy file; update-binary is a shell script (DO NOT CHANGE)
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# AK_BASE_VERSION=20220607
|
# AK_BASE_VERSION=20220608
|
||||||
+22
-1
@@ -415,7 +415,7 @@ flash_boot() {
|
|||||||
|
|
||||||
# flash_generic <name>
|
# flash_generic <name>
|
||||||
flash_generic() {
|
flash_generic() {
|
||||||
local file img imgblock isro path;
|
local avb avbblock file flags img imgblock isro path;
|
||||||
|
|
||||||
cd $home;
|
cd $home;
|
||||||
for file in $1 $1.img; do
|
for file in $1 $1.img; do
|
||||||
@@ -438,6 +438,27 @@ flash_generic() {
|
|||||||
abort "$1 partition could not be found. Aborting...";
|
abort "$1 partition could not be found. Aborting...";
|
||||||
fi;
|
fi;
|
||||||
if [ "$path" == "/dev/block/mapper" ]; then
|
if [ "$path" == "/dev/block/mapper" ]; then
|
||||||
|
avb=$($bin/httools_static avb $1);
|
||||||
|
[ $? == 0 ] || abort "Failed to parse fstab entry for $1. Aborting...";
|
||||||
|
if [ "$avb" ]; then
|
||||||
|
flags=$($bin/httools_static disable-flags);
|
||||||
|
[ $? == 0 ] || abort "Failed to parse top-level vbmeta. Aborting...";
|
||||||
|
if [ "$flags" == "enabled" ]; then
|
||||||
|
[ "$1" == "vendor_dlkm" -a "$avb" == "vbmeta" ] || abort "Unable to patch $1 on $avb. Aborting ...";
|
||||||
|
ui_print " " "dm-verity detected! Patching vbmeta...";
|
||||||
|
for path in /dev/block/bootdevice/by-name /dev/block/mapper; do
|
||||||
|
for file in $avb $avb$slot; do
|
||||||
|
if [ -e $path/$file ]; then
|
||||||
|
avbblock=$path/$file;
|
||||||
|
break 2;
|
||||||
|
fi;
|
||||||
|
done;
|
||||||
|
done;
|
||||||
|
cd $bin;
|
||||||
|
$bin/httools_static patch $home/$img $avbblock || abort "Failed to patch $1 on $avb. Aborting...";
|
||||||
|
cd $home;
|
||||||
|
fi
|
||||||
|
fi
|
||||||
$bin/lptools_static remove $1_ak3;
|
$bin/lptools_static remove $1_ak3;
|
||||||
$bin/lptools_static create $1_ak3 $(wc -c < $img) || abort "Creating $1_ak3 failed. Aborting...";
|
$bin/lptools_static create $1_ak3 $(wc -c < $img) || abort "Creating $1_ak3 failed. Aborting...";
|
||||||
$bin/lptools_static unmap $1_ak3 || abort "Unmapping $1_ak3 failed. Aborting...";
|
$bin/lptools_static unmap $1_ak3 || abort "Unmapping $1_ak3 failed. Aborting...";
|
||||||
|
|||||||
Executable
BIN
Binary file not shown.
Reference in new issue
Block a user