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 |
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 |