Joel Fernandes | 301e455 | 2018-04-05 22:46:19 -0700 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | |
Joel Fernandes | 9d767b4 | 2018-04-05 22:55:24 -0700 | [diff] [blame] | 3 | spath="$(dirname "$(readlink -f "$0")")" |
Joel Fernandes | 4e19ccd | 2018-07-08 17:23:07 -0700 | [diff] [blame] | 4 | source $spath/utils/support |
Joel Fernandes | 9d767b4 | 2018-04-05 22:55:24 -0700 | [diff] [blame] | 5 | source $spath/utils/banners |
| 6 | |
Joel Fernandes | 301e455 | 2018-04-05 22:46:19 -0700 | [diff] [blame] | 7 | ARCH=$1 |
| 8 | DISTRO=$2 |
| 9 | TDIR=$3 |
| 10 | OUT_TMP=$4 |
| 11 | PACKAGES=$5 |
Joel Fernandes (Google) | 57b3fd2 | 2018-05-29 16:27:03 -0700 | [diff] [blame] | 12 | EXTRA_FILES="$(cat $6)" |
Joel Fernandes (Google) | 4b216fd | 2018-05-29 12:33:27 -0700 | [diff] [blame] | 13 | INSTALL_BCC=$7 |
| 14 | SKIP_COMPRESS=$8 |
Joel Fernandes | 301e455 | 2018-04-05 22:46:19 -0700 | [diff] [blame] | 15 | |
Joel Fernandes (Google) | 4f71108 | 2018-05-29 16:23:15 -0700 | [diff] [blame] | 16 | time qemu-debootstrap --arch $ARCH --include=$PACKAGES \ |
Joel Fernandes | 301e455 | 2018-04-05 22:46:19 -0700 | [diff] [blame] | 17 | $DISTRO $OUT_TMP http://deb.debian.org/debian/ |
| 18 | |
| 19 | # Some reason debootstrap leaves these mounted |
| 20 | umount $OUT_TMP/proc/sys/fs/binfmt_misc || true |
| 21 | umount $OUT_TMP/proc || true |
| 22 | |
| 23 | # Make bash the default shell |
| 24 | chroot $OUT_TMP rm /bin/sh || true |
| 25 | chroot $OUT_TMP ln -s /bin/bash /bin/sh || true |
| 26 | cp $spath/addons/bashrc $OUT_TMP/.bashrc |
Joel Fernandes | fa4b8cd | 2018-07-02 20:08:07 -0700 | [diff] [blame] | 27 | cp $spath/addons/bashrc.common $OUT_TMP/.bashrc.common |
| 28 | cp $spath/addons/bashrc.silent $OUT_TMP/.bashrc.silent |
Joel Fernandes | 301e455 | 2018-04-05 22:46:19 -0700 | [diff] [blame] | 29 | |
Joel Fernandes (Google) | 4b216fd | 2018-05-29 12:33:27 -0700 | [diff] [blame] | 30 | for f in $EXTRA_FILES; do |
| 31 | if [ $f == "none" ]; then continue; fi |
| 32 | cp $f $OUT_TMP/ |
| 33 | done |
| 34 | |
Joel Fernandes | 301e455 | 2018-04-05 22:46:19 -0700 | [diff] [blame] | 35 | # Cleanup |
| 36 | rm -rf $OUT_TMP/lib/udev/* |
| 37 | rm -rf $OUT_TMP/var/lib/apt/lists/* |
| 38 | rm -rf $OUT_TMP/var/cache/apt/archives/*deb |
| 39 | rm -rf $OUT_TMP/usr/share/locale/* |
| 40 | rm -rf $OUT_TMP/usr/lib/share/locale/* |
| 41 | rm -rf $OUT_TMP/usr/share/doc/* |
| 42 | rm -rf $OUT_TMP/usr/lib/share/doc/* |
| 43 | rm -rf $OUT_TMP/usr/share/ieee-data/* |
| 44 | rm -rf $OUT_TMP/usr/lib/share/ieee-data/* |
| 45 | rm -rf $OUT_TMP/usr/share/man/* |
| 46 | rm -rf $OUT_TMP/usr/lib/share/man/* |
| 47 | |
Joel Fernandes | 73a2130 | 2018-07-08 14:04:31 -0700 | [diff] [blame] | 48 | # Fix apt-get issue: Android requires _apt user to be in the |
| 49 | # AID_INET group which is also android specific. |
Joel Fernandes | 5201ffb | 2018-07-08 15:37:19 -0700 | [diff] [blame] | 50 | grep -ri _apt:x:100:65534 $OUT_TMP/etc/passwd > /dev/null 2>&1 |
Joel Fernandes | 73a2130 | 2018-07-08 14:04:31 -0700 | [diff] [blame] | 51 | if [ $? -ne 0 ]; then |
Joel Fernandes | 112243b | 2018-07-08 17:42:48 -0700 | [diff] [blame] | 52 | c_warning "_apt user cannot be added to AID_INET group" |
Joel Fernandes | 73a2130 | 2018-07-08 14:04:31 -0700 | [diff] [blame] | 53 | else |
Joel Fernandes | 5201ffb | 2018-07-08 15:37:19 -0700 | [diff] [blame] | 54 | sed -i -e 's/_apt:x:100:65534/_apt:x:100:3003/' $OUT_TMP/etc/passwd |
Joel Fernandes | 73a2130 | 2018-07-08 14:04:31 -0700 | [diff] [blame] | 55 | fi |
| 56 | |
Joel Fernandes | 7a193e2 | 2018-07-08 15:18:06 -0700 | [diff] [blame] | 57 | # Add a default DNS server |
| 58 | echo "nameserver 4.2.2.2" > $OUT_TMP/etc/resolv.conf |
| 59 | |
Joel Fernandes | 301e455 | 2018-04-05 22:46:19 -0700 | [diff] [blame] | 60 | # Clone BCC if needed |
| 61 | if [[ ! -z ${INSTALL_BCC+x} ]]; then |
| 62 | git clone https://github.com/iovisor/bcc.git $TDIR/debian/bcc-master |
| 63 | cp $spath/bcc/build-bcc.sh $TDIR/debian/bcc-master/; fi |
| 64 | |
Joel Fernandes (Google) | 9c3ae93 | 2018-05-28 14:34:48 -0700 | [diff] [blame] | 65 | # Should be really do this? |
| 66 | chmod -R 0777 $TDIR/ |
| 67 | |
| 68 | if [ $SKIP_COMPRESS -eq 1 ]; then exit 0; fi |
| 69 | |
Joel Fernandes | 112243b | 2018-07-08 17:42:48 -0700 | [diff] [blame] | 70 | c_info "Compressing new filesystem to prepare to push to Android /data/androdeb/" |
Joel Fernandes | 301e455 | 2018-04-05 22:46:19 -0700 | [diff] [blame] | 71 | tar -zcf $TDIR/deb.tar.gz -C $TDIR debian |
| 72 | |
Joel Fernandes | 301e455 | 2018-04-05 22:46:19 -0700 | [diff] [blame] | 73 | chmod 0777 $TDIR/deb.tar.gz |