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 |
Joel Fernandes | fdc5200 | 2018-07-08 18:49:20 -0700 | [diff] [blame] | 14 | SKIP_DEVICE=$8 # Skip any device-specific stages |
Joel Fernandes | 6975db2 | 2018-07-11 20:53:16 -0700 | [diff] [blame] | 15 | VARIANT="--variant=minbase" |
Joel Fernandes | 301e455 | 2018-04-05 22:46:19 -0700 | [diff] [blame] | 16 | |
Joel Fernandes | 6975db2 | 2018-07-11 20:53:16 -0700 | [diff] [blame] | 17 | time qemu-debootstrap --arch $ARCH --include=$PACKAGES $VARIANT \ |
Joel Fernandes | 301e455 | 2018-04-05 22:46:19 -0700 | [diff] [blame] | 18 | $DISTRO $OUT_TMP http://deb.debian.org/debian/ |
| 19 | |
| 20 | # Some reason debootstrap leaves these mounted |
| 21 | umount $OUT_TMP/proc/sys/fs/binfmt_misc || true |
| 22 | umount $OUT_TMP/proc || true |
| 23 | |
| 24 | # Make bash the default shell |
| 25 | chroot $OUT_TMP rm /bin/sh || true |
| 26 | chroot $OUT_TMP ln -s /bin/bash /bin/sh || true |
| 27 | cp $spath/addons/bashrc $OUT_TMP/.bashrc |
Joel Fernandes | fa4b8cd | 2018-07-02 20:08:07 -0700 | [diff] [blame] | 28 | cp $spath/addons/bashrc.common $OUT_TMP/.bashrc.common |
| 29 | cp $spath/addons/bashrc.silent $OUT_TMP/.bashrc.silent |
Joel Fernandes | 087ff8b | 2018-07-08 22:45:43 -0700 | [diff] [blame] | 30 | cp $spath/addons/get_kvers.sh $OUT_TMP/ |
Joel Fernandes | 301e455 | 2018-04-05 22:46:19 -0700 | [diff] [blame] | 31 | |
Joel Fernandes (Google) | 4b216fd | 2018-05-29 12:33:27 -0700 | [diff] [blame] | 32 | for f in $EXTRA_FILES; do |
| 33 | if [ $f == "none" ]; then continue; fi |
| 34 | cp $f $OUT_TMP/ |
| 35 | done |
| 36 | |
Joel Fernandes | 301e455 | 2018-04-05 22:46:19 -0700 | [diff] [blame] | 37 | # Cleanup |
| 38 | rm -rf $OUT_TMP/lib/udev/* |
| 39 | rm -rf $OUT_TMP/var/lib/apt/lists/* |
| 40 | rm -rf $OUT_TMP/var/cache/apt/archives/*deb |
| 41 | rm -rf $OUT_TMP/usr/share/locale/* |
| 42 | rm -rf $OUT_TMP/usr/lib/share/locale/* |
| 43 | rm -rf $OUT_TMP/usr/share/doc/* |
| 44 | rm -rf $OUT_TMP/usr/lib/share/doc/* |
| 45 | rm -rf $OUT_TMP/usr/share/ieee-data/* |
| 46 | rm -rf $OUT_TMP/usr/lib/share/ieee-data/* |
| 47 | rm -rf $OUT_TMP/usr/share/man/* |
| 48 | rm -rf $OUT_TMP/usr/lib/share/man/* |
| 49 | |
Joel Fernandes | 73a2130 | 2018-07-08 14:04:31 -0700 | [diff] [blame] | 50 | # Fix apt-get issue: Android requires _apt user to be in the |
| 51 | # AID_INET group which is also android specific. |
Joel Fernandes | 5201ffb | 2018-07-08 15:37:19 -0700 | [diff] [blame] | 52 | 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] | 53 | if [ $? -ne 0 ]; then |
Joel Fernandes | 112243b | 2018-07-08 17:42:48 -0700 | [diff] [blame] | 54 | c_warning "_apt user cannot be added to AID_INET group" |
Joel Fernandes | 73a2130 | 2018-07-08 14:04:31 -0700 | [diff] [blame] | 55 | else |
Joel Fernandes | 5201ffb | 2018-07-08 15:37:19 -0700 | [diff] [blame] | 56 | 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] | 57 | fi |
| 58 | |
Joel Fernandes | 7a193e2 | 2018-07-08 15:18:06 -0700 | [diff] [blame] | 59 | # Add a default DNS server |
| 60 | echo "nameserver 4.2.2.2" > $OUT_TMP/etc/resolv.conf |
| 61 | |
Joel Fernandes | 301e455 | 2018-04-05 22:46:19 -0700 | [diff] [blame] | 62 | # Clone BCC if needed |
Joel Fernandes | ffcbfe4 | 2018-07-08 19:08:02 -0700 | [diff] [blame] | 63 | if [ $INSTALL_BCC -eq 1 ]; then |
| 64 | git clone https://github.com/iovisor/bcc.git $TDIR/debian/bcc-master |
| 65 | cp $spath/bcc/build-bcc.sh $TDIR/debian/bcc-master/; |
| 66 | fi |
Joel Fernandes | 301e455 | 2018-04-05 22:46:19 -0700 | [diff] [blame] | 67 | |
Joel Fernandes (Google) | 9c3ae93 | 2018-05-28 14:34:48 -0700 | [diff] [blame] | 68 | # Should be really do this? |
| 69 | chmod -R 0777 $TDIR/ |
| 70 | |
Joel Fernandes | ffcbfe4 | 2018-07-08 19:08:02 -0700 | [diff] [blame] | 71 | [ $SKIP_DEVICE -eq 0 ] || exit 0 |
Joel Fernandes (Google) | 9c3ae93 | 2018-05-28 14:34:48 -0700 | [diff] [blame] | 72 | |
Joel Fernandes | 112243b | 2018-07-08 17:42:48 -0700 | [diff] [blame] | 73 | 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] | 74 | tar -zcf $TDIR/deb.tar.gz -C $TDIR debian |
| 75 | |
Joel Fernandes | 301e455 | 2018-04-05 22:46:19 -0700 | [diff] [blame] | 76 | chmod 0777 $TDIR/deb.tar.gz |