mirror of
https://github.com/kforney/pentest-distro-builder.git
synced 2024-11-22 01:50:56 -07:00
119 lines
3.4 KiB
Bash
Executable file
119 lines
3.4 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
set -e
|
|
set -o pipefail # Bashism
|
|
|
|
parrot_mirror=https://deb.parrot.sh/parrot
|
|
|
|
# Detect target architecture and filter args
|
|
if [ ! $arch ]; then
|
|
arch=$(dpkg --print-architecture)
|
|
fi
|
|
if [ ! $variant ]; then
|
|
variant="home"
|
|
fi
|
|
dist="rolling"
|
|
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"
|
|
|
|
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 "$public_mirror" \
|
|
--iso-application "Parrot" \
|
|
--iso-publisher "Parrot Project" \
|
|
--iso-volume "Parrot $variant" \
|
|
--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
|