11#! /sbin/sh
22
3- finish ()
4- {
5- umount /v
6- umount /s
7- rmdir /v
8- rmdir /s
9- setprop fde.ready 1
10- exit 0
11- }
12-
13- osver=$( getprop ro.build.version.release_orig)
14- patchlevel=$( getprop ro.build.version.security_patch_orig)
3+ SCRIPTNAME=" PatchLevel"
4+ LOGFILE=/tmp/recovery.log
5+ TEMPSYS=/s
6+ TEMPVEN=/v
7+ BUILDPROP=system/build.prop
8+ DEFAULTPROP=prop.default
159suffix=$( getprop ro.boot.slot_suffix)
1610
1711if [ -z " $suffix " ]; then
@@ -20,58 +14,154 @@ if [ -z "$suffix" ]; then
2014fi
2115
2216venpath=" /dev/block/bootdevice/by-name/vendor$suffix "
23- mkdir /v
24- mount -t ext4 -o ro " $venpath " /v
2517syspath=" /dev/block/bootdevice/by-name/system$suffix "
26- mkdir /s
27- mount -t ext4 -o ro " $syspath " /s
2818
29- if [ -f /s/system/build.prop ]; then
19+ log_info ()
20+ {
21+ echo " I:$SCRIPTNAME :$1 " >> " $LOGFILE "
22+ }
23+
24+ log_error ()
25+ {
26+ echo " E:$SCRIPTNAME :$1 " >> " $LOGFILE "
27+ }
28+
29+ finish ()
30+ {
31+ umount " $TEMPVEN "
32+ umount " $TEMPSYS "
33+ rmdir " $TEMPVEN "
34+ rmdir " $TEMPSYS "
35+ setprop fde.ready 1
36+ log_info " fde.ready=$( getprop fde.ready) "
37+ log_info " Script complete. Device ready for decryption."
38+ exit 0
39+ }
40+
41+ finish_error ()
42+ {
43+ umount " $TEMPVEN "
44+ umount " $TEMPSYS "
45+ rmdir " $TEMPVEN "
46+ rmdir " $TEMPSYS "
47+ log_error " Script run incomplete. Device not ready for decryption."
48+ exit 0
49+ }
50+
51+ osver_orig=$( getprop ro.build.version.release_orig)
52+ patchlevel_orig=$( getprop ro.build.version.security_patch_orig)
53+ osver=$( getprop ro.build.version.release)
54+ patchlevel=$( getprop ro.build.version.security_patch)
55+ device=$( getprop ro.product.device)
56+ fingerprint=$( getprop ro.build.fingerprint)
57+ product=$( getprop ro.build.product)
58+
59+ log_info " Running patchlevel pre-decrypt script for TWRP..."
60+
61+ mkdir " $TEMPVEN "
62+ if [ -d " $TEMPVEN " ]; then
63+ log_info " Temporary vendor folder created at $TEMPVEN ."
64+ else
65+ log_error " Unable to create temporary vendor folder."
66+ finish_error
67+ fi
68+ mount -t ext4 -o ro " $venpath " " $TEMPVEN "
69+ if [ -n " $( ls -A " $TEMPVEN " 2> /dev/null) " ]; then
70+ log_info " Vendor mounted at $TEMPVEN ."
71+ else
72+ log_error " Unable to mount vendor to temporary folder."
73+ finish_error
74+ fi
75+
76+ mkdir " $TEMPSYS "
77+ if [ -d " $TEMPSYS " ]; then
78+ log_info " Temporary system folder created at $TEMPSYS ."
79+ else
80+ log_error " Unable to create temporary system folder."
81+ finish_error
82+ fi
83+ mount -t ext4 -o ro " $syspath " " $TEMPSYS "
84+ if [ -n " $( ls -A " $TEMPSYS " 2> /dev/null) " ]; then
85+ log_info " System mounted at $TEMPSYS ."
86+ else
87+ log_error " Unable to mount system to temporary folder."
88+ finish_error
89+ fi
90+
91+ if [ -f " $TEMPSYS /$BUILDPROP " ]; then
92+ log_info " Build.prop exists! Setting system properties from build.prop"
3093 # TODO: It may be better to try to read these from the boot image than from /system
31- osver= $( grep -i ' ro.build. version.release ' /s/system/build.prop | cut -f2 -d ' = ' -s )
32- patchlevel =$( grep -i ' ro.build.version.security_patch ' /s/system/build.prop | cut -f2 -d' =' -s)
33- if [ ! -z " $osver " ]; then
94+ log_info " Current OS version: $osver "
95+ osver =$( grep -i ' ro.build.version.release ' " $TEMPSYS / $BUILDPROP " | cut -f2 -d' =' -s)
96+ if [ -n " $osver " ]; then
3497 resetprop ro.build.version.release " $osver "
35- sed -i " s/ro.build.version.release=.*/ro.build.version.release=" $osver " /g" /prop.default ;
98+ sed -i " s/ro.build.version.release=.*/ro.build.version.release=" $osver " /g" " /$DEFAULTPROP " ;
99+ log_info " New OS Version: $osver "
36100 fi
37- if [ ! -z " $patchlevel " ]; then
101+ log_info " Current security patch level: $patchlevel "
102+ patchlevel=$( grep -i ' ro.build.version.security_patch' " $TEMPSYS /$BUILDPROP " | cut -f2 -d' =' -s)
103+ if [ -n " $patchlevel " ]; then
38104 resetprop ro.build.version.security_patch " $patchlevel "
39- sed -i " s/ro.build.version.security_patch=.*/ro.build.version.security_patch=" $patchlevel " /g" /prop.default ;
105+ sed -i " s/ro.build.version.security_patch=.*/ro.build.version.security_patch=" $patchlevel " /g" " /$DEFAULTPROP " ;
106+ log_info " New security patch level: $patchlevel "
40107 fi
41108 # Set additional props from build.prop
42- device= $( grep -i ' ro.product.device ' /s/system/build.prop | cut -f2 -d ' = ' -s )
43- fingerprint= $( grep -i ' ro.build.fingerprint ' /s/system/build.prop | cut -f2 -d ' = ' -s )
44- product =$( grep -i ' ro.build. product' /s/system/build.prop | cut -f2 -d' =' -s)
45- if [ ! -z " $device " ]; then
109+ # Only needed for some devices, so this section can be removed if your device isn't one of them
110+ log_info " Current device: $device "
111+ device =$( grep -i ' ro.product.device ' " $TEMPSYS / $BUILDPROP " | cut -f2 -d' =' -s)
112+ if [ -n " $device " ]; then
46113 resetprop ro.product.device " $device "
47- sed -i " s/ro.product.device=.*/ro.product.device=" $device " /g" /prop.default ;
114+ sed -i " s/ro.product.device=.*/ro.product.device=" $device " /g" " /$DEFAULTPROP " ;
115+ log_info " New device: $device "
48116 fi
49- if [ ! -z " $fingerprint " ]; then
117+ log_info " Current fingerprint: $fingerprint "
118+ fingerprint=$( grep -i ' ro.build.fingerprint' " $TEMPSYS /$BUILDPROP " | cut -f2 -d' =' -s)
119+ if [ -n " $fingerprint " ]; then
50120 resetprop ro.build.fingerprint " $fingerprint "
51- sed -i " s/ro.build.fingerprint=.*/ro.build.fingerprint=" $osver " /g" /prop.default ;
121+ sed -i " s/ro.build.fingerprint=.*/ro.build.fingerprint=" $fingerprint " /g" " /$DEFAULTPROP " ;
122+ log_info " New fingerprint: $fingerprint "
52123 fi
53- if [ ! -z " $product " ]; then
124+ log_info " Current product: $product "
125+ product=$( grep -i ' ro.build.product' " $TEMPSYS /$BUILDPROP " | cut -f2 -d' =' -s)
126+ if [ -n " $product " ]; then
54127 resetprop ro.build.product " $product "
55- sed -i " s/ro.build.product=.*/ro.build.product=" $product " /g" /prop.default ;
128+ sed -i " s/ro.build.product=.*/ro.build.product=" $product " /g" " /$DEFAULTPROP " ;
129+ log_info " New product: $product "
56130 fi
57131 # Load Tuxera exfat module
58- if [ -f /v/lib/modules/texfat.ko ]; then
59- insmod /v/lib/modules/texfat.ko
132+ if [ -f " $TEMPVEN /lib/modules/texfat.ko" ]; then
133+ echo " I:TexFAT:Loading Tuxera exFAT module from vendor..." >> " $LOGFILE "
134+ insmod " $TEMPVEN /lib/modules/texfat.ko"
60135 fi
61136 finish
62137else
63138 # Be sure to increase the PLATFORM_VERSION in build/core/version_defaults.mk to override Google's anti-rollback features to something rather insane
64- if [ ! -z " $osver " ]; then
139+ if [ -n " $osver_orig " ]; then
140+ log_info " Original OS version: $osver_orig "
141+ log_info " Current OS version: $osver "
142+ log_info " Setting OS Version to $osver_orig "
143+ osver=$osver_orig
65144 resetprop ro.build.version.release " $osver "
66- sed -i " s/ro.build.version.release=.*/ro.build.version.release=" $osver " /g" /prop.default ;
145+ sed -i " s/ro.build.version.release=.*/ro.build.version.release=" $osver " /g" " /$DEFAULTPROP " ;
146+ else
147+ log_info " No Original OS Version found. Proceeding with existing value."
148+ log_info " Current OS version: $osver "
67149 fi
68- if [ ! -z " $patchlevel " ]; then
150+ if [ -n " $patchlevel_orig " ]; then
151+ log_info " Original security patch level: $patchlevel_orig "
152+ log_info " Current security patch level: $patchlevel "
153+ log_info " Setting security patch level to $patchlevel_orig "
154+ patchlevel=$patchlevel_orig
69155 resetprop ro.build.version.security_patch " $patchlevel "
70- sed -i " s/ro.build.version.security_patch=.*/ro.build.version.security_patch=" $patchlevel " /g" /prop.default ;
156+ sed -i " s/ro.build.version.security_patch=.*/ro.build.version.security_patch=" $patchlevel " /g" " /$DEFAULTPROP " ;
157+ else
158+ log_info " No Original security patch level found. Proceeding with existing value."
159+ log_info " Current security patch level: $patchlevel "
71160 fi
72161 # Load Tuxera exfat module
73- if [ -f /v/lib/modules/texfat.ko ]; then
74- insmod /v/lib/modules/texfat.ko
162+ if [ -f " $TEMPVEN /lib/modules/texfat.ko" ]; then
163+ echo " I:TexFAT:Loading Tuxera exFAT module from vendor..." >> " $LOGFILE "
164+ insmod " $TEMPVEN /lib/modules/texfat.ko"
75165 fi
76166 finish
77167fi
0 commit comments