#!/bin/bash # # prepare chroot environment for asterisk from spblinux # set -e -x TARGET_DIR=./fbox_extension function fetch_if_missing() { FILE=$1 SOURCE_URL=$2 if [ ! -e ${FILE} ]; then echo "Missing $FILE. Trying to download one."; if wget "${SOURCE_URL}"; then echo "Success" else echo "Failed to fetch ${BASE_SERVER}/${UNSQUASH}" exit 1 fi fi } BASE_SERVER="http://www.spblinux.de/fbox" if [ -z "$1" ]; then EXT_SERVER=${BASE_SERVER} else EXT_SERVER=$1 fi UNSQUASH=unsquashfs-lzma.x86 if [ ! -x ${UNSQUASH} ]; then echo "No appropriate unsquash (${UNSQUASH}) found." fetch_if_missing ${UNSQUASH} "${BASE_SERVER}/${UNSQUASH}"; chmod a+x ${UNSQUASH} fi IMAGE=asterisk14.sqf fetch_if_missing $IMAGE "${EXT_SERVER}/26/${IMAGE}"; # unpack base image rm -rf $TARGET_DIR ./${UNSQUASH} -dest $TARGET_DIR $IMAGE # recreate chroot directories for bind-mount cd $TARGET_DIR; rm -f var lib tmp; for i in proc dev var lib tmp var_fbox; do mkdir $i; done chmod 1777 tmp; # remove unnecessary stuff rm -rf oldroot rm -rf unionfs # clean up config dirs function clean_configdir() { OLDWD=`pwd` cd $1; for i in `ls *.default`; do mv $i `basename $i .default`; done cd $OLDWD } for d in asterisk zebedee; do clean_configdir "etc/$d"; done cd etc; ln -sf ../var_fbox/TZ TZ ln -sf ../var_fbox/tmp/group group ln -sf ../var_fbox/tmp/hosts hosts ln -sf ../var_fbox/tmp/passwd passwd ln -sf ../var_fbox/tmp/shadow shadow ln -sf ../var_fbox/tmp/resolv.conf resolv.conf cd ..; cat >init.sh <