|
@@ -0,0 +1,762 @@
|
|
|
+diff --git a/MakeRootfsUpdate.sh b/MakeRootfsUpdate.sh
|
|
|
+index 99b77c9..c3f9894 100755
|
|
|
+--- a/MakeRootfsUpdate.sh
|
|
|
++++ b/MakeRootfsUpdate.sh
|
|
|
+@@ -1,5 +1,6 @@
|
|
|
+ #!/bin/bash
|
|
|
+ WRKDIR=/tmp/XXXUpdateRootfs
|
|
|
++BOOTDIR=$WRKDIR/_GfABoot
|
|
|
+ BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
|
|
|
+ UPDATE_BINARY=$WRKDIR/dest/UpdateRootfs.tar.Z
|
|
|
+ UPDATE_FILENAME="../UpdateDisplay001_$BUILD.sh"
|
|
|
+@@ -7,67 +8,34 @@ UPDATE_IN_SCRIPT="UpdateRootfs.sh.in"
|
|
|
+
|
|
|
+ ROOTFSMNT=/tmp/XXXRootFs
|
|
|
+
|
|
|
+-sudo umount $ROOTFSMNT
|
|
|
++sudo umount $ROOTFSMNT 2>/dev/null
|
|
|
+ sudo rm -rf $ROOTFSMNT
|
|
|
+ sudo mkdir -p $ROOTFSMNT
|
|
|
+-
|
|
|
+ sudo mount -o loop ./output/images/rootfs.ext2 $ROOTFSMNT
|
|
|
+
|
|
|
+-rm -rf $WRKDIR
|
|
|
++sudo rm -rf $WRKDIR
|
|
|
+ mkdir -p $WRKDIR/dest
|
|
|
+
|
|
|
+-cp ./output/images/*.dtb $WRKDIR
|
|
|
+-cp ./output/images/uImage $WRKDIR
|
|
|
+-cp ./output/images/MLO $WRKDIR
|
|
|
+-cp ./output/images/u-boot.img $WRKDIR
|
|
|
+-
|
|
|
+-sudo tar -C $ROOTFSMNT -czvf $WRKDIR/rootfs.tar.gz ./
|
|
|
+-sudo umount $ROOTFSMNT
|
|
|
+-#cp ./output/images/rootfs.tar.gz $WRKDIR
|
|
|
+-
|
|
|
+-tar -C $WRKDIR --exclude=./dest -czvf $WRKDIR/dest/UpdateRootfs.tar.Z ./
|
|
|
+-
|
|
|
+-# Check for payload format option (default is binary).
|
|
|
+-binary=1
|
|
|
+-uuencode=0
|
|
|
+-
|
|
|
+-if [[ "$1" == '--binary' ]]; then
|
|
|
+- binary=1
|
|
|
+- uuencode=0
|
|
|
+- shift
|
|
|
+-fi
|
|
|
+-if [[ "$1" == '--uuencode' ]]; then
|
|
|
+- binary=0
|
|
|
+- uuencode=1
|
|
|
+- shift
|
|
|
+-fi
|
|
|
+-
|
|
|
++sudo bash <<EOF
|
|
|
++mkdir -p $BOOTDIR
|
|
|
++cp ./output/images/*.dtb $BOOTDIR
|
|
|
++cp ./output/images/uImage $BOOTDIR
|
|
|
++cp ./output/images/MLO $BOOTDIR
|
|
|
++cp ./output/images/u-boot.img $BOOTDIR
|
|
|
++tar -C $ROOTFSMNT -cf - . | tar xvf - -C $WRKDIR
|
|
|
++umount $ROOTFSMNT 2>/dev/null
|
|
|
++tar -C $WRKDIR --exclude=./dest -czvf $UPDATE_BINARY ./
|
|
|
++EOF
|
|
|
++
|
|
|
++#----
|
|
|
+ if [[ ! -f $UPDATE_BINARY ]]; then
|
|
|
+ echo " UPDATE_BINARY $UPDATE_BINARY doesn't exist!"
|
|
|
+- echo "Usage: $0 [--binary | --uuencode]"
|
|
|
++ echo "Usage: $0"
|
|
|
+ exit 1
|
|
|
+ fi
|
|
|
+
|
|
|
+-
|
|
|
+-if [[ $binary -ne 0 ]]; then
|
|
|
+- # Append binary data.
|
|
|
+- sed \
|
|
|
+- -e 's/uuencode=./uuencode=0/' \
|
|
|
+- -e 's/binary=./binary=1/' \
|
|
|
+- $UPDATE_IN_SCRIPT > $UPDATE_FILENAME
|
|
|
+- echo "PAYLOAD:" >> $UPDATE_FILENAME
|
|
|
+-
|
|
|
+- cat $UPDATE_BINARY >> $UPDATE_FILENAME
|
|
|
+-fi
|
|
|
+-if [[ $uuencode -ne 0 ]]; then
|
|
|
+- # Append uuencoded data.
|
|
|
+- sed \
|
|
|
+- -e 's/uuencode=./uuencode=1/' \
|
|
|
+- -e 's/binary=./binary=0/' \
|
|
|
+- $UPDATE_IN_SCRIPT > $UPDATE_FILENAME
|
|
|
+- echo "PAYLOAD:" >> $UPDATE_FILENAME
|
|
|
+-
|
|
|
+- cat $UPDATE_BINARY | uuencode - >> $UPDATE_FILENAME
|
|
|
+-fi
|
|
|
++cat $UPDATE_IN_SCRIPT > $UPDATE_FILENAME
|
|
|
++echo "PAYLOAD:" >> $UPDATE_FILENAME
|
|
|
++cat $UPDATE_BINARY >> $UPDATE_FILENAME
|
|
|
+
|
|
|
+ chmod a+x $UPDATE_FILENAME
|
|
|
+diff --git a/UpdateRootfs.sh.in b/UpdateRootfs.sh.in
|
|
|
+index 13aeadf..af10b8a 100644
|
|
|
+--- a/UpdateRootfs.sh.in
|
|
|
++++ b/UpdateRootfs.sh.in
|
|
|
+@@ -1,28 +1,13 @@
|
|
|
+ #!/bin/sh
|
|
|
+
|
|
|
+-uuencode=0
|
|
|
+-binary=1
|
|
|
+-
|
|
|
+-##TAR_PARAMETERS="-C / --exclude=./opt --exclude=./etc/inittab -xzvf -"
|
|
|
+ TMP_PATH="$GFA_PREFIX/__GfA_Update"
|
|
|
+-TAR_PARAMETERS="-C $TMP_PATH -xzvf -"
|
|
|
++TAR_PARAMETERS="-C $GFA_PREFIX/ --exclude=./tmp --exclude=./etc/inittab --exclude=./etc/hosts --exclude=./etc/hostname --exclude=./etc/passwd --exclude=./etc/shadow --exclude=./etc/vncpwd --exclude=./etc/init.d/S99tincd --exclude=./etc/hostapd.conf --exclude=./root/.ssh --exclude=./etc/init.d/M99tincd --exclude=./var/GfA/Display_GSM.ini --exclude=./var/cron/crontabs/root -xzvf -"
|
|
|
+
|
|
|
+ untar_payload ()
|
|
|
+ {
|
|
|
+-
|
|
|
+- echo "remove $TMP_PATH : "
|
|
|
+- rm -rf $TMP_PATH
|
|
|
+- echo ">> $? "
|
|
|
+- mkdir -p $TMP_PATH
|
|
|
+-
|
|
|
+ match=$(grep -n -m 1 '^PAYLOAD:$' $0 | cut -d ':' -f 1)
|
|
|
+ payload_start=$((match + 1))
|
|
|
+- if [[ $binary -ne 0 ]]; then
|
|
|
+- tail -n +$payload_start $0 | tar $TAR_PARAMETERS
|
|
|
+- fi
|
|
|
+- if [[ $uuencode -ne 0 ]]; then
|
|
|
+- tail -n +$payload_start $0 | uudecode | tar $TAR_PARAMETERS
|
|
|
+- fi
|
|
|
++ tail -n +$payload_start $0 | tar $TAR_PARAMETERS
|
|
|
+ }
|
|
|
+
|
|
|
+ if [ -z $1 ]
|
|
|
+@@ -164,22 +149,17 @@ then
|
|
|
+ else
|
|
|
+ bootpart="/dev/mmcblk0p1"
|
|
|
+ fi
|
|
|
++#===== DoRealUpdate === Start
|
|
|
++if [ $1 == "DoRealUpdate" ]
|
|
|
++then
|
|
|
+
|
|
|
+-umount /mnt
|
|
|
+-mount $bootpart /mnt
|
|
|
+-
|
|
|
+-## -- alte Firmwarebinaries löschen
|
|
|
+-#rm /root/btm*.bin
|
|
|
++umount /mnt 2>/dev/null
|
|
|
++umount $GFA_PREFIX/_GfABoot 2>/dev/null
|
|
|
+
|
|
|
+-#--- Kernel MLO und Rootfs-Tarball entpacken
|
|
|
+-untar_payload
|
|
|
+-# ---
|
|
|
++rm -rf $GFA_PREFIX/_GfABoot
|
|
|
++mkdir $GFA_PREFIX/_GfABoot
|
|
|
++mount $bootpart $GFA_PREFIX/_GfABoot
|
|
|
+
|
|
|
+-rm /mnt/rootfs.tar.gz
|
|
|
+-cp $TMP_PATH/MLO /mnt
|
|
|
+-cp $TMP_PATH/u-boot.img /mnt
|
|
|
+-cp $TMP_PATH/uImage /mnt
|
|
|
+-cp $TMP_PATH/*.dtb /mnt
|
|
|
+
|
|
|
+ mkdir -p $TMP_PATH/bu_cfg
|
|
|
+
|
|
|
+@@ -201,17 +181,9 @@ then
|
|
|
+ rm $GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf
|
|
|
+ fi
|
|
|
+
|
|
|
+-#rootfs auspacken
|
|
|
+-tar -C $GFA_PREFIX/ --exclude=./tmp --exclude=./etc/inittab \
|
|
|
+- --exclude=./etc/hosts --exclude=./etc/hostname \
|
|
|
+- --exclude=./etc/passwd --exclude=./etc/shadow \
|
|
|
+- --exclude=./etc/vncpwd --exclude=./etc/init.d/S99tincd \
|
|
|
+- --exclude=./etc/hostapd.conf \
|
|
|
+- --exclude=./root/.ssh \
|
|
|
+- --exclude=./etc/init.d/M99tincd \
|
|
|
+- --exclude=./var/GfA/Display_GSM.ini \
|
|
|
+- --exclude=./var/cron/crontabs/root \
|
|
|
+- -xzvf $TMP_PATH/rootfs.tar.gz
|
|
|
++#--- Kernel MLO und Rootfs-Tarball entpacken
|
|
|
++untar_payload
|
|
|
++# ---
|
|
|
+
|
|
|
+ echo "sync mmc be patient ...."
|
|
|
+ sync
|
|
|
+@@ -297,12 +269,6 @@ then
|
|
|
+ sed -i 's/TSYNCCMD=rdate time.memod.de/TSYNCCMD=\/etc\/init.d\/S99rtc_GfA set/' $GFA_PREFIX/var/GfA/Display_GSM.ini
|
|
|
+ fi
|
|
|
+
|
|
|
+-#echo "Update Firmware"
|
|
|
+-#echo "."
|
|
|
+-#/root/spi_tivia /root/btm43_0107.bin >/dev/null
|
|
|
+-#echo ".."
|
|
|
+-#echo "Update Firmware Done"
|
|
|
+-#/root/gfa_spi -v
|
|
|
+ #================================
|
|
|
+ #--create mountable run folder insted of link
|
|
|
+ RUNDIR=$GFA_PREFIX/run
|
|
|
+@@ -430,13 +396,562 @@ fi
|
|
|
+
|
|
|
+ #=================
|
|
|
+ echo "Update Done, pls. reboot System"
|
|
|
+-umount /mnt
|
|
|
++umount $GFA_PREFIX/_GfABoot 2>/dev/null
|
|
|
++rm -rf $GFA_PREFIX/_GfABoot
|
|
|
++
|
|
|
+ echo "."
|
|
|
+ echo "restart system !!!"
|
|
|
+ sleep 2
|
|
|
+ #-----------------
|
|
|
+ reboot
|
|
|
++fi
|
|
|
++fi
|
|
|
++#====================== DoRealUpdate ==== Ende =====
|
|
|
++#===== MakeBootableSD/EMMC === Start
|
|
|
++if [ $1 == "MakeBootableSD" -o $1 == "MakeBootableEMMC" ]
|
|
|
++then
|
|
|
++such="root=/dev/mmcblk1"
|
|
|
++
|
|
|
++if [ $1 == "MakeBootableSD" ]; then
|
|
|
++ TODEV="SD"
|
|
|
++else
|
|
|
++ TODEV="EMMC"
|
|
|
++fi
|
|
|
++
|
|
|
++grep -q $such /proc/cmdline
|
|
|
++if [ $? == 0 ]; then
|
|
|
++ bootpart="/dev/mmcblk1p1"
|
|
|
++ bootdev="EMMC"
|
|
|
++ DESTNAME="SD"
|
|
|
++ DESTDEV="/dev/mmcblk0"
|
|
|
++ DESTBOOTPART="/dev/mmcblk0p1"
|
|
|
++ DESTROOTPART="/dev/mmcblk0p2"
|
|
|
++else
|
|
|
++ bootpart="/dev/mmcblk0p1"
|
|
|
++ bootdev="SD"
|
|
|
++ DESTNAME="EMMC"
|
|
|
++ DESTDEV="/dev/mmcblk1"
|
|
|
++ DESTBOOTPART="/dev/mmcblk1p1"
|
|
|
++ DESTROOTPART="/dev/mmcblk1p2"
|
|
|
++fi
|
|
|
++
|
|
|
++echo ""
|
|
|
++echo -e "\e[7mMake Bootable $TODEV\e[0m"
|
|
|
++
|
|
|
++if [ $bootdev == $TODEV ]; then
|
|
|
++ echo "System was booted from $TODEV, Making Bootable$TODEV not possible ! ==> EXIT"
|
|
|
++ exit 1
|
|
|
++fi
|
|
|
++
|
|
|
++if [ ! -b $DESTDEV ]; then
|
|
|
++ echo -e "\e[31mNo $DESTNAME available ! ==> EXIT\e[0m"
|
|
|
++ exit 2
|
|
|
++fi
|
|
|
++
|
|
|
++echo -e "\e[31m$DESTNAME will be formatted, all Data will be deleted!!\e[0m"
|
|
|
++echo ""
|
|
|
++read -n 1 -p "are you sure? (y/n) : " antwort
|
|
|
++
|
|
|
++if [ ${#antwort} == 0 ]; then
|
|
|
++ antwort = "n"
|
|
|
++fi
|
|
|
++
|
|
|
++if [ $antwort == "y" -o $antwort == "Y" ]; then
|
|
|
++ echo -e "\nStart copying .."
|
|
|
++else
|
|
|
++ echo -e "\nEXIT on user reqest"
|
|
|
++ exit 3
|
|
|
++fi
|
|
|
++
|
|
|
++echo "Formatting $DESTNAME ...."
|
|
|
++umount $DESTBOOTPART 2>/dev/null
|
|
|
++umount $DESTROOTPART 2>/dev/null
|
|
|
++dd if=/dev/zero of=$DESTDEV bs=2M count=1 conv=notrunc
|
|
|
++busybox fdisk $DESTDEV <<EOF
|
|
|
++o
|
|
|
++p
|
|
|
++n
|
|
|
++p
|
|
|
++1
|
|
|
++
|
|
|
+++64M
|
|
|
++t
|
|
|
++e
|
|
|
++a
|
|
|
++1
|
|
|
++n
|
|
|
++p
|
|
|
++2
|
|
|
++
|
|
|
++
|
|
|
++p
|
|
|
++w
|
|
|
++EOF
|
|
|
++/sbin/mkfs.vfat -F 16 $DESTBOOTPART
|
|
|
++if [ -e /usr/sbin/mkfs.ext4 ]; then
|
|
|
++ /usr/sbin/mkfs.ext4 -F $DESTROOTPART
|
|
|
++else
|
|
|
++ mkfs.ext4 -F $DESTROOTPART
|
|
|
++fi
|
|
|
++#======
|
|
|
++GFA_PREFIX="/tmp/__MakeSD"
|
|
|
++rm -rf $GFA_PREFIX
|
|
|
++TAR_PARAMETERS="-C $GFA_PREFIX/ -xzvf -"
|
|
|
++
|
|
|
++# mount partiotions
|
|
|
++mkdir -p $GFA_PREFIX
|
|
|
++mount $DESTROOTPART $GFA_PREFIX
|
|
|
++mkdir -p $GFA_PREFIX/_GfABoot
|
|
|
++mount $DESTBOOTPART $GFA_PREFIX/_GfABoot
|
|
|
++
|
|
|
++#--- Kernel MLO und Rootfs-Tarball entpacken
|
|
|
++untar_payload
|
|
|
++# ---
|
|
|
++cd
|
|
|
++df -h
|
|
|
++# ==========
|
|
|
++#=====
|
|
|
++# Get Graphics resolution and set dtb to the right resolution
|
|
|
++BASEBOARD=`cat /tmp/BASEBOARD`
|
|
|
++
|
|
|
++DONE=0
|
|
|
++YRES="$(fbset | awk '/geom/ {print $3}')"
|
|
|
++XRES="$(fbset | awk '/geom/ {print $2}')"
|
|
|
++
|
|
|
++EMMC_BOOTPATH=$GFA_PREFIX/_GfABoot
|
|
|
++
|
|
|
++echo "XRES $XRES, YRES $YRES"
|
|
|
++
|
|
|
++if [ "$XRES" == "480" -a "$YRES" == "272" ]; then
|
|
|
++if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
|
|
|
++ echo "4.3 Inch Display 2"
|
|
|
++ cp $EMMC_BOOTPATH/Display002_4.dtb $EMMC_BOOTPATH/Display001.dtb
|
|
|
++ DONE=1
|
|
|
++else
|
|
|
++ echo "4.3 Inch"
|
|
|
++ cp $EMMC_BOOTPATH/Display001_4.dtb $EMMC_BOOTPATH/Display001.dtb
|
|
|
++ DONE=1
|
|
|
++fi
|
|
|
++fi
|
|
|
++
|
|
|
++if [ "$XRES" == "800" -a "$YRES" == "480" ]; then
|
|
|
++if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
|
|
|
++ echo "7 Inch Display 2"
|
|
|
++ cp $EMMC_BOOTPATH/Display002_7.dtb $EMMC_BOOTPATH/Display001.dtb
|
|
|
++ DONE=1
|
|
|
++else
|
|
|
++if [ "$BASEBOARD" == "DISPLAY002_RS485" ]; then
|
|
|
++ echo "7 Inch Display 2 rs485"
|
|
|
++ cp $EMMC_BOOTPATH/Display002_7_rs485.dtb $EMMC_BOOTPATH/Display001.dtb
|
|
|
++ DONE=1
|
|
|
++else
|
|
|
++ echo "7 Inch"
|
|
|
++ cp $EMMC_BOOTPATH/Display001_7.dtb $EMMC_BOOTPATH/Display001.dtb
|
|
|
++ DONE=1
|
|
|
++fi
|
|
|
++fi
|
|
|
++fi
|
|
|
++
|
|
|
++if [ "$XRES" == "640" -a "$YRES" == "480" ]; then
|
|
|
++if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
|
|
|
++ echo "5.7 Inch Display 2"
|
|
|
++ cp $EMMC_BOOTPATH/Display002_5.dtb $EMMC_BOOTPATH/Display001.dtb
|
|
|
++ DONE=1
|
|
|
++else
|
|
|
++ echo "5.7 Inch"
|
|
|
++ cp $EMMC_BOOTPATH/Display001_5.dtb $EMMC_BOOTPATH/Display001.dtb
|
|
|
++ DONE=1
|
|
|
++fi
|
|
|
++fi
|
|
|
++if [ "$XRES" == "1280" -a "$YRES" == "800" ]; then
|
|
|
++if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
|
|
|
++ echo "10 Inch Display 2"
|
|
|
++ cp $EMMC_BOOTPATH/Display002_10.dtb $EMMC_BOOTPATH/Display001.dtb
|
|
|
++ DONE=1
|
|
|
++else
|
|
|
++ echo "10 Inch"
|
|
|
++ cp $EMMC_BOOTPATH/Display001_10.dtb $EMMC_BOOTPATH/Display001.dtb
|
|
|
++ DONE=1
|
|
|
++fi
|
|
|
++fi
|
|
|
++
|
|
|
++if [ "$XRES" == "1920" -a "$YRES" == "1080" ]; then
|
|
|
++if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
|
|
|
++ echo "15 Inch Display 2"
|
|
|
++ cp $EMMC_BOOTPATH/Display002_15.dtb $EMMC_BOOTPATH/Display001.dtb
|
|
|
++ DONE=1
|
|
|
++else
|
|
|
++ echo "15 Inch"
|
|
|
++ cp $EMMC_BOOTPATH/Display001_15.dtb $EMMC_BOOTPATH/Display001.dtb
|
|
|
++ DONE=1
|
|
|
++fi
|
|
|
++fi
|
|
|
++
|
|
|
++if [ "$DONE" == "0" ]; then
|
|
|
++ echo "Unknown Display Resolution"
|
|
|
++fi
|
|
|
++#========================================
|
|
|
++
|
|
|
++# umount boot
|
|
|
++umount $DESTBOOTPART
|
|
|
++rm -rf $GFA_PREFIX/_GfABoot
|
|
|
++# umount rootfs
|
|
|
++umount $DESTROOTPART
|
|
|
++
|
|
|
++exit 0
|
|
|
++fi
|
|
|
++#===== MakeBootableSD/EMMC === Ende
|
|
|
++
|
|
|
++#===== MakeSDUpdateTool === Start
|
|
|
++if [ $1 == "MakeSDUpdateTool" ]
|
|
|
++then
|
|
|
++such="root=/dev/mmcblk1"
|
|
|
++
|
|
|
++grep -q $such /proc/cmdline
|
|
|
++if [ $? == 0 ]; then
|
|
|
++ bootpart="/dev/mmcblk1p1"
|
|
|
++ bootdev="EMMC"
|
|
|
++else
|
|
|
++ bootpart="/dev/mmcblk0p1"
|
|
|
++ bootdev="SD"
|
|
|
++fi
|
|
|
++
|
|
|
++echo ""
|
|
|
++echo -e "\e[7mMake SDUpdateTool\e[0m"
|
|
|
++
|
|
|
++if [ $bootdev != "SD" ]; then
|
|
|
++ echo "System was booted from $bootdev, Making SDUpdateTool not possible ! ==> EXIT"
|
|
|
++ exit 1
|
|
|
++fi
|
|
|
++
|
|
|
++GFA_PREFIX="/opt/GfA/SDUpdateTool"
|
|
|
++GFA_DATAPATH=$GFA_PREFIX/_BootRoot
|
|
|
++
|
|
|
++rm -rf $GFA_DATAPATH
|
|
|
++mkdir -p $GFA_DATAPATH
|
|
|
++TAR_PARAMETERS="-C $GFA_DATAPATH/ -xzvf -"
|
|
|
++
|
|
|
++#--- Kernel MLO und Rootfs-Tarball entpacken
|
|
|
++untar_payload
|
|
|
++# ---
|
|
|
++echo -e "===\n Make UpdateEMMC.sh \n===\n"
|
|
|
++(\
|
|
|
++cat << XEOF
|
|
|
++#!/bin/sh
|
|
|
++
|
|
|
++CALLDIR=\`pwd\`
|
|
|
++WRKDIR=/opt/GfA/SDUpdateTool
|
|
|
++
|
|
|
++DESTDEV="/dev/mmcblk1"
|
|
|
++
|
|
|
++EMMC_BOOTPATH="/tmp/EMMCBOOT"
|
|
|
++EMMC_ROOTPATH="/tmp/EMMCROOT"
|
|
|
++such=\$DESTDEV
|
|
|
++
|
|
|
++grep -q \$such /proc/cmdline
|
|
|
++if [ \$? == 0 ]; then
|
|
|
++ bootpart="/dev/mmcblk1p1"
|
|
|
++ bootdev="EMMC"
|
|
|
++else
|
|
|
++ bootpart="/dev/mmcblk0p1"
|
|
|
++ bootdev="SD"
|
|
|
++fi
|
|
|
++
|
|
|
++echo ""
|
|
|
++echo -e "\e[7mUpdate EMMC from SD\e[0m"
|
|
|
++
|
|
|
++if [ \$bootdev != "SD" ]; then
|
|
|
++ echo "System was booted from \$bootdev, update from SD not possible ! =="
|
|
|
++ exit 1
|
|
|
++fi
|
|
|
++
|
|
|
++umount \${DESTDEV}p1 2>/dev/null
|
|
|
++umount \${DESTDEV}p2 2>/dev/null
|
|
|
++
|
|
|
++rm -rf \$EMMC_BOOTPATH
|
|
|
++rm -rf \$EMMC_ROOTPATH
|
|
|
++mkdir -p \$EMMC_BOOTPATH
|
|
|
++mkdir -p \$EMMC_ROOTPATH
|
|
|
++
|
|
|
++mount \${DESTDEV}p1 \$EMMC_BOOTPATH
|
|
|
++mount \${DESTDEV}p2 \$EMMC_ROOTPATH
|
|
|
++
|
|
|
++#== copy network config ==
|
|
|
++TMP_PATH=\$WRKDIR/_GfA_tmp
|
|
|
++GFA_PREFIX=\$EMMC_ROOTPATH
|
|
|
++
|
|
|
++rm -rf \$TMP_PATH
|
|
|
++mkdir -p \$TMP_PATH
|
|
|
++mkdir -p \$TMP_PATH/bu_cfg
|
|
|
++
|
|
|
++if [ -e \$GFA_PREFIX/etc/network/interfaces ]
|
|
|
++then
|
|
|
++ cp \$GFA_PREFIX/etc/network/interfaces \$TMP_PATH/bu_cfg
|
|
|
++ rm \$GFA_PREFIX/etc/network/interfaces
|
|
|
++fi
|
|
|
++
|
|
|
++if [ -e \$GFA_PREFIX/etc/wpa_supplicant.conf ]
|
|
|
++then
|
|
|
++ cp \$GFA_PREFIX/etc/wpa_supplicant.conf \$TMP_PATH/bu_cfg/wpa_supplicant.conf_old
|
|
|
++ rm \$GFA_PREFIX/etc/wpa_supplicant.conf
|
|
|
++fi
|
|
|
++
|
|
|
++if [ -e \$GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf ]
|
|
|
++then
|
|
|
++ cp \$GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf \$TMP_PATH/bu_cfg
|
|
|
++ rm \$GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf
|
|
|
++fi
|
|
|
++
|
|
|
++#=== copy ROOTFS
|
|
|
++cd \$WRKDIR/_BootRoot
|
|
|
++rsync -avR --exclude=/_GfABoot \\
|
|
|
++--exclude=./tmp --exclude=./etc/inittab \\
|
|
|
++--exclude=./etc/hosts --exclude=./etc/hostname \\
|
|
|
++--exclude=./etc/passwd --exclude=./etc/shadow \\
|
|
|
++--exclude=./etc/vncpwd --exclude=./etc/init.d/S99tincd \\
|
|
|
++--exclude=./etc/hostapd.conf --exclude=./root/.ssh \\
|
|
|
++--exclude=./etc/init.d/M99tincd --exclude=./var/GfA/Display_GSM.ini \\
|
|
|
++--exclude=./var/cron/crontabs/root \\
|
|
|
++ ./ \$EMMC_ROOTPATH/
|
|
|
++
|
|
|
++# --- copy old eth0 configuration
|
|
|
++INTERFACE="eth0"
|
|
|
++IFCONFIG=\$TMP_PATH/bu_cfg/interfaces
|
|
|
++
|
|
|
++(\\
|
|
|
++cat << EOF
|
|
|
++# Configure Loopback
|
|
|
++auto lo
|
|
|
++iface lo inet loopback
|
|
|
++
|
|
|
++EOF
|
|
|
++) > \$GFA_PREFIX/etc/network/interfaces
|
|
|
++
|
|
|
++awk -v par=\$INTERFACE '/^iface/ && \$2==par {f=1}/^iface/ && \$2!=par {f=0}f && !/^\s*#/d && !/^\s*\$/d {print \$0 }' \$TMP_PATH/bu_cfg/interfaces \\
|
|
|
++>> \$GFA_PREFIX/etc/network/interfaces
|
|
|
++
|
|
|
++(\\
|
|
|
++cat << EOF
|
|
|
++iface eth1 inet dhcp
|
|
|
++#---
|
|
|
++iface usb0 inet static
|
|
|
++ address 192.168.7.2
|
|
|
++ netmask 255.255.255.252
|
|
|
++#---
|
|
|
++iface wlan0 inet dhcp
|
|
|
++ wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
|
|
|
++#
|
|
|
++EOF
|
|
|
++) >> \$GFA_PREFIX/etc/network/interfaces
|
|
|
++
|
|
|
++if [ -e \$GFA_PREFIX/etc/init.d/S98usb_g_ether ]
|
|
|
++then
|
|
|
++ cp \$GFA_PREFIX/etc/init.d/S98usb_g_ether \$GFA_PREFIX/etc/init.d/M98usb_g_ether
|
|
|
++ rm \$GFA_PREFIX/etc/init.d/S98usb_g_ether
|
|
|
++fi
|
|
|
++
|
|
|
++if [ -e \$GFA_PREFIX/etc/init.d/S80ti-sgx ]
|
|
|
++then
|
|
|
++ rm \$GFA_PREFIX/etc/init.d/S80ti-sgx
|
|
|
++fi
|
|
|
++
|
|
|
++if [ -e \$GFA_PREFIX/etc/init.d/M99_wlan_usb ]
|
|
|
++then
|
|
|
++ rm \$GFA_PREFIX/etc/init.d/M99_wlan_usb
|
|
|
++fi
|
|
|
++
|
|
|
++if [ -e \$GFA_PREFIX/etc/init.d/S99_wlan_usb ]
|
|
|
++then
|
|
|
++ rm \$GFA_PREFIX/etc/init.d/S99_wlan_usb
|
|
|
++fi
|
|
|
++
|
|
|
++if [ -e \$GFA_PREFIX/etc/init.d/M80dhcp-relay ]
|
|
|
++then
|
|
|
++ rm \$GFA_PREFIX/etc/init.d/M80dhcp-relay
|
|
|
++fi
|
|
|
++
|
|
|
++if [ -e \$GFA_PREFIX/etc/init.d/S80dhcp-relay ]
|
|
|
++then
|
|
|
++ rm \$GFA_PREFIX/etc/init.d/S80dhcp-relay
|
|
|
++fi
|
|
|
++if [ -e \$GFA_PREFIX/etc/init.d/M80dhcp-server ]
|
|
|
++then
|
|
|
++ rm \$GFA_PREFIX/etc/init.d/M80dhcp-server
|
|
|
++fi
|
|
|
++
|
|
|
++if [ -e \$GFA_PREFIX/etc/init.d/S80dhcp-server ]
|
|
|
++then
|
|
|
++ rm \$GFA_PREFIX/etc/init.d/S80dhcp-server
|
|
|
++fi
|
|
|
++
|
|
|
++if [ -d \$GFA_PREFIX/etc/dhcp ]
|
|
|
++then
|
|
|
++ rm -rf \$GFA_PREFIX/etc/dhcp
|
|
|
++fi
|
|
|
++
|
|
|
++if [ -e \$GFA_PREFIX/var/GfA/Display_GSM.ini ]
|
|
|
++then
|
|
|
++ sed -i 's/TSYNCCMD=rdate time.memod.de/TSYNCCMD=\/etc\/init.d\/S99rtc_GfA set/' \$GFA_PREFIX/var/GfA/Display_GSM.ini
|
|
|
++fi
|
|
|
++#================================
|
|
|
++#--create mountable run folder insted of link
|
|
|
++RUNDIR=\$GFA_PREFIX/run
|
|
|
++if [ -L \$RUNDIR ]; then
|
|
|
++ mv \$RUNDIR \$RUNDIR'_WRK'
|
|
|
++ mkdir \$RUNDIR
|
|
|
++ mount -t tmpfs tmpfs \$RUNDIR
|
|
|
++ WRKDIR=\`pwd\`
|
|
|
++ cd \$RUNDIR'_WRK'
|
|
|
++ cp -a ./* \$RUNDIR
|
|
|
++ cd \$WRKDIR
|
|
|
++ rm \$RUNDIR'_WRK'
|
|
|
++fi
|
|
|
++#--- craete missing nogroup group
|
|
|
++GID_NOGROUP=\`awk -F\: '/nogroup/ {print \$3}' \$GFA_PREFIX/etc/group\`
|
|
|
++if [ -z "\$GID_NOGROUP" ]; then
|
|
|
++# addgroup -S -g 65534 nogroup
|
|
|
++ GID_NOGROUP=65534
|
|
|
++ echo "nogroup:x:\${GID_NOUGROUP}:" >> \$GFA_PREFIX/etc/group
|
|
|
++fi
|
|
|
++#--create missing users for mysql,
|
|
|
++if [ -z \`awk -F\: '/mysql/ {print \$3}' \$GFA_PREFIX/etc/passwd\` ]; then
|
|
|
++ UID_MY=\`awk -F: '{uid[\$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' \$GFA_PREFIX/etc/passwd\`
|
|
|
++ echo "mysql:x:\$UID_MY:\${GID_NOUGROUP}:MySQL daemon:/var/mysql:/bin/false" >> \$GFA_PREFIX/etc/passwd
|
|
|
++fi
|
|
|
++#--create missing users for postgresql,
|
|
|
++if [ -z \`awk -F\: '/postgres/ {print \$3}' \$GFA_PREFIX/etc/passwd\` ]; then
|
|
|
++ UID_PG=\`awk -F: '{uid[\$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' \$GFA_PREFIX/etc/passwd\`
|
|
|
++ GID_PG=\`awk -F\: '/postgres/ {print \$3}' \$GFA_PREFIX/etc/group\`
|
|
|
++ if [ -z "\$GID_PG" ]; then
|
|
|
++ GID_PG=\`awk -F: '{uid[\$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' \$GFA_PREFIX/etc/group\`
|
|
|
++ echo "postgres:x:\$GID_PG:" >> \$GFA_PREFIX/etc/group
|
|
|
++ fi
|
|
|
++ echo "postgres:x:\$UID_PG:\$GID_PG:PostgreSQL Server:/var/lib/pgsql:/bin/sh" >> \$GFA_PREFIX/etc/passwd
|
|
|
++fi
|
|
|
++#------------------
|
|
|
++UID_MY=\`awk -F\: '/mysql/ {print \$3}' \$GFA_PREFIX/etc/passwd\`
|
|
|
++UID_PG=\`awk -F\: '/postgres/ {print \$3}' \$GFA_PREFIX/etc/passwd\`
|
|
|
++GID_PG=\`awk -F\: '/postgres/ {print \$3}' \$GFA_PREFIX/etc/group\`
|
|
|
++GID_NOGROUP=\`awk -F\: '/nogroup/ {print \$3}' \$GFA_PREFIX/etc/group\`
|
|
|
++
|
|
|
++chown -Rv \${UID_MY}:\${GID_NOGROUP} \$GFA_PREFIX/var/mysql
|
|
|
++chown -Rv \${UID_PG}:\${GID_PG} \$GFA_PREFIX/var/lib/pgsql
|
|
|
++
|
|
|
++chmod 700 \$GFA_PREFIX/root/.ssh
|
|
|
++#===== copy custom_root files if folder exists
|
|
|
++if [ -d "\$WRKDIR/custom_root" ]; then
|
|
|
++ cd \$WRKDIR/custom_root
|
|
|
++ rsync -avR \\
|
|
|
++ ./ \$EMMC_ROOTPATH/
|
|
|
++fi
|
|
|
++#==============================================================================
|
|
|
++#=== copy BOOTFS
|
|
|
++rm -rf \$EMMC_BOOTPATH/*
|
|
|
++cd \$WRKDIR/_BootRoot/_GfABoot
|
|
|
++rsync -avR ./ \$EMMC_BOOTPATH/
|
|
|
++#=====
|
|
|
++# Get Graphics resolution and set dtb to the right resolution
|
|
|
++BASEBOARD=\`cat /tmp/BASEBOARD\`
|
|
|
++
|
|
|
++DONE=0
|
|
|
++YRES="\$(fbset | awk '/geom/ {print \$3}')"
|
|
|
++XRES="\$(fbset | awk '/geom/ {print \$2}')"
|
|
|
++
|
|
|
++echo "XRES \$XRES, YRES \$YRES"
|
|
|
++
|
|
|
++if [ "\$XRES" == "480" -a "\$YRES" == "272" ]; then
|
|
|
++if [ "\$BASEBOARD" == "DISPLAY002_DI4" ]; then
|
|
|
++ echo "4.3 Inch Display 2"
|
|
|
++ cp \$EMMC_BOOTPATH/Display002_4.dtb \$EMMC_BOOTPATH/Display001.dtb
|
|
|
++ DONE=1
|
|
|
++else
|
|
|
++ echo "4.3 Inch"
|
|
|
++ cp \$EMMC_BOOTPATH/Display001_4.dtb \$EMMC_BOOTPATH/Display001.dtb
|
|
|
++ DONE=1
|
|
|
++fi
|
|
|
++fi
|
|
|
++
|
|
|
++if [ "\$XRES" == "800" -a "\$YRES" == "480" ]; then
|
|
|
++if [ "\$BASEBOARD" == "DISPLAY002_DI4" ]; then
|
|
|
++ echo "7 Inch Display 2"
|
|
|
++ cp \$EMMC_BOOTPATH/Display002_7.dtb \$EMMC_BOOTPATH/Display001.dtb
|
|
|
++ DONE=1
|
|
|
++else
|
|
|
++if [ "\$BASEBOARD" == "DISPLAY002_RS485" ]; then
|
|
|
++ echo "7 Inch Display 2 rs485"
|
|
|
++ cp \$EMMC_BOOTPATH/Display002_7_rs485.dtb \$EMMC_BOOTPATH/Display001.dtb
|
|
|
++ DONE=1
|
|
|
++else
|
|
|
++ echo "7 Inch"
|
|
|
++ cp \$EMMC_BOOTPATH/Display001_7.dtb \$EMMC_BOOTPATH/Display001.dtb
|
|
|
++ DONE=1
|
|
|
++fi
|
|
|
++fi
|
|
|
++fi
|
|
|
++
|
|
|
++if [ "\$XRES" == "640" -a "\$YRES" == "480" ]; then
|
|
|
++if [ "\$BASEBOARD" == "DISPLAY002_DI4" ]; then
|
|
|
++ echo "5.7 Inch Display 2"
|
|
|
++ cp \$EMMC_BOOTPATH/Display002_5.dtb \$EMMC_BOOTPATH/Display001.dtb
|
|
|
++ DONE=1
|
|
|
++else
|
|
|
++ echo "5.7 Inch"
|
|
|
++ cp \$EMMC_BOOTPATH/Display001_5.dtb \$EMMC_BOOTPATH/Display001.dtb
|
|
|
++ DONE=1
|
|
|
++fi
|
|
|
++fi
|
|
|
++if [ "\$XRES" == "1280" -a "\$YRES" == "800" ]; then
|
|
|
++if [ "\$BASEBOARD" == "DISPLAY002_DI4" ]; then
|
|
|
++ echo "10 Inch Display 2"
|
|
|
++ cp \$EMMC_BOOTPATH/Display002_10.dtb \$EMMC_BOOTPATH/Display001.dtb
|
|
|
++ DONE=1
|
|
|
++else
|
|
|
++ echo "10 Inch"
|
|
|
++ cp \$EMMC_BOOTPATH/Display001_10.dtb \$EMMC_BOOTPATH/Display001.dtb
|
|
|
++ DONE=1
|
|
|
++fi
|
|
|
++fi
|
|
|
++
|
|
|
++if [ "\$XRES" == "1920" -a "\$YRES" == "1080" ]; then
|
|
|
++if [ "\$BASEBOARD" == "DISPLAY002_DI4" ]; then
|
|
|
++ echo "15 Inch Display 2"
|
|
|
++ cp \$EMMC_BOOTPATH/Display002_15.dtb \$EMMC_BOOTPATH/Display001.dtb
|
|
|
++ DONE=1
|
|
|
++else
|
|
|
++ echo "15 Inch"
|
|
|
++ cp \$EMMC_BOOTPATH/Display001_15.dtb \$EMMC_BOOTPATH/Display001.dtb
|
|
|
++ DONE=1
|
|
|
++fi
|
|
|
++fi
|
|
|
++
|
|
|
++if [ "\$DONE" == "0" ]; then
|
|
|
++ echo "Unknown Display Resolution"
|
|
|
++fi
|
|
|
++#========================================
|
|
|
++
|
|
|
++umount \${DESTDEV}p1 2>/dev/null
|
|
|
++umount \${DESTDEV}p2 2>/dev/null
|
|
|
++
|
|
|
++XEOF
|
|
|
++) > $GFA_PREFIX/UpdateEMMC.sh
|
|
|
++chmod a+x $GFA_PREFIX/UpdateEMMC.sh
|
|
|
++
|
|
|
+ exit 0
|
|
|
+ fi
|
|
|
+-#-------------
|
|
|
++#===== MakeSDUpdateTool === End
|
|
|
++
|
|
|
++#====== HELP on unknown Command =======
|
|
|
++echo -e "Unknown Command :: $1"
|
|
|
++echo -e "Usage: $0 \e[32m[Command]\e[0m"
|
|
|
++echo -e "\t without command ... update to new system"
|
|
|
++echo -e "\t \e[32mMakeBootableSD\e[0m ... create bootable SD card with factory defaults"
|
|
|
++echo -e "\t \e[32mMakeBootableEMMC\e[0m ... create bootable EMMC with factory defaults"
|
|
|
++echo -e "\t \e[32mMakeSDUpdateTool\e[0m ... create Folders and scripts for"
|
|
|
++echo -e "\t\t updating system from SD Card in /opt/GfA/SDUpdateTool"
|
|
|
++echo -e "\t\t To Do UpdateEMMC:"
|
|
|
++echo -e "\t\t\t cd /opt/GfA/SDUpdateTool"
|
|
|
++echo -e "\t\t\t ./UpdateEMMC.sh"
|
|
|
++echo -e "\t\t\t if folder /opt/GfASDupdateTool/custom_root exists"
|
|
|
++echo -e "\t\t\t whole tree will be copied to root filesystem as is"
|
|
|
++
|
|
|
+ exit 0
|