From: Grazvydas Ignotas Date: Wed, 27 Mar 2013 15:58:57 +0000 (+0200) Subject: add SZ 1.52 updater files X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-misc.git;a=commitdiff_plain;h=73e2fd0bee726369729a7ce34b9af758126470ab add SZ 1.52 updater files --- diff --git a/hotfix_updater/superzaxxon/PXML.xml b/hotfix_updater/superzaxxon/PXML.xml new file mode 100644 index 0000000..44459d2 --- /dev/null +++ b/hotfix_updater/superzaxxon/PXML.xml @@ -0,0 +1,39 @@ + + + + + + Pandora SuperZaxxon updater + + + + + + + + Pandora SuperZaxxon updater + + Pandora SuperZaxxon updater + + + + + + + SuperZaxxon firmware updater. + + + + + + + + + + + + + + + + diff --git a/hotfix_updater/superzaxxon/index.html b/hotfix_updater/superzaxxon/index.html new file mode 100644 index 0000000..d6947a9 --- /dev/null +++ b/hotfix_updater/superzaxxon/index.html @@ -0,0 +1,113 @@ + + + Updater for SuperZaxxon + + +

Information

This file will update your Pandora OS. Simply run it as any normal PND. After installation, you can delete it.
This pack is intended for SuperZaxxon firmware line, it will not work properly if applied on older firmwares. + + + + diff --git a/hotfix_updater/superzaxxon/run.sh b/hotfix_updater/superzaxxon/run.sh new file mode 100755 index 0000000..c114351 --- /dev/null +++ b/hotfix_updater/superzaxxon/run.sh @@ -0,0 +1,11 @@ +#!/bin/sh +set -e + +t=`which terminal` +if [ -z "$t" ]; then + zenity --error --text='terminal is missing.' + exit 1 +fi + +gksudo -m "Firmware updater requires root permissions, please enter your password" id +exec sudo -n terminal -x sh -c ./updater.sh diff --git a/hotfix_updater/superzaxxon/updater.png b/hotfix_updater/superzaxxon/updater.png new file mode 100644 index 0000000..ed2ec02 Binary files /dev/null and b/hotfix_updater/superzaxxon/updater.png differ diff --git a/hotfix_updater/superzaxxon/updater.sh b/hotfix_updater/superzaxxon/updater.sh new file mode 100755 index 0000000..9e72b9b --- /dev/null +++ b/hotfix_updater/superzaxxon/updater.sh @@ -0,0 +1,146 @@ +#!/bin/sh + +logfile=/tmp/updater.log +oldkernel=/boot/uImage-3 +newkernel=boot/uImage-3 + +if ! grep -q '[[:blank:]]/[[:blank:]]*ubifs' /proc/mounts; then + # prefer alternative locations when running from SD + test -e /media/PANDORABOOT/uImage && oldkernel=/media/PANDORABOOT/uImage + test -e /media/PANDORABOOT/uImage-3 && oldkernel=/media/PANDORABOOT/uImage-3 + test -e /media/BOOT/uImage && oldkernel=/media/BOOT/uImage + test -e /media/BOOT/uImage-3 && oldkernel=/media/BOOT/uImage-3 +fi + +if ! test -e $oldkernel; then + zenity --error --text "SuperZaxxon Final firmware required, sorry." + exit 1 +fi + +if ! test -e $newkernel || ! test -d lib || ! test -d ipk; then + zenity --error --text "Required files are missing, perhaps this .pnd got corrupted." + exit 1 +fi + +root_free=`df | grep '/$' | sed -e '2~1d' | awk '{print $4}'` +if [ "$root_free" -lt 2000 ]; then + zenity --error --text "There is not enough space left in root partition. +This usually means your NAND is almost full. + +Delete some files and try again, or just do a full reflash." + exit 1 +fi + +if [ "`id -u`" != "0" ]; then + zenity --error --text "Root permissions required." + exit 1 +fi + +get_ver() +{ + dd if=$1 bs=32 skip=1 count=1 2> /dev/null \ + | strings | sed -e 's/.*\([0-9]\.[0-9]\.[0-9]*\).*/\1/' +} + +get_vercode() +{ + ver1=`echo $1 | awk -F. '{printf $1}'` + ver2=`echo $1 | awk -F. '{printf $2}'` + ver3=`echo $1 | awk -F. '{printf $3}'` + echo $((($ver1 << 16) + ($ver2 << 8) + $ver3)) +} + +log() +{ + echo -en "\033[0;32m" + echo "$@" + echo -en "\033[0m" + + echo "$@" >> $logfile +} + +echo > $logfile + +kernel_failed_detect=true +kernel_ask_newer=false +kernel_do_update=false +kernel_reboot_needed=false + +oldver=`get_ver $oldkernel` +newver=`get_ver $newkernel` +oldvcode=`get_vercode $oldver` +newvcode=`get_vercode $newver` + +# echo $oldver $newver $oldvcode $newvcode + +if [ -n "$oldver" -a -n "$newver" -a -n "$oldvcode" -a -n "$newvcode" ]; then + if [ "$oldvcode" -lt "$(((3 << 16) + (2 << 8) + 21))" ]; then + # a version before SZ-Final + zenity --error --text "SuperZaxxon Final firmware required, sorry." + exit 1 + fi + + if [ "$oldvcode" -eq "$newvcode" ]; then + oldtime=`stat -c %Y $oldkernel` + newtime=`stat -c %Y $newkernel` + if [ "$oldtime" -gt "$newtime" ]; then + kernel_ask_newer=true + else + kernel_failed_detect=false + kernel_do_update=true + fi + elif [ "$oldvcode" -gt "$newvcode" ]; then + kernel_ask_newer=true + else + kernel_failed_detect=false + kernel_do_update=true + fi +fi + +if $kernel_ask_newer; then + if zenity --question --text "It seems you have newer kernel already installed, +overwrite it?"; then + kernel_do_update=true + fi +elif $kernel_failed_detect; then + if zenity --question --text "Could not determine what kernel is installed on your system, +so have to ask, do you want to overwrite your current kernel?"; then + kernel_do_update=true + fi +fi + +if $kernel_do_update; then + if ! cmp $newkernel $oldkernel > /dev/null; then + log "updating kernel at $oldkernel from $oldver to $newver ..." + cp -a $newkernel $oldkernel + sync + kernel_reboot_needed=true + fi + + log "updating modules for $newver ..." + if [ -n "$oldver" -a -d "/lib/modules/$oldver" ]; then + rm -rf /lib/modules/$oldver + fi + cp -a lib / + sync + if ! $kernel_reboot_needed; then + # we can depmod now + depmod -a + sync + fi +fi + +log "installing packages..." +opkg install ipk/* | tee -a $logfile +sync + +# since uninstall script of gtk-touchscreen-mode-enable is broken, edit this out manually +sudo sed -i -e 's/^\(gtk-touchscreen-mode = 1\)/#\1/' /etc/gtk-2.0/gtkrc + +log "all done. You can find logfile at $logfile" +if $kernel_reboot_needed; then + zenity --question --text "Reboot required to start the new kernel. +Reboot now?" && reboot +else + zenity --info --text "Update complete." +fi