Reinhard Russinger 5 年 前
コミット
a50c71d0d4

+ 1 - 1
board/GfA/Display001/BUILD

@@ -1 +1 @@
-667
+669

+ 6 - 2
board/GfA/Display001/rootfs/root/CopyEMMCtoSD.sh

@@ -42,7 +42,7 @@ echo "Formatting SD ...."
 umount /dev/mmcblk0p1 2>/dev/null
 umount /dev/mmcblk0p2 2>/dev/null
 dd if=/dev/zero of=/dev/mmcblk0 bs=2M count=1 conv=notrunc
-fdisk /dev/mmcblk0 <<EOF
+busybox fdisk /dev/mmcblk0 <<EOF
 o
 p
 n
@@ -63,7 +63,11 @@ p
 w
 EOF
 /sbin/mkfs.vfat -F 16 /dev/mmcblk0p1
-/usr/sbin/mkfs.ext4 -F /dev/mmcblk0p2
+if [ -e /usr/sbin/mkfs.ext4 ]; then
+       /usr/sbin/mkfs.ext4 -F /dev/mmcblk0p2
+else
+       mkfs.ext4 -F /dev/mmcblk0p2
+fi
 # temp. mountdirectories
 mkdir /tmp/boot
 mkdir /tmp/bootdata

+ 6 - 2
board/GfA/Display001/rootfs/root/CopySDtoEMMC.sh

@@ -42,7 +42,7 @@ echo "Formatting EMMC ...."
 umount /dev/mmcblk1p1 2>/dev/null
 umount /dev/mmcblk1p2 2>/dev/null
 dd if=/dev/zero of=/dev/mmcblk1 bs=2M count=1 conv=notrunc
-fdisk /dev/mmcblk1 <<EOF
+busybox fdisk /dev/mmcblk1 <<EOF
 o
 p
 n
@@ -63,7 +63,11 @@ p
 w
 EOF
 /sbin/mkfs.vfat -F 16 /dev/mmcblk1p1
-/usr/sbin/mkfs.ext4 -F /dev/mmcblk1p2
+if [ -e /usr/sbin/mkfs.ext4 ]; then
+       /usr/sbin/mkfs.ext4 -F /dev/mmcblk1p2
+else
+       mkfs.ext4 -F /dev/mmcblk1p2
+fi
 # temp. mountdirectories
 mkdir /tmp/boot
 mkdir /tmp/bootdata

+ 762 - 0
patches/0028-Update-Script-New.patch

@@ -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