| #!/bin/bash | 
 | # Licensed to the Apache Software Foundation (ASF) under one | 
 | # or more contributor license agreements.  See the NOTICE file | 
 | # distributed with this work for additional information | 
 | # regarding copyright ownership.  The ASF licenses this file | 
 | # to you under the Apache License, Version 2.0 (the | 
 | # "License"); you may not use this file except in compliance | 
 | # with the License.  You may obtain a copy of the License at | 
 | #  | 
 | #   http://www.apache.org/licenses/LICENSE-2.0 | 
 | #  | 
 | # Unless required by applicable law or agreed to in writing, | 
 | # software distributed under the License is distributed on an | 
 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
 | # KIND, either express or implied.  See the License for the | 
 | # specific language governing permissions and limitations | 
 | # under the License. | 
 |  | 
 |   | 
 | set -e | 
 | set -x | 
 |  | 
 | IMAGENAME=systemvm | 
 | LOCATION=/var/lib/images/systemvm | 
 | PASSWORD=password | 
 | #APT_PROXY=192.168.1.115:3142/ | 
 | APT_PROXY= | 
 | HOSTNAME=systemvm | 
 | SIZE=2000 | 
 | DEBIAN_MIRROR=ftp.us.debian.org/debian | 
 | MINIMIZE=true | 
 | CLOUDSTACK_RELEASE=4.0 | 
 | offset=4096 | 
 | baseimage() { | 
 |   mkdir -p $LOCATION | 
 |   #dd if=/dev/zero of=$IMAGELOC bs=1M  count=$SIZE | 
 |   dd if=/dev/zero of=$IMAGELOC bs=1M seek=$((SIZE - 1)) count=1 | 
 |   loopdev=$(losetup -f) | 
 |   losetup $loopdev $IMAGELOC | 
 |   parted $loopdev -s 'mklabel msdos' | 
 |   parted $loopdev -s 'mkpart primary ext3 4096B -1' | 
 |   sleep 2  | 
 |   losetup -d $loopdev | 
 |   loopdev=$(losetup --show -o $offset -f $IMAGELOC ) | 
 |   mkfs.ext3  -L ROOT $loopdev | 
 |   mkdir -p $MOUNTPOINT | 
 |   tune2fs -c 100 -i 0 $loopdev | 
 |   sleep 2  | 
 |   losetup -d $loopdev | 
 |    | 
 |   mount -o loop,offset=$offset $IMAGELOC  $MOUNTPOINT | 
 |    | 
 |   #debootstrap --variant=minbase --keyring=/usr/share/keyrings/debian-archive-keyring.gpg squeeze $MOUNTPOINT http://${APT_PROXY}${DEBIAN_MIRROR} | 
 |   debootstrap --variant=minbase --arch=i386 squeeze $MOUNTPOINT http://${APT_PROXY}${DEBIAN_MIRROR} | 
 | } | 
 |  | 
 |  | 
 | fixapt() { | 
 |   if [ "$APT_PROXY" != "" ]; then | 
 |   cat >> etc/apt/apt.conf.d/01proxy << EOF | 
 | Acquire::http::Proxy "http://${APT_PROXY}"; | 
 | EOF | 
 |   fi | 
 |  | 
 |   cat > etc/apt/sources.list << EOF | 
 | deb http://ftp.us.debian.org/debian/ squeeze main contrib non-free | 
 | deb-src http://ftp.us.debian.org/debian/ squeeze main contrib non-free | 
 |  | 
 | deb http://security.debian.org/ squeeze/updates main | 
 | deb-src http://security.debian.org/ squeeze/updates main | 
 | EOF | 
 |  | 
 |   cat >> etc/apt/apt.conf << EOF | 
 | APT::Default-Release "stable";  | 
 | EOF | 
 |  | 
 |   cat >> etc/apt/preferences << EOF | 
 | Package: * | 
 | Pin: release o=Debian,a=stable | 
 | Pin-Priority: 900 | 
 | EOF | 
 |  | 
 |   #apt-key exportall | chroot . apt-key add - && | 
 |   chroot . apt-get update && | 
 |   echo "Apt::Install-Recommends 0;" > etc/apt/apt.conf.d/local-recommends | 
 |  | 
 |   cat >> usr/sbin/policy-rc.d  << EOF | 
 | #!/bin/sh | 
 | exit 101 | 
 | EOF | 
 |   chmod a+x usr/sbin/policy-rc.d | 
 |  | 
 |   cat >> etc/default/locale  << EOF | 
 | LANG=en_US.UTF-8 | 
 | LC_ALL=en_US.UTF-8 | 
 | EOF | 
 |  | 
 |   cat >> etc/locale.gen  << EOF | 
 | en_US.UTF-8 UTF-8 | 
 | EOF | 
 |  | 
 |   DEBIAN_FRONTEND=noninteractive | 
 |   DEBIAN_PRIORITY=critical | 
 |   export DEBIAN_FRONTEND DEBIAN_PRIORITY  | 
 |   chroot . dpkg-reconfigure debconf --frontend=noninteractive | 
 |   chroot . apt-get -q -y install locales | 
 | } | 
 |  | 
 | network() { | 
 |  | 
 |   echo "$HOSTNAME" > etc/hostname && | 
 |   cat > etc/hosts << EOF  | 
 | 127.0.0.1       localhost | 
 | # The following lines are desirable for IPv6 capable hosts | 
 | ::1     localhost ip6-localhost ip6-loopback | 
 | fe00::0 ip6-localnet | 
 | ff00::0 ip6-mcastprefix | 
 | ff02::1 ip6-allnodes | 
 | ff02::2 ip6-allrouters | 
 | ff02::3 ip6-allhosts | 
 | EOF | 
 |  | 
 |   cat >> etc/network/interfaces << EOF | 
 | auto lo eth0 | 
 | iface lo inet loopback | 
 |  | 
 | # The primary network interface | 
 | iface eth0 inet static | 
 |  | 
 | EOF | 
 | } | 
 |  | 
 | install_kernel() { | 
 |   DEBIAN_FRONTEND=noninteractive | 
 |   DEBIAN_PRIORITY=critical | 
 |   export DEBIAN_FRONTEND DEBIAN_PRIORITY | 
 |  | 
 |   chroot . apt-get -qq -y --force-yes install grub-legacy && | 
 |   cp -av usr/lib/grub/i386-pc boot/grub | 
 |   #for some reason apt-get install grub does not install grub/stage1 etc | 
 |   #loopd=$(losetup -f --show $1) | 
 |   #grub-install $loopd --root-directory=$MOUNTPOINT | 
 |   #losetup -d $loopd | 
 |   grub  << EOF && | 
 | device (hd0) $1 | 
 | root (hd0,0) | 
 | setup (hd0) | 
 | quit | 
 | EOF | 
 |    # install a kernel image | 
 |    cat > etc/kernel-img.conf << EOF && | 
 | do_symlinks = yes | 
 | link_in_boot = yes | 
 | do_initrd = yes | 
 | EOF | 
 |   touch /mnt/systemvm/boot/grub/default | 
 |   chroot . apt-get install -qq -y --force-yes linux-image-686-bigmem | 
 |   cat >> etc/kernel-img.conf << EOF | 
 | postinst_hook = /usr/sbin/update-grub | 
 | postrm_hook   = /usr/sbin/update-grub | 
 | EOF | 
 | } | 
 |  | 
 |  | 
 | fixgrub() { | 
 |   kern=$(basename $(ls  boot/vmlinuz-*)) | 
 |   ver=${kern#vmlinuz-} | 
 |   cat > boot/grub/menu.lst << EOF | 
 | default 0 | 
 | timeout 2 | 
 | color cyan/blue white/blue | 
 |  | 
 | ### BEGIN AUTOMAGIC KERNELS LIST | 
 | # kopt=root=LABEL=ROOT ro | 
 |  | 
 | ## ## End Default Options ## | 
 | title		Debian GNU/Linux, kernel $ver | 
 | root		(hd0,0) | 
 | kernel		/boot/$kern root=LABEL=ROOT ro console=tty0 xencons=ttyS0,115200 console=hvc0 quiet | 
 | initrd		/boot/initrd.img-$ver | 
 |  | 
 | ### END DEBIAN AUTOMAGIC KERNELS LIST | 
 | EOF | 
 |   (cd boot/grub; ln -s menu.lst grub.conf) | 
 | } | 
 |  | 
 | fixinittab() { | 
 |   cat >> etc/inittab << EOF | 
 |  | 
 | vc:2345:respawn:/sbin/getty 38400 hvc0 | 
 | EOF | 
 | } | 
 |  | 
 | fixfstab() { | 
 |   cat > etc/fstab << EOF | 
 | # <file system> <mount point>   <type>  <options>       <dump>  <pass> | 
 | proc            /proc           proc    defaults        0       0 | 
 | LABEL=ROOT      /               ext3    errors=remount-ro 0       1 | 
 | EOF | 
 | } | 
 |  | 
 | fixacpid() { | 
 |   mkdir -p etc/acpi/events | 
 |   cat >> etc/acpi/events/power << EOF | 
 | event=button/power.* | 
 | action=/usr/local/sbin/power.sh "%e" | 
 | EOF | 
 |   cat >> usr/local/sbin/power.sh << EOF | 
 | #!/bin/bash | 
 | /sbin/poweroff | 
 | EOF | 
 |   chmod a+x usr/local/sbin/power.sh | 
 | } | 
 |  | 
 | fixiptables() { | 
 | cat >> etc/modules << EOF | 
 | nf_conntrack | 
 | nf_conntrack_ipv4 | 
 | EOF | 
 | cat > etc/init.d/iptables-persistent << EOF | 
 | #!/bin/sh | 
 | ### BEGIN INIT INFO | 
 | # Provides:          iptables | 
 | # Required-Start:    mountkernfs $local_fs | 
 | # Required-Stop:     $local_fs | 
 | # Should-Start:      cloud-early-config | 
 | # Default-Start:     S | 
 | # Default-Stop:      | 
 | # Short-Description: Set up iptables rules | 
 | ### END INIT INFO | 
 |  | 
 | PATH="/sbin:/bin:/usr/sbin:/usr/bin" | 
 |  | 
 | # Include config file for iptables-persistent | 
 | . /etc/iptables/iptables.conf | 
 |  | 
 | case "\$1" in | 
 | start) | 
 |     if [ -e /var/run/iptables ]; then | 
 |         echo "iptables is already started!" | 
 |         exit 1 | 
 |     else | 
 |         touch /var/run/iptables | 
 |     fi | 
 |  | 
 |     if [ \$ENABLE_ROUTING -ne 0 ]; then | 
 |         # Enable Routing | 
 |         echo 1 > /proc/sys/net/ipv4/ip_forward | 
 |     fi | 
 |  | 
 |     # Load Modules | 
 |     modprobe -a \$MODULES | 
 |  | 
 |     # Load saved rules | 
 |     if [ -f /etc/iptables/rules ]; then | 
 |         iptables-restore </etc/iptables/rules | 
 |     fi | 
 |     ;; | 
 | stop|force-stop) | 
 |     if [ ! -e /var/run/iptables ]; then | 
 |         echo "iptables is already stopped!" | 
 |         exit 1 | 
 |     else | 
 |         rm /var/run/iptables | 
 |     fi | 
 |  | 
 |     if [ \$SAVE_NEW_RULES -ne 0 ]; then | 
 |         # Backup old rules | 
 |         cp /etc/iptables/rules /etc/iptables/rules.bak | 
 |         # Save new rules | 
 |         iptables-save >/etc/iptables/rules | 
 |     fi | 
 |  | 
 |     # Restore Default Policies | 
 |     iptables -P INPUT ACCEPT | 
 |     iptables -P FORWARD ACCEPT | 
 |     iptables -P OUTPUT ACCEPT | 
 |  | 
 |     # Flush rules on default tables | 
 |     iptables -F | 
 |     iptables -t nat -F | 
 |     iptables -t mangle -F | 
 |  | 
 |     # Unload previously loaded modules | 
 |     modprobe -r \$MODULES | 
 |  | 
 |     # Disable Routing if enabled | 
 |     if [ \$ENABLE_ROUTING -ne 0 ]; then | 
 |         # Disable Routing | 
 |         echo 0 > /proc/sys/net/ipv4/ip_forward | 
 |     fi | 
 |  | 
 |     ;; | 
 | restart|force-reload) | 
 |     \$0 stop | 
 |     \$0 start | 
 |     ;; | 
 | status) | 
 |     echo "Filter Rules:" | 
 |     echo "--------------" | 
 |     iptables -L -v | 
 |     echo "" | 
 |     echo "NAT Rules:" | 
 |     echo "-------------" | 
 |     iptables -t nat -L -v | 
 |     echo "" | 
 |     echo "Mangle Rules:" | 
 |     echo "----------------" | 
 |     iptables -t mangle -L -v | 
 |     ;; | 
 | *) | 
 |     echo "Usage: \$0 {start|stop|force-stop|restart|force-reload|status}" >&2 | 
 |     exit 1 | 
 |     ;; | 
 | esac | 
 |  | 
 | exit 0 | 
 | EOF | 
 |   chmod a+x etc/init.d/iptables-persistent | 
 |  | 
 |  | 
 |   touch etc/iptables/iptables.conf  | 
 |   cat > etc/iptables/iptables.conf << EOF | 
 | # A basic config file for the /etc/init.d/iptable-persistent script | 
 |  | 
 | # Should new manually added rules from command line be saved on reboot? Assign to a value different that 0 if you want this enabled. | 
 | SAVE_NEW_RULES=0 | 
 |  | 
 | # Modules to load: | 
 | MODULES="nf_nat_ftp nf_conntrack_ftp" | 
 |  | 
 | # Enable Routing? | 
 | ENABLE_ROUTING=1 | 
 | EOF | 
 |   chmod a+x etc/iptables/iptables.conf | 
 |  | 
 | } | 
 |  | 
 | vpn_config() { | 
 |   cp -r ${scriptdir}/vpn/* ./ | 
 | } | 
 |  | 
 | packages() { | 
 |   DEBIAN_FRONTEND=noninteractive | 
 |   DEBIAN_PRIORITY=critical | 
 |   DEBCONF_DB_OVERRIDE=’File{/root/config.dat}’ | 
 |   export DEBIAN_FRONTEND DEBIAN_PRIORITY DEBCONF_DB_OVERRIDE | 
 |  | 
 |   #basic stuff | 
 |   chroot .  apt-get --no-install-recommends -q -y --force-yes install rsyslog logrotate cron chkconfig insserv net-tools ifupdown vim-tiny netbase iptables openssh-server grub-legacy e2fsprogs dhcp3-client dnsmasq tcpdump socat wget  python bzip2 sed gawk diff grep gzip less tar telnet ftp rsync traceroute psmisc lsof procps monit inetutils-ping iputils-arping httping dnsutils zip unzip ethtool uuid file iproute acpid iptables-persistent virt-what sudo | 
 |   #fix hostname in openssh-server generated keys | 
 |   sed -i "s/root@\(.*\)$/root@systemvm/g" etc/ssh/ssh_host_*.pub | 
 |  | 
 |   #sysstat | 
 |   chroot . echo 'sysstat sysstat/enable boolean true' | chroot . debconf-set-selections | 
 |   chroot .  apt-get --no-install-recommends -q -y --force-yes install sysstat | 
 |   #apache | 
 |   chroot .  apt-get --no-install-recommends -q -y --force-yes install apache2 ssl-cert  | 
 |   #haproxy | 
 |   chroot . apt-get --no-install-recommends -q -y --force-yes install haproxy  | 
 |   #dnsmasq | 
 |   chroot . apt-get --no-install-recommends -q -y --force-yes install dnsmasq  | 
 |   #nfs client | 
 |   chroot . apt-get --no-install-recommends -q -y --force-yes install nfs-common | 
 |   #vpn stuff | 
 |   chroot .  apt-get --no-install-recommends -q -y --force-yes install xl2tpd openswan bcrelay ppp ipsec-tools tdb-tools | 
 |   #vmware tools | 
 |   chroot . apt-get --no-install-recommends -q -y --force-yes install open-vm-tools | 
 |   #xenstore utils | 
 |   chroot . apt-get --no-install-recommends -q -y --force-yes install xenstore-utils libxenstore3.0 | 
 |   #keepalived and conntrackd | 
 |   chroot . apt-get --no-install-recommends -q -y --force-yes install keepalived conntrackd ipvsadm libnetfilter-conntrack3 libnl1 | 
 |   #ipcalc | 
 |   chroot . apt-get --no-install-recommends -q -y --force-yes install ipcalc | 
 |  | 
 |   echo "***** getting sun jre 6*********" | 
 |   chroot . echo 'sun-java6-bin shared/accepted-sun-dlj-v1-1 boolean true | 
 | 	sun-java6-jre shared/accepted-sun-dlj-v1-1 boolean true | 
 | 	sun-java6-jre sun-java6-jre/stopthread boolean true | 
 | 	sun-java6-jre sun-java6-jre/jcepolicy note | 
 | 	sun-java6-bin shared/present-sun-dlj-v1-1 note | 
 | 	sun-java6-jre shared/present-sun-dlj-v1-1 note ' | chroot . debconf-set-selections | 
 |   chroot .  apt-get --no-install-recommends -q -y install  sun-java6-jre  | 
 | } | 
 |  | 
 |  | 
 | password() { | 
 |   chroot . echo "root:$PASSWORD" | chroot . chpasswd | 
 | } | 
 |  | 
 | apache2() { | 
 |    chroot . a2enmod ssl rewrite auth_basic auth_digest | 
 |    chroot . a2ensite default-ssl | 
 |    cp etc/apache2/sites-available/default etc/apache2/sites-available/default.orig | 
 |    cp etc/apache2/sites-available/default-ssl etc/apache2/sites-available/default-ssl.orig | 
 | } | 
 |  | 
 | services() { | 
 |   mkdir -p ./var/www/html | 
 |   mkdir -p ./opt/cloud/bin | 
 |   mkdir -p ./var/cache/cloud | 
 |   mkdir -p ./usr/share/cloud | 
 |   mkdir -p ./usr/local/cloud | 
 |   mkdir -p ./root/.ssh | 
 |   #Fix haproxy directory issue | 
 |   mkdir -p ./var/lib/haproxy | 
 |    | 
 |   /bin/cp -r ${scriptdir}/config/* ./ | 
 |   chroot . chkconfig xl2tpd off | 
 |   chroot . chkconfig --add cloud-early-config | 
 |   chroot . chkconfig cloud-early-config on | 
 |   chroot . chkconfig --add cloud-passwd-srvr  | 
 |   chroot . chkconfig cloud-passwd-srvr off | 
 |   chroot . chkconfig --add cloud | 
 |   chroot . chkconfig cloud off | 
 |   chroot . chkconfig monit off | 
 | } | 
 |  | 
 | dhcp_fix() { | 
 |   #deal with virtio DHCP issue, copy and install customized kernel module and iptables | 
 |   mkdir -p tmp | 
 |   cp /tmp/systemvm/xt_CHECKSUM.ko lib/modules/2.6.32-5-686-bigmem/kernel/net/netfilter | 
 |   chroot . depmod -a 2.6.32-5-686-bigmem | 
 |   cp /tmp/systemvm/iptables_1.4.8-3local1checksum1_i386.deb tmp/ | 
 |   chroot . dpkg -i tmp/iptables_1.4.8-3local1checksum1_i386.deb | 
 |   rm tmp/iptables_1.4.8-3local1checksum1_i386.deb | 
 | } | 
 |  | 
 | install_xs_tool() { | 
 |   #deal with virtio DHCP issue, copy and install customized kernel module and iptables | 
 |   mkdir -p tmp | 
 |   cp /tmp/systemvm/xe-guest-utilities_5.6.0-595_i386.deb tmp/ | 
 |   chroot . dpkg -i tmp/xe-guest-utilities_5.6.0-595_i386.deb | 
 |   rm tmp/xe-guest-utilities_5.6.0-595_i386.deb | 
 | } | 
 |  | 
 | cleanup() { | 
 |   rm -f usr/sbin/policy-rc.d | 
 |   rm -f root/config.dat | 
 |   rm -f etc/apt/apt.conf.d/01proxy  | 
 |  | 
 |   if [ "$MINIMIZE" == "true" ] | 
 |   then | 
 |     rm -rf var/cache/apt/* | 
 |     rm -rf var/lib/apt/* | 
 |     rm -rf usr/share/locale/[a-d]* | 
 |     rm -rf usr/share/locale/[f-z]* | 
 |     rm -rf usr/share/doc/* | 
 |     size=$(df   $MOUNTPOINT | awk '{print $4}' | grep -v Available) | 
 |     dd if=/dev/zero of=$MOUNTPOINT/zeros.img bs=1M count=$((((size-150000)) / 1000)) | 
 |     rm -f $MOUNTPOINT/zeros.img | 
 |   fi | 
 | } | 
 |  | 
 | signature() { | 
 |   (cd ${scriptdir}/config;  tar cvf ${MOUNTPOINT}/usr/share/cloud/cloud-scripts.tar *) | 
 |   (cd ${scriptdir}/vpn;  tar rvf ${MOUNTPOINT}/usr/share/cloud/cloud-scripts.tar *) | 
 |   gzip -c ${MOUNTPOINT}/usr/share/cloud/cloud-scripts.tar  > ${MOUNTPOINT}/usr/share/cloud/cloud-scripts.tgz | 
 |   md5sum ${MOUNTPOINT}/usr/share/cloud/cloud-scripts.tgz |awk '{print $1}'  > ${MOUNTPOINT}/var/cache/cloud/cloud-scripts-signature | 
 |   echo "Cloudstack Release $CLOUDSTACK_RELEASE $(date)" > ${MOUNTPOINT}/etc/cloudstack-release | 
 | } | 
 |  | 
 | #check grub version | 
 |  | 
 | grub --version | grep "0.9" > /dev/null | 
 | if [ $? -ne 0 ] | 
 | then | 
 |     echo You need grub 0.9x\(grub-legacy\) to use this script! | 
 |     exit 1 | 
 | fi | 
 |  | 
 | mkdir -p $IMAGENAME | 
 | mkdir -p $LOCATION | 
 | MOUNTPOINT=/mnt/$IMAGENAME/ | 
 | IMAGELOC=$LOCATION/$IMAGENAME.img | 
 | scriptdir=$(dirname $PWD/$0) | 
 |  | 
 | rm -rf /tmp/systemvm | 
 | mkdir -p /tmp/systemvm | 
 | cp ./xt_CHECKSUM.ko /tmp/systemvm | 
 | cp ./iptables_1.4.8-3local1checksum1_i386.deb /tmp/systemvm | 
 | cp ./xe-guest-utilities_5.6.0-595_i386.deb /tmp/systemvm | 
 |  | 
 | rm -f $IMAGELOC | 
 | begin=$(date +%s) | 
 | echo "*************INSTALLING BASEIMAGE********************" | 
 | baseimage | 
 |  | 
 | cp $scriptdir/config.dat $MOUNTPOINT/root/ | 
 | cd $MOUNTPOINT | 
 |  | 
 | mount -o bind /proc $MOUNTPOINT/proc | 
 | mount -o bind /dev $MOUNTPOINT/dev | 
 |  | 
 | echo "*************CONFIGURING APT********************" | 
 | fixapt   | 
 | echo "*************DONE CONFIGURING APT********************" | 
 |  | 
 | echo "*************CONFIGURING NETWORK********************" | 
 | network | 
 | echo "*************DONE CONFIGURING NETWORK********************" | 
 |  | 
 | echo "*************INSTALLING KERNEL********************" | 
 | install_kernel $IMAGELOC | 
 | echo "*************DONE INSTALLING KERNEL********************" | 
 |  | 
 | echo "*************CONFIGURING GRUB********************" | 
 | fixgrub $IMAGELOC | 
 | echo "*************DONE CONFIGURING GRUB********************" | 
 |  | 
 |  | 
 | echo "*************CONFIGURING INITTAB********************" | 
 | fixinittab | 
 | echo "*************DONE CONFIGURING INITTAB********************" | 
 |  | 
 | echo "*************CONFIGURING FSTAB********************" | 
 | fixfstab | 
 | echo "*************DONE CONFIGURING FSTAB********************" | 
 |  | 
 | echo "*************CONFIGURING ACPID********************" | 
 | fixacpid | 
 | echo "*************DONE CONFIGURING ACPID********************" | 
 |  | 
 | echo "*************INSTALLING PACKAGES********************" | 
 | packages | 
 | echo "*************DONE INSTALLING PACKAGES********************" | 
 |  | 
 | echo "*************CONFIGURING IPTABLES********************" | 
 | fixiptables | 
 | echo "*************DONE CONFIGURING IPTABLES********************" | 
 |  | 
 | echo "*************CONFIGURING PASSWORD********************" | 
 | password | 
 |  | 
 | echo "*************CONFIGURING SERVICES********************" | 
 | services | 
 |  | 
 | echo "*************CONFIGURING APACHE********************" | 
 | apache2 | 
 |  | 
 | echo "*************CONFIGURING VPN********************" | 
 | vpn_config | 
 |  | 
 | echo "*************FIX DHCP ISSUE********************" | 
 | #dhcp_fix | 
 |  | 
 | echo "*************INSTALL XS TOOLS********************" | 
 | #install_xs_tool | 
 |  | 
 | echo "*************CLEANING UP********************" | 
 | cleanup  | 
 |  | 
 | echo "*************GENERATING SIGNATURE********************" | 
 | signature | 
 |  | 
 | cd $scriptdir | 
 |  | 
 | umount $MOUNTPOINT/proc | 
 | umount $MOUNTPOINT/dev | 
 | umount $MOUNTPOINT | 
 | fin=$(date +%s) | 
 | t=$((fin-begin)) | 
 | echo "Finished building image $IMAGELOC in $t seconds" | 
 |  |