Advertisement
Guest User

Untitled

a guest
Oct 21st, 2017
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.89 KB | None | 0 0
  1. #!/bin/sh
  2. #
  3.  
  4. set -e
  5.  
  6. TARPATH=$1
  7. CUST_TARPATH=$2
  8. SYSIMG=$3
  9.  
  10. prepare_ubports_systemfs()
  11. {
  12. rm -f $WORKDIR/system.img
  13. dd if=/dev/zero of=$WORKDIR/system.img seek=500K bs=4096 count=0
  14. mkfs.ext2 -F $WORKDIR/system.img
  15. mkdir -p $WORKDIR/system
  16. mount -o loop $WORKDIR/system.img $WORKDIR/system/
  17. }
  18.  
  19. cleanup()
  20. {
  21. echo
  22. echo "cleaning up"
  23. mount | grep -q $WORKDIR/system 2>/dev/null && umount $WORKDIR/system
  24. cleanup_device
  25. #rm -rf $WORKDIR
  26. echo
  27. }
  28.  
  29. cleanup_device()
  30. {
  31. [ -e $WORKDIR/device-clean ] && return
  32. umount $WORKDIR/system/ && rm -rf $WORKDIR/system
  33. [ -e $WORKDIR ] && touch $WORKDIR/device-clean 2>/dev/null || true
  34. }
  35.  
  36. trap cleanup 0 1 2 3 9 15
  37.  
  38. SUDOARGS="$@"
  39.  
  40. if [ -z "$TARPATH" ]; then
  41. echo "need valid rootfs tarball path"
  42. usage
  43. fi
  44.  
  45. TARTYPE=$(file --mime-type $TARPATH|sed 's/^.* //')
  46. case ${TARTYPE#application\/} in
  47. gzip|x-gzip)
  48. ;;
  49. *)
  50. echo "Need valid rootfs tarball gzip type"
  51. usage
  52. ;;
  53. esac
  54.  
  55.  
  56. if [ -z "$CUST_$TARPATH" ]; then
  57. echo "need valid custom tarball path"
  58. usage
  59. fi
  60.  
  61. TARTYPE=$(file --mime-type $CUST_TARPATH|sed 's/^.* //')
  62. case ${TARTYPE#application\/} in
  63. gzip|x-gzip)
  64. ;;
  65. *)
  66. echo "Need valid custom tarball gzip type"
  67. usage
  68. ;;
  69. esac
  70.  
  71. if [ -z "$SYSIMG" ]; then
  72. echo "need valid systemfs tarball path"
  73. usage
  74. fi
  75.  
  76. if [ "$(file --mime-type $SYSIMG|sed 's/^.* //')" != "application/x-xz" ]; then
  77. echo "system tarball needs to be valid path and type .tar.xz"
  78. usage
  79. fi
  80.  
  81. [ $(id -u) -ne 0 ] && exec sudo $0 $SUDOARGS
  82.  
  83.  
  84. WORKDIR=$(mktemp -d /tmp/halium-install.XXXXX)
  85. TMPMOUNT="$WORKDIR/tmpmount"
  86.  
  87. prepare_ubports_systemfs
  88.  
  89. OUTDIR=$(pwd)
  90. TARBALL=$(readlink -f $TARPATH)
  91. echo -n "unpacking rootfs tarball to system-image ... "
  92. cd $WORKDIR/system && zcat $TARBALL | tar xf -
  93. cd $OUTDIR
  94. echo "[done]"
  95.  
  96. echo "Testing for SWAP.swap"
  97. [ -e $WORKDIR/system/SWAP.swap ] && rm $WORKDIR/system/SWAP.swap
  98.  
  99. TARBALL=$(readlink -f $CUST_TARPATH)
  100. echo -n "adding custom tarball ... "
  101. cd $WORKDIR/system && zcat $TARBALL | tar xf -
  102. cd $OUTDIR
  103. echo "[done]"
  104.  
  105. TARBALL=$(readlink -f $SYSIMG)
  106. echo -n "unpacking systemfs tarball to system-image ... "
  107. cd $WORKDIR/system && xzcat $TARBALL | tar xf - --exclude=partitions --strip-components=1
  108. cd $OUTDIR
  109. echo "[done]"
  110.  
  111. echo -n "prepare other stuff in system-image ... "
  112. cd $WORKDIR/system
  113. mkdir -p android/firmware
  114. mkdir -p android/persist
  115. mkdir -p userdata
  116. for link in cache data factory firmware persist system; do
  117. ln -s /android/$link $link
  118. done
  119. cd lib && ln -s /system/lib/modules modules && cd ..
  120. ln -s /android/system/vendor vendor
  121. [ -e etc/mtab ] && rm etc/mtab
  122. cd etc && ln -s /proc/mounts mtab && cd ..
  123.  
  124. cd $OUTDIR
  125. echo "[done]"
  126.  
  127. echo "umount .../system"
  128. umount $WORKDIR/system
  129. echo "save prepared systemfs"
  130. mv $WORKDIR/system.img $OUTDIR/prepared-system.img
  131.  
  132. echo -n "cleaning up on device ... "
  133. cleanup_device
  134. echo "[done]"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement