#!/bin/bash set -e set -o pipefail # Bashism #parrot_mirror=http://archive.parrotsec.org/parrot parrot_mirror=http://172.30.0.240/parrot # Detect target architecture and filter args if [ ! $arch ]; then arch=$(dpkg --print-architecture) fi if [ ! $variant ]; then variant="home" fi dist="parrot" lb_opts="" while [ $# -gt 0 ]; do arg="$1" case "$arg" in -a|--arch|--architecture|--architectures) arch="$2" temp="$temp "'"'"$arg"'"' temp="$temp "'"'"$2"'"' shift ;; --distribution) dist="$2" shift ;; --variant) variant="$2" shift ;; -p|--proposed-updates) enable_pu="1" ;; --) ;; *) temp="$temp "'"'"$arg"'"' ;; esac shift done eval set -- "$temp" # live-build doesn't work if --parent-debian-distribution is unknown of # debian-cd => we have to put a symlink so that it deals with kali like sid if [ ! -e ${LIVE_BUILD:-/usr/share/live/build}/data/debian-cd/$dist ]; then if [ -w ${LIVE_BUILD:-/usr/share/live/build}/data/debian-cd ]; then ln -sf sid ${LIVE_BUILD:-/usr/share/live/build}/data/debian-cd/$dist else echo "ERROR: Run this first:" echo "ln -sf sid ${LIVE_BUILD:-/usr/share/live/build}/data/debian-cd/$dist" exit 1 fi fi case "$arch" in amd64) lb_opts="$lb_opts --binary-images iso-hybrid --architecture amd64 --debian-installer live --linux-flavours amd64" ;; i386) lb_opts="$lb_opts --binary-images iso-hybrid --architecture i386 --debian-installer live --linux-flavours 686-pae" ;; 486) lb_opts="$lb_opts --binary-images iso-hybrid --architecture i386 --debian-installer live --linux-flavours 486" ;; armel|armhf|arm64) lb_opts="$lb_opts --binary-images hdd --binary-filesystem ext4 --chroot-filesystem none" ;; *) echo "WARNING: configuration not tested on arch $arch" >&2 ;; esac # Setup configuration files from variant and options # Drop all files that a former run might have put into place for file in $(cd config && find . -type f); do file=${file#./*/} rm -f config/$file || true done cp -rT templates/common config [ ! -d templates/parrot-$variant ] || cp -rTL templates/parrot-$variant config [ ! $arch ] || sed -i "s/ISO_ARCH/$arch/g" config/includes.binary/isolinux/menu.cfg [ ! $arch ] || sed -i "s/ISO_ARCH/$arch/g" config/includes.binary/boot/grub/live-theme/theme.txt [ ! $version ] || sed -i "s/ISO_VERSION/$version/g" config/includes.binary/isolinux/menu.cfg [ ! $version ] || sed -i "s/ISO_VERSION/$version/g" config/includes.binary/boot/grub/live-theme/theme.txt [ ! $variant ] || sed -i "s/ISO_TITLE/Parrot $variant/g" config/includes.binary/isolinux/menu.cfg [ ! $variant ] || sed -i "s/ISO_TITLE/Parrot $variant/g" config/includes.binary/boot/grub/live-theme/theme.txt lb config noauto \ --distribution "$dist" \ --debian-installer-distribution "$dist" \ --archive-areas "main contrib non-free" \ --debootstrap-options "--include=ca-certificates,parrot-archive-keyring,gnupg --keyring=templates/common/archives/parrot.key" \ --keyring-packages parrot-archive-keyring \ --updates false \ --security false \ --backports false \ --firmware-binary false \ --firmware-chroot false \ --compression xz \ --mirror-bootstrap "$parrot_mirror" \ --mirror-chroot "$parrot_mirror" \ --mirror-debian-installer "$parrot_mirror" \ --mirror-binary "$parrot_mirror" \ --iso-application "Parrot" \ --iso-publisher "Parrot Project" \ --iso-volume "ParrotSec" \ --linux-packages linux-image \ --bootappend-live "boot=live hostname=parrot splash noautomount" \ --source false \ $lb_opts \ "$@" #use overlay instead of aufs as union filesystem support for squashfs sed -i "s/LB_UNION_FILESYSTEM=\"aufs\"/LB_UNION_FILESYSTEM=\"overlay\"/g" config/chroot