Build a single image by default

To build multiple images, pass --arch multiple times (or call the script
multiple times).
debian-cd
Raphaël Hertzog 11 years ago
parent 3c70b5d4b0
commit 330e2e79f3

@ -5,36 +5,24 @@ set -e
KALI_DIST=kali KALI_DIST=kali
KALI_VERSION="${VERSION:-daily}" KALI_VERSION="${VERSION:-daily}"
TARGET_DIR=$(dirname $0)/images/kali-$KALI_VERSION TARGET_DIR=$(dirname $0)/images/kali-$KALI_VERSION
SUDO="" SUDO="sudo"
# We need root rights at some point image_name() {
if [ "$(whoami)" != "root" ]; then local arch=$1
if ! which sudo >/dev/null; then
echo "ERROR: $0 is not run as root and sudo is not available"
exit 1
fi
SUDO=sudo
fi
HOST_ARCH="$(dpkg --print-architecture)" case "$arch" in
case "$HOST_ARCH" in i386|amd64)
i386|amd64) IMAGE_TEMPLATE="live-image-ARCH.hybrid.iso"
KALI_ARCHES="amd64 i386" ;;
IMAGE_TEMPLATE="live-image-ARCH.hybrid.iso" armel|armhf)
;; IMAGE_TEMPLATE="live-image-ARCH"
armel|armhf) ;;
KALI_ARCHES="$HOST_ARCH" esac
IMAGE_TEMPLATE="live-image-ARCH" echo $IMAGE_TEMPLATE | sed -e "s/ARCH/$arch/"
IMAGE_EXT="img" }
;;
*)
echo "ERROR: $HOST_ARCH build is not supported"
exit 1
;;
esac
# Parsing command line options # Parsing command line options
temp=$(getopt -o spdr -l single,proposed-updates,kali-dev,kali-rolling -- "$@") temp=$(getopt -o spdra: -l single,proposed-updates,kali-dev,kali-rolling,arch: -- "$@")
eval set -- "$temp" eval set -- "$temp"
while true; do while true; do
case "$1" in case "$1" in
@ -42,16 +30,33 @@ while true; do
-p|--proposed-updates) OPT_pu="1"; shift 1; ;; -p|--proposed-updates) OPT_pu="1"; shift 1; ;;
-d|--kali-dev) OPT_kali_dev="1"; shift 1; ;; -d|--kali-dev) OPT_kali_dev="1"; shift 1; ;;
-r|--kali-rolling) OPT_kali_rolling="1"; shift 1; ;; -r|--kali-rolling) OPT_kali_rolling="1"; shift 1; ;;
-a|--arch) KALI_ARCHES="${KALI_ARCHES:+$KALI_ARCHES } $2"; shift 2; ;;
--) shift; break; ;; --) shift; break; ;;
*) echo "ERROR: Invalid command-line option: $1" >&2; exit 1; ;; *) echo "ERROR: Invalid command-line option: $1" >&2; exit 1; ;;
esac esac
done done
if [ -n "$OPT_single" ]; then if [ -n "$OPT_single" ]; then
echo "Building a single arch ($HOST_ARCH)..." echo "WARNING: The --single option is deprecated, it's the default behaviour now." >&2
KALI_ARCHES="$HOST_ARCH"
fi fi
HOST_ARCH=$(dpkg --print-architecture)
KALI_ARCHES=${KALI_ARCHES:-$HOST_ARCH}
for arch in $KALI_ARCHES; do
if [ "$arch" = "$HOST_ARCH" ]; then
continue
fi
case "$HOST_ARCH/$arch" in
amd64/i386|i386/amd64)
;;
*)
echo "Can't build $arch image on $HOST_ARCH system." >&2
exit 1
;;
esac
done
KALI_CONFIG_OPTS="--" KALI_CONFIG_OPTS="--"
if [ -n "$OPT_kali_rolling" ]; then if [ -n "$OPT_kali_rolling" ]; then
echo "Using kali-rolling as the base distribution" echo "Using kali-rolling as the base distribution"
@ -87,11 +92,21 @@ if dpkg --compare-versions "$ver_live_build" lt 4.0.3-1kali2; then
exit 1 exit 1
fi fi
# We need root rights at some point
if [ "$(whoami)" != "root" ]; then
if ! which $SUDO >/dev/null; then
echo "ERROR: $0 is not run as root and $SUDO is not available"
exit 1
fi
else
SUDO="" # We're already root
fi
cd $(dirname $0) cd $(dirname $0)
mkdir -p $TARGET_DIR mkdir -p $TARGET_DIR
for KALI_ARCH in $KALI_ARCHES; do for KALI_ARCH in $KALI_ARCHES; do
IMAGE_NAME=$(echo $IMAGE_TEMPLATE | sed -e "s/ARCH/$KALI_ARCH/") IMAGE_NAME="$(image_name $KALI_ARCH)"
$SUDO lb clean --purge >prepare.log 2>&1 $SUDO lb clean --purge >prepare.log 2>&1
lb config -a $KALI_ARCH $KALI_CONFIG_OPTS >>prepare.log 2>&1 lb config -a $KALI_ARCH $KALI_CONFIG_OPTS >>prepare.log 2>&1
$SUDO lb build >/dev/null $SUDO lb build >/dev/null
@ -101,8 +116,8 @@ for KALI_ARCH in $KALI_ARCHES; do
tail -n 50 binary.log >&2 tail -n 50 binary.log >&2
exit 1 exit 1
fi fi
[ -d images ] || mkdir images IMAGE_EXT="${IMAGE_NAME##*.}"
IMAGE_EXT="${IMAGE_EXT:-${IMAGE_NAME##*.}}" IMAGE_EXT="${IMAGE_EXT:-img}"
mv $IMAGE_NAME $TARGET_DIR/kali-linux-$KALI_VERSION-$KALI_ARCH.$IMAGE_EXT mv $IMAGE_NAME $TARGET_DIR/kali-linux-$KALI_VERSION-$KALI_ARCH.$IMAGE_EXT
mv binary.log $TARGET_DIR/kali-linux-$KALI_VERSION-$KALI_ARCH.log mv binary.log $TARGET_DIR/kali-linux-$KALI_VERSION-$KALI_ARCH.log
done done

Loading…
Cancel
Save