123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332 |
- diff --git a/UpdateRootfs.sh.in b/UpdateRootfs.sh.in
- index 89ff561..3e4b29d 100644
- --- a/UpdateRootfs.sh.in
- +++ b/UpdateRootfs.sh.in
- @@ -4,7 +4,7 @@ uuencode=0
- binary=1
-
- ##TAR_PARAMETERS="-C / --exclude=./opt --exclude=./etc/inittab -xzvf -"
- -TMP_PATH="/__GfA_Update"
- +TMP_PATH="$GFA_PREFIX/__GfA_Update"
- TAR_PARAMETERS="-C $TMP_PATH -xzvf -"
-
- untar_payload ()
- @@ -25,6 +25,131 @@ untar_payload ()
- 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=/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"
- @@ -54,26 +179,26 @@ cp $TMP_PATH/*.dtb /mnt
-
- mkdir -p $TMP_PATH/bu_cfg
-
- -if [ -e /etc/network/interfaces ]
- +if [ -e $GFA_PREFIX/etc/network/interfaces ]
- then
- - cp /etc/network/interfaces $TMP_PATH/bu_cfg
- - rm /etc/network/interfaces
- + cp $GFA_PREFIX/etc/network/interfaces $TMP_PATH/bu_cfg
- + rm $GFA_PREFIX/etc/network/interfaces
- fi
-
- -if [ -e /etc/wpa_supplicant.conf ]
- +if [ -e $GFA_PREFIX/etc/wpa_supplicant.conf ]
- then
- - cp /etc/wpa_supplicant.conf $TMP_PATH/bu_cfg/wpa_supplicant.conf_old
- - rm /etc/wpa_supplicant.conf
- + 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 /etc/wpa_supplicant/wpa_supplicant.conf ]
- +if [ -e $GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf ]
- then
- - cp /etc/wpa_supplicant/wpa_supplicant.conf $TMP_PATH/bu_cfg
- - rm /etc/wpa_supplicant/wpa_supplicant.conf
- + 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 / --exclude=./tmp --exclude=./etc/inittab \
- +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 \
- @@ -97,10 +222,10 @@ auto lo
- iface lo inet loopback
-
- EOF
- -) > /etc/network/interfaces
- +) > $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 \
- ->> /etc/network/interfaces
- +>> $GFA_PREFIX/etc/network/interfaces
-
- (\
- cat << EOF
- @@ -114,52 +239,52 @@ iface wlan0 inet dhcp
- wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
- #
- EOF
- -) >> /etc/network/interfaces
- +) >> $GFA_PREFIX/etc/network/interfaces
-
- -if [ -e /etc/init.d/S98usb_g_ether ]
- +if [ -e $GFA_PREFIX/etc/init.d/S98usb_g_ether ]
- then
- - cp /etc/init.d/S98usb_g_ether /etc/init.d/M98usb_g_ether
- - rm /etc/init.d/S98usb_g_ether
- + 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 /etc/init.d/S80ti-sgx ]
- +if [ -e $GFA_PREFIX/etc/init.d/S80ti-sgx ]
- then
- - rm /etc/init.d/S80ti-sgx
- + rm $GFA_PREFIX/etc/init.d/S80ti-sgx
- fi
-
- -if [ -e /etc/init.d/M99_wlan_usb ]
- +if [ -e $GFA_PREFIX/etc/init.d/M99_wlan_usb ]
- then
- - rm /etc/init.d/M99_wlan_usb
- + rm $GFA_PREFIX/etc/init.d/M99_wlan_usb
- fi
-
- -if [ -e /etc/init.d/S99_wlan_usb ]
- +if [ -e $GFA_PREFIX/etc/init.d/S99_wlan_usb ]
- then
- - rm /etc/init.d/S99_wlan_usb
- + rm $GFA_PREFIX/etc/init.d/S99_wlan_usb
- fi
-
- -if [ -e /etc/init.d/M80dhcp-relay ]
- +if [ -e $GFA_PREFIX/etc/init.d/M80dhcp-relay ]
- then
- - rm /etc/init.d/M80dhcp-relay
- + rm $GFA_PREFIX/etc/init.d/M80dhcp-relay
- fi
-
- -if [ -e /etc/init.d/S80dhcp-relay ]
- +if [ -e $GFA_PREFIX/etc/init.d/S80dhcp-relay ]
- then
- - rm /etc/init.d/S80dhcp-relay
- + rm $GFA_PREFIX/etc/init.d/S80dhcp-relay
- fi
-
- -if [ -e /etc/init.d/M80dhcp-server ]
- +if [ -e $GFA_PREFIX/etc/init.d/M80dhcp-server ]
- then
- - rm /etc/init.d/M80dhcp-server
- + rm $GFA_PREFIX/etc/init.d/M80dhcp-server
- fi
-
- -if [ -e /etc/init.d/S80dhcp-server ]
- +if [ -e $GFA_PREFIX/etc/init.d/S80dhcp-server ]
- then
- - rm /etc/init.d/S80dhcp-server
- + rm $GFA_PREFIX/etc/init.d/S80dhcp-server
- fi
-
- -if [ -d /etc/dhcp ]
- +if [ -d $GFA_PREFIX/etc/dhcp ]
- then
- - rm -rf /etc/dhcp
- + rm -rf $GFA_PREFIX/etc/dhcp
- fi
-
- #echo "Update Firmware"
- @@ -170,7 +295,7 @@ fi
- #/root/gfa_spi -v
- #================================
- #--create mountable run folder insted of link
- -RUNDIR=/run
- +RUNDIR=$GFA_PREFIX/run
- if [ -L $RUNDIR ]; then
- mv $RUNDIR $RUNDIR'_WRK'
- mkdir $RUNDIR
- @@ -182,28 +307,29 @@ if [ -L $RUNDIR ]; then
- rm $RUNDIR'_WRK'
- fi
- #--- craete missing nogroup group
- -GID_NOGROUP=`awk -F\: '/nogroup/ {print $3}' /etc/group`
- +GID_NOGROUP=`awk -F\: '/nogroup/ {print $3}' $GFA_PREFIX/etc/group`
- if [ -z "$GID_NOGROUP" ]; then
- - addgroup -S -g 65534 nogroup
- +# addgroup -S -g 65534 nogroup
- + echo "nogroup:x:65534:" >> $GFA_PREFIX/etc/group
- fi
- #--create missing users for mysql,
- -if [ -z `awk -F\: '/mysql/ {print $3}' /etc/passwd` ]; then
- - UID_MY=`awk -F: '{uid[$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' /etc/passwd`
- - echo "mysql:x:$UID_MY:65534:MySQL daemon:/var/mysql:/bin/false" >> /etc/passwd
- +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:65534:MySQL daemon:/var/mysql:/bin/false" >> $GFA_PREFIX/etc/passwd
- fi
- #--create missing users for postgresql,
- -if [ -z `awk -F\: '/postgres/ {print $3}' /etc/passwd` ]; then
- - UID_PG=`awk -F: '{uid[$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' /etc/passwd`
- - GID_PG=`awk -F\: '/postgres/ {print $3}' /etc/group`
- +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;}}}' /etc/group`
- - echo "postgres:x:$GID_PG:" >> /etc/group
- + 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" >> /etc/passwd
- + echo "postgres:x:$UID_PG:$GID_PG:PostgreSQL Server:/var/lib/pgsql:/bin/sh" >> $GFA_PREFIX/etc/passwd
- fi
- #------------------
- -chown -Rv mysql:nogroup /var/mysql
- -chown -Rv postgres:postgres /var/lib/pgsql
- +chown -Rv mysql:nogroup $GFA_PREFIX/var/mysql
- +chown -Rv postgres:postgres $GFA_PREFIX/var/lib/pgsql
- #==============================================================================
- # Get Graphics resolution and set dtb to the right resolution
- BASEBOARD=`cat /tmp/BASEBOARD`
- @@ -288,4 +414,11 @@ fi
- echo "Update Done, pls. reboot System"
- umount /mnt
- echo "."
- +echo "restart system !!!"
- +sleep 2
- +#-----------------
- +reboot
- +exit 0
- +fi
- +#-------------
- exit 0
|