From 68244a78dc78a1ba91fe781f657114c5f434f15d Mon Sep 17 00:00:00 2001 From: Reinhard Russinger Date: Thu, 26 Dec 2019 17:01:28 +0000 Subject: [PATCH 1/2] generate-images-scripts --- CrossCompile.sh | 45 ++++++ MakeDTSUpdate.sh | 58 +++++++ MakeIMAGE.sh | 106 +++++++++++++ MakeLegalInfo.sh | 17 ++ MakeRootfsUpdate.sh | 73 +++++++++ MapImage.sh | 41 +++++ UpdateDTS.sh.in | 126 +++++++++++++++ UpdateRootfs.sh.in | 442 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 908 insertions(+) create mode 100755 CrossCompile.sh create mode 100755 MakeDTSUpdate.sh create mode 100755 MakeIMAGE.sh create mode 100755 MakeLegalInfo.sh create mode 100755 MakeRootfsUpdate.sh create mode 100755 MapImage.sh create mode 100644 UpdateDTS.sh.in create mode 100644 UpdateRootfs.sh.in diff --git a/CrossCompile.sh b/CrossCompile.sh new file mode 100755 index 0000000..cb6c0ae --- /dev/null +++ b/CrossCompile.sh @@ -0,0 +1,45 @@ +#! /bin/bash +# +# + +WRKDIR=`pwd` +CMDDIR=`dirname $0` +cd $CMDDIR + +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=arm-buildroot-linux-gnueabihf- +export CROSS=${CROSS_COMPILE} +export ARCH=arm +export KERNELDIR=`pwd`/output/build/linux-7f280334068b7c875ade51f8f3921ab311f0c824 +export BB_KERNEL_SOURCES=$KERNELDIR +export SYSROOTARM=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`/usr/arm-buildroot-linux-gnueabihf/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/MakeDTSUpdate.sh b/MakeDTSUpdate.sh new file mode 100755 index 0000000..f25b04b --- /dev/null +++ b/MakeDTSUpdate.sh @@ -0,0 +1,58 @@ +#!/bin/bash +WRKDIR=/tmp/XXXUpdateDTS +BUILD=`cat ../GfA/board/GfA/Display001/BUILD` +UPDATE_BINARY=$WRKDIR/dest/UpdateDTS.tar.Z +UPDATE_FILENAME="../UpdateDTS_$BUILD.sh" +UPDATE_IN_SCRIPT="UpdateDTS.sh.in" + +rm -rf $WRKDIR +mkdir -p $WRKDIR/dest + +cp ./output/images/*.dtb $WRKDIR + +tar -C $WRKDIR --exclude=./dest -czvf $UPDATE_BINARY ./ + +# 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 + +if [[ ! -f $UPDATE_BINARY ]]; then + echo " UPDATE_BINARY $UPDATE_BINARY doesn't exist!" + echo "Usage: $0 [--binary | --uuencode]" + 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 + +chmod a+x $UPDATE_FILENAME 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..99b77c9 --- /dev/null +++ b/MakeRootfsUpdate.sh @@ -0,0 +1,73 @@ +#!/bin/bash +WRKDIR=/tmp/XXXUpdateRootfs +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 +sudo rm -rf $ROOTFSMNT +sudo mkdir -p $ROOTFSMNT + +sudo mount -o loop ./output/images/rootfs.ext2 $ROOTFSMNT + +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 + +if [[ ! -f $UPDATE_BINARY ]]; then + echo " UPDATE_BINARY $UPDATE_BINARY doesn't exist!" + echo "Usage: $0 [--binary | --uuencode]" + 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 + +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/UpdateDTS.sh.in b/UpdateDTS.sh.in new file mode 100644 index 0000000..3a5cb18 --- /dev/null +++ b/UpdateDTS.sh.in @@ -0,0 +1,126 @@ +#!/bin/sh + +uuencode=0 +binary=1 + +##TAR_PARAMETERS="-C / --exclude=./opt --exclude=./etc/inittab -xzvf -" +TMP_PATH="/__GfA_UpdateDTS" +TAR_PARAMETERS="-C $TMP_PATH -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 +} + +## --- 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 + +umount /mnt +mount $bootpart /mnt + +#--- Kernel MLO und Rootfs-Tarball entpacken +untar_payload +# --- + +cp $TMP_PATH/*.dtb /mnt + +echo "sync mmc be patient ...." +sync +sync + +# 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" == "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 "10 Inch Display 2" + sh /root/Display2To_15inch.sh + DONE=1 +else + echo "10 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 /mnt +echo "." +exit 0 diff --git a/UpdateRootfs.sh.in b/UpdateRootfs.sh.in new file mode 100644 index 0000000..13aeadf --- /dev/null +++ b/UpdateRootfs.sh.in @@ -0,0 +1,442 @@ +#!/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 -" + +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 +} + +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 + +umount /mnt +mount $bootpart /mnt + +## -- alte Firmwarebinaries löschen +#rm /root/btm*.bin + +#--- Kernel MLO und Rootfs-Tarball entpacken +untar_payload +# --- + +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 + +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 + +#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 + +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 + +#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 +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 /mnt +echo "." +echo "restart system !!!" +sleep 2 +#----------------- +reboot +exit 0 +fi +#------------- +exit 0 -- 2.7.4