#!/bin/sh if [ "$#" -lt 3 ]; then echo "Required: '[activate|update|snapshot]', 'bastille', 'release'" echo "Supported releases: '11.1-RELEASE', '10.4-RELEASE', '10.3-RELEASE'" exit 1 fi echo echo "###########################" echo "## args: $1 ##" echo "## args: $2 ##" echo "## args: $3 ##" echo "###########################" echo RELEASE="$3" PREFIX=/usr/local PLATFORM="${PREFIX}/$2" VALIDRELEASE='' if [ "${RELEASE}" == "11.1-RELEASE" -o "${RELEASE}" == "10.4-RELEASE" -o "${RELEASE}" == "10.3-RELEASE" ]; then VALIDRELEASE="${RELEASE}" fi BASETXZPATH="${PLATFORM}/downloads/${RELEASE}/base.txz" UPSTREAMURL="https://download.freebsd.org/ftp/releases/amd64/${RELEASE}/base.txz" if [ "$1" == "activate" ]; then if [ -d "/usr/local/bastille" ]; then echo "Looks like you're already bootstrapped." exit 1 else /sbin/zfs create -o compression=lz4 -o atime=off -o mountpoint="${PLATFORM}" "zroot${PLATFORM}" /sbin/zfs create -o compression=lz4 -o atime=off -o mountpoint="${PLATFORM}/downloads" "zroot${PLATFORM}/downloads" /sbin/zfs create -o compression=lz4 -o atime=off -o mountpoint="${PLATFORM}/jails" "zroot${PLATFORM}/jails" /sbin/zfs create -o compression=lz4 -o atime=off -o mountpoint="${PLATFORM}/logs" "zroot${PLATFORM}/logs" /sbin/zfs create -o compression=lz4 -o atime=off -o mountpoint="${PLATFORM}/fstab" "zroot${PLATFORM}/fstab" /sbin/zfs create -o compression=lz4 -o atime=off -o mountpoint="${PLATFORM}/releases" "zroot${PLATFORM}/releases" ## create the downloads && releases ZFS volumes if [ ! -z "${VALIDRELEASE}" ]; then if [ ! -d "${PLATFORM}"/downloads/"${RELEASE}" ]; then /sbin/zfs create zroot"${PLATFORM}"/downloads/"${RELEASE}" fi if [ ! -d "${PLATFORM}"/releases/"${RELEASE}" ]; then /sbin/zfs create zroot"${PLATFORM}"/releases/"${RELEASE}" fi ## fetch && untar base.txz if [ ! -f "${BASETXZPATH}" ]; then /usr/bin/fetch "${UPSTREAMURL}" -o "${PLATFORM}/downloads/${RELEASE}" /usr/bin/tar -C "${PLATFORM}/releases/${RELEASE}" -xf "${PLATFORM}/downloads/${RELEASE}/base.txz" fi ## freebsd-update && snapshot env PAGER=/bin/cat /usr/sbin/freebsd-update -b "${PLATFORM}/releases/${RELEASE}" fetch install /sbin/zfs snapshot "zroot${PLATFORM}/releases/${RELEASE}@$(date +%F)" fi fi fi if [ "$1" == "update" ]; then env PAGER=/bin/cat /usr/sbin/freebsd-update -b "${PLATFORM}/releases/${RELEASE}" fetch install fi if [ "$1" == "snapshot" ]; then /sbin/zfs snapshot "zroot${PLATFORM}/releases/${RELEASE}@$(date +%F)" fi