123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437 |
- 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 <<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"
- + 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 <<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
|