src/brand/image_install
author Edward Pilatowicz <edward.pilatowicz@oracle.com>
Sat, 07 May 2011 00:25:10 -0700
changeset 2339 aa5954c06b9d
parent 2235 1f446820dcb0
child 2391 e326a9d20501
permissions -rwxr-xr-x
16148 need linked image support for zones, phase 1 16568 zoneadm install can create out of sync zones if entire has been removed
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1483
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
     1
#!/bin/ksh -p
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
     2
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
     3
# CDDL HEADER START
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
     4
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
     5
# The contents of this file are subject to the terms of the
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
     6
# Common Development and Distribution License (the "License").
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
     7
# You may not use this file except in compliance with the License.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
     8
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
     9
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    10
# or http://www.opensolaris.org/os/licensing.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    11
# See the License for the specific language governing permissions
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    12
# and limitations under the License.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    13
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    14
# When distributing Covered Code, include this CDDL HEADER in each
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    15
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    16
# If applicable, add the following below this CDDL HEADER, with the
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    17
# fields enclosed by brackets "[]" replaced with your own identifying
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    18
# information: Portions Copyright [yyyy] [name of copyright owner]
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    19
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    20
# CDDL HEADER END
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    21
#
2235
1f446820dcb0 17791 ipkg brand needs to be in sync with revised dataset layout
Mike Gerdts <mike.gerdts@oracle.com>
parents: 1493
diff changeset
    22
1f446820dcb0 17791 ipkg brand needs to be in sync with revised dataset layout
Mike Gerdts <mike.gerdts@oracle.com>
parents: 1493
diff changeset
    23
#
1f446820dcb0 17791 ipkg brand needs to be in sync with revised dataset layout
Mike Gerdts <mike.gerdts@oracle.com>
parents: 1493
diff changeset
    24
# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
1483
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    25
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    26
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    27
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    28
# image_install is used when installing a zone in a 'p2v' scenario.  In
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    29
# this case the zone install hook will branch off to this script which
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    30
# is responsible for setting up the physical system image in the zonepath
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    31
# and performing the various modifications necessary to enable a physical
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    32
# system image to run inside a zone.  This script sets up the image in the
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    33
# zonepath then calls the p2v script to modify the image to run in a zone.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    34
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    35
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    36
. /usr/lib/brand/ipkg/common.ksh
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    37
2339
aa5954c06b9d 16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents: 2235
diff changeset
    38
# Allows developer to override some things like PATH and PYTHONPATH
aa5954c06b9d 16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents: 2235
diff changeset
    39
. /usr/lib/brand/ipkg/developerenv.ksh
aa5954c06b9d 16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents: 2235
diff changeset
    40
1483
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    41
m_usage=$(gettext "\n        install {-a archive|-d path} {-p|-u} [-s|-v]")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    42
install_log=$(gettext   "    Log File: %s")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    43
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    44
p2ving=$(gettext        "Postprocessing: This may take a while...")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    45
p2v_prog=$(gettext      "   Postprocess: ")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    46
p2v_done=$(gettext      "        Result: Postprocessing complete.")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    47
p2v_fail=$(gettext      "        Result: Postprocessing failed.")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    48
m_postnote3=$(gettext "              Make any other adjustments, such as disabling SMF services\n              that are no longer needed.")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    49
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    50
media_missing=\
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    51
$(gettext "%s: you must specify an installation source using '-a' or '-d'.")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    52
cfgchoice_missing=\
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    53
$(gettext "you must specify -u (sys-unconfig) or -p (preserve identity).")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    54
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    55
# Clean up on interrupt
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    56
trap_cleanup()
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    57
{
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    58
	msg=$(gettext "Installation cancelled due to interrupt.")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    59
	log "$msg"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    60
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    61
	trap_exit
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    62
}
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    63
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    64
# If the install failed then clean up the ZFS datasets we created.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    65
trap_exit()
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    66
{
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    67
	# umount any mounted file systems
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    68
	[[ -n "$fstmpfile" ]] && umnt_fs
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    69
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    70
	if (( $zone_is_mounted != 0 )); then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    71
		error "$v_unmount"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    72
		zoneadm -z $ZONENAME unmount
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    73
		zone_is_mounted=0
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    74
	fi
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    75
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    76
	if (( $EXIT_CODE != $ZONE_SUBPROC_OK )); then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    77
		/usr/lib/brand/ipkg/uninstall $ZONENAME $ZONEPATH -F
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    78
	fi
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    79
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    80
	exit $EXIT_CODE
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    81
}
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    82
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    83
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    84
# The main body of the script starts here.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    85
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    86
# This script should never be called directly by a user but rather should
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    87
# only be called by pkgcreatezone to install an OpenSolaris system image into
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    88
# a zone.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    89
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    90
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    91
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    92
# Exit code to return if install is interrupted or exit code is otherwise
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    93
# unspecified.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    94
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    95
EXIT_CODE=$ZONE_SUBPROC_USAGE
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    96
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    97
zone_is_mounted=0
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    98
trap trap_cleanup INT
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    99
trap trap_exit EXIT
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   100
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   101
# If we weren't passed at least two arguments, exit now.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   102
(( $# < 2 )) && exit $ZONE_SUBPROC_USAGE
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   103
2235
1f446820dcb0 17791 ipkg brand needs to be in sync with revised dataset layout
Mike Gerdts <mike.gerdts@oracle.com>
parents: 1493
diff changeset
   104
init_zone zone "$1" "$2"
1f446820dcb0 17791 ipkg brand needs to be in sync with revised dataset layout
Mike Gerdts <mike.gerdts@oracle.com>
parents: 1493
diff changeset
   105
eval $(bind_legacy_zone_globals zone)
1483
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   106
shift; shift	# remove zonename and zonepath from arguments array
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   107
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   108
unset inst_type
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   109
unset msg
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   110
unset silent_mode
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   111
unset verbose_mode
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   112
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   113
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   114
# It is worth noting here that we require the end user to pick one of
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   115
# -u (sys-unconfig) or -p (preserve config).  This is because we can't
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   116
# really know in advance which option makes a better default.  Forcing
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   117
# the user to pick one or the other means that they will consider their
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   118
# choice and hopefully not be surprised or disappointed with the result.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   119
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   120
unset unconfig_zone
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   121
unset preserve_zone
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   122
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   123
while getopts "a:d:psuv" opt
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   124
do
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   125
	case "$opt" in
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   126
		a)
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   127
			if [[ -n "$inst_type" ]]; then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   128
				fatal "$both_kinds" "zoneadm install"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   129
			fi
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   130
		 	inst_type="archive"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   131
			install_media="$OPTARG"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   132
			;;
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   133
		d)
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   134
			if [[ -n "$inst_type" ]]; then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   135
				fatal "$both_kinds" "zoneadm install"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   136
			fi
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   137
		 	inst_type="directory"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   138
			install_media="$OPTARG"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   139
			;;
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   140
		p)	preserve_zone="-p";;
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   141
		s)	silent_mode=1;;
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   142
		u)	unconfig_zone="-u";;
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   143
		v)	verbose_mode="-v";;
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   144
		*)	exit $ZONE_SUBPROC_USAGE;;
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   145
	esac
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   146
done
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   147
shift OPTIND-1
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   148
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   149
# The install can't be both verbose AND silent...
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   150
[[ -n $silent_mode && -n $verbose_mode ]] && \
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   151
    fatal "$f_incompat_options" "-s" "-v"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   152
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   153
[[ -z $install_media ]] && fatal "$media_missing" "zoneadm install"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   154
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   155
# The install can't both preserve and unconfigure
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   156
[[ -n $unconfig_zone && -n $preserve_zone ]] && \
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   157
    fatal "$f_incompat_options" "-u" "-p"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   158
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   159
# Must pick one or the other.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   160
[[ -z $unconfig_zone && -z $preserve_zone ]] && fail_usage "$cfgchoice_missing"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   161
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   162
LOGFILE=$(/usr/bin/mktemp -t -p /var/tmp $ZONENAME.install_log.XXXXXX)
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   163
[[ -z "$LOGFILE" ]] && fatal "$e_tmpfile"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   164
exec 2>>"$LOGFILE"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   165
log "$install_log" "$LOGFILE"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   166
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   167
vlog "Starting pre-installation tasks."
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   168
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   169
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   170
# From here on out, an unspecified exit or interrupt should exit with
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   171
# ZONE_SUBPROC_NOTCOMPLETE, meaning a user will need to do an uninstall before
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   172
# attempting another install, as we've modified the directories we were going
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   173
# to install to in some way.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   174
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   175
EXIT_CODE=$ZONE_SUBPROC_NOTCOMPLETE
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   176
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   177
# ZONEROOT was created by our caller (pkgcreatezone)
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   178
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   179
vlog "Installation started for zone \"$ZONENAME\""
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   180
install_image "$inst_type" "$install_media"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   181
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   182
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   183
# Run p2v.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   184
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   185
# Getting the output to the right places is a little tricky because what
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   186
# we want is for p2v to output in the same way the installer does: verbose
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   187
# messages to the log file always, and verbose messages printed to the
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   188
# user if the user passes -v.  This rules out simple redirection.  And
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   189
# we can't use tee or other tricks because they cause us to lose the
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   190
# return value from the p2v script due to the way shell pipelines work.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   191
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   192
# The simplest way to do this seems to be to hand off the management of
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   193
# the log file to the p2v script.  So we run p2v with -l to tell it where
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   194
# to find the log file and then reopen the log (O_APPEND) when p2v is done.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   195
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   196
log "$p2ving"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   197
vlog "running: p2v $verbose_mode $unconfig_zone $ZONENAME $ZONEPATH"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   198
/usr/lib/brand/ipkg/p2v -l "$LOGFILE" $verbose_mode $unconfig_zone $ZONENAME \
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   199
    $ZONEPATH
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   200
p2v_result=$?
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   201
exec 2>>$LOGFILE
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   202
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   203
if (( $p2v_result != 0 )); then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   204
	log "$p2v_fail"
2235
1f446820dcb0 17791 ipkg brand needs to be in sync with revised dataset layout
Mike Gerdts <mike.gerdts@oracle.com>
parents: 1493
diff changeset
   205
	log "\n$install_fail"
1483
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   206
	log "$install_log" "$LOGFILE"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   207
	exit $ZONE_SUBPROC_FATAL
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   208
fi
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   209
vlog "$p2v_done"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   210
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   211
zone_is_mounted=1
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   212
zoneadm -z $ZONENAME mount -f || fatal "$e_badmount"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   213
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   214
safe_copy $LOGFILE $ZONEPATH/lu/a/var/log/$ZONENAME.install$$.log
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   215
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   216
zoneadm -z $ZONENAME unmount || fatal "$e_badunmount"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   217
zone_is_mounted=0
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   218
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   219
trap - EXIT
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   220
rm -f $LOGFILE
1493
625950c12e71 3979 zone fs only available from Global zone, when zone is booted
<gerald.jelinek@sun.com>
parents: 1483
diff changeset
   221
625950c12e71 3979 zone fs only available from Global zone, when zone is booted
<gerald.jelinek@sun.com>
parents: 1483
diff changeset
   222
# Mount active dataset on the root.
625950c12e71 3979 zone fs only available from Global zone, when zone is booted
<gerald.jelinek@sun.com>
parents: 1483
diff changeset
   223
is_brand_labeled
2235
1f446820dcb0 17791 ipkg brand needs to be in sync with revised dataset layout
Mike Gerdts <mike.gerdts@oracle.com>
parents: 1493
diff changeset
   224
(( $? == 0 )) && mount_active_be -c zone
1493
625950c12e71 3979 zone fs only available from Global zone, when zone is booted
<gerald.jelinek@sun.com>
parents: 1483
diff changeset
   225
2235
1f446820dcb0 17791 ipkg brand needs to be in sync with revised dataset layout
Mike Gerdts <mike.gerdts@oracle.com>
parents: 1493
diff changeset
   226
log "\n$m_complete" ${SECONDS}
1483
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   227
printf "$install_log\n" "$ZONEROOT/var/log/$ZONENAME.install$$.log"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   228
printf "$m_postnote\n"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   229
printf "$m_postnote2\n"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   230
printf "$m_postnote3\n"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   231
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   232
exit $ZONE_SUBPROC_OK