mirror of
https://github.com/BastilleBSD/bastille.git
synced 2025-12-11 01:19:52 +01:00
70 lines
2.7 KiB
Bash
Executable File
70 lines
2.7 KiB
Bash
Executable File
#!/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
|