add patch to prevent permanent brick

just in case
This commit is contained in:
HappyZ 2018-12-15 10:04:13 -06:00
parent 416d265b2e
commit 2618e81589
2 changed files with 86 additions and 2 deletions

View File

@ -0,0 +1,71 @@
#!/bin/sh
DDAT_MOUNT_PATH=/tmp/ddat
END_USER_UPDATER_PKG=${DDAT_MOUNT_PATH}/FwUpdater.pkg
# $1 : reboot=1, shutdown 0
local_reboot()
{
umount $DDAT_MOUNT_PATH
sync
sync
mount -o remount,ro /
if [ $1 -eq 1 ]
then
/sbin/reboot
else
/sbin/poweroff
fi
while [ 1 ]
do
sleep 3
done
}
#########################
# End User Updater check
#########################
mount -t tmpfs tmpfs /tmp
mkdir ${DDAT_MOUNT_PATH}
mount /dev/mmcblk0p16 ${DDAT_MOUNT_PATH}
if [ -f ${END_USER_UPDATER_PKG} ]
then
rawdata --get_dump=sig_key > /tmp/sig.key
rawdata --get_dump=dec_key > /tmp/dec.key
start_eufwupdater.sh ${END_USER_UPDATER_PKG} /tmp /tmp/sig.key /tmp/dec.key
ret=$?
if [ $ret -eq 0 ]
then
# remove pkg, change normal boot and reboot
change_boot_mode.sh normal
rm -rf ${END_USER_UPDATER_PKG}
local_reboot 1
# elif [ $ret -eq 1 ]
# then
# # remain pkg, keep boot mode and shutdown
# local_reboot 0
else
# remove pkg, change normal boot and shutdown
change_boot_mode.sh normal
rm -rf ${END_USER_UPDATER_PKG}
local_reboot 0
fi
fi
umount ${DDAT_MOUNT_PATH}
#########################
# Diag check
#########################
initctl start diag
exit 0

View File

@ -52,7 +52,8 @@ def validate_required_files(dpt, purpose='diagnosis'):
]
elif purpose == 'eufwupdater':
requiredFiles = [
'python_api/assets/start_eufwupdater.sh'
'python_api/assets/start_eufwupdater.sh',
'python_api/assets/updater_check.sh'
]
else:
requiredFiles = [
@ -342,15 +343,27 @@ def diagnosis_patch_eufwupdater(dpt):
'''
if not validate_required_files(dpt, purpose='eufwupdater'):
return False
# patch start_eufwupdater.sh
bashfp = diagnosis_push_file(
dpt,
localfp='python_api/assets/start_eufwupdater.sh',
folder='/usr/local/bin',
overwrite=True)
if bashfp is None:
dpt.err_print("Failed to patch!!")
dpt.err_print("Failed to patch start_eufwupdater.sh!!")
return False
dpt.diagnosis_set_perm(bashfp, owner='1496.1496', perm='0775')
# patch updater_check.sh
bashfp = diagnosis_push_file(
dpt,
localfp='python_api/assets/updater_check.sh',
folder='/usr/local/bin',
overwrite=True)
if bashfp is None:
dpt.err_print("Failed to patch updater_check.sh!!")
return False
dpt.diagnosis_set_perm(bashfp, owner='1496.1496', perm='0775')
# success
dpt.info_print("Success!")
return True