0001-Helper-Scripts.patch 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437
  1. diff --git a/CrossCompile.sh b/CrossCompile.sh
  2. new file mode 100755
  3. index 0000000..c068ea1
  4. --- /dev/null
  5. +++ b/CrossCompile.sh
  6. @@ -0,0 +1,91 @@
  7. +#! /bin/bash
  8. +#
  9. +#
  10. +
  11. +WRKDIR=`pwd`
  12. +CMDDIR=`dirname \`readlink -f $0\``
  13. +cd $CMDDIR
  14. +
  15. +#=== Asssign GNU_TARGET_NAME from .config
  16. +_ARCH=`grep BR2_ARCH\= .config | awk -F\= -F\" '{print $2}'`
  17. +_TARGET_VENDOR=`grep BR2_TOOLCHAIN_BUILDROOT_VENDOR\= .config | awk -F\= -F\" '{print $2}'`
  18. +
  19. +# -- get target os
  20. +_BR2_BINFMT_FLAT=`grep BR2_BINFMT_FLAT\= .config | awk -F\= '{print $2}'`
  21. +if [ "$_BR2_BINFMT_FLAT" = "y" ]; then
  22. + _TARGET_OS="uclinux"
  23. + else
  24. + _TARGET_OS="linux"
  25. +fi
  26. +
  27. +# -- get libc
  28. +_BR2_TOOLCHAIN_USES_UCLIBC=`grep BR2_TOOLCHAIN_USES_UCLIBC\= .config | awk -F\= '{print $2}'`
  29. +_BR2_TOOLCHAIN_USES_MUSL=`grep BR2_TOOLCHAIN_USES_MUSL\= .config | awk -F\= '{print $2}'`
  30. +
  31. +if [ "$_BR2_TOOLCHAIN_USES_UCLIBC" = "y" ]; then
  32. + _LIBC="uclibc"
  33. + else
  34. + if [ "$_BR2_TOOLCHAIN_USES_MUSL" = "y" ]; then
  35. + _LIBC="musl"
  36. + else
  37. + _LIBC="gnu"
  38. + fi
  39. +fi
  40. +
  41. +# -- ABI
  42. +_BR2_arm=`grep BR2_arm\= .config | awk -F\= '{print $2}'`
  43. +_BR2_armeb=`grep BR2_armeb\= .config | awk -F\= '{print $2}'`
  44. +_BR2_ARM_EABIHF=`grep BR2_ARM_EABIHF\= .config | awk -F\= '{print $2}'`
  45. +if [ "$_BR2_arm" = "y" ] || [ "$_BR2_armeb" = "y" ]; then
  46. + if [ "$_LIBC" = "uclibc" ]; then
  47. + _ABI="gnueabi"
  48. + else
  49. + _ABI="eabi"
  50. + fi
  51. + if [ "$_BR2_ARM_EABIHF" = "y" ]; then
  52. + _ABI="${_ABI}hf"
  53. + fi
  54. +fi
  55. +
  56. +_GNU_TARGET_NAME="${_ARCH}-${_TARGET_VENDOR}-${_TARGET_OS}-${_LIBC}${_ABI}"
  57. +#===============================================================
  58. +
  59. +TOOLCHAIN=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`
  60. +echo $TOOLCHAIN
  61. +
  62. +if [[ $TOOLCHAIN = *\$\(BASE_DIR\)* ]]; then
  63. + export SYSROOT=`readlink -f $CMDDIR`/output/host/usr/bin/
  64. +else
  65. + export SYSROOT=$TOOLCHAIN/usr/bin
  66. +fi
  67. +
  68. +export PATH=$PATH:$SYSROOT
  69. +
  70. +export CROSS_COMPILE="${_GNU_TARGET_NAME}-"
  71. +export CROSS=${CROSS_COMPILE}
  72. +
  73. +export ARCH=arm
  74. +_KERNELDIR=`grep BR2_LINUX_KERNEL_VERSION\= .config | awk -F\= -F\" '{print $2}'`
  75. +export KERNELDIR=${CMDDIR}/output/build/linux-${_KERNELDIR}
  76. +export BB_KERNEL_SOURCES=$KERNELDIR
  77. +export SYSROOTARM=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`/usr/${_GNU_TARGET_NAME}/sysroot
  78. +export CC_FULLPATH="${SYSROOT}/${CROSS_COMPILE}"
  79. +export CC=${CROSS_COMPILE}gcc
  80. +export CXX=${CROSS_COMPILE}g++
  81. +
  82. +#--- gnupru
  83. +export PASM=pasm
  84. +##export PSYSROOT=/home/ru/pru/pru-gcc/bin
  85. +export PSYSROOT=/opt/GfA/PRU-ICSS/bin/pru-gcc/bin
  86. +export PATH=$PSYSROOT:$PATH
  87. +
  88. +export PCROSS_COMPILE=pru-
  89. +export PARCH=pru
  90. +
  91. +cd $WRKDIR
  92. +if [ $# -eq "0" ]
  93. +then
  94. +PROMPT_COMMAND='PS1="\[\033[0;31m\]CROSS CC:\[\033[0;32m\]$PS1";unset PROMPT_COMMAND' bash ; reset
  95. +else
  96. +$1
  97. +fi
  98. diff --git a/MakeIMAGE.sh b/MakeIMAGE.sh
  99. new file mode 100755
  100. index 0000000..9612418
  101. --- /dev/null
  102. +++ b/MakeIMAGE.sh
  103. @@ -0,0 +1,106 @@
  104. +#!/bin/sh
  105. +
  106. +SAVE_LC=$LC_ALL
  107. +export LC_ALL=C
  108. +
  109. +BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
  110. +IMAGEFILE=../Display001_Build_$BUILD-img
  111. +
  112. +ROOTFSMNT=/tmp/XXXRootFs
  113. +
  114. +echo "Image: $IMAGEFILE"
  115. +#-- build imagefile
  116. +dd if=/dev/zero ibs=1M count=1 > $IMAGEFILE
  117. +dd if=/dev/zero ibs=1M count=2048 | tr "\000" "\377" >> $IMAGEFILE
  118. +#-------------------------------------------------------
  119. +#-- create partitions BOOT rootfs !!! don't change !!!!
  120. +fdisk $IMAGEFILE << EOF
  121. +o
  122. +n
  123. +p
  124. +
  125. +
  126. ++300M
  127. +n
  128. +p
  129. +
  130. +
  131. +
  132. +t
  133. +1
  134. +c
  135. +a
  136. +1
  137. +p
  138. +w
  139. +EOF
  140. +echo "============="
  141. +#-- map partitions
  142. +DRIVE1=/dev/mapper/`kpartx -s -l $IMAGEFILE | head -n +1| awk '{print $1}'`
  143. +DRIVE2=/dev/mapper/`kpartx -s -l $IMAGEFILE | tail -n +2 | head -n +1| awk '{print $1}'`
  144. +
  145. +echo ">>>>>>>>>>>>>>>>>>"
  146. +echo $DRIVE1
  147. +echo $DRIVE2
  148. +echo ">>>>>>>>>>>>>>>>>>"
  149. +
  150. +kpartx -asv $IMAGEFILE
  151. +#-- mount partitions
  152. +umount /tmp/boot
  153. +umount /tmp/rootfs
  154. +
  155. +rm -rf /tmp/boot
  156. +rm -rf /tmp/rootfs
  157. +
  158. +mkdir /tmp/boot
  159. +mkdir /tmp/rootfs
  160. +
  161. +dd if=/dev/zero of=${DRIVE1} bs=1M count=1
  162. +mkfs.vfat -F 32 -n "boot" ${DRIVE1}
  163. +mount ${DRIVE1} /tmp/boot
  164. +
  165. +du -h ${DRIVE1}
  166. +
  167. +cp ./output/images/*.dtb /tmp/boot
  168. +cp ./output/images/uImage /tmp/boot
  169. +cp ./output/images/MLO /tmp/boot
  170. +cp ./output/images/u-boot.img /tmp/boot
  171. +
  172. +ls -alh /tmp/boot
  173. +
  174. +dd if=/dev/zero of=${DRIVE2} bs=1M count=1
  175. +mkfs.ext3 -L "rootfs" ${DRIVE2}
  176. +mount ${DRIVE2} /tmp/rootfs
  177. +
  178. +du -h ${DRIVE2}
  179. +sleep 5
  180. +
  181. +umount ${ROOTFSMNT}
  182. +rm -rf ${ROOTFSMNT}
  183. +mkdir -p ${ROOTFSMNT}
  184. +echo "Mount ====>> " ${ROOTFSMNT}
  185. +mount -o loop ./output/images/rootfs.ext2 ${ROOTFSMNT}
  186. +
  187. +WRKDIR=`pwd`
  188. +cd ${ROOTFSMNT}
  189. +tar cf - . | (cd /tmp/rootfs && tar xBf -)
  190. +
  191. +cd ${WRKDIR}
  192. +umount ${ROOTFSMNT}
  193. +#tar -C /tmp/rootfs --checkpoint --checkpoint-action=dot -xzf ./output/images/rootfs.tar.gz
  194. +
  195. +echo ""
  196. +
  197. +sync
  198. +sync
  199. +umount ${DRIVE1}
  200. +umount ${DRIVE2}
  201. +
  202. +#-- unmap partitions
  203. +kpartx -dsv $IMAGEFILE
  204. +#-- packen des Imagefiles
  205. +rm $IMAGEFILE.zip
  206. +zip -j $IMAGEFILE.zip $IMAGEFILE
  207. +
  208. +export LC_ALL=$SAVE_LC
  209. +
  210. diff --git a/MakeLegalInfo.sh b/MakeLegalInfo.sh
  211. new file mode 100755
  212. index 0000000..429486f
  213. --- /dev/null
  214. +++ b/MakeLegalInfo.sh
  215. @@ -0,0 +1,17 @@
  216. +#!/bin/sh
  217. +
  218. +SAVE_LC=$LC_ALL
  219. +export LC_ALL=C
  220. +
  221. +BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
  222. +IMAGEFILE=../Display001_Build_$BUILD-img
  223. +
  224. +#-- legalinfo erstellen
  225. +TMPWRKDIR=`pwd`
  226. +cd output
  227. +rm ../../Display001-$BUILD-legal-info.zip
  228. +zip -r ../../Display001-$BUILD-legal-info.zip ./legal-info/*
  229. +cd $TMPWRKDIR
  230. +
  231. +export LC_ALL=$SAVE_LC
  232. +
  233. \ No newline at end of file
  234. diff --git a/MakeRootfsUpdate.sh b/MakeRootfsUpdate.sh
  235. new file mode 100755
  236. index 0000000..c3f9894
  237. --- /dev/null
  238. +++ b/MakeRootfsUpdate.sh
  239. @@ -0,0 +1,41 @@
  240. +#!/bin/bash
  241. +WRKDIR=/tmp/XXXUpdateRootfs
  242. +BOOTDIR=$WRKDIR/_GfABoot
  243. +BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
  244. +UPDATE_BINARY=$WRKDIR/dest/UpdateRootfs.tar.Z
  245. +UPDATE_FILENAME="../UpdateDisplay001_$BUILD.sh"
  246. +UPDATE_IN_SCRIPT="UpdateRootfs.sh.in"
  247. +
  248. +ROOTFSMNT=/tmp/XXXRootFs
  249. +
  250. +sudo umount $ROOTFSMNT 2>/dev/null
  251. +sudo rm -rf $ROOTFSMNT
  252. +sudo mkdir -p $ROOTFSMNT
  253. +sudo mount -o loop ./output/images/rootfs.ext2 $ROOTFSMNT
  254. +
  255. +sudo rm -rf $WRKDIR
  256. +mkdir -p $WRKDIR/dest
  257. +
  258. +sudo bash <<EOF
  259. +mkdir -p $BOOTDIR
  260. +cp ./output/images/*.dtb $BOOTDIR
  261. +cp ./output/images/uImage $BOOTDIR
  262. +cp ./output/images/MLO $BOOTDIR
  263. +cp ./output/images/u-boot.img $BOOTDIR
  264. +tar -C $ROOTFSMNT -cf - . | tar xvf - -C $WRKDIR
  265. +umount $ROOTFSMNT 2>/dev/null
  266. +tar -C $WRKDIR --exclude=./dest -czvf $UPDATE_BINARY ./
  267. +EOF
  268. +
  269. +#----
  270. +if [[ ! -f $UPDATE_BINARY ]]; then
  271. + echo " UPDATE_BINARY $UPDATE_BINARY doesn't exist!"
  272. + echo "Usage: $0"
  273. + exit 1
  274. +fi
  275. +
  276. +cat $UPDATE_IN_SCRIPT > $UPDATE_FILENAME
  277. +echo "PAYLOAD:" >> $UPDATE_FILENAME
  278. +cat $UPDATE_BINARY >> $UPDATE_FILENAME
  279. +
  280. +chmod a+x $UPDATE_FILENAME
  281. diff --git a/MakeTOOLCHAIN.sh b/MakeTOOLCHAIN.sh
  282. new file mode 100755
  283. index 0000000..134f9f1
  284. --- /dev/null
  285. +++ b/MakeTOOLCHAIN.sh
  286. @@ -0,0 +1,140 @@
  287. +#!/bin/bash
  288. +echo "====== Build Toolchain INSTALL Script ===="
  289. +SHWRKDIR=/tmp/XXXMakeTOOLCHAIN
  290. +BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
  291. +UPDATE_BINARY=$SHWRKDIR/dest/toolchain.tar.Z
  292. +UPDATE_FILENAME="../Install-TOOLCHAIN-$BUILD.sh"
  293. +TOOLCHAIN_DIR="/opt/GfA"
  294. +UPDATE_IN_SCRIPT="MakeTOOLCHAIN.sh.in"
  295. +
  296. +rm -rf $SHWRKDIR
  297. +mkdir -p $SHWRKDIR/dest
  298. +mkdir -p $SHWRKDIR/Kernel-$BUILD
  299. +#====================================
  300. +WRKDIR=`pwd`
  301. +CMDDIR=`pwd`
  302. +#=== Asssign GNU_TARGET_NAME from .config
  303. +_ARCH=`grep BR2_ARCH\= .config | awk -F\= -F\" '{print $2}'`
  304. +_TARGET_VENDOR=`grep BR2_TOOLCHAIN_BUILDROOT_VENDOR\= .config | awk -F\= -F\" '{print $2}'`
  305. +
  306. +# -- get target os
  307. +_BR2_BINFMT_FLAT=`grep BR2_BINFMT_FLAT\= .config | awk -F\= '{print $2}'`
  308. +if [ "$_BR2_BINFMT_FLAT" = "y" ]; then
  309. + _TARGET_OS="uclinux"
  310. + else
  311. + _TARGET_OS="linux"
  312. +fi
  313. +
  314. +# -- get libc
  315. +_BR2_TOOLCHAIN_USES_UCLIBC=`grep BR2_TOOLCHAIN_USES_UCLIBC\= .config | awk -F\= '{print $2}'`
  316. +_BR2_TOOLCHAIN_USES_MUSL=`grep BR2_TOOLCHAIN_USES_MUSL\= .config | awk -F\= '{print $2}'`
  317. +
  318. +if [ "$_BR2_TOOLCHAIN_USES_UCLIBC" = "y" ]; then
  319. + _LIBC="uclibc"
  320. + else
  321. + if [ "$_BR2_TOOLCHAIN_USES_MUSL" = "y" ]; then
  322. + _LIBC="musl"
  323. + else
  324. + _LIBC="gnu"
  325. + fi
  326. +fi
  327. +
  328. +# -- ABI
  329. +_BR2_arm=`grep BR2_arm\= .config | awk -F\= '{print $2}'`
  330. +_BR2_armeb=`grep BR2_armeb\= .config | awk -F\= '{print $2}'`
  331. +_BR2_ARM_EABIHF=`grep BR2_ARM_EABIHF\= .config | awk -F\= '{print $2}'`
  332. +if [ "$_BR2_arm" = "y" ] || [ "$_BR2_armeb" = "y" ]; then
  333. + if [ "$_LIBC" = "uclibc" ]; then
  334. + _ABI="gnueabi"
  335. + else
  336. + _ABI="eabi"
  337. + fi
  338. + if [ "$_BR2_ARM_EABIHF" = "y" ]; then
  339. + _ABI="${_ABI}hf"
  340. + fi
  341. +fi
  342. +
  343. +_GNU_TARGET_NAME="${_ARCH}-${_TARGET_VENDOR}-${_TARGET_OS}-${_LIBC}${_ABI}"
  344. +#===============================================================
  345. +TOOLCHAIN=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`
  346. +if [[ $TOOLCHAIN = *\$\(BASE_DIR\)* ]]; then
  347. + SYSROOT=`readlink -f $CMDDIR`/output/host/usr/bin/
  348. +else
  349. + SYSROOT=$TOOLCHAIN/usr/bin
  350. +fi
  351. +CROSS_COMPILE="${_GNU_TARGET_NAME}-"
  352. +CROSS=${CROSS_COMPILE}
  353. +_KERNELDIR=`grep BR2_LINUX_KERNEL_VERSION\= .config | awk -F\= -F\" '{print $2}'`
  354. +KERNELDIR=${CMDDIR}/output/build/linux-${_KERNELDIR}
  355. +#====================================
  356. +echo $TOOLCHAIN
  357. +echo "copy Toolchain ... pls be patient"
  358. +rsync -a $TOOLCHAIN $SHWRKDIR/
  359. +echo "copy Kernel ... pls be patient"
  360. +rsync -a $KERNELDIR $SHWRKDIR/Kernel-$BUILD/
  361. +
  362. +(\
  363. +cat << EOF
  364. +#!/bin/sh
  365. +
  366. +export SYSROOT=$SYSROOT
  367. +export PATH=\$PATH:$SYSROOT
  368. +export KERNELDIR=$TOOLCHAIN_DIR/Kernel-$BUILD/linux-${_KERNELDIR}
  369. +export CROSS_COMPILE=${CROSS_COMPILE}
  370. +export CROSS=${CROSS_COMPILE}
  371. +
  372. +export ARCH=arm
  373. +export SYSROOTARM=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`/usr/${_GNU_TARGET_NAME}/sysroot
  374. +export CC_FULLPATH="${SYSROOT}/${CROSS_COMPILE}"
  375. +export CC=${CROSS_COMPILE}gcc
  376. +export CXX=${CROSS_COMPILE}g++
  377. +
  378. +if [ \$# -eq "0" ]
  379. +then
  380. +PROMPT_COMMAND='PS1="\[\033[0;31m\]CROSS CC:\[\033[0;32m\]\$PS1";unset PROMPT_COMMAND' bash ; reset
  381. +else
  382. +\$1
  383. +fi
  384. +
  385. +EOF
  386. +) > $SHWRKDIR/CrossCompile-${BUILD}.sh
  387. +
  388. +chmod a+x $SHWRKDIR/CrossCompile-${BUILD}.sh
  389. +
  390. +echo "packing Binaries to Tarball ... pls be patient"
  391. +tar -C $SHWRKDIR --exclude=./dest -czf $SHWRKDIR/dest/toolchain.tar.Z ./
  392. +echo "--------------------- DONE -----------------------"
  393. +# update script
  394. +(\
  395. +cat << EOF
  396. +#!/bin/sh
  397. +
  398. +TOOLCHAIN_DIR=$TOOLCHAIN_DIR
  399. +TAR_PARAMETERS="-C \$TOOLCHAIN_DIR -xzvf -"
  400. +
  401. +untar_payload ()
  402. +{
  403. + match=\$(grep -a -n -m 1 '^PAYLOAD:$' \$0 | cut -d ':' -f 1)
  404. + payload_start=\$((match + 1))
  405. + tail -n +\$payload_start \$0 | tar \$TAR_PARAMETERS
  406. +}
  407. +
  408. +## --- Kommandos zum Installieren
  409. +
  410. +#--- Toolchain-Tarball entpacken
  411. +
  412. +if [ ! -d \${TOOLCHAIN_DIR} ]; then
  413. + sudo mkdir -p \${TOOLCHAIN_DIR}
  414. +fi
  415. +sudo chown -Rv \$USER:\$USER \${TOOLCHAIN_DIR}
  416. +
  417. +untar_payload
  418. +
  419. +exit 0
  420. +EOF
  421. +) > $UPDATE_FILENAME
  422. +
  423. +echo "PAYLOAD:" >> $UPDATE_FILENAME
  424. +cat $UPDATE_BINARY >> $UPDATE_FILENAME
  425. +
  426. +chmod a+x $UPDATE_FILENAME
  427. diff --git a/MapImage.sh b/MapImage.sh
  428. new file mode 100755
  429. index 0000000..5a72d32
  430. --- /dev/null
  431. +++ b/MapImage.sh
  432. @@ -0,0 +1,41 @@
  433. +#!/bin/sh
  434. +
  435. +SAVE_LC=$LC_ALL
  436. +export LC_ALL=C
  437. +
  438. +BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
  439. +IMAGEFILE=../Display001_Build_$BUILD-img
  440. +echo ">>> $IMAGEFILE <<<"
  441. +#-- map partitions
  442. +DRIVE1=/dev/mapper/`kpartx -s -l $IMAGEFILE | head -n +1| awk '{print $1}'`
  443. +DRIVE2=/dev/mapper/`kpartx -s -l $IMAGEFILE | tail -n +2 | head -n +1| awk '{print $1}'`
  444. +
  445. +echo ">>>>>>>>>>>>>>>>>>"
  446. +echo $DRIVE1
  447. +echo $DRIVE2
  448. +echo ">>>>>>>>>>>>>>>>>>"
  449. +
  450. +kpartx -asv $IMAGEFILE
  451. +#-- mount partitions
  452. +umount /tmp/boot
  453. +umount /tmp/rootfs
  454. +
  455. +rm -rf /tmp/boot
  456. +rm -rf /tmp/rootfs
  457. +
  458. +mkdir /tmp/boot
  459. +mkdir /tmp/rootfs
  460. +
  461. +mount ${DRIVE1} /tmp/boot
  462. +mount ${DRIVE2} /tmp/rootfs
  463. +
  464. +bash
  465. +
  466. +umount ${DRIVE1}
  467. +umount ${DRIVE2}
  468. +
  469. +#-- unmap partitions
  470. +kpartx -dsv $IMAGEFILE
  471. +
  472. +export LC_ALL=$SAVE_LC
  473. +
  474. \ No newline at end of file
  475. diff --git a/UpdateRootfs.sh.in b/UpdateRootfs.sh.in
  476. new file mode 100644
  477. index 0000000..91c8444
  478. --- /dev/null
  479. +++ b/UpdateRootfs.sh.in
  480. @@ -0,0 +1,957 @@
  481. +#!/bin/sh
  482. +
  483. +TMP_PATH="$GFA_PREFIX/__GfA_Update"
  484. +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 -"
  485. +
  486. +untar_payload ()
  487. +{
  488. + match=$(grep -n -m 1 '^PAYLOAD:$' $0 | cut -d ':' -f 1)
  489. + payload_start=$((match + 1))
  490. + tail -n +$payload_start $0 | tar $TAR_PARAMETERS
  491. +}
  492. +
  493. +if [ -z $1 ]
  494. +then
  495. +## prepare for chrooted environment
  496. +chmod +x /bin/bash
  497. +updatename=`realpath $0`
  498. +echo -e "===\n prepare chroot and update script\n===\n"
  499. +(\
  500. +cat << EOF
  501. +#! /bin/bash
  502. +CHROOT=/__GfA_chroot
  503. +
  504. +#---------------------
  505. +recurse ()
  506. +# Param 1 is the nuumber of spaces that the output will be prepended with
  507. +# Param 2 full path to library
  508. +{
  509. +#Use 'readelf -d' to find dependencies
  510. +dependencies=\$(readelf -d \${2} | grep NEEDED | awk '{ print \$5 }' | tr -d '[]')
  511. +for d in \$dependencies; do
  512. + echo "\${1}\${d} :: \${2}"
  513. + rsync -lpR \${2} \${CHROOT}
  514. + if [ -L \${2} ] ; then
  515. + LIBNAM=\`readlink -f \${2}\`
  516. + rsync -lpR \${LIBNAM} \${CHROOT}
  517. + echo "\${1}-->\${LIBNAM}"
  518. + fi
  519. + nm=\${d##*/}
  520. + #libstdc++ hack for the '+'-s
  521. + nm1=\${nm//"+"/"\+"}
  522. + # /lib /lib64 /usr/lib and /usr/lib are searched
  523. + children=\$(find / -name \${d} 2>/dev/null | grep -E "(^/(lib|lib32|usr/lib|usr/lib32)/\${nm1})")
  524. + rc=\$?
  525. + #at least locate... didn't fail
  526. + if [ \${rc} == "0" ] ; then
  527. + #we have at least one dependency
  528. + if [ \${#children[@]} -gt 0 ]; then
  529. + #check the dependeny's dependencies
  530. + for c in \$children; do
  531. + recurse " \${1}" \${c}
  532. + done
  533. + else
  534. + echo "\${1}no children found"
  535. + fi
  536. + else
  537. + echo "\${1}locate failed for ${d}"
  538. + fi
  539. +done
  540. +}
  541. +# -- recurse needs 2 params could/should be supplied from cmdline
  542. +echo "==== PREPARE CHROOT ENVIRONMENT in \${CHROOT} ===="
  543. +rm -rf \$CHROOT
  544. +mkdir -p \$CHROOT
  545. +#------------------------------------
  546. +tt=/bin/bash
  547. +echo -e "===\n \$tt\n"
  548. +recurse "" \$tt
  549. +
  550. +tt=/bin/sh
  551. +echo -e "===\n \$tt\n"
  552. +recurse "" \$tt
  553. +
  554. +tt=/bin/busybox
  555. +echo -e "===\n \$tt\n"
  556. +recurse "" \$tt
  557. +
  558. +tt=/bin/sed
  559. +echo -e "===\n \$tt\n"
  560. +recurse "" \$tt
  561. +
  562. +tt=/usr/sbin/fbset
  563. +echo -e "===\n \$tt\n"
  564. +recurse "" \$tt
  565. +
  566. +tt=/usr/bin/awk
  567. +echo -e "===\n \$tt\n"
  568. +recurse "" \$tt
  569. +
  570. +tt=/usr/bin/cut
  571. +echo -e "===\n \$tt\n"
  572. +recurse "" \$tt
  573. +
  574. +tt=/usr/bin/tail
  575. +echo -e "===\n \$tt\n"
  576. +recurse "" \$tt
  577. +
  578. +tt=/sbin/reboot
  579. +echo -e "===\n \$tt\n"
  580. +recurse "" \$tt
  581. +
  582. +#----------------------------------------
  583. +cp -a /lib/ld-* \${CHROOT}/lib
  584. +cp -a /bin/* \${CHROOT}/bin
  585. +
  586. +ln -s ./realroot/root \${CHROOT}/root
  587. +
  588. +mkdir -p \${CHROOT}/proc
  589. +mkdir -p \${CHROOT}/dev
  590. +mkdir -p \${CHROOT}/sys
  591. +mkdir -p \${CHROOT}/etc
  592. +mkdir -p \${CHROOT}/realroot
  593. +mkdir -p \${CHROOT}/var
  594. +mkdir -p \${CHROOT}/tmp
  595. +mkdir -p \${CHROOT}/mnt
  596. +
  597. +mkdir -p \${CHROOT}/realroot/media/usb0
  598. +mkdir -p \${CHROOT}/realroot/media/usb1
  599. +
  600. +mount -o bind /proc \${CHROOT}/proc
  601. +mount -o bind /dev \${CHROOT}/dev
  602. +mount -o bind /sys \${CHROOT}/sys
  603. +mount -o bind /etc \${CHROOT}/etc
  604. +mount -o bind /var \${CHROOT}/var
  605. +mount -o bind /tmp \${CHROOT}/tmp
  606. +mount -o bind / \${CHROOT}/realroot
  607. +
  608. +mount -o bind /media/usb0 \${CHROOT}/realroot/media/usb0
  609. +mount -o bind /media/usb1 \${CHROOT}/realroot/media/usb1
  610. +
  611. +echo -e "\n===========\nchroot environment ready in \n \${CHROOT}\n===========\n"
  612. +chroot \${CHROOT} sh -c 'GFA_PREFIX=/realroot sh /realroot${updatename} DoRealUpdate'
  613. +
  614. +EOF
  615. +) > /root/GfA_prep_chroot.sh
  616. +
  617. +chmod a+x /root/GfA_prep_chroot.sh
  618. +#--- execute built script
  619. +echo "==>>> execute chroot update script"
  620. +/root/GfA_prep_chroot.sh
  621. +else
  622. +## --- Kommandos zum Installieren
  623. +## -- get bootpartition
  624. +such="root=/dev/mmcblk1"
  625. +grep -q $such /proc/cmdline
  626. +if [ $? == 0 ]
  627. +then
  628. + bootpart="/dev/mmcblk1p1"
  629. +else
  630. + bootpart="/dev/mmcblk0p1"
  631. +fi
  632. +#===== DoRealUpdate === Start
  633. +if [ $1 == "DoRealUpdate" ]
  634. +then
  635. +
  636. +umount /mnt 2>/dev/null
  637. +umount $GFA_PREFIX/_GfABoot 2>/dev/null
  638. +
  639. +rm -rf $GFA_PREFIX/_GfABoot
  640. +mkdir $GFA_PREFIX/_GfABoot
  641. +mount $bootpart $GFA_PREFIX/_GfABoot
  642. +
  643. +
  644. +mkdir -p $TMP_PATH/bu_cfg
  645. +
  646. +if [ -e $GFA_PREFIX/etc/network/interfaces ]
  647. +then
  648. + cp $GFA_PREFIX/etc/network/interfaces $TMP_PATH/bu_cfg
  649. + rm $GFA_PREFIX/etc/network/interfaces
  650. +fi
  651. +
  652. +if [ -e $GFA_PREFIX/etc/wpa_supplicant.conf ]
  653. +then
  654. + cp $GFA_PREFIX/etc/wpa_supplicant.conf $TMP_PATH/bu_cfg/wpa_supplicant.conf_old
  655. + rm $GFA_PREFIX/etc/wpa_supplicant.conf
  656. +fi
  657. +
  658. +if [ -e $GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf ]
  659. +then
  660. + cp $GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf $TMP_PATH/bu_cfg
  661. + rm $GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf
  662. +fi
  663. +
  664. +#--- Kernel MLO und Rootfs-Tarball entpacken
  665. +untar_payload
  666. +# ---
  667. +
  668. +echo "sync mmc be patient ...."
  669. +sync
  670. +sync
  671. +# --- copy old eth0 configuration
  672. +INTERFACE="eth0"
  673. +IFCONFIG=$TMP_PATH/bu_cfg/interfaces
  674. +
  675. +(\
  676. +cat << EOF
  677. +# Configure Loopback
  678. +auto lo
  679. +iface lo inet loopback
  680. +
  681. +EOF
  682. +) > $GFA_PREFIX/etc/network/interfaces
  683. +
  684. +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 \
  685. +>> $GFA_PREFIX/etc/network/interfaces
  686. +
  687. +(\
  688. +cat << EOF
  689. +iface eth1 inet dhcp
  690. +#---
  691. +iface usb0 inet static
  692. + address 192.168.7.2
  693. + netmask 255.255.255.252
  694. +#---
  695. +iface wlan0 inet dhcp
  696. + wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
  697. +#
  698. +EOF
  699. +) >> $GFA_PREFIX/etc/network/interfaces
  700. +
  701. +if [ -e $GFA_PREFIX/etc/init.d/S98usb_g_ether ]
  702. +then
  703. + cp $GFA_PREFIX/etc/init.d/S98usb_g_ether $GFA_PREFIX/etc/init.d/M98usb_g_ether
  704. + rm $GFA_PREFIX/etc/init.d/S98usb_g_ether
  705. +fi
  706. +
  707. +if [ -e $GFA_PREFIX/etc/init.d/S80ti-sgx ]
  708. +then
  709. + rm $GFA_PREFIX/etc/init.d/S80ti-sgx
  710. +fi
  711. +
  712. +if [ -e $GFA_PREFIX/etc/init.d/M99_wlan_usb ]
  713. +then
  714. + rm $GFA_PREFIX/etc/init.d/M99_wlan_usb
  715. +fi
  716. +
  717. +if [ -e $GFA_PREFIX/etc/init.d/S99_wlan_usb ]
  718. +then
  719. + rm $GFA_PREFIX/etc/init.d/S99_wlan_usb
  720. +fi
  721. +
  722. +if [ -e $GFA_PREFIX/etc/init.d/M80dhcp-relay ]
  723. +then
  724. + rm $GFA_PREFIX/etc/init.d/M80dhcp-relay
  725. +fi
  726. +
  727. +if [ -e $GFA_PREFIX/etc/init.d/S80dhcp-relay ]
  728. +then
  729. + rm $GFA_PREFIX/etc/init.d/S80dhcp-relay
  730. +fi
  731. +
  732. +if [ -e $GFA_PREFIX/etc/init.d/M80dhcp-server ]
  733. +then
  734. + rm $GFA_PREFIX/etc/init.d/M80dhcp-server
  735. +fi
  736. +
  737. +if [ -e $GFA_PREFIX/etc/init.d/S80dhcp-server ]
  738. +then
  739. + rm $GFA_PREFIX/etc/init.d/S80dhcp-server
  740. +fi
  741. +
  742. +if [ -d $GFA_PREFIX/etc/dhcp ]
  743. +then
  744. + rm -rf $GFA_PREFIX/etc/dhcp
  745. +fi
  746. +
  747. +if [ -e $GFA_PREFIX/var/GfA/Display_GSM.ini ]
  748. +then
  749. + sed -i 's/TSYNCCMD=rdate time.memod.de/TSYNCCMD=\/etc\/init.d\/S99rtc_GfA set/' $GFA_PREFIX/var/GfA/Display_GSM.ini
  750. +fi
  751. +
  752. +#================================
  753. +#--create mountable run folder insted of link
  754. +RUNDIR=$GFA_PREFIX/run
  755. +if [ -L $RUNDIR ]; then
  756. + mv $RUNDIR $RUNDIR'_WRK'
  757. + mkdir $RUNDIR
  758. + mount -t tmpfs tmpfs $RUNDIR
  759. + WRKDIR=`pwd`
  760. + cd $RUNDIR'_WRK'
  761. + cp -a ./* $RUNDIR
  762. + cd $WRKDIR
  763. + rm $RUNDIR'_WRK'
  764. +fi
  765. +#--- craete missing nogroup group
  766. +GID_NOGROUP=`awk -F\: '/nogroup/ {print $3}' $GFA_PREFIX/etc/group`
  767. +if [ -z "$GID_NOGROUP" ]; then
  768. +# addgroup -S -g 65534 nogroup
  769. + GID_NOGROUP=65534
  770. + echo "nogroup:x:${GID_NOUGROUP}:" >> $GFA_PREFIX/etc/group
  771. +fi
  772. +#--create missing users for mysql,
  773. +if [ -z `awk -F\: '/mysql/ {print $3}' $GFA_PREFIX/etc/passwd` ]; then
  774. + 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`
  775. + echo "mysql:x:$UID_MY:${GID_NOUGROUP}:MySQL daemon:/var/mysql:/bin/false" >> $GFA_PREFIX/etc/passwd
  776. +fi
  777. +#--create missing users for postgresql,
  778. +if [ -z `awk -F\: '/postgres/ {print $3}' $GFA_PREFIX/etc/passwd` ]; then
  779. + 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`
  780. + GID_PG=`awk -F\: '/postgres/ {print $3}' $GFA_PREFIX/etc/group`
  781. + if [ -z "$GID_PG" ]; then
  782. + 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`
  783. + echo "postgres:x:$GID_PG:" >> $GFA_PREFIX/etc/group
  784. + fi
  785. + echo "postgres:x:$UID_PG:$GID_PG:PostgreSQL Server:/var/lib/pgsql:/bin/sh" >> $GFA_PREFIX/etc/passwd
  786. +fi
  787. +#------------------
  788. +UID_MY=`awk -F\: '/mysql/ {print $3}' $GFA_PREFIX/etc/passwd`
  789. +UID_PG=`awk -F\: '/postgres/ {print $3}' $GFA_PREFIX/etc/passwd`
  790. +GID_PG=`awk -F\: '/postgres/ {print $3}' $GFA_PREFIX/etc/group`
  791. +GID_NOGROUP=`awk -F\: '/nogroup/ {print $3}' $GFA_PREFIX/etc/group`
  792. +
  793. +chown -Rv ${UID_MY}:${GID_NOGROUP} $GFA_PREFIX/var/mysql
  794. +chown -Rv ${UID_PG}:${GID_PG} $GFA_PREFIX/var/lib/pgsql
  795. +
  796. +chmod 700 $GFA_PREFIX/root/.ssh
  797. +#==============================================================================
  798. +# Get Graphics resolution and set dtb to the right resolution
  799. +BASEBOARD=`cat /tmp/BASEBOARD`
  800. +
  801. +DONE=0
  802. +YRES="$(fbset | awk '/geom/ {print $3}')"
  803. +XRES="$(fbset | awk '/geom/ {print $2}')"
  804. +
  805. +echo "XRES $XRES, YRES $YRES"
  806. +
  807. +if [ "$XRES" == "480" -a "$YRES" == "272" ]; then
  808. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  809. + echo "4.3 Inch Display 2"
  810. + sh /root/Display2To_4_3inch.sh
  811. + DONE=1
  812. +else
  813. + echo "4.3 Inch"
  814. + sh /root/DisplayTo_4_3inch.sh
  815. + DONE=1
  816. +fi
  817. +fi
  818. +
  819. +if [ "$XRES" == "800" -a "$YRES" == "480" ]; then
  820. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  821. + echo "7 Inch Display 2"
  822. + sh /root/Display2To_7inch.sh
  823. + DONE=1
  824. +else
  825. +if [ "$BASEBOARD" == "DISPLAY002_RS485" ]; then
  826. + echo "7 Inch Display 2 rs485"
  827. + sh /root/Display2To_7inch_rs485.sh
  828. + DONE=1
  829. +else
  830. + echo "7 Inch"
  831. + sh /root/DisplayTo_7inch.sh
  832. + DONE=1
  833. +fi
  834. +fi
  835. +fi
  836. +
  837. +if [ "$XRES" == "640" -a "$YRES" == "480" ]; then
  838. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  839. + echo "5.7 Inch Display 2"
  840. + sh /root/Display2To_5_7inch.sh
  841. + DONE=1
  842. +else
  843. + echo "5.7 Inch"
  844. + sh /root/DisplayTo_5_7inch.sh
  845. + DONE=1
  846. +fi
  847. +fi
  848. +
  849. +if [ "$XRES" == "1280" -a "$YRES" == "800" ]; then
  850. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  851. + echo "10 Inch Display 2"
  852. + sh /root/Display2To_10inch.sh
  853. + DONE=1
  854. +else
  855. + echo "10 Inch"
  856. + sh /root/DisplayTo_10inch.sh
  857. + DONE=1
  858. +fi
  859. +fi
  860. +
  861. +if [ "$XRES" == "1920" -a "$YRES" == "1080" ]; then
  862. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  863. + echo "15 Inch Display 2"
  864. + sh /root/Display2To_15inch.sh
  865. + DONE=1
  866. +else
  867. + echo "15 Inch"
  868. + sh /root/DisplayTo_15inch.sh
  869. + DONE=1
  870. +fi
  871. +fi
  872. +
  873. +if [ "$DONE" == "0" ]; then
  874. + echo "Unknown Display Resolution"
  875. +fi
  876. +
  877. +#=================
  878. +echo "Update Done, pls. reboot System"
  879. +umount $GFA_PREFIX/_GfABoot 2>/dev/null
  880. +rm -rf $GFA_PREFIX/_GfABoot
  881. +
  882. +echo "."
  883. +echo "restart system !!!"
  884. +sleep 2
  885. +#-----------------
  886. +reboot
  887. +fi
  888. +fi
  889. +#====================== DoRealUpdate ==== Ende =====
  890. +#===== MakeBootableSD/EMMC === Start
  891. +if [ $1 == "MakeBootableSD" -o $1 == "MakeBootableEMMC" ]
  892. +then
  893. +such="root=/dev/mmcblk1"
  894. +
  895. +if [ $1 == "MakeBootableSD" ]; then
  896. + TODEV="SD"
  897. +else
  898. + TODEV="EMMC"
  899. +fi
  900. +
  901. +grep -q $such /proc/cmdline
  902. +if [ $? == 0 ]; then
  903. + bootpart="/dev/mmcblk1p1"
  904. + bootdev="EMMC"
  905. + DESTNAME="SD"
  906. + DESTDEV="/dev/mmcblk0"
  907. + DESTBOOTPART="/dev/mmcblk0p1"
  908. + DESTROOTPART="/dev/mmcblk0p2"
  909. +else
  910. + bootpart="/dev/mmcblk0p1"
  911. + bootdev="SD"
  912. + DESTNAME="EMMC"
  913. + DESTDEV="/dev/mmcblk1"
  914. + DESTBOOTPART="/dev/mmcblk1p1"
  915. + DESTROOTPART="/dev/mmcblk1p2"
  916. +fi
  917. +
  918. +echo ""
  919. +echo -e "\e[7mMake Bootable $TODEV\e[0m"
  920. +
  921. +if [ $bootdev == $TODEV ]; then
  922. + echo "System was booted from $TODEV, Making Bootable$TODEV not possible ! ==> EXIT"
  923. + exit 1
  924. +fi
  925. +
  926. +if [ ! -b $DESTDEV ]; then
  927. + echo -e "\e[31mNo $DESTNAME available ! ==> EXIT\e[0m"
  928. + exit 2
  929. +fi
  930. +
  931. +echo -e "\e[31m$DESTNAME will be formatted, all Data will be deleted!!\e[0m"
  932. +echo ""
  933. +read -n 1 -p "are you sure? (y/n) : " antwort
  934. +
  935. +if [ ${#antwort} == 0 ]; then
  936. + antwort = "n"
  937. +fi
  938. +
  939. +if [ $antwort == "y" -o $antwort == "Y" ]; then
  940. + echo -e "\nStart copying .."
  941. +else
  942. + echo -e "\nEXIT on user reqest"
  943. + exit 3
  944. +fi
  945. +
  946. +echo "Formatting $DESTNAME ...."
  947. +umount $DESTBOOTPART 2>/dev/null
  948. +umount $DESTROOTPART 2>/dev/null
  949. +dd if=/dev/zero of=$DESTDEV bs=2M count=1 conv=notrunc
  950. +busybox fdisk $DESTDEV <<EOF
  951. +o
  952. +p
  953. +n
  954. +p
  955. +1
  956. +
  957. ++64M
  958. +t
  959. +e
  960. +a
  961. +1
  962. +n
  963. +p
  964. +2
  965. +
  966. +
  967. +p
  968. +w
  969. +EOF
  970. +/sbin/mkfs.vfat -F 16 $DESTBOOTPART
  971. +if [ -e /usr/sbin/mkfs.ext4 ]; then
  972. + /usr/sbin/mkfs.ext4 -F $DESTROOTPART
  973. +else
  974. + mkfs.ext4 -F $DESTROOTPART
  975. +fi
  976. +#======
  977. +GFA_PREFIX="/tmp/__MakeSD"
  978. +rm -rf $GFA_PREFIX
  979. +TAR_PARAMETERS="-C $GFA_PREFIX/ -xzvf -"
  980. +
  981. +# mount partiotions
  982. +mkdir -p $GFA_PREFIX
  983. +mount $DESTROOTPART $GFA_PREFIX
  984. +mkdir -p $GFA_PREFIX/_GfABoot
  985. +mount $DESTBOOTPART $GFA_PREFIX/_GfABoot
  986. +
  987. +#--- Kernel MLO und Rootfs-Tarball entpacken
  988. +untar_payload
  989. +# ---
  990. +cd
  991. +df -h
  992. +# ==========
  993. +#=====
  994. +# Get Graphics resolution and set dtb to the right resolution
  995. +BASEBOARD=`cat /tmp/BASEBOARD`
  996. +
  997. +DONE=0
  998. +YRES="$(fbset | awk '/geom/ {print $3}')"
  999. +XRES="$(fbset | awk '/geom/ {print $2}')"
  1000. +
  1001. +EMMC_BOOTPATH=$GFA_PREFIX/_GfABoot
  1002. +
  1003. +echo "XRES $XRES, YRES $YRES"
  1004. +
  1005. +if [ "$XRES" == "480" -a "$YRES" == "272" ]; then
  1006. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  1007. + echo "4.3 Inch Display 2"
  1008. + cp $EMMC_BOOTPATH/Display002_4.dtb $EMMC_BOOTPATH/Display001.dtb
  1009. + DONE=1
  1010. +else
  1011. + echo "4.3 Inch"
  1012. + cp $EMMC_BOOTPATH/Display001_4.dtb $EMMC_BOOTPATH/Display001.dtb
  1013. + DONE=1
  1014. +fi
  1015. +fi
  1016. +
  1017. +if [ "$XRES" == "800" -a "$YRES" == "480" ]; then
  1018. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  1019. + echo "7 Inch Display 2"
  1020. + cp $EMMC_BOOTPATH/Display002_7.dtb $EMMC_BOOTPATH/Display001.dtb
  1021. + DONE=1
  1022. +else
  1023. +if [ "$BASEBOARD" == "DISPLAY002_RS485" ]; then
  1024. + echo "7 Inch Display 2 rs485"
  1025. + cp $EMMC_BOOTPATH/Display002_7_rs485.dtb $EMMC_BOOTPATH/Display001.dtb
  1026. + DONE=1
  1027. +else
  1028. + echo "7 Inch"
  1029. + cp $EMMC_BOOTPATH/Display001_7.dtb $EMMC_BOOTPATH/Display001.dtb
  1030. + DONE=1
  1031. +fi
  1032. +fi
  1033. +fi
  1034. +
  1035. +if [ "$XRES" == "640" -a "$YRES" == "480" ]; then
  1036. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  1037. + echo "5.7 Inch Display 2"
  1038. + cp $EMMC_BOOTPATH/Display002_5.dtb $EMMC_BOOTPATH/Display001.dtb
  1039. + DONE=1
  1040. +else
  1041. + echo "5.7 Inch"
  1042. + cp $EMMC_BOOTPATH/Display001_5.dtb $EMMC_BOOTPATH/Display001.dtb
  1043. + DONE=1
  1044. +fi
  1045. +fi
  1046. +if [ "$XRES" == "1280" -a "$YRES" == "800" ]; then
  1047. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  1048. + echo "10 Inch Display 2"
  1049. + cp $EMMC_BOOTPATH/Display002_10.dtb $EMMC_BOOTPATH/Display001.dtb
  1050. + DONE=1
  1051. +else
  1052. + echo "10 Inch"
  1053. + cp $EMMC_BOOTPATH/Display001_10.dtb $EMMC_BOOTPATH/Display001.dtb
  1054. + DONE=1
  1055. +fi
  1056. +fi
  1057. +
  1058. +if [ "$XRES" == "1920" -a "$YRES" == "1080" ]; then
  1059. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  1060. + echo "15 Inch Display 2"
  1061. + cp $EMMC_BOOTPATH/Display002_15.dtb $EMMC_BOOTPATH/Display001.dtb
  1062. + DONE=1
  1063. +else
  1064. + echo "15 Inch"
  1065. + cp $EMMC_BOOTPATH/Display001_15.dtb $EMMC_BOOTPATH/Display001.dtb
  1066. + DONE=1
  1067. +fi
  1068. +fi
  1069. +
  1070. +if [ "$DONE" == "0" ]; then
  1071. + echo "Unknown Display Resolution"
  1072. +fi
  1073. +#========================================
  1074. +
  1075. +# umount boot
  1076. +umount $DESTBOOTPART
  1077. +rm -rf $GFA_PREFIX/_GfABoot
  1078. +# umount rootfs
  1079. +umount $DESTROOTPART
  1080. +
  1081. +exit 0
  1082. +fi
  1083. +#===== MakeBootableSD/EMMC === Ende
  1084. +
  1085. +#===== MakeSDUpdateTool === Start
  1086. +if [ $1 == "MakeSDUpdateTool" ]
  1087. +then
  1088. +such="root=/dev/mmcblk1"
  1089. +
  1090. +grep -q $such /proc/cmdline
  1091. +if [ $? == 0 ]; then
  1092. + bootpart="/dev/mmcblk1p1"
  1093. + bootdev="EMMC"
  1094. +else
  1095. + bootpart="/dev/mmcblk0p1"
  1096. + bootdev="SD"
  1097. +fi
  1098. +
  1099. +echo ""
  1100. +echo -e "\e[7mMake SDUpdateTool\e[0m"
  1101. +
  1102. +if [ $bootdev != "SD" ]; then
  1103. + echo "System was booted from $bootdev, Making SDUpdateTool not possible ! ==> EXIT"
  1104. + exit 1
  1105. +fi
  1106. +
  1107. +GFA_PREFIX="/opt/GfA/SDUpdateTool"
  1108. +GFA_DATAPATH=$GFA_PREFIX/_BootRoot
  1109. +
  1110. +rm -rf $GFA_DATAPATH
  1111. +mkdir -p $GFA_DATAPATH
  1112. +TAR_PARAMETERS="-C $GFA_DATAPATH/ -xzvf -"
  1113. +
  1114. +#--- Kernel MLO und Rootfs-Tarball entpacken
  1115. +untar_payload
  1116. +# ---
  1117. +echo -e "===\n Make UpdateEMMC.sh \n===\n"
  1118. +(\
  1119. +cat << XEOF
  1120. +#!/bin/sh
  1121. +
  1122. +CALLDIR=\`pwd\`
  1123. +WRKDIR=/opt/GfA/SDUpdateTool
  1124. +
  1125. +DESTDEV="/dev/mmcblk1"
  1126. +
  1127. +EMMC_BOOTPATH="/tmp/EMMCBOOT"
  1128. +EMMC_ROOTPATH="/tmp/EMMCROOT"
  1129. +such=\$DESTDEV
  1130. +
  1131. +grep -q \$such /proc/cmdline
  1132. +if [ \$? == 0 ]; then
  1133. + bootpart="/dev/mmcblk1p1"
  1134. + bootdev="EMMC"
  1135. +else
  1136. + bootpart="/dev/mmcblk0p1"
  1137. + bootdev="SD"
  1138. +fi
  1139. +
  1140. +echo ""
  1141. +echo -e "\e[7mUpdate EMMC from SD\e[0m"
  1142. +
  1143. +if [ \$bootdev != "SD" ]; then
  1144. + echo "System was booted from \$bootdev, update from SD not possible ! =="
  1145. + exit 1
  1146. +fi
  1147. +
  1148. +umount \${DESTDEV}p1 2>/dev/null
  1149. +umount \${DESTDEV}p2 2>/dev/null
  1150. +
  1151. +rm -rf \$EMMC_BOOTPATH
  1152. +rm -rf \$EMMC_ROOTPATH
  1153. +mkdir -p \$EMMC_BOOTPATH
  1154. +mkdir -p \$EMMC_ROOTPATH
  1155. +
  1156. +mount \${DESTDEV}p1 \$EMMC_BOOTPATH
  1157. +mount \${DESTDEV}p2 \$EMMC_ROOTPATH
  1158. +
  1159. +#== copy network config ==
  1160. +TMP_PATH=\$WRKDIR/_GfA_tmp
  1161. +GFA_PREFIX=\$EMMC_ROOTPATH
  1162. +
  1163. +rm -rf \$TMP_PATH
  1164. +mkdir -p \$TMP_PATH
  1165. +mkdir -p \$TMP_PATH/bu_cfg
  1166. +
  1167. +if [ -e \$GFA_PREFIX/etc/network/interfaces ]
  1168. +then
  1169. + cp \$GFA_PREFIX/etc/network/interfaces \$TMP_PATH/bu_cfg
  1170. + rm \$GFA_PREFIX/etc/network/interfaces
  1171. +fi
  1172. +
  1173. +if [ -e \$GFA_PREFIX/etc/wpa_supplicant.conf ]
  1174. +then
  1175. + cp \$GFA_PREFIX/etc/wpa_supplicant.conf \$TMP_PATH/bu_cfg/wpa_supplicant.conf_old
  1176. + rm \$GFA_PREFIX/etc/wpa_supplicant.conf
  1177. +fi
  1178. +
  1179. +if [ -e \$GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf ]
  1180. +then
  1181. + cp \$GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf \$TMP_PATH/bu_cfg
  1182. + rm \$GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf
  1183. +fi
  1184. +
  1185. +#=== copy ROOTFS
  1186. +cd \$WRKDIR/_BootRoot
  1187. +rsync -avR --exclude=/_GfABoot \\
  1188. +--exclude=./tmp --exclude=./etc/inittab \\
  1189. +--exclude=./etc/hosts --exclude=./etc/hostname \\
  1190. +--exclude=./etc/passwd --exclude=./etc/shadow \\
  1191. +--exclude=./etc/vncpwd --exclude=./etc/init.d/S99tincd \\
  1192. +--exclude=./etc/hostapd.conf --exclude=./root/.ssh \\
  1193. +--exclude=./etc/init.d/M99tincd --exclude=./var/GfA/Display_GSM.ini \\
  1194. +--exclude=./var/cron/crontabs/root \\
  1195. + ./ \$EMMC_ROOTPATH/
  1196. +
  1197. +# --- copy old eth0 configuration
  1198. +INTERFACE="eth0"
  1199. +IFCONFIG=\$TMP_PATH/bu_cfg/interfaces
  1200. +
  1201. +(\\
  1202. +cat << EOF
  1203. +# Configure Loopback
  1204. +auto lo
  1205. +iface lo inet loopback
  1206. +
  1207. +EOF
  1208. +) > \$GFA_PREFIX/etc/network/interfaces
  1209. +
  1210. +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 \\
  1211. +>> \$GFA_PREFIX/etc/network/interfaces
  1212. +
  1213. +(\\
  1214. +cat << EOF
  1215. +iface eth1 inet dhcp
  1216. +#---
  1217. +iface usb0 inet static
  1218. + address 192.168.7.2
  1219. + netmask 255.255.255.252
  1220. +#---
  1221. +iface wlan0 inet dhcp
  1222. + wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
  1223. +#
  1224. +EOF
  1225. +) >> \$GFA_PREFIX/etc/network/interfaces
  1226. +
  1227. +if [ -e \$GFA_PREFIX/etc/init.d/S98usb_g_ether ]
  1228. +then
  1229. + cp \$GFA_PREFIX/etc/init.d/S98usb_g_ether \$GFA_PREFIX/etc/init.d/M98usb_g_ether
  1230. + rm \$GFA_PREFIX/etc/init.d/S98usb_g_ether
  1231. +fi
  1232. +
  1233. +if [ -e \$GFA_PREFIX/etc/init.d/S80ti-sgx ]
  1234. +then
  1235. + rm \$GFA_PREFIX/etc/init.d/S80ti-sgx
  1236. +fi
  1237. +
  1238. +if [ -e \$GFA_PREFIX/etc/init.d/M99_wlan_usb ]
  1239. +then
  1240. + rm \$GFA_PREFIX/etc/init.d/M99_wlan_usb
  1241. +fi
  1242. +
  1243. +if [ -e \$GFA_PREFIX/etc/init.d/S99_wlan_usb ]
  1244. +then
  1245. + rm \$GFA_PREFIX/etc/init.d/S99_wlan_usb
  1246. +fi
  1247. +
  1248. +if [ -e \$GFA_PREFIX/etc/init.d/M80dhcp-relay ]
  1249. +then
  1250. + rm \$GFA_PREFIX/etc/init.d/M80dhcp-relay
  1251. +fi
  1252. +
  1253. +if [ -e \$GFA_PREFIX/etc/init.d/S80dhcp-relay ]
  1254. +then
  1255. + rm \$GFA_PREFIX/etc/init.d/S80dhcp-relay
  1256. +fi
  1257. +if [ -e \$GFA_PREFIX/etc/init.d/M80dhcp-server ]
  1258. +then
  1259. + rm \$GFA_PREFIX/etc/init.d/M80dhcp-server
  1260. +fi
  1261. +
  1262. +if [ -e \$GFA_PREFIX/etc/init.d/S80dhcp-server ]
  1263. +then
  1264. + rm \$GFA_PREFIX/etc/init.d/S80dhcp-server
  1265. +fi
  1266. +
  1267. +if [ -d \$GFA_PREFIX/etc/dhcp ]
  1268. +then
  1269. + rm -rf \$GFA_PREFIX/etc/dhcp
  1270. +fi
  1271. +
  1272. +if [ -e \$GFA_PREFIX/var/GfA/Display_GSM.ini ]
  1273. +then
  1274. + sed -i 's/TSYNCCMD=rdate time.memod.de/TSYNCCMD=\/etc\/init.d\/S99rtc_GfA set/' \$GFA_PREFIX/var/GfA/Display_GSM.ini
  1275. +fi
  1276. +#================================
  1277. +#--create mountable run folder insted of link
  1278. +RUNDIR=\$GFA_PREFIX/run
  1279. +if [ -L \$RUNDIR ]; then
  1280. + mv \$RUNDIR \$RUNDIR'_WRK'
  1281. + mkdir \$RUNDIR
  1282. + mount -t tmpfs tmpfs \$RUNDIR
  1283. + WRKDIR=\`pwd\`
  1284. + cd \$RUNDIR'_WRK'
  1285. + cp -a ./* \$RUNDIR
  1286. + cd \$WRKDIR
  1287. + rm \$RUNDIR'_WRK'
  1288. +fi
  1289. +#--- craete missing nogroup group
  1290. +GID_NOGROUP=\`awk -F\: '/nogroup/ {print \$3}' \$GFA_PREFIX/etc/group\`
  1291. +if [ -z "\$GID_NOGROUP" ]; then
  1292. +# addgroup -S -g 65534 nogroup
  1293. + GID_NOGROUP=65534
  1294. + echo "nogroup:x:\${GID_NOUGROUP}:" >> \$GFA_PREFIX/etc/group
  1295. +fi
  1296. +#--create missing users for mysql,
  1297. +if [ -z \`awk -F\: '/mysql/ {print \$3}' \$GFA_PREFIX/etc/passwd\` ]; then
  1298. + 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\`
  1299. + echo "mysql:x:\$UID_MY:\${GID_NOUGROUP}:MySQL daemon:/var/mysql:/bin/false" >> \$GFA_PREFIX/etc/passwd
  1300. +fi
  1301. +#--create missing users for postgresql,
  1302. +if [ -z \`awk -F\: '/postgres/ {print \$3}' \$GFA_PREFIX/etc/passwd\` ]; then
  1303. + 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\`
  1304. + GID_PG=\`awk -F\: '/postgres/ {print \$3}' \$GFA_PREFIX/etc/group\`
  1305. + if [ -z "\$GID_PG" ]; then
  1306. + 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\`
  1307. + echo "postgres:x:\$GID_PG:" >> \$GFA_PREFIX/etc/group
  1308. + fi
  1309. + echo "postgres:x:\$UID_PG:\$GID_PG:PostgreSQL Server:/var/lib/pgsql:/bin/sh" >> \$GFA_PREFIX/etc/passwd
  1310. +fi
  1311. +#------------------
  1312. +UID_MY=\`awk -F\: '/mysql/ {print \$3}' \$GFA_PREFIX/etc/passwd\`
  1313. +UID_PG=\`awk -F\: '/postgres/ {print \$3}' \$GFA_PREFIX/etc/passwd\`
  1314. +GID_PG=\`awk -F\: '/postgres/ {print \$3}' \$GFA_PREFIX/etc/group\`
  1315. +GID_NOGROUP=\`awk -F\: '/nogroup/ {print \$3}' \$GFA_PREFIX/etc/group\`
  1316. +
  1317. +chown -Rv \${UID_MY}:\${GID_NOGROUP} \$GFA_PREFIX/var/mysql
  1318. +chown -Rv \${UID_PG}:\${GID_PG} \$GFA_PREFIX/var/lib/pgsql
  1319. +
  1320. +chmod 700 \$GFA_PREFIX/root/.ssh
  1321. +#===== copy custom_root files if folder exists
  1322. +if [ -d "\$WRKDIR/custom_root" ]; then
  1323. + cd \$WRKDIR/custom_root
  1324. + rsync -avR \\
  1325. + ./ \$EMMC_ROOTPATH/
  1326. +fi
  1327. +#==============================================================================
  1328. +#=== copy BOOTFS
  1329. +rm -rf \$EMMC_BOOTPATH/*
  1330. +cd \$WRKDIR/_BootRoot/_GfABoot
  1331. +rsync -avR ./ \$EMMC_BOOTPATH/
  1332. +#=====
  1333. +# Get Graphics resolution and set dtb to the right resolution
  1334. +BASEBOARD=\`cat /tmp/BASEBOARD\`
  1335. +
  1336. +DONE=0
  1337. +YRES="\$(fbset | awk '/geom/ {print \$3}')"
  1338. +XRES="\$(fbset | awk '/geom/ {print \$2}')"
  1339. +
  1340. +echo "XRES \$XRES, YRES \$YRES"
  1341. +
  1342. +if [ "\$XRES" == "480" -a "\$YRES" == "272" ]; then
  1343. +if [ "\$BASEBOARD" == "DISPLAY002_DI4" ]; then
  1344. + echo "4.3 Inch Display 2"
  1345. + cp \$EMMC_BOOTPATH/Display002_4.dtb \$EMMC_BOOTPATH/Display001.dtb
  1346. + DONE=1
  1347. +else
  1348. + echo "4.3 Inch"
  1349. + cp \$EMMC_BOOTPATH/Display001_4.dtb \$EMMC_BOOTPATH/Display001.dtb
  1350. + DONE=1
  1351. +fi
  1352. +fi
  1353. +
  1354. +if [ "\$XRES" == "800" -a "\$YRES" == "480" ]; then
  1355. +if [ "\$BASEBOARD" == "DISPLAY002_DI4" ]; then
  1356. + echo "7 Inch Display 2"
  1357. + cp \$EMMC_BOOTPATH/Display002_7.dtb \$EMMC_BOOTPATH/Display001.dtb
  1358. + DONE=1
  1359. +else
  1360. +if [ "\$BASEBOARD" == "DISPLAY002_RS485" ]; then
  1361. + echo "7 Inch Display 2 rs485"
  1362. + cp \$EMMC_BOOTPATH/Display002_7_rs485.dtb \$EMMC_BOOTPATH/Display001.dtb
  1363. + DONE=1
  1364. +else
  1365. + echo "7 Inch"
  1366. + cp \$EMMC_BOOTPATH/Display001_7.dtb \$EMMC_BOOTPATH/Display001.dtb
  1367. + DONE=1
  1368. +fi
  1369. +fi
  1370. +fi
  1371. +
  1372. +if [ "\$XRES" == "640" -a "\$YRES" == "480" ]; then
  1373. +if [ "\$BASEBOARD" == "DISPLAY002_DI4" ]; then
  1374. + echo "5.7 Inch Display 2"
  1375. + cp \$EMMC_BOOTPATH/Display002_5.dtb \$EMMC_BOOTPATH/Display001.dtb
  1376. + DONE=1
  1377. +else
  1378. + echo "5.7 Inch"
  1379. + cp \$EMMC_BOOTPATH/Display001_5.dtb \$EMMC_BOOTPATH/Display001.dtb
  1380. + DONE=1
  1381. +fi
  1382. +fi
  1383. +if [ "\$XRES" == "1280" -a "\$YRES" == "800" ]; then
  1384. +if [ "\$BASEBOARD" == "DISPLAY002_DI4" ]; then
  1385. + echo "10 Inch Display 2"
  1386. + cp \$EMMC_BOOTPATH/Display002_10.dtb \$EMMC_BOOTPATH/Display001.dtb
  1387. + DONE=1
  1388. +else
  1389. + echo "10 Inch"
  1390. + cp \$EMMC_BOOTPATH/Display001_10.dtb \$EMMC_BOOTPATH/Display001.dtb
  1391. + DONE=1
  1392. +fi
  1393. +fi
  1394. +
  1395. +if [ "\$XRES" == "1920" -a "\$YRES" == "1080" ]; then
  1396. +if [ "\$BASEBOARD" == "DISPLAY002_DI4" ]; then
  1397. + echo "15 Inch Display 2"
  1398. + cp \$EMMC_BOOTPATH/Display002_15.dtb \$EMMC_BOOTPATH/Display001.dtb
  1399. + DONE=1
  1400. +else
  1401. + echo "15 Inch"
  1402. + cp \$EMMC_BOOTPATH/Display001_15.dtb \$EMMC_BOOTPATH/Display001.dtb
  1403. + DONE=1
  1404. +fi
  1405. +fi
  1406. +
  1407. +if [ "\$DONE" == "0" ]; then
  1408. + echo "Unknown Display Resolution"
  1409. +fi
  1410. +#========================================
  1411. +
  1412. +umount \${DESTDEV}p1 2>/dev/null
  1413. +umount \${DESTDEV}p2 2>/dev/null
  1414. +
  1415. +XEOF
  1416. +) > $GFA_PREFIX/UpdateEMMC.sh
  1417. +chmod a+x $GFA_PREFIX/UpdateEMMC.sh
  1418. +
  1419. +exit 0
  1420. +fi
  1421. +#===== MakeSDUpdateTool === End
  1422. +
  1423. +#====== HELP on unknown Command =======
  1424. +echo -e "Unknown Command :: $1"
  1425. +echo -e "Usage: $0 \e[32m[Command]\e[0m"
  1426. +echo -e "\t without command ... update to new system"
  1427. +echo -e "\t \e[32mMakeBootableSD\e[0m ... create bootable SD card with factory defaults"
  1428. +echo -e "\t \e[32mMakeBootableEMMC\e[0m ... create bootable EMMC with factory defaults"
  1429. +echo -e "\t \e[32mMakeSDUpdateTool\e[0m ... create Folders and scripts for"
  1430. +echo -e "\t\t updating system from SD Card in /opt/GfA/SDUpdateTool"
  1431. +echo -e "\t\t To Do UpdateEMMC:"
  1432. +echo -e "\t\t\t cd /opt/GfA/SDUpdateTool"
  1433. +echo -e "\t\t\t ./UpdateEMMC.sh"
  1434. +echo -e "\t\t\t if folder /opt/GfASDupdateTool/custom_root exists"
  1435. +echo -e "\t\t\t whole tree will be copied to root filesystem as is"
  1436. +
  1437. +exit 0