diff --git a/CrossCompile.sh b/CrossCompile.sh new file mode 100755 index 0000000..c068ea1 --- /dev/null +++ b/CrossCompile.sh @@ -0,0 +1,91 @@ +#! /bin/bash +# +# + +WRKDIR=`pwd` +CMDDIR=`dirname \`readlink -f $0\`` +cd $CMDDIR + +#=== Asssign GNU_TARGET_NAME from .config +_ARCH=`grep BR2_ARCH\= .config | awk -F\= -F\" '{print $2}'` +_TARGET_VENDOR=`grep BR2_TOOLCHAIN_BUILDROOT_VENDOR\= .config | awk -F\= -F\" '{print $2}'` + +# -- get target os +_BR2_BINFMT_FLAT=`grep BR2_BINFMT_FLAT\= .config | awk -F\= '{print $2}'` +if [ "$_BR2_BINFMT_FLAT" = "y" ]; then + _TARGET_OS="uclinux" + else + _TARGET_OS="linux" +fi + +# -- get libc +_BR2_TOOLCHAIN_USES_UCLIBC=`grep BR2_TOOLCHAIN_USES_UCLIBC\= .config | awk -F\= '{print $2}'` +_BR2_TOOLCHAIN_USES_MUSL=`grep BR2_TOOLCHAIN_USES_MUSL\= .config | awk -F\= '{print $2}'` + +if [ "$_BR2_TOOLCHAIN_USES_UCLIBC" = "y" ]; then + _LIBC="uclibc" + else + if [ "$_BR2_TOOLCHAIN_USES_MUSL" = "y" ]; then + _LIBC="musl" + else + _LIBC="gnu" + fi +fi + +# -- ABI +_BR2_arm=`grep BR2_arm\= .config | awk -F\= '{print $2}'` +_BR2_armeb=`grep BR2_armeb\= .config | awk -F\= '{print $2}'` +_BR2_ARM_EABIHF=`grep BR2_ARM_EABIHF\= .config | awk -F\= '{print $2}'` +if [ "$_BR2_arm" = "y" ] || [ "$_BR2_armeb" = "y" ]; then + if [ "$_LIBC" = "uclibc" ]; then + _ABI="gnueabi" + else + _ABI="eabi" + fi + if [ "$_BR2_ARM_EABIHF" = "y" ]; then + _ABI="${_ABI}hf" + fi +fi + +_GNU_TARGET_NAME="${_ARCH}-${_TARGET_VENDOR}-${_TARGET_OS}-${_LIBC}${_ABI}" +#=============================================================== + +TOOLCHAIN=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'` +echo $TOOLCHAIN + +if [[ $TOOLCHAIN = *\$\(BASE_DIR\)* ]]; then + export SYSROOT=`readlink -f $CMDDIR`/output/host/usr/bin/ +else + export SYSROOT=$TOOLCHAIN/usr/bin +fi + +export PATH=$PATH:$SYSROOT + +export CROSS_COMPILE="${_GNU_TARGET_NAME}-" +export CROSS=${CROSS_COMPILE} + +export ARCH=arm +_KERNELDIR=`grep BR2_LINUX_KERNEL_VERSION\= .config | awk -F\= -F\" '{print $2}'` +export KERNELDIR=${CMDDIR}/output/build/linux-${_KERNELDIR} +export BB_KERNEL_SOURCES=$KERNELDIR +export SYSROOTARM=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`/usr/${_GNU_TARGET_NAME}/sysroot +export CC_FULLPATH="${SYSROOT}/${CROSS_COMPILE}" +export CC=${CROSS_COMPILE}gcc +export CXX=${CROSS_COMPILE}g++ + +#--- gnupru +export PASM=pasm +##export PSYSROOT=/home/ru/pru/pru-gcc/bin +export PSYSROOT=/opt/GfA/PRU-ICSS/bin/pru-gcc/bin +export PATH=$PSYSROOT:$PATH + +export PCROSS_COMPILE=pru- +export PARCH=pru + +cd $WRKDIR +if [ $# -eq "0" ] +then +PROMPT_COMMAND='PS1="\[\033[0;31m\]CROSS CC:\[\033[0;32m\]$PS1";unset PROMPT_COMMAND' bash ; reset +else +$1 +fi diff --git a/MakeIMAGE.sh b/MakeIMAGE.sh new file mode 100755 index 0000000..9612418 --- /dev/null +++ b/MakeIMAGE.sh @@ -0,0 +1,106 @@ +#!/bin/sh + +SAVE_LC=$LC_ALL +export LC_ALL=C + +BUILD=`cat ../GfA/board/GfA/Display001/BUILD` +IMAGEFILE=../Display001_Build_$BUILD-img + +ROOTFSMNT=/tmp/XXXRootFs + +echo "Image: $IMAGEFILE" +#-- build imagefile +dd if=/dev/zero ibs=1M count=1 > $IMAGEFILE +dd if=/dev/zero ibs=1M count=2048 | tr "\000" "\377" >> $IMAGEFILE +#------------------------------------------------------- +#-- create partitions BOOT rootfs !!! don't change !!!! +fdisk $IMAGEFILE << EOF +o +n +p + + ++300M +n +p + + + +t +1 +c +a +1 +p +w +EOF +echo "=============" +#-- map partitions +DRIVE1=/dev/mapper/`kpartx -s -l $IMAGEFILE | head -n +1| awk '{print $1}'` +DRIVE2=/dev/mapper/`kpartx -s -l $IMAGEFILE | tail -n +2 | head -n +1| awk '{print $1}'` + +echo ">>>>>>>>>>>>>>>>>>" +echo $DRIVE1 +echo $DRIVE2 +echo ">>>>>>>>>>>>>>>>>>" + +kpartx -asv $IMAGEFILE +#-- mount partitions +umount /tmp/boot +umount /tmp/rootfs + +rm -rf /tmp/boot +rm -rf /tmp/rootfs + +mkdir /tmp/boot +mkdir /tmp/rootfs + +dd if=/dev/zero of=${DRIVE1} bs=1M count=1 +mkfs.vfat -F 32 -n "boot" ${DRIVE1} +mount ${DRIVE1} /tmp/boot + +du -h ${DRIVE1} + +cp ./output/images/*.dtb /tmp/boot +cp ./output/images/uImage /tmp/boot +cp ./output/images/MLO /tmp/boot +cp ./output/images/u-boot.img /tmp/boot + +ls -alh /tmp/boot + +dd if=/dev/zero of=${DRIVE2} bs=1M count=1 +mkfs.ext3 -L "rootfs" ${DRIVE2} +mount ${DRIVE2} /tmp/rootfs + +du -h ${DRIVE2} +sleep 5 + +umount ${ROOTFSMNT} +rm -rf ${ROOTFSMNT} +mkdir -p ${ROOTFSMNT} +echo "Mount ====>> " ${ROOTFSMNT} +mount -o loop ./output/images/rootfs.ext2 ${ROOTFSMNT} + +WRKDIR=`pwd` +cd ${ROOTFSMNT} +tar cf - . | (cd /tmp/rootfs && tar xBf -) + +cd ${WRKDIR} +umount ${ROOTFSMNT} +#tar -C /tmp/rootfs --checkpoint --checkpoint-action=dot -xzf ./output/images/rootfs.tar.gz + +echo "" + +sync +sync +umount ${DRIVE1} +umount ${DRIVE2} + +#-- unmap partitions +kpartx -dsv $IMAGEFILE +#-- packen des Imagefiles +rm $IMAGEFILE.zip +zip -j $IMAGEFILE.zip $IMAGEFILE + +export LC_ALL=$SAVE_LC + diff --git a/MakeLegalInfo.sh b/MakeLegalInfo.sh new file mode 100755 index 0000000..429486f --- /dev/null +++ b/MakeLegalInfo.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +SAVE_LC=$LC_ALL +export LC_ALL=C + +BUILD=`cat ../GfA/board/GfA/Display001/BUILD` +IMAGEFILE=../Display001_Build_$BUILD-img + +#-- legalinfo erstellen +TMPWRKDIR=`pwd` +cd output +rm ../../Display001-$BUILD-legal-info.zip +zip -r ../../Display001-$BUILD-legal-info.zip ./legal-info/* +cd $TMPWRKDIR + +export LC_ALL=$SAVE_LC + \ No newline at end of file diff --git a/MakeRootfsUpdate.sh b/MakeRootfsUpdate.sh new file mode 100755 index 0000000..c3f9894 --- /dev/null +++ b/MakeRootfsUpdate.sh @@ -0,0 +1,41 @@ +#!/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" +UPDATE_IN_SCRIPT="UpdateRootfs.sh.in" + +ROOTFSMNT=/tmp/XXXRootFs + +sudo umount $ROOTFSMNT 2>/dev/null +sudo rm -rf $ROOTFSMNT +sudo mkdir -p $ROOTFSMNT +sudo mount -o loop ./output/images/rootfs.ext2 $ROOTFSMNT + +sudo rm -rf $WRKDIR +mkdir -p $WRKDIR/dest + +sudo bash </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" + exit 1 +fi + +cat $UPDATE_IN_SCRIPT > $UPDATE_FILENAME +echo "PAYLOAD:" >> $UPDATE_FILENAME +cat $UPDATE_BINARY >> $UPDATE_FILENAME + +chmod a+x $UPDATE_FILENAME diff --git a/MakeTOOLCHAIN.sh b/MakeTOOLCHAIN.sh new file mode 100755 index 0000000..134f9f1 --- /dev/null +++ b/MakeTOOLCHAIN.sh @@ -0,0 +1,140 @@ +#!/bin/bash +echo "====== Build Toolchain INSTALL Script ====" +SHWRKDIR=/tmp/XXXMakeTOOLCHAIN +BUILD=`cat ../GfA/board/GfA/Display001/BUILD` +UPDATE_BINARY=$SHWRKDIR/dest/toolchain.tar.Z +UPDATE_FILENAME="../Install-TOOLCHAIN-$BUILD.sh" +TOOLCHAIN_DIR="/opt/GfA" +UPDATE_IN_SCRIPT="MakeTOOLCHAIN.sh.in" + +rm -rf $SHWRKDIR +mkdir -p $SHWRKDIR/dest +mkdir -p $SHWRKDIR/Kernel-$BUILD +#==================================== +WRKDIR=`pwd` +CMDDIR=`pwd` +#=== Asssign GNU_TARGET_NAME from .config +_ARCH=`grep BR2_ARCH\= .config | awk -F\= -F\" '{print $2}'` +_TARGET_VENDOR=`grep BR2_TOOLCHAIN_BUILDROOT_VENDOR\= .config | awk -F\= -F\" '{print $2}'` + +# -- get target os +_BR2_BINFMT_FLAT=`grep BR2_BINFMT_FLAT\= .config | awk -F\= '{print $2}'` +if [ "$_BR2_BINFMT_FLAT" = "y" ]; then + _TARGET_OS="uclinux" + else + _TARGET_OS="linux" +fi + +# -- get libc +_BR2_TOOLCHAIN_USES_UCLIBC=`grep BR2_TOOLCHAIN_USES_UCLIBC\= .config | awk -F\= '{print $2}'` +_BR2_TOOLCHAIN_USES_MUSL=`grep BR2_TOOLCHAIN_USES_MUSL\= .config | awk -F\= '{print $2}'` + +if [ "$_BR2_TOOLCHAIN_USES_UCLIBC" = "y" ]; then + _LIBC="uclibc" + else + if [ "$_BR2_TOOLCHAIN_USES_MUSL" = "y" ]; then + _LIBC="musl" + else + _LIBC="gnu" + fi +fi + +# -- ABI +_BR2_arm=`grep BR2_arm\= .config | awk -F\= '{print $2}'` +_BR2_armeb=`grep BR2_armeb\= .config | awk -F\= '{print $2}'` +_BR2_ARM_EABIHF=`grep BR2_ARM_EABIHF\= .config | awk -F\= '{print $2}'` +if [ "$_BR2_arm" = "y" ] || [ "$_BR2_armeb" = "y" ]; then + if [ "$_LIBC" = "uclibc" ]; then + _ABI="gnueabi" + else + _ABI="eabi" + fi + if [ "$_BR2_ARM_EABIHF" = "y" ]; then + _ABI="${_ABI}hf" + fi +fi + +_GNU_TARGET_NAME="${_ARCH}-${_TARGET_VENDOR}-${_TARGET_OS}-${_LIBC}${_ABI}" +#=============================================================== +TOOLCHAIN=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'` +if [[ $TOOLCHAIN = *\$\(BASE_DIR\)* ]]; then + SYSROOT=`readlink -f $CMDDIR`/output/host/usr/bin/ +else + SYSROOT=$TOOLCHAIN/usr/bin +fi +CROSS_COMPILE="${_GNU_TARGET_NAME}-" +CROSS=${CROSS_COMPILE} +_KERNELDIR=`grep BR2_LINUX_KERNEL_VERSION\= .config | awk -F\= -F\" '{print $2}'` +KERNELDIR=${CMDDIR}/output/build/linux-${_KERNELDIR} +#==================================== +echo $TOOLCHAIN +echo "copy Toolchain ... pls be patient" +rsync -a $TOOLCHAIN $SHWRKDIR/ +echo "copy Kernel ... pls be patient" +rsync -a $KERNELDIR $SHWRKDIR/Kernel-$BUILD/ + +(\ +cat << EOF +#!/bin/sh + +export SYSROOT=$SYSROOT +export PATH=\$PATH:$SYSROOT +export KERNELDIR=$TOOLCHAIN_DIR/Kernel-$BUILD/linux-${_KERNELDIR} +export CROSS_COMPILE=${CROSS_COMPILE} +export CROSS=${CROSS_COMPILE} + +export ARCH=arm +export SYSROOTARM=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`/usr/${_GNU_TARGET_NAME}/sysroot +export CC_FULLPATH="${SYSROOT}/${CROSS_COMPILE}" +export CC=${CROSS_COMPILE}gcc +export CXX=${CROSS_COMPILE}g++ + +if [ \$# -eq "0" ] +then +PROMPT_COMMAND='PS1="\[\033[0;31m\]CROSS CC:\[\033[0;32m\]\$PS1";unset PROMPT_COMMAND' bash ; reset +else +\$1 +fi + +EOF +) > $SHWRKDIR/CrossCompile-${BUILD}.sh + +chmod a+x $SHWRKDIR/CrossCompile-${BUILD}.sh + +echo "packing Binaries to Tarball ... pls be patient" +tar -C $SHWRKDIR --exclude=./dest -czf $SHWRKDIR/dest/toolchain.tar.Z ./ +echo "--------------------- DONE -----------------------" +# update script +(\ +cat << EOF +#!/bin/sh + +TOOLCHAIN_DIR=$TOOLCHAIN_DIR +TAR_PARAMETERS="-C \$TOOLCHAIN_DIR -xzvf -" + +untar_payload () +{ + match=\$(grep -a -n -m 1 '^PAYLOAD:$' \$0 | cut -d ':' -f 1) + payload_start=\$((match + 1)) + tail -n +\$payload_start \$0 | tar \$TAR_PARAMETERS +} + +## --- Kommandos zum Installieren + +#--- Toolchain-Tarball entpacken + +if [ ! -d \${TOOLCHAIN_DIR} ]; then + sudo mkdir -p \${TOOLCHAIN_DIR} +fi +sudo chown -Rv \$USER:\$USER \${TOOLCHAIN_DIR} + +untar_payload + +exit 0 +EOF +) > $UPDATE_FILENAME + +echo "PAYLOAD:" >> $UPDATE_FILENAME +cat $UPDATE_BINARY >> $UPDATE_FILENAME + +chmod a+x $UPDATE_FILENAME diff --git a/MapImage.sh b/MapImage.sh new file mode 100755 index 0000000..5a72d32 --- /dev/null +++ b/MapImage.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +SAVE_LC=$LC_ALL +export LC_ALL=C + +BUILD=`cat ../GfA/board/GfA/Display001/BUILD` +IMAGEFILE=../Display001_Build_$BUILD-img +echo ">>> $IMAGEFILE <<<" +#-- map partitions +DRIVE1=/dev/mapper/`kpartx -s -l $IMAGEFILE | head -n +1| awk '{print $1}'` +DRIVE2=/dev/mapper/`kpartx -s -l $IMAGEFILE | tail -n +2 | head -n +1| awk '{print $1}'` + +echo ">>>>>>>>>>>>>>>>>>" +echo $DRIVE1 +echo $DRIVE2 +echo ">>>>>>>>>>>>>>>>>>" + +kpartx -asv $IMAGEFILE +#-- mount partitions +umount /tmp/boot +umount /tmp/rootfs + +rm -rf /tmp/boot +rm -rf /tmp/rootfs + +mkdir /tmp/boot +mkdir /tmp/rootfs + +mount ${DRIVE1} /tmp/boot +mount ${DRIVE2} /tmp/rootfs + +bash + +umount ${DRIVE1} +umount ${DRIVE2} + +#-- unmap partitions +kpartx -dsv $IMAGEFILE + +export LC_ALL=$SAVE_LC + \ No newline at end of file diff --git a/UpdateRootfs.sh.in b/UpdateRootfs.sh.in new file mode 100644 index 0000000..91c8444 --- /dev/null +++ b/UpdateRootfs.sh.in @@ -0,0 +1,957 @@ +#!/bin/sh + +TMP_PATH="$GFA_PREFIX/__GfA_Update" +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 () +{ + match=$(grep -n -m 1 '^PAYLOAD:$' $0 | cut -d ':' -f 1) + payload_start=$((match + 1)) + tail -n +$payload_start $0 | tar $TAR_PARAMETERS +} + +if [ -z $1 ] +then +## prepare for chrooted environment +chmod +x /bin/bash +updatename=`realpath $0` +echo -e "===\n prepare chroot and update script\n===\n" +(\ +cat << EOF +#! /bin/bash +CHROOT=/__GfA_chroot + +#--------------------- +recurse () +# Param 1 is the nuumber of spaces that the output will be prepended with +# Param 2 full path to library +{ +#Use 'readelf -d' to find dependencies +dependencies=\$(readelf -d \${2} | grep NEEDED | awk '{ print \$5 }' | tr -d '[]') +for d in \$dependencies; do + echo "\${1}\${d} :: \${2}" + rsync -lpR \${2} \${CHROOT} + if [ -L \${2} ] ; then + LIBNAM=\`readlink -f \${2}\` + rsync -lpR \${LIBNAM} \${CHROOT} + echo "\${1}-->\${LIBNAM}" + fi + nm=\${d##*/} + #libstdc++ hack for the '+'-s + nm1=\${nm//"+"/"\+"} + # /lib /lib64 /usr/lib and /usr/lib are searched + children=\$(find / -name \${d} 2>/dev/null | grep -E "(^/(lib|lib32|usr/lib|usr/lib32)/\${nm1})") + rc=\$? + #at least locate... didn't fail + if [ \${rc} == "0" ] ; then + #we have at least one dependency + if [ \${#children[@]} -gt 0 ]; then + #check the dependeny's dependencies + for c in \$children; do + recurse " \${1}" \${c} + done + else + echo "\${1}no children found" + fi + else + echo "\${1}locate failed for ${d}" + fi +done +} +# -- recurse needs 2 params could/should be supplied from cmdline +echo "==== PREPARE CHROOT ENVIRONMENT in \${CHROOT} ====" +rm -rf \$CHROOT +mkdir -p \$CHROOT +#------------------------------------ +tt=/bin/bash +echo -e "===\n \$tt\n" +recurse "" \$tt + +tt=/bin/sh +echo -e "===\n \$tt\n" +recurse "" \$tt + +tt=/bin/busybox +echo -e "===\n \$tt\n" +recurse "" \$tt + +tt=/bin/sed +echo -e "===\n \$tt\n" +recurse "" \$tt + +tt=/usr/sbin/fbset +echo -e "===\n \$tt\n" +recurse "" \$tt + +tt=/usr/bin/awk +echo -e "===\n \$tt\n" +recurse "" \$tt + +tt=/usr/bin/cut +echo -e "===\n \$tt\n" +recurse "" \$tt + +tt=/usr/bin/tail +echo -e "===\n \$tt\n" +recurse "" \$tt + +tt=/sbin/reboot +echo -e "===\n \$tt\n" +recurse "" \$tt + +#---------------------------------------- +cp -a /lib/ld-* \${CHROOT}/lib +cp -a /bin/* \${CHROOT}/bin + +ln -s ./realroot/root \${CHROOT}/root + +mkdir -p \${CHROOT}/proc +mkdir -p \${CHROOT}/dev +mkdir -p \${CHROOT}/sys +mkdir -p \${CHROOT}/etc +mkdir -p \${CHROOT}/realroot +mkdir -p \${CHROOT}/var +mkdir -p \${CHROOT}/tmp +mkdir -p \${CHROOT}/mnt + +mkdir -p \${CHROOT}/realroot/media/usb0 +mkdir -p \${CHROOT}/realroot/media/usb1 + +mount -o bind /proc \${CHROOT}/proc +mount -o bind /dev \${CHROOT}/dev +mount -o bind /sys \${CHROOT}/sys +mount -o bind /etc \${CHROOT}/etc +mount -o bind /var \${CHROOT}/var +mount -o bind /tmp \${CHROOT}/tmp +mount -o bind / \${CHROOT}/realroot + +mount -o bind /media/usb0 \${CHROOT}/realroot/media/usb0 +mount -o bind /media/usb1 \${CHROOT}/realroot/media/usb1 + +echo -e "\n===========\nchroot environment ready in \n \${CHROOT}\n===========\n" +chroot \${CHROOT} sh -c 'GFA_PREFIX=/realroot sh /realroot${updatename} DoRealUpdate' + +EOF +) > /root/GfA_prep_chroot.sh + +chmod a+x /root/GfA_prep_chroot.sh +#--- execute built script +echo "==>>> execute chroot update script" +/root/GfA_prep_chroot.sh +else +## --- Kommandos zum Installieren +## -- get bootpartition +such="root=/dev/mmcblk1" +grep -q $such /proc/cmdline +if [ $? == 0 ] +then + bootpart="/dev/mmcblk1p1" +else + bootpart="/dev/mmcblk0p1" +fi +#===== DoRealUpdate === Start +if [ $1 == "DoRealUpdate" ] +then + +umount /mnt 2>/dev/null +umount $GFA_PREFIX/_GfABoot 2>/dev/null + +rm -rf $GFA_PREFIX/_GfABoot +mkdir $GFA_PREFIX/_GfABoot +mount $bootpart $GFA_PREFIX/_GfABoot + + +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 + +#--- Kernel MLO und Rootfs-Tarball entpacken +untar_payload +# --- + +echo "sync mmc be patient ...." +sync +sync +# --- 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 +#============================================================================== +# 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" + sh /root/Display2To_4_3inch.sh + DONE=1 +else + echo "4.3 Inch" + sh /root/DisplayTo_4_3inch.sh + DONE=1 +fi +fi + +if [ "$XRES" == "800" -a "$YRES" == "480" ]; then +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then + echo "7 Inch Display 2" + sh /root/Display2To_7inch.sh + DONE=1 +else +if [ "$BASEBOARD" == "DISPLAY002_RS485" ]; then + echo "7 Inch Display 2 rs485" + sh /root/Display2To_7inch_rs485.sh + DONE=1 +else + echo "7 Inch" + sh /root/DisplayTo_7inch.sh + DONE=1 +fi +fi +fi + +if [ "$XRES" == "640" -a "$YRES" == "480" ]; then +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then + echo "5.7 Inch Display 2" + sh /root/Display2To_5_7inch.sh + DONE=1 +else + echo "5.7 Inch" + sh /root/DisplayTo_5_7inch.sh + DONE=1 +fi +fi + +if [ "$XRES" == "1280" -a "$YRES" == "800" ]; then +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then + echo "10 Inch Display 2" + sh /root/Display2To_10inch.sh + DONE=1 +else + echo "10 Inch" + sh /root/DisplayTo_10inch.sh + DONE=1 +fi +fi + +if [ "$XRES" == "1920" -a "$YRES" == "1080" ]; then +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then + echo "15 Inch Display 2" + sh /root/Display2To_15inch.sh + DONE=1 +else + echo "15 Inch" + sh /root/DisplayTo_15inch.sh + DONE=1 +fi +fi + +if [ "$DONE" == "0" ]; then + echo "Unknown Display Resolution" +fi + +#================= +echo "Update Done, pls. reboot System" +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 < 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