KVS/builder/scripts/versions/functions.sh

155 lines
5.4 KiB
Bash

#!/bin/bash
style_text() {
printf "\033[31m\033[1m\033[5m$1\033[0m\n"
}
panic(){
case "$1" in
"invalid-kernver")
style_text "KVS PANIC"
printf "\033[31mERR\033[0m"
printf ": Invalid Kernel Version. Please make a GitHub issue at \033[3;34m$GITHUB_URL\033[0m with a picture of this information.\n"
echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-="
echo "tpm_kernver: $(crossystem tpm_kernver)"
echo "fwid: $(dmidecode -s bios-version) (compiled: $(dmidecode -s bios-release-date))"
echo "date: $(date +"%m-%d-%Y %I:%M:%S %p")"
echo "model: $(cat /sys/class/dmi/id/product_name) $(cat /sys/class/dmi/id/product_version)"
echo "Please shutdown your device now using REFRESH+PWR"
sleep infinity
;;
"mount-error")
style_text "KVS PANIC"
printf "\033[31mERR\033[0m"
printf ": Unable to mount stateful. Please make a GitHub issue at \033[3;34m$GITHUB_URL\033[0m with a picture of this information.\n"
echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-="
echo "tpm_kernver: $(crossystem tpm_kernver)"
echo "fwid: $(dmidecode -s bios-version) (compiled: $(dmidecode -s bios-release-date))"
echo "state mounted: $([ -d /mnt/state/ ] && grep -qs '/mnt/state ' /proc/mounts && echo true || echo false)"
echo "date: $(date +"%m-%d-%Y %I:%M:%S %p")"
echo "model: $(cat /sys/class/dmi/id/product_name) $(cat /sys/class/dmi/id/product_version)"
echo "Please shutdown your device now using REFRESH+PWR"
sleep infinity
;;
"non-reco")
style_text "KVS PANIC"
printf "\033[31mERR\033[0m"
printf ": Wrong Boot Method. To fix: boot the shim using the recovery method. (ESC+REFRESH+PWR) and \033[31mNOT\033[0m USB Boot.\n"
echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-="
echo "tpm_kernver: $(crossystem tpm_kernver)"
echo "fwid: $(dmidecode -s bios-version) (compiled: $(dmidecode -s bios-release-date))"
echo "fw mode: $(crossystem mainfw_type)"
echo "date: $(date +"%m-%d-%Y %I:%M:%S %p")"
echo "model: $(cat /sys/class/dmi/id/product_name) $(cat /sys/class/dmi/id/product_version)"
echo "Please shutdown your device now using REFRESH+PWR"
sleep infinity
;;
"tpmd-not-killed")
style_text "KVS PANIC"
printf "\033[31mERR\033[0m"
printf ": $tpmdaemon unable to be killed. Please make a GitHub issue at \033[3;34m$GITHUB_URL\033[0m with a picture of this information.\n"
echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-="
echo "tpm_kernver: $(crossystem tpm_kernver)"
echo "fwid: $(dmidecode -s bios-version) (compiled: $(dmidecode -s bios-release-date))"
echo "tpmd ($tpmdaemon) running: $(status $tpmdaemon | grep stopped && echo true || echo false)"
echo "date: $(date +"%m-%d-%Y %I:%M:%S %p")"
echo "model: $(cat /sys/class/dmi/id/product_name) $(cat /sys/class/dmi/id/product_version)"
echo "Please shutdown your device now using REFRESH+PWR"
sleep infinity
;;
"*")
echo "Panic ID unable to be found: $1"
echo "Exiting script to prevent crash, please make an issue at \033[3;34m$GITHUB_URL\033[0m."
esac
}
stopwatch() {
display_timer() {
printf "[%02d:%02d:%02d]\n" $hh $mm $ss
}
hh=0 #hours
mm=0 #minutes
ss=0 #seconds
while true; do
clear
echo "Initiated reboot, if this doesn't reboot please manually reboot with REFRESH+PWR"
echo "Time since reboot initiated:"
display_timer
ss=$((ss + 1))
# if seconds reach 60, increment the minutes
if [ $ss -eq 60 ]; then
ss=0
mm=$((mm + 1))
fi
# if minutes reach 60, increment the hours
if [ $mm -eq 60 ]; then
mm=0
hh=$((hh + 1))
fi
sleep 1
done
}
selection(){
case $1 in
"1")
echo "Please Enter Target kernver (0-3)"
read -rep "> " kernver
case $kernver in
"0")
echo "Setting kernver 0"
write_tpm 0x1008 $(cat /mnt/realstate/kvs/kernver0)
;;
"1")
echo "Setting kernver 1"
write_tpm 0x1008 $(cat /mnt/realstate/kvs/kernver1)
;;
"2")
echo "Setting kernver 2"
write_tpm 0x1008 $(cat /mnt/realstate/kvs/kernver2)
;;
"3")
echo "Setting kernver 3"
write_tpm 0x1008 $(cat /mnt/realstate/kvs/kernver3)
;;
*)
echo "Invalid kernver. Please check your input."
main
;;
esac ;;
"2")
case $currentkernver in
"0x00000000")
echo "Current kernver: 0"
echo "Outputting to stateful/kernver-out"
cp /mnt/realstate/kvs/kernver0 /mnt/state/kernver-out
;;
"0x00010001")
echo "Current kernver: 1"
echo "Outputting to stateful/kernver-out"
cp /mnt/realstate/kvs/kernver1 /mnt/state/kernver-out
;;
"0x00010002")
echo "Current kernver: 2"
echo "Outputting to stateful/kernver-out"
cp /mnt/realstate/kvs/kernver2 /mnt/state/kernver-out
;;
"0x00010003")
echo "Current kernver: 3"
echo "Outputting to stateful/kernver-out"
cp /mnt/realstate/kvs/kernver3 /mnt/state/kernver-out
;;
*)
panic "invalid-kernver"
;;
esac ;;
"3")
credits
;;
"4")
endkvs
;;
esac
}