From cdf3b0dbf17b20e91b3f30220b4f01e859d520be Mon Sep 17 00:00:00 2001 From: Braiden Vasco Date: Mon, 3 Jul 2017 06:42:46 +0000 Subject: [PATCH] Move script to single file --- build.sh | 324 +++++++++++++++++++++++++++++++++++++++++++++++++++++- run.sh | 325 ------------------------------------------------------- 2 files changed, 323 insertions(+), 326 deletions(-) delete mode 100755 run.sh diff --git a/build.sh b/build.sh index 78eca44..51d76b5 100755 --- a/build.sh +++ b/build.sh @@ -39,4 +39,326 @@ mkdir -p "$MOUNT_DIR" cd "$BASE_DIR" -./run.sh +if [ ! -d "$ROOTFS_DIR" ]; then + ARCH="$(dpkg --print-architecture)" + + if [ "$ARCH" != 'armhf' ]; then + BOOTSTRAP_CMD='qemu-debootstrap' + else + BOOTSTRAP_CMD='debootstrap' + fi + + capsh --drop=cap_setfcap -- -c "$BOOTSTRAP_CMD \ + --components=main,contrib,non-free \ + --arch armhf \ + --keyring ./files/raspberrypi.gpg \ + jessie \ + $ROOTFS_DIR \ + http://mirrordirector.raspbian.org/raspbian/" || rmdir "$ROOTFS_DIR/debootstrap" +fi + +install -m 644 files/sources.list "$ROOTFS_DIR/etc/apt/" +install -m 644 files/raspi.list "$ROOTFS_DIR/etc/apt/sources.list.d/" + +on_chroot apt-key add - < files/raspberrypi.gpg.key + +on_chroot << EOF +apt-get update +apt-get dist-upgrade -y +EOF + +on_chroot << EOF +debconf-set-selections < "$ROOTFS_DIR/etc/hostname" +chmod 644 "$ROOTFS_DIR/etc/hostname" + +echo "127.0.1.1 $HOSTNAME" >>/etc/hosts + +on_chroot << EOF +if ! id -u $USERNAME >/dev/null 2>&1; then + adduser --disabled-password --gecos "" $USERNAME +fi +echo "$USERNAME:$PASSWORD" | chpasswd +passwd -d root +EOF + +on_chroot << EOF +dpkg-divert --add --local /lib/udev/rules.d/75-persistent-net-generator.rules +EOF + +touch "$ROOTFS_DIR/spindle_install" + +on_chroot << EOF +apt-get install -y raspi-copies-and-fills +EOF + +rm -f "$ROOTFS_DIR/spindle_install" + +on_chroot << EOF +debconf-set-selections < /dev/null +mkfs.ext4 -O ^huge_file $ROOT_DEV > /dev/null + +mkdir -p "$MOUNT_DIR" +mount -v $ROOT_DEV "$MOUNT_DIR" -t ext4 + +mkdir -p "$MOUNT_DIR/boot" +mount -v $BOOT_DEV "$MOUNT_DIR/boot" -t vfat + +rsync -aHAXx --exclude var/cache/apt/archives "$ROOTFS_DIR/" "$MOUNT_DIR/" + +if [ -e "$MOUNT_DIR/etc/ld.so.preload" ]; then + mv "$MOUNT_DIR/etc/ld.so.preload" "$MOUNT_DIR/etc/ld.so.preload.disabled" +fi + +if [ ! -x "$MOUNT_DIR/usr/bin/qemu-arm-static" ]; then + cp /usr/bin/qemu-arm-static "$MOUNT_DIR/usr/bin/" +fi + +install -m 644 files/resolv.conf "$MOUNT_DIR/etc/" + +IMGID="$(fdisk -l "$IMG_FILE" | sed -n 's/Disk identifier: 0x\([^ ]*\)/\1/p')" + +BOOT_PARTUUID="$IMGID-01" +ROOT_PARTUUID="$IMGID-02" + +sed -i "s/BOOTDEV/PARTUUID=$BOOT_PARTUUID/" "$MOUNT_DIR/etc/fstab" +sed -i "s/ROOTDEV/PARTUUID=$ROOT_PARTUUID/" "$MOUNT_DIR/etc/fstab" +sed -i "s/ROOTDEV/PARTUUID=$ROOT_PARTUUID/" "$MOUNT_DIR/boot/cmdline.txt" + +if [ -d "$MOUNT_DIR/home/$USERNAME/.config" ]; then + chmod 700 "$MOUNT_DIR/home/$USERNAME/.config" +fi + +rm -f "$MOUNT_DIR/etc/apt/apt.conf.d/51cache" +rm -f "$MOUNT_DIR/usr/sbin/policy-rc.d" +rm -f "$MOUNT_DIR/usr/bin/qemu-arm-static" + +if [ -e "$MOUNT_DIR/etc/ld.so.preload.disabled" ]; then + mv "$MOUNT_DIR/etc/ld.so.preload.disabled" "$MOUNT_DIR/etc/ld.so.preload" +fi + +rm -f "$MOUNT_DIR/etc/apt/sources.list~" +rm -f "$MOUNT_DIR/etc/apt/trusted.gpg~" + +rm -f "$MOUNT_DIR/etc/passwd-" +rm -f "$MOUNT_DIR/etc/group-" +rm -f "$MOUNT_DIR/etc/shadow-" +rm -f "$MOUNT_DIR/etc/gshadow-" + +rm -f "$MOUNT_DIR/var/cache/debconf/*-old" +rm -f "$MOUNT_DIR/var/lib/dpkg/*-old" + +rm -f "$MOUNT_DIR/usr/share/icons/*/icon-theme.cache" + +rm -f "$MOUNT_DIR/var/lib/dbus/machine-id" + +true > "$MOUNT_DIR/etc/machine-id" + +ln -nsf /proc/mounts "$MOUNT_DIR/etc/mtab" + +for _FILE in $(find "$MOUNT_DIR/var/log/" -type f); do + true > "$_FILE" +done + +rm -f "$MOUNT_DIR/root/.vnc/private.key" + +ROOT_DEV=$(mount | grep "$MOUNT_DIR " | cut -f1 -d' ') + +unmount "$MOUNT_DIR" +zerofree -v "$ROOT_DEV" + +unmount_image "$IMG_FILE" + +rm -f "$ZIP_FILE" + +pushd $(dirname "$IMG_FILE") > /dev/null +zip "$ZIP_FILE" $(basename "$IMG_FILE") +popd > /dev/null diff --git a/run.sh b/run.sh deleted file mode 100755 index a622b29..0000000 --- a/run.sh +++ /dev/null @@ -1,325 +0,0 @@ -#!/bin/bash -e - -if [ ! -d "$ROOTFS_DIR" ]; then - ARCH="$(dpkg --print-architecture)" - - if [ "$ARCH" != 'armhf' ]; then - BOOTSTRAP_CMD='qemu-debootstrap' - else - BOOTSTRAP_CMD='debootstrap' - fi - - capsh --drop=cap_setfcap -- -c "$BOOTSTRAP_CMD \ - --components=main,contrib,non-free \ - --arch armhf \ - --keyring ./files/raspberrypi.gpg \ - jessie \ - $ROOTFS_DIR \ - http://mirrordirector.raspbian.org/raspbian/" || rmdir "$ROOTFS_DIR/debootstrap" -fi - -install -m 644 files/sources.list "$ROOTFS_DIR/etc/apt/" -install -m 644 files/raspi.list "$ROOTFS_DIR/etc/apt/sources.list.d/" - -on_chroot apt-key add - < files/raspberrypi.gpg.key - -on_chroot << EOF -apt-get update -apt-get dist-upgrade -y -EOF - -on_chroot << EOF -debconf-set-selections < "$ROOTFS_DIR/etc/hostname" -chmod 644 "$ROOTFS_DIR/etc/hostname" - -echo "127.0.1.1 $HOSTNAME" >>/etc/hosts - -on_chroot << EOF -if ! id -u $USERNAME >/dev/null 2>&1; then - adduser --disabled-password --gecos "" $USERNAME -fi -echo "$USERNAME:$PASSWORD" | chpasswd -passwd -d root -EOF - -on_chroot << EOF -dpkg-divert --add --local /lib/udev/rules.d/75-persistent-net-generator.rules -EOF - -touch "$ROOTFS_DIR/spindle_install" - -on_chroot << EOF -apt-get install -y raspi-copies-and-fills -EOF - -rm -f "$ROOTFS_DIR/spindle_install" - -on_chroot << EOF -debconf-set-selections < /dev/null -mkfs.ext4 -O ^huge_file $ROOT_DEV > /dev/null - -mkdir -p "$MOUNT_DIR" -mount -v $ROOT_DEV "$MOUNT_DIR" -t ext4 - -mkdir -p "$MOUNT_DIR/boot" -mount -v $BOOT_DEV "$MOUNT_DIR/boot" -t vfat - -rsync -aHAXx --exclude var/cache/apt/archives "$ROOTFS_DIR/" "$MOUNT_DIR/" - -if [ -e "$MOUNT_DIR/etc/ld.so.preload" ]; then - mv "$MOUNT_DIR/etc/ld.so.preload" "$MOUNT_DIR/etc/ld.so.preload.disabled" -fi - -if [ ! -x "$MOUNT_DIR/usr/bin/qemu-arm-static" ]; then - cp /usr/bin/qemu-arm-static "$MOUNT_DIR/usr/bin/" -fi - -install -m 644 files/resolv.conf "$MOUNT_DIR/etc/" - -IMGID="$(fdisk -l "$IMG_FILE" | sed -n 's/Disk identifier: 0x\([^ ]*\)/\1/p')" - -BOOT_PARTUUID="$IMGID-01" -ROOT_PARTUUID="$IMGID-02" - -sed -i "s/BOOTDEV/PARTUUID=$BOOT_PARTUUID/" "$MOUNT_DIR/etc/fstab" -sed -i "s/ROOTDEV/PARTUUID=$ROOT_PARTUUID/" "$MOUNT_DIR/etc/fstab" -sed -i "s/ROOTDEV/PARTUUID=$ROOT_PARTUUID/" "$MOUNT_DIR/boot/cmdline.txt" - -if [ -d "$MOUNT_DIR/home/$USERNAME/.config" ]; then - chmod 700 "$MOUNT_DIR/home/$USERNAME/.config" -fi - -rm -f "$MOUNT_DIR/etc/apt/apt.conf.d/51cache" -rm -f "$MOUNT_DIR/usr/sbin/policy-rc.d" -rm -f "$MOUNT_DIR/usr/bin/qemu-arm-static" - -if [ -e "$MOUNT_DIR/etc/ld.so.preload.disabled" ]; then - mv "$MOUNT_DIR/etc/ld.so.preload.disabled" "$MOUNT_DIR/etc/ld.so.preload" -fi - -rm -f "$MOUNT_DIR/etc/apt/sources.list~" -rm -f "$MOUNT_DIR/etc/apt/trusted.gpg~" - -rm -f "$MOUNT_DIR/etc/passwd-" -rm -f "$MOUNT_DIR/etc/group-" -rm -f "$MOUNT_DIR/etc/shadow-" -rm -f "$MOUNT_DIR/etc/gshadow-" - -rm -f "$MOUNT_DIR/var/cache/debconf/*-old" -rm -f "$MOUNT_DIR/var/lib/dpkg/*-old" - -rm -f "$MOUNT_DIR/usr/share/icons/*/icon-theme.cache" - -rm -f "$MOUNT_DIR/var/lib/dbus/machine-id" - -true > "$MOUNT_DIR/etc/machine-id" - -ln -nsf /proc/mounts "$MOUNT_DIR/etc/mtab" - -for _FILE in $(find "$MOUNT_DIR/var/log/" -type f); do - true > "$_FILE" -done - -rm -f "$MOUNT_DIR/root/.vnc/private.key" - -ROOT_DEV=$(mount | grep "$MOUNT_DIR " | cut -f1 -d' ') - -unmount "$MOUNT_DIR" -zerofree -v "$ROOT_DEV" - -unmount_image "$IMG_FILE" - -rm -f "$ZIP_FILE" - -pushd $(dirname "$IMG_FILE") > /dev/null -zip "$ZIP_FILE" $(basename "$IMG_FILE") -popd > /dev/null