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:
|
||||
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:
|
||||
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
# 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() {
|
||||
local file img imgblock isro path;
|
||||
local avb avbblock file flags img imgblock isro path;
|
||||
|
||||
cd $home;
|
||||
for file in $1 $1.img; do
|
||||
@@ -438,6 +438,27 @@ flash_generic() {
|
||||
abort "$1 partition could not be found. Aborting...";
|
||||
fi;
|
||||
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 create $1_ak3 $(wc -c < $img) || abort "Creating $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