mirror of
https://github.com/bettercap/bettercap.git
synced 2025-03-12 04:36:03 -07:00
74 lines
2.3 KiB
Bash
Executable File
74 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -eu
|
|
|
|
PROGRAM="${1}"
|
|
shift
|
|
COMMAND="${*}"
|
|
|
|
IMAGE="https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2019-07-12/2019-07-10-raspbian-buster-lite.zip"
|
|
GOLANG="https://dl.google.com/go/go1.13.1.linux-armv6l.tar.gz"
|
|
|
|
REPO_DIR="${PWD}"
|
|
TMP_DIR="/tmp/builder"
|
|
MNT_DIR="${TMP_DIR}/mnt"
|
|
|
|
if ! systemctl is-active systemd-binfmt.service >/dev/null 2>&1; then
|
|
mkdir -p "/lib/binfmt.d"
|
|
echo ':qemu-arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\xff\xff\xff:/usr/bin/qemu-arm-static:F' > /lib/binfmt.d/qemu-arm-static.conf
|
|
systemctl restart systemd-binfmt.service
|
|
fi
|
|
|
|
mkdir -p "${TMP_DIR}"
|
|
wget --show-progress -qcO "${TMP_DIR}/raspbian.zip" "${IMAGE}"
|
|
gunzip -c "${TMP_DIR}/raspbian.zip" > "${TMP_DIR}/raspbian.img"
|
|
truncate "${TMP_DIR}/raspbian.img" --size=+2G
|
|
parted --script "${TMP_DIR}/raspbian.img" resizepart 2 100%
|
|
|
|
LOOP_PATH="$(losetup --find --partscan --show "${TMP_DIR}/raspbian.img")"
|
|
e2fsck -y -f "${LOOP_PATH}p2"
|
|
resize2fs "${LOOP_PATH}p2"
|
|
partprobe "${LOOP_PATH}"
|
|
|
|
mkdir -p "${MNT_DIR}"
|
|
mountpoint -q "${MNT_DIR}" && umount -R "${MNT_DIR}"
|
|
mount -o rw "${LOOP_PATH}p2" "${MNT_DIR}"
|
|
mount -o rw "${LOOP_PATH}p1" "${MNT_DIR}/boot"
|
|
|
|
mount --bind /dev "${MNT_DIR}/dev/"
|
|
mount --bind /sys "${MNT_DIR}/sys/"
|
|
mount --bind /proc "${MNT_DIR}/proc/"
|
|
mount --bind /dev/pts "${MNT_DIR}/dev/pts"
|
|
mount | grep "${MNT_DIR}"
|
|
df -h
|
|
|
|
cp /usr/bin/qemu-arm-static "${MNT_DIR}/usr/bin"
|
|
cp /etc/resolv.conf "${MNT_DIR}/etc/resolv.conf"
|
|
|
|
mkdir -p "${MNT_DIR}/root/src/${PROGRAM}"
|
|
mount --bind "${REPO_DIR}" "${MNT_DIR}/root/src/${PROGRAM}"
|
|
|
|
cp "${MNT_DIR}/etc/ld.so.preload" "${MNT_DIR}/etc/_ld.so.preload"
|
|
touch "${MNT_DIR}/etc/ld.so.preload"
|
|
|
|
chroot "${MNT_DIR}" bin/bash -x <<EOF
|
|
set -eu
|
|
|
|
export LANG="C"
|
|
export LC_ALL="C"
|
|
export LC_CTYPE="C"
|
|
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/root/bin"
|
|
|
|
wget --show-progress -qcO /tmp/golang.tar.gz "${GOLANG}"
|
|
tar -C /usr/local -xzf /tmp/golang.tar.gz
|
|
export GOROOT="/usr/local/go"
|
|
export GOPATH="/root"
|
|
|
|
apt-get -y update
|
|
apt-get install wget libpcap-dev libusb-1.0-0-dev libnetfilter-queue-dev build-essential git
|
|
|
|
cd "/root/src/${PROGRAM}"
|
|
${COMMAND}
|
|
EOF
|
|
echo "Build finished"
|