#!/bin/sh
PATH_TO_NEXENTA_ROOT=/path/to/nexenta/root
ZONE_NAME=nexenta

inst () {
 url=$1
 /usr/sfw/bin/wget -c $url
 f=`basename $url`
 /usr/ccs/bin/ar p $f data.tar.gz |
 /usr/sfw/bin/gtar xvz
}

mkdir /opt/deb
cd /opt/deb
ODB=`pwd`

# "install" all packages needed for debootstrap into /opt/deb
inst http://www.gnusolaris.org/apt/dists/testing/main/binary-solaris-i386/base/dpkg_1.13.11nexenta11_solaris-i386.deb
inst http://www.gnusolaris.org/apt/dists/testing/main/binary-solaris-i386/libs/libiconv_1.11-1_solaris-i386.deb
inst http://www.gnusolaris.org/apt/dists/testing/main/binary-all/admin/debootstrap_0.3.3.0nexenta4_all.deb

inst http://www.gnusolaris.org/apt/dists/testing/main/binary-solaris-i386/base/coreutils_5.93-5nexenta5_solaris-i386.deb
inst http://www.gnusolaris.org/apt/dists/testing/main/binary-solaris-i386/base/grep_2.5.1.ds2-4_solaris-i386.deb
inst http://www.gnusolaris.org/apt/dists/testing/main/binary-solaris-i386/base/nexenta-zones_5.11.49-1_solaris-i386.deb
inst http://www.gnusolaris.org/apt/dists/testing/main/binary-solaris-i386/devel/binutils_2.16.1cvs20060117-1nexenta3_solaris-i386.deb
inst http://www.gnusolaris.org/apt/dists/testing/main/binary-solaris-i386/base/gzip_1.3.5-12nexenta1_solaris-i386.deb
inst http://www.gnusolaris.org/apt/dists/testing/main/binary-solaris-i386/base/sed_4.1.4-5_solaris-i386.deb
inst http://www.gnusolaris.org/apt/dists/testing/main/binary-solaris-i386/base/findutils_4.2.27-1nexenta2_solaris-i386.deb
inst http://www.gnusolaris.org/apt/dists/testing/main/binary-solaris-i386/base/tar_1.15.1-2nexenta3_solaris-i386.deb
inst http://www.gnusolaris.org/apt/dists/testing/main/binary-solaris-i386/base/bash_3.1-2nexenta11_solaris-i386.deb
inst http://www.gnusolaris.org/apt/dists/testing/main/binary-solaris-i386/base/base-files_3.1.9nexenta19_solaris-i386.deb
inst http://www.gnusolaris.org/apt/dists/testing/main/binary-solaris-i386/devel/gettext_0.14.5-2nexenta4_solaris-i386.deb
inst http://www.gnusolaris.org/apt/dists/testing/main/binary-solaris-i386/libs/libgcc1_4.0.3-1nexenta6_solaris-i386.deb

#use these libraries (this breaks most sun binaries, so remember to
#unset this stuff when done, or just exit the shell
_LD_LIBRARY_PATH=$LD_LIBRARY_PATH
_DEBOOTSTRAP_DIR=$DEBOOTSTRAP_DIR
_PATH=$PATH
LD_LIBRARY_PATH=/opt/csw/lib:$ODB/lib:$ODB/usr/lib
DEBOOTSTRAP_DIR=$ODB/usr/lib/debootstrap
export LD_LIBRARY_PATH
export DEBOOTSTRAP_DIR

PATH="$ODB/usr/sbin:$ODB/usr/bin:$ODB/bin:$ODB/sbin:$PATH"

# in usr/sbin/debootstrap, change the first line to be
#!/opt/deb/bin/bash -e
perl -pi.orig -e 's{#!/bin/sh -e}{#!/opt/deb/bin/bash -e -x}' usr/sbin/debootstrap

# in usr/bin/createzone
#change the LIBDIR and regular expression line like so:
#my $LIBDIR = "/opt/deb/usr/lib/nexenta-zones";
perl -pi.orig -e 's#/usr/lib/nexenta-zones#/opt/deb/usr/lib/nexenta-zones#' usr/bin/createzone

#debootstrap wants base-config but it's worth ignoring http://www.debianhelp.org/node/1169
perl -pi -e 's#debootstrap --arch#debootstrap --exclude=base-config --arch#' usr/bin/createzone

#add a : at the end, otherwise it will install the zone into /root
#if ($lst =~ /(.*):(.*):(.*):(.*):/) {
#i have no idea what this is trying to parse
#7:centos:running:/export/home/zones/linux/centos/install:b476eb2f-1832-ec9c-c0e5-e92bde3527cf:lx
#0:global:running:/::native

# in debootstrap suite file usr/lib/nexenta-zones/elatte-unstable.bootstrap
#change ALL /usr/sun/bin to /usr/bin
# XXX it's unclear what this means, the only current reference is /usr/sun/bin/cpio and that doesn't seem to be in /deb/opt

#set up the zone normally, no inherit-pkg-dirs though
zonecfg -z $ZONE_NAME "create; set zonepath=$PATH_TO_NEXENTA_ROOT"
perl -ni -e 'print unless /inherit-pkg-dir/;' /etc/zones/$ZONE_NAME.xml

[ -d $PATH_TO_NEXENTA_ROOT ] || mkdir -p $PATH_TO_NEXENTA_ROOT
chmod 0700 $PATH_TO_NEXENTA_ROOT

usr/bin/createzone -z $ZONE_NAME

#if it worked, great, otherwise check the debootstrap .log file in /path/to/nexenta/....

#edit /etc/zones/index  s/configured/installed/
perl -pi.bak -e "next unless /^$ZONE_NAME:/; s/:configured:/:installed:/" /etc/zones/index

zonecfg -z $ZONE_NAME 'verify; commit;'

zoneadm -z $ZONE_NAME boot
LD_LIBRARY_PATH=$_LD_LIBRARY_PATH
DEBOOTSTRAP_DIR=$_DEBOOTSTRAP_DIR
PATH=$_PATH


