0001-generate-images-scripts.patch 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985
  1. From 68244a78dc78a1ba91fe781f657114c5f434f15d Mon Sep 17 00:00:00 2001
  2. From: Reinhard Russinger <reinhard@russinger.at>
  3. Date: Thu, 26 Dec 2019 17:01:28 +0000
  4. Subject: [PATCH 1/2] generate-images-scripts
  5. ---
  6. CrossCompile.sh | 45 ++++++
  7. MakeDTSUpdate.sh | 58 +++++++
  8. MakeIMAGE.sh | 106 +++++++++++++
  9. MakeLegalInfo.sh | 17 ++
  10. MakeRootfsUpdate.sh | 73 +++++++++
  11. MapImage.sh | 41 +++++
  12. UpdateDTS.sh.in | 126 +++++++++++++++
  13. UpdateRootfs.sh.in | 442 ++++++++++++++++++++++++++++++++++++++++++++++++++++
  14. 8 files changed, 908 insertions(+)
  15. create mode 100755 CrossCompile.sh
  16. create mode 100755 MakeDTSUpdate.sh
  17. create mode 100755 MakeIMAGE.sh
  18. create mode 100755 MakeLegalInfo.sh
  19. create mode 100755 MakeRootfsUpdate.sh
  20. create mode 100755 MapImage.sh
  21. create mode 100644 UpdateDTS.sh.in
  22. create mode 100644 UpdateRootfs.sh.in
  23. diff --git a/CrossCompile.sh b/CrossCompile.sh
  24. new file mode 100755
  25. index 0000000..cb6c0ae
  26. --- /dev/null
  27. +++ b/CrossCompile.sh
  28. @@ -0,0 +1,45 @@
  29. +#! /bin/bash
  30. +#
  31. +#
  32. +
  33. +WRKDIR=`pwd`
  34. +CMDDIR=`dirname $0`
  35. +cd $CMDDIR
  36. +
  37. +TOOLCHAIN=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`
  38. +echo $TOOLCHAIN
  39. +
  40. +if [[ $TOOLCHAIN = *\$\(BASE_DIR\)* ]]; then
  41. + export SYSROOT=`readlink -f $CMDDIR`/output/host/usr/bin/
  42. +else
  43. + export SYSROOT=$TOOLCHAIN/usr/bin
  44. +fi
  45. +
  46. +export PATH=$PATH:$SYSROOT
  47. +
  48. +export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
  49. +export CROSS=${CROSS_COMPILE}
  50. +export ARCH=arm
  51. +export KERNELDIR=`pwd`/output/build/linux-7f280334068b7c875ade51f8f3921ab311f0c824
  52. +export BB_KERNEL_SOURCES=$KERNELDIR
  53. +export SYSROOTARM=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`/usr/arm-buildroot-linux-gnueabihf/sysroot
  54. +export CC_FULLPATH="${SYSROOT}/${CROSS_COMPILE}"
  55. +export CC=${CROSS_COMPILE}gcc
  56. +export CXX=${CROSS_COMPILE}g++
  57. +
  58. +#--- gnupru
  59. +export PASM=pasm
  60. +##export PSYSROOT=/home/ru/pru/pru-gcc/bin
  61. +export PSYSROOT=/opt/GfA/PRU-ICSS/bin/pru-gcc/bin
  62. +export PATH=$PSYSROOT:$PATH
  63. +
  64. +export PCROSS_COMPILE=pru-
  65. +export PARCH=pru
  66. +
  67. +cd $WRKDIR
  68. +if [ $# -eq "0" ]
  69. +then
  70. +PROMPT_COMMAND='PS1="\[\033[0;31m\]CROSS CC:\[\033[0;32m\]$PS1";unset PROMPT_COMMAND' bash ; reset
  71. +else
  72. +$1
  73. +fi
  74. diff --git a/MakeDTSUpdate.sh b/MakeDTSUpdate.sh
  75. new file mode 100755
  76. index 0000000..f25b04b
  77. --- /dev/null
  78. +++ b/MakeDTSUpdate.sh
  79. @@ -0,0 +1,58 @@
  80. +#!/bin/bash
  81. +WRKDIR=/tmp/XXXUpdateDTS
  82. +BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
  83. +UPDATE_BINARY=$WRKDIR/dest/UpdateDTS.tar.Z
  84. +UPDATE_FILENAME="../UpdateDTS_$BUILD.sh"
  85. +UPDATE_IN_SCRIPT="UpdateDTS.sh.in"
  86. +
  87. +rm -rf $WRKDIR
  88. +mkdir -p $WRKDIR/dest
  89. +
  90. +cp ./output/images/*.dtb $WRKDIR
  91. +
  92. +tar -C $WRKDIR --exclude=./dest -czvf $UPDATE_BINARY ./
  93. +
  94. +# Check for payload format option (default is binary).
  95. +binary=1
  96. +uuencode=0
  97. +
  98. +if [[ "$1" == '--binary' ]]; then
  99. + binary=1
  100. + uuencode=0
  101. + shift
  102. +fi
  103. +if [[ "$1" == '--uuencode' ]]; then
  104. + binary=0
  105. + uuencode=1
  106. + shift
  107. +fi
  108. +
  109. +if [[ ! -f $UPDATE_BINARY ]]; then
  110. + echo " UPDATE_BINARY $UPDATE_BINARY doesn't exist!"
  111. + echo "Usage: $0 [--binary | --uuencode]"
  112. + exit 1
  113. +fi
  114. +
  115. +
  116. +if [[ $binary -ne 0 ]]; then
  117. + # Append binary data.
  118. + sed \
  119. + -e 's/uuencode=./uuencode=0/' \
  120. + -e 's/binary=./binary=1/' \
  121. + $UPDATE_IN_SCRIPT > $UPDATE_FILENAME
  122. + echo "PAYLOAD:" >> $UPDATE_FILENAME
  123. +
  124. + cat $UPDATE_BINARY >> $UPDATE_FILENAME
  125. +fi
  126. +if [[ $uuencode -ne 0 ]]; then
  127. + # Append uuencoded data.
  128. + sed \
  129. + -e 's/uuencode=./uuencode=1/' \
  130. + -e 's/binary=./binary=0/' \
  131. + $UPDATE_IN_SCRIPT > $UPDATE_FILENAME
  132. + echo "PAYLOAD:" >> $UPDATE_FILENAME
  133. +
  134. + cat $UPDATE_BINARY | uuencode - >> $UPDATE_FILENAME
  135. +fi
  136. +
  137. +chmod a+x $UPDATE_FILENAME
  138. diff --git a/MakeIMAGE.sh b/MakeIMAGE.sh
  139. new file mode 100755
  140. index 0000000..9612418
  141. --- /dev/null
  142. +++ b/MakeIMAGE.sh
  143. @@ -0,0 +1,106 @@
  144. +#!/bin/sh
  145. +
  146. +SAVE_LC=$LC_ALL
  147. +export LC_ALL=C
  148. +
  149. +BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
  150. +IMAGEFILE=../Display001_Build_$BUILD-img
  151. +
  152. +ROOTFSMNT=/tmp/XXXRootFs
  153. +
  154. +echo "Image: $IMAGEFILE"
  155. +#-- build imagefile
  156. +dd if=/dev/zero ibs=1M count=1 > $IMAGEFILE
  157. +dd if=/dev/zero ibs=1M count=2048 | tr "\000" "\377" >> $IMAGEFILE
  158. +#-------------------------------------------------------
  159. +#-- create partitions BOOT rootfs !!! don't change !!!!
  160. +fdisk $IMAGEFILE << EOF
  161. +o
  162. +n
  163. +p
  164. +
  165. +
  166. ++300M
  167. +n
  168. +p
  169. +
  170. +
  171. +
  172. +t
  173. +1
  174. +c
  175. +a
  176. +1
  177. +p
  178. +w
  179. +EOF
  180. +echo "============="
  181. +#-- map partitions
  182. +DRIVE1=/dev/mapper/`kpartx -s -l $IMAGEFILE | head -n +1| awk '{print $1}'`
  183. +DRIVE2=/dev/mapper/`kpartx -s -l $IMAGEFILE | tail -n +2 | head -n +1| awk '{print $1}'`
  184. +
  185. +echo ">>>>>>>>>>>>>>>>>>"
  186. +echo $DRIVE1
  187. +echo $DRIVE2
  188. +echo ">>>>>>>>>>>>>>>>>>"
  189. +
  190. +kpartx -asv $IMAGEFILE
  191. +#-- mount partitions
  192. +umount /tmp/boot
  193. +umount /tmp/rootfs
  194. +
  195. +rm -rf /tmp/boot
  196. +rm -rf /tmp/rootfs
  197. +
  198. +mkdir /tmp/boot
  199. +mkdir /tmp/rootfs
  200. +
  201. +dd if=/dev/zero of=${DRIVE1} bs=1M count=1
  202. +mkfs.vfat -F 32 -n "boot" ${DRIVE1}
  203. +mount ${DRIVE1} /tmp/boot
  204. +
  205. +du -h ${DRIVE1}
  206. +
  207. +cp ./output/images/*.dtb /tmp/boot
  208. +cp ./output/images/uImage /tmp/boot
  209. +cp ./output/images/MLO /tmp/boot
  210. +cp ./output/images/u-boot.img /tmp/boot
  211. +
  212. +ls -alh /tmp/boot
  213. +
  214. +dd if=/dev/zero of=${DRIVE2} bs=1M count=1
  215. +mkfs.ext3 -L "rootfs" ${DRIVE2}
  216. +mount ${DRIVE2} /tmp/rootfs
  217. +
  218. +du -h ${DRIVE2}
  219. +sleep 5
  220. +
  221. +umount ${ROOTFSMNT}
  222. +rm -rf ${ROOTFSMNT}
  223. +mkdir -p ${ROOTFSMNT}
  224. +echo "Mount ====>> " ${ROOTFSMNT}
  225. +mount -o loop ./output/images/rootfs.ext2 ${ROOTFSMNT}
  226. +
  227. +WRKDIR=`pwd`
  228. +cd ${ROOTFSMNT}
  229. +tar cf - . | (cd /tmp/rootfs && tar xBf -)
  230. +
  231. +cd ${WRKDIR}
  232. +umount ${ROOTFSMNT}
  233. +#tar -C /tmp/rootfs --checkpoint --checkpoint-action=dot -xzf ./output/images/rootfs.tar.gz
  234. +
  235. +echo ""
  236. +
  237. +sync
  238. +sync
  239. +umount ${DRIVE1}
  240. +umount ${DRIVE2}
  241. +
  242. +#-- unmap partitions
  243. +kpartx -dsv $IMAGEFILE
  244. +#-- packen des Imagefiles
  245. +rm $IMAGEFILE.zip
  246. +zip -j $IMAGEFILE.zip $IMAGEFILE
  247. +
  248. +export LC_ALL=$SAVE_LC
  249. +
  250. diff --git a/MakeLegalInfo.sh b/MakeLegalInfo.sh
  251. new file mode 100755
  252. index 0000000..429486f
  253. --- /dev/null
  254. +++ b/MakeLegalInfo.sh
  255. @@ -0,0 +1,17 @@
  256. +#!/bin/sh
  257. +
  258. +SAVE_LC=$LC_ALL
  259. +export LC_ALL=C
  260. +
  261. +BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
  262. +IMAGEFILE=../Display001_Build_$BUILD-img
  263. +
  264. +#-- legalinfo erstellen
  265. +TMPWRKDIR=`pwd`
  266. +cd output
  267. +rm ../../Display001-$BUILD-legal-info.zip
  268. +zip -r ../../Display001-$BUILD-legal-info.zip ./legal-info/*
  269. +cd $TMPWRKDIR
  270. +
  271. +export LC_ALL=$SAVE_LC
  272. +
  273. \ No newline at end of file
  274. diff --git a/MakeRootfsUpdate.sh b/MakeRootfsUpdate.sh
  275. new file mode 100755
  276. index 0000000..99b77c9
  277. --- /dev/null
  278. +++ b/MakeRootfsUpdate.sh
  279. @@ -0,0 +1,73 @@
  280. +#!/bin/bash
  281. +WRKDIR=/tmp/XXXUpdateRootfs
  282. +BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
  283. +UPDATE_BINARY=$WRKDIR/dest/UpdateRootfs.tar.Z
  284. +UPDATE_FILENAME="../UpdateDisplay001_$BUILD.sh"
  285. +UPDATE_IN_SCRIPT="UpdateRootfs.sh.in"
  286. +
  287. +ROOTFSMNT=/tmp/XXXRootFs
  288. +
  289. +sudo umount $ROOTFSMNT
  290. +sudo rm -rf $ROOTFSMNT
  291. +sudo mkdir -p $ROOTFSMNT
  292. +
  293. +sudo mount -o loop ./output/images/rootfs.ext2 $ROOTFSMNT
  294. +
  295. +rm -rf $WRKDIR
  296. +mkdir -p $WRKDIR/dest
  297. +
  298. +cp ./output/images/*.dtb $WRKDIR
  299. +cp ./output/images/uImage $WRKDIR
  300. +cp ./output/images/MLO $WRKDIR
  301. +cp ./output/images/u-boot.img $WRKDIR
  302. +
  303. +sudo tar -C $ROOTFSMNT -czvf $WRKDIR/rootfs.tar.gz ./
  304. +sudo umount $ROOTFSMNT
  305. +#cp ./output/images/rootfs.tar.gz $WRKDIR
  306. +
  307. +tar -C $WRKDIR --exclude=./dest -czvf $WRKDIR/dest/UpdateRootfs.tar.Z ./
  308. +
  309. +# Check for payload format option (default is binary).
  310. +binary=1
  311. +uuencode=0
  312. +
  313. +if [[ "$1" == '--binary' ]]; then
  314. + binary=1
  315. + uuencode=0
  316. + shift
  317. +fi
  318. +if [[ "$1" == '--uuencode' ]]; then
  319. + binary=0
  320. + uuencode=1
  321. + shift
  322. +fi
  323. +
  324. +if [[ ! -f $UPDATE_BINARY ]]; then
  325. + echo " UPDATE_BINARY $UPDATE_BINARY doesn't exist!"
  326. + echo "Usage: $0 [--binary | --uuencode]"
  327. + exit 1
  328. +fi
  329. +
  330. +
  331. +if [[ $binary -ne 0 ]]; then
  332. + # Append binary data.
  333. + sed \
  334. + -e 's/uuencode=./uuencode=0/' \
  335. + -e 's/binary=./binary=1/' \
  336. + $UPDATE_IN_SCRIPT > $UPDATE_FILENAME
  337. + echo "PAYLOAD:" >> $UPDATE_FILENAME
  338. +
  339. + cat $UPDATE_BINARY >> $UPDATE_FILENAME
  340. +fi
  341. +if [[ $uuencode -ne 0 ]]; then
  342. + # Append uuencoded data.
  343. + sed \
  344. + -e 's/uuencode=./uuencode=1/' \
  345. + -e 's/binary=./binary=0/' \
  346. + $UPDATE_IN_SCRIPT > $UPDATE_FILENAME
  347. + echo "PAYLOAD:" >> $UPDATE_FILENAME
  348. +
  349. + cat $UPDATE_BINARY | uuencode - >> $UPDATE_FILENAME
  350. +fi
  351. +
  352. +chmod a+x $UPDATE_FILENAME
  353. diff --git a/MapImage.sh b/MapImage.sh
  354. new file mode 100755
  355. index 0000000..5a72d32
  356. --- /dev/null
  357. +++ b/MapImage.sh
  358. @@ -0,0 +1,41 @@
  359. +#!/bin/sh
  360. +
  361. +SAVE_LC=$LC_ALL
  362. +export LC_ALL=C
  363. +
  364. +BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
  365. +IMAGEFILE=../Display001_Build_$BUILD-img
  366. +echo ">>> $IMAGEFILE <<<"
  367. +#-- map partitions
  368. +DRIVE1=/dev/mapper/`kpartx -s -l $IMAGEFILE | head -n +1| awk '{print $1}'`
  369. +DRIVE2=/dev/mapper/`kpartx -s -l $IMAGEFILE | tail -n +2 | head -n +1| awk '{print $1}'`
  370. +
  371. +echo ">>>>>>>>>>>>>>>>>>"
  372. +echo $DRIVE1
  373. +echo $DRIVE2
  374. +echo ">>>>>>>>>>>>>>>>>>"
  375. +
  376. +kpartx -asv $IMAGEFILE
  377. +#-- mount partitions
  378. +umount /tmp/boot
  379. +umount /tmp/rootfs
  380. +
  381. +rm -rf /tmp/boot
  382. +rm -rf /tmp/rootfs
  383. +
  384. +mkdir /tmp/boot
  385. +mkdir /tmp/rootfs
  386. +
  387. +mount ${DRIVE1} /tmp/boot
  388. +mount ${DRIVE2} /tmp/rootfs
  389. +
  390. +bash
  391. +
  392. +umount ${DRIVE1}
  393. +umount ${DRIVE2}
  394. +
  395. +#-- unmap partitions
  396. +kpartx -dsv $IMAGEFILE
  397. +
  398. +export LC_ALL=$SAVE_LC
  399. +
  400. \ No newline at end of file
  401. diff --git a/UpdateDTS.sh.in b/UpdateDTS.sh.in
  402. new file mode 100644
  403. index 0000000..3a5cb18
  404. --- /dev/null
  405. +++ b/UpdateDTS.sh.in
  406. @@ -0,0 +1,126 @@
  407. +#!/bin/sh
  408. +
  409. +uuencode=0
  410. +binary=1
  411. +
  412. +##TAR_PARAMETERS="-C / --exclude=./opt --exclude=./etc/inittab -xzvf -"
  413. +TMP_PATH="/__GfA_UpdateDTS"
  414. +TAR_PARAMETERS="-C $TMP_PATH -xzvf -"
  415. +
  416. +untar_payload ()
  417. +{
  418. +
  419. + echo "remove $TMP_PATH : "
  420. + rm -rf $TMP_PATH
  421. + echo ">> $? "
  422. + mkdir -p $TMP_PATH
  423. +
  424. + match=$(grep -n -m 1 '^PAYLOAD:$' $0 | cut -d ':' -f 1)
  425. + payload_start=$((match + 1))
  426. + if [[ $binary -ne 0 ]]; then
  427. + tail -n +$payload_start $0 | tar $TAR_PARAMETERS
  428. + fi
  429. + if [[ $uuencode -ne 0 ]]; then
  430. + tail -n +$payload_start $0 | uudecode | tar $TAR_PARAMETERS
  431. + fi
  432. +}
  433. +
  434. +## --- Kommandos zum Installieren
  435. +## -- get bootpartition
  436. +such="root=/dev/mmcblk1"
  437. +grep -q $such /proc/cmdline
  438. +if [ $? == 0 ]
  439. +then
  440. + bootpart="/dev/mmcblk1p1"
  441. +else
  442. + bootpart="/dev/mmcblk0p1"
  443. +fi
  444. +
  445. +umount /mnt
  446. +mount $bootpart /mnt
  447. +
  448. +#--- Kernel MLO und Rootfs-Tarball entpacken
  449. +untar_payload
  450. +# ---
  451. +
  452. +cp $TMP_PATH/*.dtb /mnt
  453. +
  454. +echo "sync mmc be patient ...."
  455. +sync
  456. +sync
  457. +
  458. +# Get Graphics resolution and set dtb to the right resolution
  459. +BASEBOARD=`cat /tmp/BASEBOARD`
  460. +
  461. +DONE=0
  462. +YRES="$(fbset | awk '/geom/ {print $3}')"
  463. +XRES="$(fbset | awk '/geom/ {print $2}')"
  464. +
  465. +echo "XRES $XRES, YRES $YRES"
  466. +
  467. +if [ "$XRES" == "480" -a "$YRES" == "272" ]; then
  468. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  469. + echo "4.3 Inch Display 2"
  470. + sh /root/Display2To_4_3inch.sh
  471. + DONE=1
  472. +else
  473. + echo "4.3 Inch"
  474. + sh /root/DisplayTo_4_3inch.sh
  475. + DONE=1
  476. +fi
  477. +fi
  478. +
  479. +if [ "$XRES" == "800" -a "$YRES" == "480" ]; then
  480. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  481. + echo "7 Inch Display 2"
  482. + sh /root/Display2To_7inch.sh
  483. + DONE=1
  484. +else
  485. +if [ "$BASEBOARD" == "DISPLAY002_RS485" ]; then
  486. + echo "7 Inch Display 2 rs485"
  487. + sh /root/Display2To_7inch_rs485.sh
  488. + DONE=1
  489. +else
  490. + echo "7 Inch"
  491. + sh /root/DisplayTo_7inch.sh
  492. + DONE=1
  493. +fi
  494. +fi
  495. +fi
  496. +
  497. +if [ "$XRES" == "1280" -a "$YRES" == "800" ]; then
  498. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  499. + echo "10 Inch Display 2"
  500. + sh /root/Display2To_10inch.sh
  501. + DONE=1
  502. +else
  503. + echo "10 Inch"
  504. + sh /root/DisplayTo_10inch.sh
  505. + DONE=1
  506. +fi
  507. +fi
  508. +
  509. +if [ "$XRES" == "1920" -a "$YRES" == "1080" ]; then
  510. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  511. + echo "10 Inch Display 2"
  512. + sh /root/Display2To_15inch.sh
  513. + DONE=1
  514. +else
  515. + echo "10 Inch"
  516. + sh /root/DisplayTo_15inch.sh
  517. + DONE=1
  518. +fi
  519. +fi
  520. +
  521. +if [ "$DONE" == "0" ]; then
  522. + echo "Unknown Display Resolution"
  523. +fi
  524. +
  525. +
  526. +
  527. +
  528. +#=================
  529. +echo "Update Done, pls. reboot System"
  530. +umount /mnt
  531. +echo "."
  532. +exit 0
  533. diff --git a/UpdateRootfs.sh.in b/UpdateRootfs.sh.in
  534. new file mode 100644
  535. index 0000000..13aeadf
  536. --- /dev/null
  537. +++ b/UpdateRootfs.sh.in
  538. @@ -0,0 +1,442 @@
  539. +#!/bin/sh
  540. +
  541. +uuencode=0
  542. +binary=1
  543. +
  544. +##TAR_PARAMETERS="-C / --exclude=./opt --exclude=./etc/inittab -xzvf -"
  545. +TMP_PATH="$GFA_PREFIX/__GfA_Update"
  546. +TAR_PARAMETERS="-C $TMP_PATH -xzvf -"
  547. +
  548. +untar_payload ()
  549. +{
  550. +
  551. + echo "remove $TMP_PATH : "
  552. + rm -rf $TMP_PATH
  553. + echo ">> $? "
  554. + mkdir -p $TMP_PATH
  555. +
  556. + match=$(grep -n -m 1 '^PAYLOAD:$' $0 | cut -d ':' -f 1)
  557. + payload_start=$((match + 1))
  558. + if [[ $binary -ne 0 ]]; then
  559. + tail -n +$payload_start $0 | tar $TAR_PARAMETERS
  560. + fi
  561. + if [[ $uuencode -ne 0 ]]; then
  562. + tail -n +$payload_start $0 | uudecode | tar $TAR_PARAMETERS
  563. + fi
  564. +}
  565. +
  566. +if [ -z $1 ]
  567. +then
  568. +## prepare for chrooted environment
  569. +chmod +x /bin/bash
  570. +updatename=`realpath $0`
  571. +echo -e "===\n prepare chroot and update script\n===\n"
  572. +(\
  573. +cat << EOF
  574. +#! /bin/bash
  575. +CHROOT=/__GfA_chroot
  576. +
  577. +#---------------------
  578. +recurse ()
  579. +# Param 1 is the nuumber of spaces that the output will be prepended with
  580. +# Param 2 full path to library
  581. +{
  582. +#Use 'readelf -d' to find dependencies
  583. +dependencies=\$(readelf -d \${2} | grep NEEDED | awk '{ print \$5 }' | tr -d '[]')
  584. +for d in \$dependencies; do
  585. + echo "\${1}\${d} :: \${2}"
  586. + rsync -lpR \${2} \${CHROOT}
  587. + if [ -L \${2} ] ; then
  588. + LIBNAM=\`readlink -f \${2}\`
  589. + rsync -lpR \${LIBNAM} \${CHROOT}
  590. + echo "\${1}-->\${LIBNAM}"
  591. + fi
  592. + nm=\${d##*/}
  593. + #libstdc++ hack for the '+'-s
  594. + nm1=\${nm//"+"/"\+"}
  595. + # /lib /lib64 /usr/lib and /usr/lib are searched
  596. + children=\$(find / -name \${d} 2>/dev/null | grep -E "(^/(lib|lib32|usr/lib|usr/lib32)/\${nm1})")
  597. + rc=\$?
  598. + #at least locate... didn't fail
  599. + if [ \${rc} == "0" ] ; then
  600. + #we have at least one dependency
  601. + if [ \${#children[@]} -gt 0 ]; then
  602. + #check the dependeny's dependencies
  603. + for c in \$children; do
  604. + recurse " \${1}" \${c}
  605. + done
  606. + else
  607. + echo "\${1}no children found"
  608. + fi
  609. + else
  610. + echo "\${1}locate failed for ${d}"
  611. + fi
  612. +done
  613. +}
  614. +# -- recurse needs 2 params could/should be supplied from cmdline
  615. +echo "==== PREPARE CHROOT ENVIRONMENT in \${CHROOT} ===="
  616. +rm -rf \$CHROOT
  617. +mkdir -p \$CHROOT
  618. +#------------------------------------
  619. +tt=/bin/bash
  620. +echo -e "===\n \$tt\n"
  621. +recurse "" \$tt
  622. +
  623. +tt=/bin/sh
  624. +echo -e "===\n \$tt\n"
  625. +recurse "" \$tt
  626. +
  627. +tt=/bin/busybox
  628. +echo -e "===\n \$tt\n"
  629. +recurse "" \$tt
  630. +
  631. +tt=/bin/sed
  632. +echo -e "===\n \$tt\n"
  633. +recurse "" \$tt
  634. +
  635. +tt=/usr/sbin/fbset
  636. +echo -e "===\n \$tt\n"
  637. +recurse "" \$tt
  638. +
  639. +tt=/usr/bin/awk
  640. +echo -e "===\n \$tt\n"
  641. +recurse "" \$tt
  642. +
  643. +tt=/usr/bin/cut
  644. +echo -e "===\n \$tt\n"
  645. +recurse "" \$tt
  646. +
  647. +tt=/usr/bin/tail
  648. +echo -e "===\n \$tt\n"
  649. +recurse "" \$tt
  650. +
  651. +tt=/sbin/reboot
  652. +echo -e "===\n \$tt\n"
  653. +recurse "" \$tt
  654. +
  655. +#----------------------------------------
  656. +cp -a /lib/ld-* \${CHROOT}/lib
  657. +cp -a /bin/* \${CHROOT}/bin
  658. +
  659. +ln -s ./realroot/root \${CHROOT}/root
  660. +
  661. +mkdir -p \${CHROOT}/proc
  662. +mkdir -p \${CHROOT}/dev
  663. +mkdir -p \${CHROOT}/sys
  664. +mkdir -p \${CHROOT}/etc
  665. +mkdir -p \${CHROOT}/realroot
  666. +mkdir -p \${CHROOT}/var
  667. +mkdir -p \${CHROOT}/tmp
  668. +mkdir -p \${CHROOT}/mnt
  669. +
  670. +mkdir -p \${CHROOT}/realroot/media/usb0
  671. +mkdir -p \${CHROOT}/realroot/media/usb1
  672. +
  673. +mount -o bind /proc \${CHROOT}/proc
  674. +mount -o bind /dev \${CHROOT}/dev
  675. +mount -o bind /sys \${CHROOT}/sys
  676. +mount -o bind /etc \${CHROOT}/etc
  677. +mount -o bind /var \${CHROOT}/var
  678. +mount -o bind /tmp \${CHROOT}/tmp
  679. +mount -o bind / \${CHROOT}/realroot
  680. +
  681. +mount -o bind /media/usb0 \${CHROOT}/realroot/media/usb0
  682. +mount -o bind /media/usb1 \${CHROOT}/realroot/media/usb1
  683. +
  684. +echo -e "\n===========\nchroot environment ready in \n \${CHROOT}\n===========\n"
  685. +chroot \${CHROOT} sh -c 'GFA_PREFIX=/realroot sh /realroot${updatename} DoRealUpdate'
  686. +
  687. +EOF
  688. +) > /root/GfA_prep_chroot.sh
  689. +
  690. +chmod a+x /root/GfA_prep_chroot.sh
  691. +#--- execute built script
  692. +echo "==>>> execute chroot update script"
  693. +/root/GfA_prep_chroot.sh
  694. +else
  695. +## --- Kommandos zum Installieren
  696. +## -- get bootpartition
  697. +such="root=/dev/mmcblk1"
  698. +grep -q $such /proc/cmdline
  699. +if [ $? == 0 ]
  700. +then
  701. + bootpart="/dev/mmcblk1p1"
  702. +else
  703. + bootpart="/dev/mmcblk0p1"
  704. +fi
  705. +
  706. +umount /mnt
  707. +mount $bootpart /mnt
  708. +
  709. +## -- alte Firmwarebinaries löschen
  710. +#rm /root/btm*.bin
  711. +
  712. +#--- Kernel MLO und Rootfs-Tarball entpacken
  713. +untar_payload
  714. +# ---
  715. +
  716. +rm /mnt/rootfs.tar.gz
  717. +cp $TMP_PATH/MLO /mnt
  718. +cp $TMP_PATH/u-boot.img /mnt
  719. +cp $TMP_PATH/uImage /mnt
  720. +cp $TMP_PATH/*.dtb /mnt
  721. +
  722. +mkdir -p $TMP_PATH/bu_cfg
  723. +
  724. +if [ -e $GFA_PREFIX/etc/network/interfaces ]
  725. +then
  726. + cp $GFA_PREFIX/etc/network/interfaces $TMP_PATH/bu_cfg
  727. + rm $GFA_PREFIX/etc/network/interfaces
  728. +fi
  729. +
  730. +if [ -e $GFA_PREFIX/etc/wpa_supplicant.conf ]
  731. +then
  732. + cp $GFA_PREFIX/etc/wpa_supplicant.conf $TMP_PATH/bu_cfg/wpa_supplicant.conf_old
  733. + rm $GFA_PREFIX/etc/wpa_supplicant.conf
  734. +fi
  735. +
  736. +if [ -e $GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf ]
  737. +then
  738. + cp $GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf $TMP_PATH/bu_cfg
  739. + rm $GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf
  740. +fi
  741. +
  742. +#rootfs auspacken
  743. +tar -C $GFA_PREFIX/ --exclude=./tmp --exclude=./etc/inittab \
  744. + --exclude=./etc/hosts --exclude=./etc/hostname \
  745. + --exclude=./etc/passwd --exclude=./etc/shadow \
  746. + --exclude=./etc/vncpwd --exclude=./etc/init.d/S99tincd \
  747. + --exclude=./etc/hostapd.conf \
  748. + --exclude=./root/.ssh \
  749. + --exclude=./etc/init.d/M99tincd \
  750. + --exclude=./var/GfA/Display_GSM.ini \
  751. + --exclude=./var/cron/crontabs/root \
  752. + -xzvf $TMP_PATH/rootfs.tar.gz
  753. +
  754. +echo "sync mmc be patient ...."
  755. +sync
  756. +sync
  757. +# --- copy old eth0 configuration
  758. +INTERFACE="eth0"
  759. +IFCONFIG=$TMP_PATH/bu_cfg/interfaces
  760. +
  761. +(\
  762. +cat << EOF
  763. +# Configure Loopback
  764. +auto lo
  765. +iface lo inet loopback
  766. +
  767. +EOF
  768. +) > $GFA_PREFIX/etc/network/interfaces
  769. +
  770. +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 \
  771. +>> $GFA_PREFIX/etc/network/interfaces
  772. +
  773. +(\
  774. +cat << EOF
  775. +iface eth1 inet dhcp
  776. +#---
  777. +iface usb0 inet static
  778. + address 192.168.7.2
  779. + netmask 255.255.255.252
  780. +#---
  781. +iface wlan0 inet dhcp
  782. + wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
  783. +#
  784. +EOF
  785. +) >> $GFA_PREFIX/etc/network/interfaces
  786. +
  787. +if [ -e $GFA_PREFIX/etc/init.d/S98usb_g_ether ]
  788. +then
  789. + cp $GFA_PREFIX/etc/init.d/S98usb_g_ether $GFA_PREFIX/etc/init.d/M98usb_g_ether
  790. + rm $GFA_PREFIX/etc/init.d/S98usb_g_ether
  791. +fi
  792. +
  793. +if [ -e $GFA_PREFIX/etc/init.d/S80ti-sgx ]
  794. +then
  795. + rm $GFA_PREFIX/etc/init.d/S80ti-sgx
  796. +fi
  797. +
  798. +if [ -e $GFA_PREFIX/etc/init.d/M99_wlan_usb ]
  799. +then
  800. + rm $GFA_PREFIX/etc/init.d/M99_wlan_usb
  801. +fi
  802. +
  803. +if [ -e $GFA_PREFIX/etc/init.d/S99_wlan_usb ]
  804. +then
  805. + rm $GFA_PREFIX/etc/init.d/S99_wlan_usb
  806. +fi
  807. +
  808. +if [ -e $GFA_PREFIX/etc/init.d/M80dhcp-relay ]
  809. +then
  810. + rm $GFA_PREFIX/etc/init.d/M80dhcp-relay
  811. +fi
  812. +
  813. +if [ -e $GFA_PREFIX/etc/init.d/S80dhcp-relay ]
  814. +then
  815. + rm $GFA_PREFIX/etc/init.d/S80dhcp-relay
  816. +fi
  817. +
  818. +if [ -e $GFA_PREFIX/etc/init.d/M80dhcp-server ]
  819. +then
  820. + rm $GFA_PREFIX/etc/init.d/M80dhcp-server
  821. +fi
  822. +
  823. +if [ -e $GFA_PREFIX/etc/init.d/S80dhcp-server ]
  824. +then
  825. + rm $GFA_PREFIX/etc/init.d/S80dhcp-server
  826. +fi
  827. +
  828. +if [ -d $GFA_PREFIX/etc/dhcp ]
  829. +then
  830. + rm -rf $GFA_PREFIX/etc/dhcp
  831. +fi
  832. +
  833. +if [ -e $GFA_PREFIX/var/GfA/Display_GSM.ini ]
  834. +then
  835. + sed -i 's/TSYNCCMD=rdate time.memod.de/TSYNCCMD=\/etc\/init.d\/S99rtc_GfA set/' $GFA_PREFIX/var/GfA/Display_GSM.ini
  836. +fi
  837. +
  838. +#echo "Update Firmware"
  839. +#echo "."
  840. +#/root/spi_tivia /root/btm43_0107.bin >/dev/null
  841. +#echo ".."
  842. +#echo "Update Firmware Done"
  843. +#/root/gfa_spi -v
  844. +#================================
  845. +#--create mountable run folder insted of link
  846. +RUNDIR=$GFA_PREFIX/run
  847. +if [ -L $RUNDIR ]; then
  848. + mv $RUNDIR $RUNDIR'_WRK'
  849. + mkdir $RUNDIR
  850. + mount -t tmpfs tmpfs $RUNDIR
  851. + WRKDIR=`pwd`
  852. + cd $RUNDIR'_WRK'
  853. + cp -a ./* $RUNDIR
  854. + cd $WRKDIR
  855. + rm $RUNDIR'_WRK'
  856. +fi
  857. +#--- craete missing nogroup group
  858. +GID_NOGROUP=`awk -F\: '/nogroup/ {print $3}' $GFA_PREFIX/etc/group`
  859. +if [ -z "$GID_NOGROUP" ]; then
  860. +# addgroup -S -g 65534 nogroup
  861. + GID_NOGROUP=65534
  862. + echo "nogroup:x:${GID_NOUGROUP}:" >> $GFA_PREFIX/etc/group
  863. +fi
  864. +#--create missing users for mysql,
  865. +if [ -z `awk -F\: '/mysql/ {print $3}' $GFA_PREFIX/etc/passwd` ]; then
  866. + 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`
  867. + echo "mysql:x:$UID_MY:${GID_NOUGROUP}:MySQL daemon:/var/mysql:/bin/false" >> $GFA_PREFIX/etc/passwd
  868. +fi
  869. +#--create missing users for postgresql,
  870. +if [ -z `awk -F\: '/postgres/ {print $3}' $GFA_PREFIX/etc/passwd` ]; then
  871. + 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`
  872. + GID_PG=`awk -F\: '/postgres/ {print $3}' $GFA_PREFIX/etc/group`
  873. + if [ -z "$GID_PG" ]; then
  874. + 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`
  875. + echo "postgres:x:$GID_PG:" >> $GFA_PREFIX/etc/group
  876. + fi
  877. + echo "postgres:x:$UID_PG:$GID_PG:PostgreSQL Server:/var/lib/pgsql:/bin/sh" >> $GFA_PREFIX/etc/passwd
  878. +fi
  879. +#------------------
  880. +UID_MY=`awk -F\: '/mysql/ {print $3}' $GFA_PREFIX/etc/passwd`
  881. +UID_PG=`awk -F\: '/postgres/ {print $3}' $GFA_PREFIX/etc/passwd`
  882. +GID_PG=`awk -F\: '/postgres/ {print $3}' $GFA_PREFIX/etc/group`
  883. +GID_NOGROUP=`awk -F\: '/nogroup/ {print $3}' $GFA_PREFIX/etc/group`
  884. +
  885. +chown -Rv ${UID_MY}:${GID_NOGROUP} $GFA_PREFIX/var/mysql
  886. +chown -Rv ${UID_PG}:${GID_PG} $GFA_PREFIX/var/lib/pgsql
  887. +
  888. +chmod 700 $GFA_PREFIX/root/.ssh
  889. +#==============================================================================
  890. +# Get Graphics resolution and set dtb to the right resolution
  891. +BASEBOARD=`cat /tmp/BASEBOARD`
  892. +
  893. +DONE=0
  894. +YRES="$(fbset | awk '/geom/ {print $3}')"
  895. +XRES="$(fbset | awk '/geom/ {print $2}')"
  896. +
  897. +echo "XRES $XRES, YRES $YRES"
  898. +
  899. +if [ "$XRES" == "480" -a "$YRES" == "272" ]; then
  900. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  901. + echo "4.3 Inch Display 2"
  902. + sh /root/Display2To_4_3inch.sh
  903. + DONE=1
  904. +else
  905. + echo "4.3 Inch"
  906. + sh /root/DisplayTo_4_3inch.sh
  907. + DONE=1
  908. +fi
  909. +fi
  910. +
  911. +if [ "$XRES" == "800" -a "$YRES" == "480" ]; then
  912. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  913. + echo "7 Inch Display 2"
  914. + sh /root/Display2To_7inch.sh
  915. + DONE=1
  916. +else
  917. +if [ "$BASEBOARD" == "DISPLAY002_RS485" ]; then
  918. + echo "7 Inch Display 2 rs485"
  919. + sh /root/Display2To_7inch_rs485.sh
  920. + DONE=1
  921. +else
  922. + echo "7 Inch"
  923. + sh /root/DisplayTo_7inch.sh
  924. + DONE=1
  925. +fi
  926. +fi
  927. +fi
  928. +
  929. +if [ "$XRES" == "640" -a "$YRES" == "480" ]; then
  930. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  931. + echo "5.7 Inch Display 2"
  932. + sh /root/Display2To_5_7inch.sh
  933. + DONE=1
  934. +else
  935. + echo "5.7 Inch"
  936. + sh /root/DisplayTo_5_7inch.sh
  937. + DONE=1
  938. +fi
  939. +fi
  940. +
  941. +if [ "$XRES" == "1280" -a "$YRES" == "800" ]; then
  942. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  943. + echo "10 Inch Display 2"
  944. + sh /root/Display2To_10inch.sh
  945. + DONE=1
  946. +else
  947. + echo "10 Inch"
  948. + sh /root/DisplayTo_10inch.sh
  949. + DONE=1
  950. +fi
  951. +fi
  952. +
  953. +if [ "$XRES" == "1920" -a "$YRES" == "1080" ]; then
  954. +if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
  955. + echo "15 Inch Display 2"
  956. + sh /root/Display2To_15inch.sh
  957. + DONE=1
  958. +else
  959. + echo "15 Inch"
  960. + sh /root/DisplayTo_15inch.sh
  961. + DONE=1
  962. +fi
  963. +fi
  964. +
  965. +if [ "$DONE" == "0" ]; then
  966. + echo "Unknown Display Resolution"
  967. +fi
  968. +
  969. +#=================
  970. +echo "Update Done, pls. reboot System"
  971. +umount /mnt
  972. +echo "."
  973. +echo "restart system !!!"
  974. +sleep 2
  975. +#-----------------
  976. +reboot
  977. +exit 0
  978. +fi
  979. +#-------------
  980. +exit 0
  981. --
  982. 2.7.4