src/brand/p2v
author Andrzej Szeszo <aszeszo@gmail.com>
Wed, 01 Jun 2011 13:11:09 +0100
changeset 2391 90c532b69592
parent 2339 aa5954c06b9d
parent 2390 f1c659f5c28e
permissions -rwxr-xr-x
Merge
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
#
2339
aa5954c06b9d 16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents: 2338
diff changeset
    22
aa5954c06b9d 16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents: 2338
diff changeset
    23
#
aa5954c06b9d 16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents: 2338
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
# NOTE: this script runs in the global zone and touches the non-global
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    28
# zone, so care should be taken to validate any modifications so that they
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    29
# are safe.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    30
2390
f1c659f5c28e Backed out changeset 1f446820dcb0
Andrzej Szeszo <aszeszo@gmail.com>
parents: 2235
diff changeset
    31
# Restrict executables to /usr/bin and /usr/sbin
f1c659f5c28e Backed out changeset 1f446820dcb0
Andrzej Szeszo <aszeszo@gmail.com>
parents: 2235
diff changeset
    32
PATH=/usr/bin:/usr/sbin
f1c659f5c28e Backed out changeset 1f446820dcb0
Andrzej Szeszo <aszeszo@gmail.com>
parents: 2235
diff changeset
    33
export PATH
1483
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    34
unset LD_LIBRARY_PATH
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: 2338
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: 2338
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: 2338
diff changeset
    40
aa5954c06b9d 16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents: 2338
diff changeset
    41
PKG=pkg
1483
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    42
LOGFILE=
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    43
EXIT_CODE=1
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    44
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    45
# Clean up on failure
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    46
trap_exit()
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    47
{
1493
625950c12e71 3979 zone fs only available from Global zone, when zone is booted
<gerald.jelinek@sun.com>
parents: 1483
diff changeset
    48
	if (( $ZONE_IS_MOUNTED != 0 )); then
1483
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    49
		error "$v_unmount"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    50
		zoneadm -z $ZONENAME unmount
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    51
	fi
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    52
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    53
	exit $EXIT_CODE
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
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    56
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    57
# For an exclusive stack zone, fix up the network configuration files.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    58
# We need to do this even if unconfiguring the zone so sys-unconfig works
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    59
# correctly.
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
fix_net()
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
	[[ "$STACK_TYPE" == "shared" ]] && return
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    64
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    65
	NETIF_CNT=0
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    66
	for i in $ZONEROOT/etc/hostname.* $ZONEROOT/etc/dhcp.*
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    67
	do
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    68
		if [[ -f "$i" ]]; then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    69
			NETIF_CNT=$(expr $NETIF_CNT + 1)
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    70
			OLD_HOSTNET="$i"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    71
		fi
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    72
	done
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    73
	if (( $NETIF_CNT != 1 )); then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    74
		vlog "$v_nonetfix"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    75
		return
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    76
	fi
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    77
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    78
	NET=$(LC_ALL=C zonecfg -z $ZONENAME info net)
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    79
	if (( $? != 0 )); then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    80
		error "$e_badinfo" "net"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    81
		return
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    82
	fi
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
	NETIF=$(echo $NET | nawk '{
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    85
		for (i = 1; i < NF; i++) {
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    86
			if ($i == "physical:") {
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    87
				if (length(net) == 0) {
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    88
					i++
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    89
					net = $i
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    90
				} else {
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    91
					multiple=1
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    92
				}
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    93
			}
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
	}
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    96
	END {	if (!multiple)
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    97
			print net
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    98
	}')
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
    99
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   100
	if [[ -z "$NETIF" ]]; then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   101
		vlog "$v_nonetfix"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   102
		return
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   103
	fi
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   104
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   105
	NEWHOSTNET=${OLD_HOSTNET%*.*}
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   106
	if [[ "$OLD_HOSTNET" != "$NEWHOSTNET.$NETIF" ]]; then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   107
		safe_move $OLD_HOSTNET $NEWHOSTNET.$NETIF
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   108
	fi
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   109
}
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   110
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   111
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   112
# Disable all of the shares since the zone cannot be an NFS server.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   113
# Note that we disable the various instances of the svc:/network/shares/group
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   114
# SMF service in the fix_smf function. 
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   115
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   116
fix_nfs()
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   117
{
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   118
	zonedfs=$ZONEROOT/etc/dfs
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
	if [[ -h $zonedfs/dfstab || ! -f $zonedfs/dfstab ]]; then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   121
		error "$e_badfile" "/etc/dfs/dfstab"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   122
		return
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   123
	fi
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   124
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   125
	tmpfile=$(mktemp -t)
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   126
	if [[ -z "$tmpfile" ]]; then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   127
		error "$e_tmpfile"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   128
		return
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
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   131
	nawk '{
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   132
		if (substr($1, 0, 1) == "#") {
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   133
			print $0
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   134
		} else {
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   135
			print "#", $0
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   136
			modified=1
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   137
		}
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   138
	}
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   139
	END {
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   140
		if (modified == 1) {
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   141
			printf("# Modified by p2v ")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   142
			system("/usr/bin/date")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   143
			exit 0
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   144
		}
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   145
		exit 1
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   146
	}' $zonedfs/dfstab >>$tmpfile
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   147
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   148
	if (( $? == 0 )); then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   149
		if [[ ! -f $zonedfs/dfstab.pre_p2v ]]; then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   150
			safe_copy $zonedfs/dfstab $zonedfs/dfstab.pre_p2v
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   151
		fi
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   152
		safe_copy $tmpfile $zonedfs/dfstab
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   153
	fi
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   154
	rm -f $tmpfile
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   155
}
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   156
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   157
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   158
# Comment out most of the old mounts since they are either unneeded or
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   159
# likely incorrect within a zone.  Specific mounts can be manually 
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   160
# reenabled if the corresponding device is added to the zone.
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
fix_vfstab()
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   163
{
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   164
	if [[ -h $ZONEROOT/etc/vfstab || ! -f $ZONEROOT/etc/vfstab ]]; then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   165
		error "$e_badfile" "/etc/vfstab"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   166
		return
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   167
	fi
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
	tmpfile=$(mktemp -t)
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   170
	if [[ -z "$tmpfile" ]]; then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   171
		error "$e_tmpfile"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   172
		return
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   173
	fi
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
	nawk '{
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   176
		if (substr($1, 0, 1) == "#") {
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   177
			print $0
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   178
		} else if ($1 == "fd" || $1 == "/proc" || $1 == "swap" ||
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   179
		    $1 == "ctfs" || $1 == "objfs" || $1 == "sharefs" ||
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   180
		    $4 == "nfs" || $4 == "lofs") {
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   181
			print $0
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   182
		} else {
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   183
			print "#", $0
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   184
			modified=1
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   185
		}
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   186
	}
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   187
	END {
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   188
		if (modified == 1) {
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   189
			printf("# Modified by p2v ")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   190
			system("/usr/bin/date")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   191
			exit 0
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   192
		}
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   193
		exit 1
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   194
	}' $ZONEROOT/etc/vfstab >>$tmpfile
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
	if (( $? == 0 )); then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   197
		if [[ ! -f $ZONEROOT/etc/vfstab.pre_p2v ]]; then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   198
			safe_copy $ZONEROOT/etc/vfstab \
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   199
			    $ZONEROOT/etc/vfstab.pre_p2v
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   200
		fi
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   201
		safe_copy $tmpfile $ZONEROOT/etc/vfstab
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   202
	fi
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   203
	rm -f $tmpfile
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   204
}
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   205
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   206
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   207
# Delete or disable SMF services.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   208
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   209
fix_smf()
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
	SMF_UPGRADE=/a/var/svc/profile/upgrade
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   212
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
	# Fix network services if shared stack.
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
	if [[ "$STACK_TYPE" == "shared" ]]; then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   217
		vlog "$v_fixnetsvcs"
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
		NETPHYSDEF="svc:/network/physical:default"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   220
		NETPHYSNWAM="svc:/network/physical:nwam"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   221
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   222
		vlog "$v_enblsvc" "$NETPHYSDEF"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   223
		zlogin -S $ZONENAME "echo /usr/sbin/svcadm enable $NETPHYSDEF \
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   224
		    >>$SMF_UPGRADE" </dev/null
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   225
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   226
		vlog "$v_dissvc" "$NETPHYSNWAM"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   227
		zlogin -S $ZONENAME \
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   228
		    "echo /usr/sbin/svcadm disable $NETPHYSNWAM \
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   229
		    >>$SMF_UPGRADE" </dev/null
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   230
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   231
		# Disable routing svcs.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   232
		vlog "$v_dissvc" 'svc:/network/routing/*'
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   233
		zlogin -S $ZONENAME \
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   234
		    "echo /usr/sbin/svcadm disable 'svc:/network/routing/*' \
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   235
		    >>$SMF_UPGRADE" </dev/null
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   236
	fi
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   237
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   238
	#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   239
	# Disable well-known services that don't run in a zone.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   240
	#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   241
	vlog "$v_rminvalidsvcs"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   242
	for i in $(egrep -hv "^#" \
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   243
	    /usr/lib/brand/ipkg/smf_disable.lst \
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   244
	    /etc/brand/ipkg/smf_disable.conf)
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   245
	do
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   246
		# Disable the svc.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   247
		vlog "$v_dissvc" "$i"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   248
		zlogin -S $ZONENAME \
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   249
		    "echo /usr/sbin/svcadm disable $i >>$SMF_UPGRADE" </dev/null
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   250
	done
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   251
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   252
	#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   253
	# Since zones can't be NFS servers, disable all of the instances of
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   254
	# the shares svc.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   255
	#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   256
	vlog "$v_dissvc" 'svc:/network/shares/*'
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   257
	zlogin -S $ZONENAME \
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   258
	    "echo /usr/sbin/svcadm disable 'svc:/network/shares/*' \
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   259
	    >>$SMF_UPGRADE" </dev/null
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   260
}
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   261
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   262
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   263
# Remove well-known pkgs that do not work inside a zone.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   264
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   265
rm_pkgs()
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   266
{
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   267
	for i in $(egrep -hv "^#" /usr/lib/brand/ipkg/pkgrm.lst \
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   268
	    /etc/brand/ipkg/pkgrm.conf)
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   269
	do
2339
aa5954c06b9d 16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents: 2338
diff changeset
   270
		$PKG info $i >/dev/null 2>&1
1483
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   271
		if (( $? != 0 )); then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   272
			continue
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   273
		fi
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   274
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   275
		vlog "$v_rmpkg" "$i"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   276
		zlogin -S $ZONENAME LC_ALL=C \
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   277
		    /usr/bin/pkg -R /a uninstall -r $i </dev/null >&2 || \
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   278
		    error "$e_rmpkg" $i
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   279
	done
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   280
}
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   281
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   282
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   283
# Zoneadmd writes a one-line index file into the zone when the zone boots,
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   284
# so any information about installed zones from the original system will
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   285
# be lost at that time.  Here we'll warn the sysadmin about any pre-existing
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   286
# zones that they might want to clean up by hand, but we'll leave the zonepaths
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   287
# in place in case they're on shared storage and will be migrated to
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   288
# a new host.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   289
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   290
warn_zones()
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   291
{
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   292
	zoneconfig=$ZONEROOT/etc/zones
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   293
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   294
	if [[ -h $zoneconfig/index || ! -f $zoneconfig/index ]]; then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   295
		error "$e_badfile" "/etc/zones/index"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   296
		return
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   297
	fi
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   298
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   299
	NGZ=$(nawk -F: '{
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   300
		if (substr($1, 0, 1) == "#" || $1 == "global")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   301
			continue
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   302
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   303
		if ($2 == "installed")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   304
			printf("%s ", $1)
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   305
	}' $zoneconfig/index)
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   306
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   307
	# Return if there are no installed zones to warn about.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   308
	[[ -z "$NGZ" ]] && return
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   309
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   310
	log "$v_rmzones" "$NGZ"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   311
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   312
	NGZP=$(nawk -F: '{
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   313
		if (substr($1, 0, 1) == "#" || $1 == "global")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   314
			continue
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   315
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   316
		if ($2 == "installed")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   317
			printf("%s ", $3)
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   318
	}' $zoneconfig/index)
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   319
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   320
	log "$v_rmzonepaths"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   321
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   322
	for i in $NGZP
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   323
	do
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   324
		log "    %s" "$i"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   325
	done
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   326
}
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   327
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   328
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   329
# failure should unmount the zone if necessary;
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   330
#
1493
625950c12e71 3979 zone fs only available from Global zone, when zone is booted
<gerald.jelinek@sun.com>
parents: 1483
diff changeset
   331
ZONE_IS_MOUNTED=0
1483
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   332
trap trap_exit EXIT
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   333
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   334
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   335
# Parse the command line options.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   336
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   337
OPT_U=
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   338
OPT_V=
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   339
OPT_L=
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   340
while getopts "b:uvl:" opt
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   341
do
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   342
	case "$opt" in
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   343
		u)	OPT_U="-u";;
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   344
		v)	OPT_V="-v";;
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   345
		l)	LOGFILE="$OPTARG"; OPT_L="-l \"$OPTARG\"";;
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   346
		*)	exit 1;;
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   347
	esac
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   348
done
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   349
shift OPTIND-1
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   350
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   351
(( $# != 2 )) && exit 1
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   352
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   353
[[ -n $LOGFILE ]] && exec 2>>$LOGFILE
2390
f1c659f5c28e Backed out changeset 1f446820dcb0
Andrzej Szeszo <aszeszo@gmail.com>
parents: 2235
diff changeset
   354
f1c659f5c28e Backed out changeset 1f446820dcb0
Andrzej Szeszo <aszeszo@gmail.com>
parents: 2235
diff changeset
   355
ZONENAME=$1
f1c659f5c28e Backed out changeset 1f446820dcb0
Andrzej Szeszo <aszeszo@gmail.com>
parents: 2235
diff changeset
   356
ZONEPATH=$2
f1c659f5c28e Backed out changeset 1f446820dcb0
Andrzej Szeszo <aszeszo@gmail.com>
parents: 2235
diff changeset
   357
ZONEROOT=$ZONEPATH/root
1483
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   358
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   359
e_badinfo=$(gettext "Failed to get '%s' zone resource")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   360
e_badfile=$(gettext "Invalid '%s' file within the zone")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   361
e_tmpfile=$(gettext "Unable to create temporary file")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   362
v_mkdirs=$(gettext "Creating mount points")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   363
v_nonetfix=$(gettext "Cannot update /etc/hostname.{net} file")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   364
v_change_var=$(gettext "Changing the pkg variant to nonglobal...")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   365
e_change_var=$(gettext "Changing the pkg variant to nonglobal failed")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   366
v_update=$(gettext "Updating the zone software to match the global zone...")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   367
v_updatedone=$(gettext "Zone software update complete")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   368
e_badupdate=$(gettext "Updating the Zone software failed")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   369
v_adjust=$(gettext "Updating the image to run within a zone")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   370
v_stacktype=$(gettext "Stack type '%s'")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   371
v_rmhollowsvcs=$(gettext "Deleting global zone-only SMF services")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   372
v_fixnetsvcs=$(gettext "Adjusting network SMF services")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   373
v_rminvalidsvcs=$(gettext "Disabling invalid SMF services")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   374
v_collectingsmf=$(gettext "Collecting SMF svc data")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   375
v_delsvc=$(gettext "Delete SMF svc '%s'")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   376
e_delsvc=$(gettext "deleting SMF svc '%s'")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   377
v_enblsvc=$(gettext "Enable SMF svc '%s'")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   378
e_enblsvc=$(gettext "enabling SMF svc '%s'")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   379
v_dissvc=$(gettext "Disable SMF svc '%s'")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   380
e_adminf=$(gettext "Unable to create admin file")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   381
v_rmpkg=$(gettext "Remove package '%s'")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   382
e_rmpkg=$(gettext "removing package '%s'")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   383
v_rmzones=$(gettext "The following zones in this image will be unusable: %s")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   384
v_rmzonepaths=$(gettext "These zonepaths could be removed from this image:")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   385
v_exitgood=$(gettext "Postprocessing successful.")
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   386
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   387
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   388
# Do some validation on the paths we'll be accessing
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   389
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   390
safe_dir etc
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   391
safe_dir etc/dfs
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   392
safe_dir etc/zones
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   393
safe_dir var
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   394
safe_dir var/log
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   395
safe_dir var/pkg
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   396
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   397
# Now do the work to update the zone.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   398
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   399
# Before booting the zone we may need to create a few mnt points, just in
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   400
# case they don't exist for some reason.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   401
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   402
# Whenever we reach into the zone while running in the global zone we
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   403
# need to validate that none of the interim directories are symlinks
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   404
# that could cause us to inadvertently modify the global zone.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   405
vlog "$v_mkdirs"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   406
if [[ ! -f $ZONEROOT/tmp && ! -d $ZONEROOT/tmp ]]; then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   407
	mkdir -m 1777 -p $ZONEROOT/tmp || exit $EXIT_CODE
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   408
fi
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   409
if [[ ! -f $ZONEROOT/var/run && ! -d $ZONEROOT/var/run ]]; then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   410
	mkdir -m 1755 -p $ZONEROOT/var/run || exit $EXIT_CODE
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   411
fi
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   412
if [[ ! -h $ZONEROOT/etc && ! -f $ZONEROOT/etc/mnttab ]]; then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   413
	touch $ZONEROOT/etc/mnttab || exit $EXIT_CODE
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   414
	chmod 444 $ZONEROOT/etc/mnttab || exit $EXIT_CODE
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   415
fi
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   416
if [[ ! -f $ZONEROOT/proc && ! -d $ZONEROOT/proc ]]; then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   417
	mkdir -m 755 -p $ZONEROOT/proc || exit $EXIT_CODE
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   418
fi
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   419
if [[ ! -f $ZONEROOT/dev && ! -d $ZONEROOT/dev ]]; then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   420
	mkdir -m 755 -p $ZONEROOT/dev || exit $EXIT_CODE
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   421
fi
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   422
if [[ ! -h $ZONEROOT/etc && ! -h $ZONEROOT/etc/svc && ! -d $ZONEROOT/etc/svc ]]
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   423
then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   424
	mkdir -m 755 -p $ZONEROOT/etc/svc/volatile || exit $EXIT_CODE
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   425
fi
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   426
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   427
# Check for zones inside of image.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   428
warn_zones
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   429
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   430
STACK_TYPE=$(zoneadm -z $ZONENAME list -p | nawk -F: '{print $7}')
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   431
if (( $? != 0 )); then
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   432
	error "$e_badinfo" "stacktype"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   433
fi
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   434
vlog "$v_stacktype" "$STACK_TYPE"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   435
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   436
# Note that we're doing this before update-on-attach has run.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   437
fix_net
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   438
fix_nfs
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   439
fix_vfstab
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   440
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   441
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   442
# Mount the zone so that we can do all of the updates needed on the zone.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   443
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   444
vlog "$v_mounting"
1493
625950c12e71 3979 zone fs only available from Global zone, when zone is booted
<gerald.jelinek@sun.com>
parents: 1483
diff changeset
   445
ZONE_IS_MOUNTED=1
1483
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   446
zoneadm -z $ZONENAME mount -f || fatal "$e_badmount"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   447
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   448
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   449
# Any errors in these functions are not considered fatal.  The zone can be
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   450
# be fixed up manually afterwards and it may need some additional manual
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   451
# cleanup in any case.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   452
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   453
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   454
log "$v_adjust"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   455
# cleanup SMF services
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   456
fix_smf
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   457
# remove invalid pkgs
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   458
rm_pkgs
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   459
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   460
vlog "$v_unmount"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   461
zoneadm -z $ZONENAME unmount || fatal "$e_badunmount"
1493
625950c12e71 3979 zone fs only available from Global zone, when zone is booted
<gerald.jelinek@sun.com>
parents: 1483
diff changeset
   462
ZONE_IS_MOUNTED=0
1483
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   463
1493
625950c12e71 3979 zone fs only available from Global zone, when zone is booted
<gerald.jelinek@sun.com>
parents: 1483
diff changeset
   464
is_brand_labeled
625950c12e71 3979 zone fs only available from Global zone, when zone is booted
<gerald.jelinek@sun.com>
parents: 1483
diff changeset
   465
brand_labeled=$?
625950c12e71 3979 zone fs only available from Global zone, when zone is booted
<gerald.jelinek@sun.com>
parents: 1483
diff changeset
   466
if (( $brand_labeled == 1 )); then
625950c12e71 3979 zone fs only available from Global zone, when zone is booted
<gerald.jelinek@sun.com>
parents: 1483
diff changeset
   467
	# The labeled brand needs to mount the zone's root dataset back onto
625950c12e71 3979 zone fs only available from Global zone, when zone is booted
<gerald.jelinek@sun.com>
parents: 1483
diff changeset
   468
	# ZONEROOT so we can finish processing.
2390
f1c659f5c28e Backed out changeset 1f446820dcb0
Andrzej Szeszo <aszeszo@gmail.com>
parents: 2235
diff changeset
   469
	mount_active_ds
1493
625950c12e71 3979 zone fs only available from Global zone, when zone is booted
<gerald.jelinek@sun.com>
parents: 1483
diff changeset
   470
fi
1483
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   471
2243
526fc99bbf2d 17959 p2v of older ipkg images fails
Mike Gerdts <mike.gerdts@oracle.com>
parents: 2235
diff changeset
   472
#
526fc99bbf2d 17959 p2v of older ipkg images fails
Mike Gerdts <mike.gerdts@oracle.com>
parents: 2235
diff changeset
   473
# Update the image format before running other commands so that they are not
526fc99bbf2d 17959 p2v of older ipkg images fails
Mike Gerdts <mike.gerdts@oracle.com>
parents: 2235
diff changeset
   474
# thrown off by having old image metadata.
526fc99bbf2d 17959 p2v of older ipkg images fails
Mike Gerdts <mike.gerdts@oracle.com>
parents: 2235
diff changeset
   475
#
526fc99bbf2d 17959 p2v of older ipkg images fails
Mike Gerdts <mike.gerdts@oracle.com>
parents: 2235
diff changeset
   476
log "$v_update_format"
526fc99bbf2d 17959 p2v of older ipkg images fails
Mike Gerdts <mike.gerdts@oracle.com>
parents: 2235
diff changeset
   477
pkg -R "$ZONEROOT" update-format || pkg_err_check "$e_update_format"
526fc99bbf2d 17959 p2v of older ipkg images fails
Mike Gerdts <mike.gerdts@oracle.com>
parents: 2235
diff changeset
   478
1483
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   479
# Change the pkging variant from global zone to non-global zone.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   480
log "$v_change_var"
2339
aa5954c06b9d 16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents: 2338
diff changeset
   481
$PKG -R $ZONEROOT change-variant variant.opensolaris.zone=nonglobal || \
aa5954c06b9d 16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents: 2338
diff changeset
   482
    pkg_err_check "$e_change_var"
2338
63a4d56416c6 18240 zone proxy needed
johansen <johansen@opensolaris.org>
parents: 2315
diff changeset
   483
# Set the property which tells the image to use the system publisher.
63a4d56416c6 18240 zone proxy needed
johansen <johansen@opensolaris.org>
parents: 2315
diff changeset
   484
pkg -R $ZONEROOT set-property use-system-repo true
63a4d56416c6 18240 zone proxy needed
johansen <johansen@opensolaris.org>
parents: 2315
diff changeset
   485
if [[ $? != 0 ]]; then
63a4d56416c6 18240 zone proxy needed
johansen <johansen@opensolaris.org>
parents: 2315
diff changeset
   486
    log "\n$f_set_sysrepo_prop_fail"
63a4d56416c6 18240 zone proxy needed
johansen <johansen@opensolaris.org>
parents: 2315
diff changeset
   487
    EXIT_CODE=$ZONE_SUBPROC_NOTCOMPLETE
63a4d56416c6 18240 zone proxy needed
johansen <johansen@opensolaris.org>
parents: 2315
diff changeset
   488
    exit $EXIT_CODE
63a4d56416c6 18240 zone proxy needed
johansen <johansen@opensolaris.org>
parents: 2315
diff changeset
   489
fi
1483
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   490
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   491
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   492
# Run update on attach.  State is currently 'incomplete' so use the private
1493
625950c12e71 3979 zone fs only available from Global zone, when zone is booted
<gerald.jelinek@sun.com>
parents: 1483
diff changeset
   493
# force-update option.
1483
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   494
# This also leaves the zone in the 'installed' state.  This is a known bug
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   495
# in 'zoneadm attach'.  We change the zone state back to 'incomplete' for
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   496
# now but this can be removed once 'zoneadm attach' is fixed.
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   497
#
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   498
log "$v_update"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   499
zoneadm -z $ZONENAME attach -U >&2 || fatal "$e_badupdate"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   500
zoneadm -z $ZONENAME mark incomplete || fatal "$e_badupdate"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   501
log "$v_updatedone"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   502
1493
625950c12e71 3979 zone fs only available from Global zone, when zone is booted
<gerald.jelinek@sun.com>
parents: 1483
diff changeset
   503
[[ -n $OPT_U ]] && unconfigure_zone
1483
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   504
2390
f1c659f5c28e Backed out changeset 1f446820dcb0
Andrzej Szeszo <aszeszo@gmail.com>
parents: 2235
diff changeset
   505
(( $brand_labeled == 1 )) && mount_active_ds
1483
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   506
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   507
trap - EXIT
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   508
vlog "$v_exitgood"
2276b6786711 6793 p2v support for ipkg-branded zones
<gerald.jelinek@sun.com>
parents:
diff changeset
   509
exit 0