#!/bin/bash set -e set -o pipefail # Bashism # You can put local mirrors here if you want kali_mirror=http://archive.kali.org/kali kalisec_mirror=http://archive.kali.org/kali-security ### DO NOT EDIT THE REST OF THIS FILE ### public_kali_mirror=http://http.kali.org/kali public_kalisec_mirror=http://security.kali.org/kali-security # Detect target architecture and filter args temp="" arch=$(dpkg --print-architecture) dist="kali-current" 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" ;; --) # Skip the separator, it was added so that "lb config" # doesn't barf on our own options, but now we are # filtering them away assuming that the remaining ones # are intended for lb config ! ;; *) temp="$temp "'"'"$arg"'"' ;; esac shift done eval set -- "$temp" # Resolve release name dist=$(curl -s $kali_mirror/dists/$dist/Release | awk '/^Codename:/ {print $2}') # 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 wheezy 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 wheezy ${LIVE_BUILD:-/usr/share/live/build}/data/debian-cd/$dist else echo "ERROR: Run this first:" echo "ln -sf wheezy ${LIVE_BUILD:-/usr/share/live/build}/data/debian-cd/$dist" exit 1 fi fi # Define options that vary across architectures case "$arch" in amd64) lb_opts="$lb_opts --debian-installer live" ;; i386) lb_opts="$lb_opts --debian-installer live --linux-flavours 686-pae" ;; armel|armhf) 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 kali-config && find . -type f); do file=${file#./*/} rm -f config/$file done rm -f config/archives/kali-proposed-updates.list.* # Copy over all files from official kali configuration cp -rT kali-config/common config [ ! -d kali-config/release-$dist ] || cp -rTL kali-config/release-$dist config [ ! -d kali-config/variant-$variant ] || cp -rTL kali-config/variant-$variant config if [ -n "$enable_pu" ]; then mkdir -p config/archives echo "deb $kali_mirror $dist-proposed-updates main contrib non-free" \ > config/archives/kali-proposed-updates.list.chroot echo "deb $public_kali_mirror $dist-proposed-updates main contrib non-free" \ > config/archives/kali-proposed-updates.list.binary fi lb config noauto \ --distribution "$dist" \ --debian-installer-distribution "$dist" \ --archive-areas "main contrib non-free" \ --debootstrap-options "--keyring=/usr/share/keyrings/kali-archive-keyring.gpg" \ --keyring-packages kali-archive-keyring \ --updates false \ --backports false \ --source false \ --firmware-binary true \ --firmware-chroot true \ --mirror-bootstrap "$kali_mirror" \ --mirror-debian-installer "$kali_mirror" \ --mirror-chroot-security "$kalisec_mirror" \ --mirror-binary "$public_kali_mirror" \ --mirror-binary-security "$public_kalisec_mirror" \ --iso-application "Kali Linux" \ --iso-publisher "Kali" \ --iso-volume "Kali Live" \ --linux-packages linux-image \ --bootappend-live "boot=live username=root hostname=kali" \ $lb_opts \ "$@" case "$dist" in kali|moto) # Don' use systemd for now sed -i -e 's/systemd/sysvinit/' config/package-lists/live.list.chroot ;; esac