e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#!/bin/ksh -p
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek# CDDL HEADER START
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek# The contents of this file are subject to the terms of the
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek# Common Development and Distribution License (the "License").
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek# You may not use this file except in compliance with the License.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek# or http://www.opensolaris.org/os/licensing.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek# See the License for the specific language governing permissions
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek# and limitations under the License.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek# When distributing Covered Code, include this CDDL HEADER in each
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek# If applicable, add the following below this CDDL HEADER, with the
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek# fields enclosed by brackets "[]" replaced with your own identifying
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek# information: Portions Copyright [yyyy] [name of copyright owner]
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek# CDDL HEADER END
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#
aaf50cd7b192ad1851a354c30d96acc96ae2839f# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek. /usr/lib/brand/solaris10/common.ksh
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekm_attach_log=$(gettext "Log File: %s")
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekm_zfs=$(gettext "A ZFS file system was created for the zone.")
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekm_attaching=$(gettext "Attaching...")
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekm_usage=$(gettext "solaris10 brand usage:\n\tattach [-a archive | -d directory | -r recv_type]\n\tThe -a archive option specifies an archive name which can be a flar,\n\ttar, pax or cpio archive.\n\tThe -d directory option specifies an existing directory.\n\tThe -r recv_type option specifies the type of archive to be read from\n\tstdin.")
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekm_complete=$(gettext "Attach complete.")
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekinstall_fail=$(gettext "*** Attach FAILED ***")
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekf_n_unimpl=$(gettext "The -n option is not yet implemented.")
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekf_zfs=$(gettext "Error creating a ZFS file system (%s) for the zone.")
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekf_nodataset=$(gettext "Error: there is no ZFS file system for the zone.")
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekf_zfsdestroy=$(gettext "Error destroying ZFS file system %s.")
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekf_sanity_notzone=$(gettext "Error: this is a system image and not a zone image.")
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekf_baddir=$(gettext "Invalid '%s' directory within the zone")
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek# Clean up on interrupt
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinektrap_cleanup()
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek{
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek msg=$(gettext "Installation cancelled due to interrupt.")
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek log "$msg"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek # umount any mounted file systems
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek umnt_fs
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek trap_exit
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek}
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek# If the attach failed then clean up the ZFS datasets we created.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinektrap_exit()
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek{
aaf50cd7b192ad1851a354c30d96acc96ae2839f if [[ $EXIT_CODE != $ZONE_SUBPROC_OK && $rm_ds == 1 ]]; then
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek /usr/lib/brand/solaris10/uninstall $ZONENAME $ZONEPATH -F
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek fi
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek exit $EXIT_CODE
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek}
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald JelinekEXIT_CODE=$ZONE_SUBPROC_USAGE
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekinstall_media="-"
aaf50cd7b192ad1851a354c30d96acc96ae2839frm_ds=0
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinektrap trap_cleanup INT
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinektrap trap_exit EXIT
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek# If we weren't passed at least two arguments, exit now.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek(( $# < 2 )) && exit $ZONE_SUBPROC_USAGE
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald JelinekZONENAME="$1"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald JelinekZONEPATH="$2"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek# XXX shared/common script currently uses lower case zonename & zonepath
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekzonename="$ZONENAME"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekzonepath="$ZONEPATH"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekshift; shift # remove ZONENAME and ZONEPATH from arguments array
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald JelinekZONEROOT="$ZONEPATH/root"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelineklogdir="$ZONEROOT/var/log"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelineknoexecute=0
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekunset inst_type
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek# Other brand attach options are invalid for this brand.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekwhile getopts "a:d:nr:" opt; do
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek case $opt in
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek a)
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek if [[ -n "$inst_type" ]]; then
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek fatal "$incompat_options" "$m_usage"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek fi
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek inst_type="archive"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek install_media="$OPTARG"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek ;;
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek d)
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek if [[ -n "$inst_type" ]]; then
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek fatal "$incompat_options" "$m_usage"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek fi
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek inst_type="directory"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek install_media="$OPTARG"
aaf50cd7b192ad1851a354c30d96acc96ae2839f # '-d -' means use the existing zonepath.
aaf50cd7b192ad1851a354c30d96acc96ae2839f if [[ "$install_media" == "$ZONEPATH" ]]; then
aaf50cd7b192ad1851a354c30d96acc96ae2839f install_media="-"
aaf50cd7b192ad1851a354c30d96acc96ae2839f fi
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek ;;
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek n) noexecute=1 ;;
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek r)
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek if [[ -n "$inst_type" ]]; then
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek fatal "$incompat_options" "$m_usage"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek fi
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek inst_type="stdin"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek install_media="$OPTARG"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek ;;
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek ?) printf "$m_usage\n"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek exit $ZONE_SUBPROC_USAGE;;
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek *) printf "$m_usage\n"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek exit $ZONE_SUBPROC_USAGE;;
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek esac
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekdone
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekshift $((OPTIND-1))
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekif [[ $noexecute == 1 && -n "$inst_type" ]]; then
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek fatal "$m_usage"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekfi
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekif [ $noexecute -eq 1 ]; then
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek #
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek # The zone doesn't have to exist when the -n option is used, so do
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek # this work early.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek #
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek # XXX do the sw validation for solaris10 minimal patch level to ensure
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek # everything will be ok.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek EXIT_CODE=$ZONE_SUBPROC_NOTCOMPLETE
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek fatal "$f_n_unimpl"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekfi
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald JelinekEXIT_CODE=$ZONE_SUBPROC_NOTCOMPLETE
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekif [[ -z "$inst_type" ]]; then
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek inst_type="directory"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekelif [[ "$install_media" != "-" ]]; then
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek #
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek # If we're not using a pre-existing zone directory layout then create
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek # the zone datasets and mount them.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek #
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek unset DATASET
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek pdir=$(/usr/bin/dirname $ZONEPATH)
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek zds=$(/usr/sbin/zfs list -H -t filesystem -o name $pdir 2>/dev/null)
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek if (( $? == 0 )); then
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek pnm=$(/usr/bin/basename $ZONEPATH)
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek /usr/sbin/zfs create "$zds/$pnm"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek if (( $? == 0 )); then
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek vlog "$m_zfs"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek DATASET="$zds/$pnm"
aaf50cd7b192ad1851a354c30d96acc96ae2839f rm_ds=1
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek else
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek log "$f_zfs" "$zds/$pnm"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek fi
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek fi
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek create_active_ds
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekfi
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek# The zone's datasets are now in place, validate that things
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek# are setup correctly.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekget_zonepath_ds $zonepath
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek/usr/sbin/zfs list -H -o name $ZONEPATH_DS/ROOT >/dev/null 2>&1
090f667debfb7792a579172d3f173753762ee29a(( $? != 0 )) && fail_fatal "$f_no_active_ds"
090f667debfb7792a579172d3f173753762ee29a
090f667debfb7792a579172d3f173753762ee29azfs set mountpoint=legacy $ZONEPATH_DS/ROOT >/dev/null 2>&1
090f667debfb7792a579172d3f173753762ee29azfs set zoned=on $ZONEPATH_DS/ROOT >/dev/null 2>&1
090f667debfb7792a579172d3f173753762ee29a
090f667debfb7792a579172d3f173753762ee29aget_active_ds $ZONEPATH_DS
090f667debfb7792a579172d3f173753762ee29azfs list -H -o name $ACTIVE_DS >/dev/null 2>&1
090f667debfb7792a579172d3f173753762ee29a(( $? != 0 )) && fail_fatal "$f_zfs_create"
090f667debfb7792a579172d3f173753762ee29a
090f667debfb7792a579172d3f173753762ee29azfs set canmount=noauto $ACTIVE_DS >/dev/null 2>&1
090f667debfb7792a579172d3f173753762ee29azfs inherit mountpoint $ACTIVE_DS >/dev/null 2>&1
090f667debfb7792a579172d3f173753762ee29azfs inherit zoned $ACTIVE_DS >/dev/null 2>&1
090f667debfb7792a579172d3f173753762ee29a
090f667debfb7792a579172d3f173753762ee29aif [ ! -d $ZONEROOT ]; then
090f667debfb7792a579172d3f173753762ee29a mkdir -p $ZONEROOT || fail_fatal "$f_mkdir" "$ZONEROOT"
090f667debfb7792a579172d3f173753762ee29a chmod 700 $ZONEPATH || fail_fatal "$f_chmod" "$ZONEPATH"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekfi
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
090f667debfb7792a579172d3f173753762ee29amnted=`zfs get -H mounted $ACTIVE_DS | cut -f3`
090f667debfb7792a579172d3f173753762ee29aif [[ $mnted = "no" ]]; then
090f667debfb7792a579172d3f173753762ee29a mount -F zfs $ACTIVE_DS $ZONEROOT || fail_fatal "$f_zfs_mount"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekfi
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald JelinekLOGFILE=$(/usr/bin/mktemp -t -p /var/tmp $zonename.attach_log.XXXXXX)
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekif [[ -z "$LOGFILE" ]]; then
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek fatal "$e_tmpfile"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekfi
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekexec 2>>"$LOGFILE"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelineklog "$m_attach_log" "$LOGFILE"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelineklog "$m_attaching"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekinstall_image "$inst_type" "$install_media"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekmk_zone_dirs
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek# Perform a final check that this is really a zone image and not an archive of
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek# a system image which would need p2v. Check for a well-known S10 SMF service
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek# that shouldn't exist in a zone.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekif [[ -e $ZONEROOT/var/svc/manifest/system/sysevent.xml ]]; then
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek log "$f_sanity_notzone"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek exit $ZONE_SUBPROC_NOTCOMPLETE
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekfi
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald JelinekEXIT_CODE=$ZONE_SUBPROC_OK
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelineklog "$m_complete"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekzone_logfile="${logdir}/$zonename.attach$$.log"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelineksafe_dir /var
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelineksafe_dir /var/log
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelineksafe_copy $LOGFILE $zone_logfile
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelineklog "$m_attach_log" "$zone_logfile"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekrm -f $LOGFILE
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekexit $ZONE_SUBPROC_OK