bfu.sh revision a83cadce5d3331b64803bfc641036cec23602c74
fa9e4066f08beec538e775443c5be79dd423fcabahrens#!/bin/ksh
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# CDDL HEADER START
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock# The contents of this file are subject to the terms of the
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock# Common Development and Distribution License (the "License").
fa9e4066f08beec538e775443c5be79dd423fcabahrens# You may not use this file except in compliance with the License.
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
fa9e4066f08beec538e775443c5be79dd423fcabahrens# or http://www.opensolaris.org/os/licensing.
fa9e4066f08beec538e775443c5be79dd423fcabahrens# See the License for the specific language governing permissions
fa9e4066f08beec538e775443c5be79dd423fcabahrens# and limitations under the License.
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# When distributing Covered Code, include this CDDL HEADER in each
fa9e4066f08beec538e775443c5be79dd423fcabahrens# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
fa9e4066f08beec538e775443c5be79dd423fcabahrens# If applicable, add the following below this CDDL HEADER, with the
fa9e4066f08beec538e775443c5be79dd423fcabahrens# fields enclosed by brackets "[]" replaced with your own identifying
fa9e4066f08beec538e775443c5be79dd423fcabahrens# information: Portions Copyright [yyyy] [name of copyright owner]
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# CDDL HEADER END
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
55da60b91d96984f12de050ce428373ea25c7f35Mark J Musante
beb562835cfbfcc73ae96a39ad1ef3e0446d299cShampavman#
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
fa9e4066f08beec538e775443c5be79dd423fcabahrens# Use is subject to license terms.
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
55da60b91d96984f12de050ce428373ea25c7f35Mark J Musante# ident "%Z%%M% %I% %E% SMI"
55da60b91d96984f12de050ce428373ea25c7f35Mark J Musante#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# Upgrade a machine from a cpio archive area in about 5 minutes.
fa9e4066f08beec538e775443c5be79dd423fcabahrens# By Roger Faulkner and Jeff Bonwick, April 1993.
fa9e4066f08beec538e775443c5be79dd423fcabahrens# (bfu == Bonwick/Faulkner Upgrade, a.k.a. Blindingly Fast Upgrade)
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# Usage: bfu [-f] <archive_dir> [root-dir] # for normal machines
fa9e4066f08beec538e775443c5be79dd423fcabahrens# bfu -c [-f] <archive_dir> <exec-dir> # for diskless clients
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# The -f flag is to override the built-in safety check which requires
fa9e4066f08beec538e775443c5be79dd423fcabahrens# that the starting-point OS be a least a certain revision.
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# You have to be super-user. It's safest to run this from the
fa9e4066f08beec538e775443c5be79dd423fcabahrens# system console, although I've run it under OW and even via
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens# remote login with no problems.
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens#
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens# You will have to reboot the system when the upgrade is complete.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# You should add any administrative files you care about to this list.
fa9e4066f08beec538e775443c5be79dd423fcabahrens# Warning: there had better be no leading '/' on any of these filenames.
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# The CDPATH variable causes ksh's `cd' builtin to emit messages to stdout
fa9e4066f08beec538e775443c5be79dd423fcabahrens# under certain circumstances, which can really screw things up; unset it.
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrensunset CDPATH
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrensexport LC_ALL="C"
feef89cf5f5fee792c1a396bb0e48070935cf65aVictor Latushkin
feef89cf5f5fee792c1a396bb0e48070935cf65aVictor Latushkinif [ -z "$GATEPATH" ]; then
feef89cf5f5fee792c1a396bb0e48070935cf65aVictor Latushkin GATEPATH=/ws/onnv-gate
feef89cf5f5fee792c1a396bb0e48070935cf65aVictor Latushkin test -d $GATEPATH || GATEPATH=/net/onnv.eng/export/gate
fa9e4066f08beec538e775443c5be79dd423fcabahrensfi
fa9e4066f08beec538e775443c5be79dd423fcabahrensif [ -z "$ARCHIVEPATH" ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens ARCHIVEPATH=/ws/onnv-gate
fa9e4066f08beec538e775443c5be79dd423fcabahrens test -d $ARCHIVEPATH || ARCHIVEPATH=/net/onnv.eng/export
fa9e4066f08beec538e775443c5be79dd423fcabahrensfi
fa9e4066f08beec538e775443c5be79dd423fcabahrensexport GATE=${GATEPATH}
fa9e4066f08beec538e775443c5be79dd423fcabahrensexport ARCHIVE=${ARCHIVEPATH}
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# NOTE: Entries in *_files must expand to either the exact files required,
fa9e4066f08beec538e775443c5be79dd423fcabahrens# or to directories that will be scoured for files. Any directories
fa9e4066f08beec538e775443c5be79dd423fcabahrens# (and subdirectories) resulting from a wildcard expansion will be
fa9e4066f08beec538e775443c5be79dd423fcabahrens# fully recursed by BFU's searching for files. (E.g. /etc/inet/* will
fa9e4066f08beec538e775443c5be79dd423fcabahrens# include all files in any of its directories, as well as any files in
fa9e4066f08beec538e775443c5be79dd423fcabahrens# /etc/inet/ itself.
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# These lists should really be generated automatically from the
fa9e4066f08beec538e775443c5be79dd423fcabahrens# pkgmap(4) metadata.
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# First list: files to be saved in global and non-global zones.
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrensall_zones_files="
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/.login
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/acct/holidays
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/acctadm.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/auto_*
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/cron.d/at.deny
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/cron.d/cron.deny
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/crypto/pkcs11.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/default/*
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/dfs/dfstab
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/dumpdates
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/ftpd/*
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/ftpusers
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/group
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/gss/gsscred.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/gss/mech
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/gss/qop
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens etc/inet/*
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens etc/init.d/*
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens etc/inittab
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/ipf/ipf.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/iu.ap
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/krb5/kadm5.acl
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/krb5/kdc.conf
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling etc/krb5/kpropd.acl
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling etc/krb5/krb5.conf
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling etc/krb5/warn.conf
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling etc/logadm.conf
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling etc/logindevperm
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling etc/lp/Systems
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling etc/mail/*.cf
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling etc/mail/*.hf
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling etc/mail/*.rc
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling etc/mail/aliases
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/mail/helpfile
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/mail/local-host-names
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/mail/trusted-users
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/named.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/net/*/services
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/netconfig
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/nfs/nfslog.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/nfssec.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/nscd.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/nsswitch.*
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/pam.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/passwd
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/policy.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/printers.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/profile
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/project
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/publickey
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/remote
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/resolv.conf
8053a26377fa80614ba5221e12b86aab4e8a675eck etc/rmmount.conf
8053a26377fa80614ba5221e12b86aab4e8a675eck etc/rpc
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rpld.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/saf/_sactab
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/saf/_sysconfig
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/saf/zsmon/_pmtab
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/security/audit_class
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/security/audit_control
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/security/audit_event
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/security/audit_startup
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/security/audit_user
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/security/audit_warn
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/security/auth_attr
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/security/crypt.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/security/exec_attr
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/security/policy.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/security/prof_attr
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/sfw/openssl/openssl.cnf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/shadow
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/skel/.profile
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/skel/local.*
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/smartcard/.keys
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/smartcard/desktop.properties
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/smartcard/ocf.classpath
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/smartcard/opencard.properties
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/ssh/ssh_config
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/ssh/sshd_config
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/syslog.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/ttydefs
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/ttysrch
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/user_attr
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/uucp/[A-Z]*
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/vfstab
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens var/spool/cron/crontabs/*
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/yp/Makefile
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/yp/aliases
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/yp/nicknames
fa9e4066f08beec538e775443c5be79dd423fcabahrens"
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# Second list: files to be saved in the global zone only.
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrensglobal_zone_only_files="
fa9e4066f08beec538e775443c5be79dd423fcabahrens boot/grub/menu.lst
fa9e4066f08beec538e775443c5be79dd423fcabahrens boot/solaris/bootenv.rc
fa9e4066f08beec538e775443c5be79dd423fcabahrens boot/solaris/devicedb/master
fa9e4066f08beec538e775443c5be79dd423fcabahrens boot/solaris/filelist.ramdisk
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/aggregation.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/dladm/*
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/bootrc
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/crypto/kcf.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/datalink.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/devlink.tab
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/driver_aliases
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens etc/driver_classes
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/lvm/devpath
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/lvm/lock
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/lvm/md.cf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/lvm/md.ctlrmap
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/lvm/md.tab
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/lvm/mddb.cf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/lvm/runtime.cf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/mach
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/minor_perm
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/name_to_major
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/name_to_sysnum
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/nca/nca.if
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/nca/ncakmod.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/nca/ncalogd.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/nca/ncaport.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/openwin/server/etc/OWconfig
4223fc7cdcf5a51019f631eec2b4217ddf736451Mark Shellenbaum etc/path_to_inst
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/power.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/ppp/chap-secrets
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/ppp/options
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/ppp/pap-secrets
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/security/device_policy
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/security/extra_privs
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/security/tsol/tnrhdb
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens etc/security/tsol/tnrhtp
4223fc7cdcf5a51019f631eec2b4217ddf736451Mark Shellenbaum etc/security/tsol/tnzonecfg
4223fc7cdcf5a51019f631eec2b4217ddf736451Mark Shellenbaum etc/security/tsol/label_encodings
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/security/tsol/relabel
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/security/tsol/devalloc_defaults
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens etc/system
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/zones/index
fa9e4066f08beec538e775443c5be79dd423fcabahrens kernel/drv/elxl.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens kernel/drv/md.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens kernel/drv/options.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens kernel/drv/ra.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens kernel/drv/scsa2usb.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens kernel/drv/scsi_vhci.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens kernel/drv/sd.conf
4223fc7cdcf5a51019f631eec2b4217ddf736451Mark Shellenbaum kernel/drv/mpt.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens platform/*/kernel/drv/*ppm.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens platform/i86pc/kernel/drv/aha.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens platform/i86pc/kernel/drv/asy.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens platform/sun4u/boot.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens"
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# Third list: files extracted from generic.root but which belong in the global
fa9e4066f08beec538e775443c5be79dd423fcabahrens# zone only: they are superfluous (and some even harmful) in nonglobal zones.
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# (note: as /etc/init.d scripts are converted to smf(5) "Greenline" services,
fa9e4066f08beec538e775443c5be79dd423fcabahrens# they (and their /etc/rc?.d hardlinks) should be removed from this list when
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens# they are added to smf_obsolete_rc_files, below)
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrenssuperfluous_nonglobal_zone_files="
fa9e4066f08beec538e775443c5be79dd423fcabahrens dev/dsk
fa9e4066f08beec538e775443c5be79dd423fcabahrens dev/fd
fa9e4066f08beec538e775443c5be79dd423fcabahrens dev/pts
fa9e4066f08beec538e775443c5be79dd423fcabahrens dev/rdsk
fa9e4066f08beec538e775443c5be79dd423fcabahrens dev/rmt
fa9e4066f08beec538e775443c5be79dd423fcabahrens dev/stderr
fa9e4066f08beec538e775443c5be79dd423fcabahrens dev/stdin
fa9e4066f08beec538e775443c5be79dd423fcabahrens dev/stdout
fa9e4066f08beec538e775443c5be79dd423fcabahrens dev/swap
fa9e4066f08beec538e775443c5be79dd423fcabahrens dev/term
fa9e4066f08beec538e775443c5be79dd423fcabahrens devices
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/dacf.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/dat
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/default/metassist.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/default/power
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/flash/postdeployment/svm.cleanup
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/flash/predeployment/svm.save
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/inet/ipqosconf.1.sample
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/inet/ipqosconf.2.sample
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/inet/ipqosconf.3.sample
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/inet/sock2path
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/init.d/devlinks
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/init.d/dodatadm.udaplt
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens etc/init.d/drvconfig
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens etc/init.d/llc2
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens etc/init.d/ncakmod
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens etc/init.d/ncalogd
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens etc/init.d/pcmcia
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens etc/init.d/pppd
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens etc/init.d/wrsmcfg
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens etc/llc2
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens etc/lvm
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens etc/nca
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens etc/openwin
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens etc/ppp
49e3519a3f3d730d3bd8870c05aaed24d89cf272maybee etc/rc0.d/K34ncalogd
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens etc/rc0.d/K50pppd
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens etc/rc0.d/K52llc2
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens etc/rc1.d/K34ncalogd
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens etc/rc1.d/K50pppd
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens etc/rc1.d/K52llc2
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens etc/rc2.d/S40llc2
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens etc/rc2.d/S42ncakmod
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens etc/rc2.d/S47pppd
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens etc/rc2.d/S81dodatadm.udaplt
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens etc/rc2.d/S94ncalogd
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens etc/rcS.d/K34ncalogd
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens etc/rcS.d/K44wrsmcfg
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick etc/rcS.d/K50pppd
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens etc/rcS.d/K52llc2
beb562835cfbfcc73ae96a39ad1ef3e0446d299cShampavman etc/rcS.d/S29wrsmcfg
1ab7f2ded02e7a1bc3c73516eb27efa79bf2a2ffmaybee etc/rcm
1ab7f2ded02e7a1bc3c73516eb27efa79bf2a2ffmaybee etc/sock2path
1ab7f2ded02e7a1bc3c73516eb27efa79bf2a2ffmaybee etc/usb
1ab7f2ded02e7a1bc3c73516eb27efa79bf2a2ffmaybee etc/wrsm
1ab7f2ded02e7a1bc3c73516eb27efa79bf2a2ffmaybee etc/zones
1ab7f2ded02e7a1bc3c73516eb27efa79bf2a2ffmaybee kernel
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens lib/libmeta.so
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens lib/libmeta.so.1
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens lib/svc/method/sf880dr
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens lib/svc/method/svc-cvcd
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens lib/svc/method/svc-dcs
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens lib/svc/method/svc-drd
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens lib/svc/method/svc-dscp
b16da2e29e074fb6eaeadc4fd7d17ae7340ba240George Wilson lib/svc/method/svc-dumpadm
b16da2e29e074fb6eaeadc4fd7d17ae7340ba240George Wilson lib/svc/method/svc-intrd
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens lib/svc/method/svc-hal
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens lib/svc/method/svc-labeld
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens lib/svc/method/svc-mdmonitor
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens lib/svc/method/svc-metainit
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens lib/svc/method/svc-metasync
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens lib/svc/method/svc-oplhpd
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens lib/svc/method/svc-poold
55da60b91d96984f12de050ce428373ea25c7f35Mark J Musante lib/svc/method/svc-pools
1ab7f2ded02e7a1bc3c73516eb27efa79bf2a2ffmaybee lib/svc/method/svc-power
d6e555bdd793b8bc8fe57d5f12c3d69c813d0661George Wilson lib/svc/method/svc-resource-mgmt
d6e555bdd793b8bc8fe57d5f12c3d69c813d0661George Wilson lib/svc/method/svc-rmvolmgr
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens lib/svc/method/svc-scheduler
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens lib/svc/method/svc-sckmd
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens lib/svc/method/svc-syseventd
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens lib/svc/method/svc-tnctl
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick lib/svc/method/svc-tnd
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens lib/svc/method/svc-vntsd
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens lib/svc/method/svc-zones
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens platform/*/kernel
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens platform/SUNW,Sun-Fire-15000/lib/cvcd
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens platform/SUNW,Ultra-Enterprise-10000/lib/cvcd
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens platform/i86pc/biosint
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens platform/i86pc/multiboot
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens platform/sun4u/cprboot
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens platform/sun4u/lib/libwrsmconf.so
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens platform/sun4u/lib/libwrsmconf.so.1
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens platform/sun4u/lib/sparcv9/libwrsmconf.so
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens platform/sun4u/lib/sparcv9/libwrsmconf.so.1
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens platform/sun4u/sbin
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens platform/sun4u/ufsboot
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens platform/sun4u/wanboot
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens platform/sun4v/ufsboot
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens platform/sun4v/wanboot
fa9e4066f08beec538e775443c5be79dd423fcabahrens sbin/metadb
fa9e4066f08beec538e775443c5be79dd423fcabahrens sbin/metadevadm
fa9e4066f08beec538e775443c5be79dd423fcabahrens sbin/metainit
fa9e4066f08beec538e775443c5be79dd423fcabahrens sbin/metarecover
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick sbin/metastat
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick usr/include/sys/dcam
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick usr/lib/devfsadm/linkmod/SUNW_dcam1394_link.so
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick usr/lib/ldoms
fa9e4066f08beec538e775443c5be79dd423fcabahrens usr/platform/SUNW,SPARC-Enterprise/lib/dscp.ppp.options
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick usr/platform/SUNW,SPARC-Enterprise/lib/libdscp.so
fa9e4066f08beec538e775443c5be79dd423fcabahrens usr/platform/SUNW,SPARC-Enterprise/lib/libdscp.so.1
fa9e4066f08beec538e775443c5be79dd423fcabahrens usr/platform/SUNW,SPARC-Enterprise/lib/llib-ldscp.ln
fa9e4066f08beec538e775443c5be79dd423fcabahrens usr/platform/SUNW,SPARC-Enterprise/sbin/prtdscp
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/adm/pool
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick var/log/pool
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick var/svc/manifest/network/rpc/mdcomm.xml
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick var/svc/manifest/network/rpc/meta.xml
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick var/svc/manifest/network/rpc/metamed.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/svc/manifest/network/rpc/metamh.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/svc/manifest/network/tnctl.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/svc/manifest/network/tnd.xml
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick var/svc/manifest/platform/i86pc/eeprom.xml
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick var/svc/manifest/platform/sun4u/dcs.xml
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick var/svc/manifest/platform/sun4u/dscp.xml
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick var/svc/manifest/platform/sun4u/efdaemon.xml
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick var/svc/manifest/platform/sun4u/oplhpd.xml
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick var/svc/manifest/platform/sun4u/sckmd.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/svc/manifest/platform/sun4u/sf880drd.xml
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick var/svc/manifest/platform/sun4v
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/svc/manifest/system/cvc.xml
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick var/svc/manifest/system/dumpadm.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/svc/manifest/system/fmd.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/svc/manifest/system/hal.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/svc/manifest/system/intrd.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/svc/manifest/system/labeld.xml
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens var/svc/manifest/system/mdmonitor.xml
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens var/svc/manifest/system/metainit.xml
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens var/svc/manifest/system/metasync.xml
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens var/svc/manifest/system/picl.xml
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens var/svc/manifest/system/poold.xml
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens var/svc/manifest/system/pools.xml
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens var/svc/manifest/system/power.xml
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens var/svc/manifest/system/resource-mgmt.xml
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens var/svc/manifest/system/scheduler.xml
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens var/svc/manifest/system/sysevent.xml
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens var/svc/manifest/system/zones.xml
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens var/svc/manifest/system/filesystem/rmvolmgr.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens"
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# Fourth list: files to be preserved, ie unconditionally restored to
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens# "child" versions
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrenspreserve_files="
fa9e4066f08beec538e775443c5be79dd423fcabahrens kernel/misc/amd64/sysinit
fa9e4066f08beec538e775443c5be79dd423fcabahrens kernel/misc/amd64/usbs49_fw
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens kernel/misc/sparcv9/usbs49_fw
fa9e4066f08beec538e775443c5be79dd423fcabahrens kernel/misc/sysinit
fa9e4066f08beec538e775443c5be79dd423fcabahrens kernel/misc/usbs49_fw
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens var/adm/aculog
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens var/adm/spellhist
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/adm/utmpx
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/adm/wtmpx
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens var/log/authlog
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/log/syslog
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/saf/zsmon/log
fa9e4066f08beec538e775443c5be79dd423fcabahrens"
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensrealmode_files="
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens boot/solaris/bootenv.rc
fa9e4066f08beec538e775443c5be79dd423fcabahrens boot/solaris/devicedb/master
fa9e4066f08beec538e775443c5be79dd423fcabahrens"
fa9e4066f08beec538e775443c5be79dd423fcabahrens
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrensfail() {
fa9e4066f08beec538e775443c5be79dd423fcabahrens print "$*" >& 2
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens print "bfu aborting" >& 2
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens rm -f "$bfu_zone_list"
fa9e4066f08beec538e775443c5be79dd423fcabahrens exit 1
fa9e4066f08beec538e775443c5be79dd423fcabahrens}
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrensfilelist() {
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens files="$all_zones_files $preserve_files"
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ $1 = "global" ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens files="$global_zone_only_files $files"
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens find $files -depth -type f ! -name core -print 2>/dev/null | sort -u || {
fa9e4066f08beec538e775443c5be79dd423fcabahrens #
fa9e4066f08beec538e775443c5be79dd423fcabahrens # Force cpio to return non-zero by printing an error message
fa9e4066f08beec538e775443c5be79dd423fcabahrens # to stdout that it won't be able to lstat().
fa9e4066f08beec538e775443c5be79dd423fcabahrens #
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo 'filelist: sort failed'
fa9e4066f08beec538e775443c5be79dd423fcabahrens fail "sort failed"
fa9e4066f08beec538e775443c5be79dd423fcabahrens }
fa9e4066f08beec538e775443c5be79dd423fcabahrens}
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensrealmode_filelist() {
fa9e4066f08beec538e775443c5be79dd423fcabahrens find $realmode_files -depth -type f ! -name core -print 2>/dev/null | sort
fa9e4066f08beec538e775443c5be79dd423fcabahrens}
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrenssmf_inetd_conversions="
fa9e4066f08beec538e775443c5be79dd423fcabahrens 100134
fa9e4066f08beec538e775443c5be79dd423fcabahrens 100150
fa9e4066f08beec538e775443c5be79dd423fcabahrens 100155
fa9e4066f08beec538e775443c5be79dd423fcabahrens 100229
fa9e4066f08beec538e775443c5be79dd423fcabahrens 100230
fa9e4066f08beec538e775443c5be79dd423fcabahrens 100234
fa9e4066f08beec538e775443c5be79dd423fcabahrens 100242
fa9e4066f08beec538e775443c5be79dd423fcabahrens 100422
fa9e4066f08beec538e775443c5be79dd423fcabahrens chargen
fa9e4066f08beec538e775443c5be79dd423fcabahrens comsat
fa9e4066f08beec538e775443c5be79dd423fcabahrens daytime
fa9e4066f08beec538e775443c5be79dd423fcabahrens discard
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo
fa9e4066f08beec538e775443c5be79dd423fcabahrens eklogin
fa9e4066f08beec538e775443c5be79dd423fcabahrens exec
fa9e4066f08beec538e775443c5be79dd423fcabahrens finger
fa9e4066f08beec538e775443c5be79dd423fcabahrens ftp
fa9e4066f08beec538e775443c5be79dd423fcabahrens gssd
fa9e4066f08beec538e775443c5be79dd423fcabahrens klogin
fa9e4066f08beec538e775443c5be79dd423fcabahrens krb5_prop
fa9e4066f08beec538e775443c5be79dd423fcabahrens kshell
fa9e4066f08beec538e775443c5be79dd423fcabahrens ktkt_warnd
fa9e4066f08beec538e775443c5be79dd423fcabahrens login
fa9e4066f08beec538e775443c5be79dd423fcabahrens metad
fa9e4066f08beec538e775443c5be79dd423fcabahrens metamedd
fa9e4066f08beec538e775443c5be79dd423fcabahrens metamhd
fa9e4066f08beec538e775443c5be79dd423fcabahrens name
fa9e4066f08beec538e775443c5be79dd423fcabahrens ocfserv
fa9e4066f08beec538e775443c5be79dd423fcabahrens printer
fa9e4066f08beec538e775443c5be79dd423fcabahrens rexd
fa9e4066f08beec538e775443c5be79dd423fcabahrens rquotad
fa9e4066f08beec538e775443c5be79dd423fcabahrens rstatd
fa9e4066f08beec538e775443c5be79dd423fcabahrens rusersd
fa9e4066f08beec538e775443c5be79dd423fcabahrens shell
fa9e4066f08beec538e775443c5be79dd423fcabahrens smserverd
fa9e4066f08beec538e775443c5be79dd423fcabahrens sprayd
fa9e4066f08beec538e775443c5be79dd423fcabahrens sun-dr
fa9e4066f08beec538e775443c5be79dd423fcabahrens talk
fa9e4066f08beec538e775443c5be79dd423fcabahrens telnet
fa9e4066f08beec538e775443c5be79dd423fcabahrens time
fa9e4066f08beec538e775443c5be79dd423fcabahrens uucp
fa9e4066f08beec538e775443c5be79dd423fcabahrens walld
fa9e4066f08beec538e775443c5be79dd423fcabahrens"
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensenable_next_boot () {
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ -x /tmp/bfubin/svccfg ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens svcadm disable -t $1
fa9e4066f08beec538e775443c5be79dd423fcabahrens [ $? = 0 ] || echo "warning: unable to temporarily disable $1"
fa9e4066f08beec538e775443c5be79dd423fcabahrens svccfg -s $1 setprop general/enabled = true
fa9e4066f08beec538e775443c5be79dd423fcabahrens [ $? = 0 ] || echo "warning: unable to enable $1 for next boot"
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens}
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrenssmf_inetd_disable() {
fa9e4066f08beec538e775443c5be79dd423fcabahrens inetconf=$rootprefix/etc/inet/inetd.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens inettmp=/tmp/inetd.tmp.$$
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens sed "$(for i in $smf_inetd_conversions; do
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "s:^[ ]*$i[ /]:#SMFbfu# &:"
fa9e4066f08beec538e775443c5be79dd423fcabahrens done)" $inetconf > $inettmp && ! cmp -s $inettmp $inetconf &&
fa9e4066f08beec538e775443c5be79dd423fcabahrens cp $inettmp $inetconf
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens rm -f -- $inettmp
fa9e4066f08beec538e775443c5be79dd423fcabahrens}
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrenssmf_inetd_reenable() {
fa9e4066f08beec538e775443c5be79dd423fcabahrens inetconf=$rootprefix/etc/inet/inetd.conf
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens inettmp=/tmp/inetd.tmp.$$
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens sed 's/^#SMFbfu# //' $inetconf > $inettmp && cp $inettmp $inetconf
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens rm -f -- $inettmp
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens}
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrenssmf_tftp_reinstall() {
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens inetconf=$rootprefix/etc/inet/inetd.conf
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens inettmp=/tmp/inetd.tmp.$$
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens if grep '^#SMFbfu# tftp' $inetconf >/dev/null ; then
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens # BFU previously commented out, put it back in place
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens sed 's/^#SMFbfu# tftp/tftp/' $inetconf > $inettmp &&
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens cp $inettmp $inetconf
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens elif ! grep '^[# ]*tftp' $inetconf >/dev/null; then
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens # No entry, append to end
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens cat >>$inetconf <<EOF
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens# TFTPD - tftp server (primarily used for booting)
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens#tftp dgram udp6 wait root /usr/sbin/in.tftpd in.tftpd -s /tftpboot
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew AhrensEOF
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens fi
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens rm -f -- $inettmp
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens}
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrensinetd_conf_svm_hack() {
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens # Since inetd.conf is updated by SUNWmdr's postinstall script,
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens # we will update the actual inetd.conf here to reflect the postinstall
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens # changes.
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens inetconf=$rootprefix/etc/inet/inetd.conf
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens inettmp=/tmp/inetd.tmp.$$
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens inetnew=/tmp/inetd.new.$$
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens #
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens # only change inetd.conf if the rpc.metad entry is out of date
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens #
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens if ! grep "^[# ]*100229/1-2" $inetconf > /dev/null ; then
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens # Grab existing rpc entries for rpc.metad
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens # and convert spaces to tabs within the rpc entry, as well as
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens # the transport method;
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens # or add a new entry in case there was none.
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens if grep "^[# ]*100229/1" $inetconf > /dev/null ; then
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens grep "^# METAD - SLVM metadb" $inetconf > $inettmp
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens grep "^[# ]*100229/1" $inetconf | \
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens sed -e 's/[ ][ ]*/ /g' \
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens -e 's?100229/1?100229/1-2?' >> $inettmp
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens else
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens echo '# METAD - SVM metadb Daemon' > $inettmp
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens echo "100229/1-2\ttli\trpc/tcp\twait\troot\t/usr/sbin/rpc.metad\trpc.metad" >> $inettmp
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens fi
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens grep -v '^# METAD - SLVM metadb' $inetconf | \
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens grep -v '^[# ]*100229/1' > $inetnew
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens cat $inettmp >> $inetnew
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens if ! diff $inetnew $inetconf > /dev/null ; then
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens print "Updating inet.conf metad entry ... \c"
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens if cp $inetnew $inetconf ; then
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens print "done."
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens else
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens print "failed."
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens fi
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens fi
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens rm -f $inettmp $inetnew
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens fi
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens #
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens # only change inetd.conf if the rpc.mdcommd entry is out of date
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens #
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens if ! grep "^[# ]*100422/1" $inetconf > /dev/null ; then
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens # Grab existing rpc entries for rpc.mdcommd
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens # and convert spaces to tabs within the rpc entry,
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens # or add a new entry in case there was none.
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens if grep "^[# ]*100422/1" $inetconf > /dev/null ; then
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens grep "^# MDMN_COMMD - SVM Multi node" $inetconf > $inettmp
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens grep "^[# ]*100422/1" $inetconf | \
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens sed -e 's/[ ][ ]*/ /g' >> $inettmp
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens else
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens echo '# MDMN_COMMD - SVM Multi node communication daemon' >$inettmp
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens echo '100422/1\ttli\trpc/tcp\twait\troot\t/usr/sbin/rpc.mdcommd\trpc.mdcommd' >> $inettmp
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens fi
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens grep -v '^# MDMN_COMMD - SVM Multi node' $inetconf | \
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens grep -v '^[# ]*100422/1' > $inetnew
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens cat $inettmp >> $inetnew
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens if ! diff $inetnew $inetconf > /dev/null ; then
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens print "Updating inetd.conf rpc.mdcommd entry ... \c"
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens if cp $inetnew $inetconf; then
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling print "done."
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling else
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling print "failed."
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling fi
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens fi
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens rm -f $inettmp $inetnew
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens fi
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens}
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens# update x86 version mpt.conf for property tape
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrensmpttapeprop='[ ]*tape[ ]*=[ ]*"sctp"[ ]*;'
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrensupdate_mptconf_i386()
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens{
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens conffile=$rootprefix/kernel/drv/mpt.conf
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens test -f $conffile || return
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens egrep -s "$mpttapeprop" $conffile
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens if [ $? -ne 0 ] ; then
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens echo 'tape="sctp";' >> $conffile
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens fi
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens}
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrensupdate_policy_conf() {
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens # update /etc/security/policy.conf with the default
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens # Solaris crypt(3c) policy.
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens dest=$rootprefix/etc/security/policy.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens grep 'CRYPT_' $dest > /dev/null 2>&1
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ $? = 1 ] ; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens print "Updating entries for crypt(3c), see policy.conf(4)"
fa9e4066f08beec538e775443c5be79dd423fcabahrens cat >> $dest <<EOM
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens# crypt(3c) Algorithms Configuration
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# CRYPT_ALGORITHMS_ALLOW specifies the algorithms that are allowed to
fa9e4066f08beec538e775443c5be79dd423fcabahrens# be used for new passwords. This is enforced only in crypt_gensalt(3c).
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrensCRYPT_ALGORITHMS_ALLOW=1,2a,md5
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens# To deprecate use of the traditional unix algorithm, uncomment below
fa9e4066f08beec538e775443c5be79dd423fcabahrens# and change CRYPT_DEFAULT= to another algorithm. For example,
fa9e4066f08beec538e775443c5be79dd423fcabahrens# CRYPT_DEFAULT=1 for BSD/Linux MD5.
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens#CRYPT_ALGORITHMS_DEPRECATE=__unix__
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens# The Solaris default is the traditional UNIX algorithm. This is not
fa9e4066f08beec538e775443c5be79dd423fcabahrens# listed in crypt.conf(4) since it is internal to libc. The reserved
fa9e4066f08beec538e775443c5be79dd423fcabahrens# name __unix__ is used to refer to it.
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrensCRYPT_DEFAULT=__unix__
fa9e4066f08beec538e775443c5be79dd423fcabahrensEOM
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens grep PRIV_ $dest >/dev/null 2>&1
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ $? = 1 ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "Updating entries for privileges(5)," \
fa9e4066f08beec538e775443c5be79dd423fcabahrens "see policy.conf(4) for details."
fa9e4066f08beec538e775443c5be79dd423fcabahrenscat >> $dest <<EOM
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# These settings determine the default privileges users have. If not set,
fa9e4066f08beec538e775443c5be79dd423fcabahrens# the default privileges are taken from the inherited set.
fa9e4066f08beec538e775443c5be79dd423fcabahrens# There are two different settings; PRIV_DEFAULT determines the default
fa9e4066f08beec538e775443c5be79dd423fcabahrens# set on login; PRIV_LIMIT defines the Limit set on login.
fa9e4066f08beec538e775443c5be79dd423fcabahrens# Individual users can have privileges assigned or taken away through
fa9e4066f08beec538e775443c5be79dd423fcabahrens# user_attr. Privileges can also be assigned to profiles in which case
fa9e4066f08beec538e775443c5be79dd423fcabahrens# the users with those profiles can use those privileges through pfexec(1m).
fa9e4066f08beec538e775443c5be79dd423fcabahrens# For maximum future compatibility, the specifications should
fa9e4066f08beec538e775443c5be79dd423fcabahrens# always include "basic" or "all"; privileges should then be removed using
fa9e4066f08beec538e775443c5be79dd423fcabahrens# the negation. E.g., PRIV_LIMIT=all,!sys_linkdir takes away only the
fa9e4066f08beec538e775443c5be79dd423fcabahrens# sys_linkdir privilege, regardless of future additional privileges.
fa9e4066f08beec538e775443c5be79dd423fcabahrens# Similarly, PRIV_DEFAULT=basic,!file_link_any takes away only the
fa9e4066f08beec538e775443c5be79dd423fcabahrens# file_link_any privilege from the basic privilege set; only that notation
fa9e4066f08beec538e775443c5be79dd423fcabahrens# is immune from a future addition of currently unprivileged operations to
fa9e4066f08beec538e775443c5be79dd423fcabahrens# the basic privilege set.
fa9e4066f08beec538e775443c5be79dd423fcabahrens# NOTE: removing privileges from the the Limit set requires EXTREME care
fa9e4066f08beec538e775443c5be79dd423fcabahrens# as any set-uid root program may suddenly fail because it lacks certain
fa9e4066f08beec538e775443c5be79dd423fcabahrens# privilege(s).
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens#PRIV_DEFAULT=basic
fa9e4066f08beec538e775443c5be79dd423fcabahrens#PRIV_LIMIT=all
fa9e4066f08beec538e775443c5be79dd423fcabahrensEOM
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens}
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# Cleanup nfsmapid configuration before extracting
fa9e4066f08beec538e775443c5be79dd423fcabahrens# root bits. Remove if they exist:
fa9e4066f08beec538e775443c5be79dd423fcabahrens# nfsmapid entry in inetd.conf
fa9e4066f08beec538e775443c5be79dd423fcabahrens# nfsmapid entry in /etc/net/ti*/services
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# Going forward neither should exist, but no harm if services entry exists
fa9e4066f08beec538e775443c5be79dd423fcabahrens# Going way backwards (pre-04/28/2004), inetd.conf must exist but will
fa9e4066f08beec538e775443c5be79dd423fcabahrens# be a conflict that should be merged in
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrensnfsmapid_cfg() {
fa9e4066f08beec538e775443c5be79dd423fcabahrens inetdconf=$rootprefix/etc/inet/inetd.conf
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum tmpinetcf=/tmp/inetd.conf.$$
fa9e4066f08beec538e775443c5be79dd423fcabahrens cp -pf ${inetdconf} ${tmpinetcf}
fa9e4066f08beec538e775443c5be79dd423fcabahrens cat /dev/null > ${inetdconf} 2>&1
fa9e4066f08beec538e775443c5be79dd423fcabahrens sed -e "/^#[# ]*NFSv4/d" \
fa9e4066f08beec538e775443c5be79dd423fcabahrens -e "/^[# ]*100166\/1/d" \
fa9e4066f08beec538e775443c5be79dd423fcabahrens ${tmpinetcf} > ${inetdconf} 2>&1
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens rm -f ${tmpinetcf}
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens tmpservices=/tmp/services.$$
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens services=$rootprefix/etc/net/ticotsord/services
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens cp -pf ${services} ${tmpservices}
fa9e4066f08beec538e775443c5be79dd423fcabahrens cat /dev/null > ${services} 2>&1
fa9e4066f08beec538e775443c5be79dd423fcabahrens sed -e "/^[# ]*nfsmapid/d" \
fa9e4066f08beec538e775443c5be79dd423fcabahrens ${tmpservices} > ${services} 2>&1
fa9e4066f08beec538e775443c5be79dd423fcabahrens rm -f ${tmpservices}
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens services=$rootprefix/etc/net/ticots/services
fa9e4066f08beec538e775443c5be79dd423fcabahrens cp -pf ${services} ${tmpservices}
fa9e4066f08beec538e775443c5be79dd423fcabahrens cat /dev/null > ${services} 2>&1
fa9e4066f08beec538e775443c5be79dd423fcabahrens sed -e "/^[# ]*nfsmapid/d" \
fa9e4066f08beec538e775443c5be79dd423fcabahrens ${tmpservices} > ${services} 2>&1
fa9e4066f08beec538e775443c5be79dd423fcabahrens rm -f ${tmpservices}
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens services=$rootprefix/etc/net/ticlts/services
fa9e4066f08beec538e775443c5be79dd423fcabahrens cp -pf ${services} ${tmpservices}
fa9e4066f08beec538e775443c5be79dd423fcabahrens cat /dev/null > ${services} 2>&1
fa9e4066f08beec538e775443c5be79dd423fcabahrens sed -e "/^[# ]*nfsmapid/d" \
fa9e4066f08beec538e775443c5be79dd423fcabahrens ${tmpservices} > ${services} 2>&1
fa9e4066f08beec538e775443c5be79dd423fcabahrens rm -f ${tmpservices}
fa9e4066f08beec538e775443c5be79dd423fcabahrens}
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# Define global variables
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrensCALL_DEVID_DESTROY=""
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# List of SDS commands that must be deleted.
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrensSDSCMDLIST="
fa9e4066f08beec538e775443c5be79dd423fcabahrensgrowfs
fa9e4066f08beec538e775443c5be79dd423fcabahrensmetaclear
fa9e4066f08beec538e775443c5be79dd423fcabahrensmetadb
fa9e4066f08beec538e775443c5be79dd423fcabahrensmetadetach
fa9e4066f08beec538e775443c5be79dd423fcabahrensmetahs
fa9e4066f08beec538e775443c5be79dd423fcabahrensmetainit
fa9e4066f08beec538e775443c5be79dd423fcabahrensmetaoffline
fa9e4066f08beec538e775443c5be79dd423fcabahrensmetaonline
fa9e4066f08beec538e775443c5be79dd423fcabahrensmetaparam
fa9e4066f08beec538e775443c5be79dd423fcabahrensmetarename
a2eea2e101e6a163a537dcc6d4e3c4da2a0ea5b2ahrensmetareplace
a2eea2e101e6a163a537dcc6d4e3c4da2a0ea5b2ahrensmetaroot
a2eea2e101e6a163a537dcc6d4e3c4da2a0ea5b2ahrensmetaset
a2eea2e101e6a163a537dcc6d4e3c4da2a0ea5b2ahrensmetastat
fa9e4066f08beec538e775443c5be79dd423fcabahrensmetasync
fa9e4066f08beec538e775443c5be79dd423fcabahrensmetattach
fa9e4066f08beec538e775443c5be79dd423fcabahrensrpc.metad
fa9e4066f08beec538e775443c5be79dd423fcabahrensrpc.metamhd
fa9e4066f08beec538e775443c5be79dd423fcabahrens"
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# List of SDS configuration files that must be deleted.
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrensSDSCONFIGLIST="
fa9e4066f08beec538e775443c5be79dd423fcabahrenslock
fa9e4066f08beec538e775443c5be79dd423fcabahrensmd.cf
fa9e4066f08beec538e775443c5be79dd423fcabahrensmddb.cf
fa9e4066f08beec538e775443c5be79dd423fcabahrensmd.tab
fa9e4066f08beec538e775443c5be79dd423fcabahrensdevpath
fa9e4066f08beec538e775443c5be79dd423fcabahrensmd.ctlrmap
fa9e4066f08beec538e775443c5be79dd423fcabahrens"
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# List of rc scripts that must be deleted.
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrensRCLIST="
fa9e4066f08beec538e775443c5be79dd423fcabahrensetc/init.d/SUNWmd.init
fa9e4066f08beec538e775443c5be79dd423fcabahrensetc/init.d/SUNWmd.sync
fa9e4066f08beec538e775443c5be79dd423fcabahrensetc/init.d/lvm.init
fa9e4066f08beec538e775443c5be79dd423fcabahrensetc/init.d/lvm.sync
fa9e4066f08beec538e775443c5be79dd423fcabahrensetc/rcS.d/S35SUNWmd.init
fa9e4066f08beec538e775443c5be79dd423fcabahrensetc/rcS.d/S35lvm.init
fa9e4066f08beec538e775443c5be79dd423fcabahrensetc/rc2.d/S95SUNWmd.sync
fa9e4066f08beec538e775443c5be79dd423fcabahrensetc/rc2.d/S95lvm.sync
fa9e4066f08beec538e775443c5be79dd423fcabahrensetc/rcS.d/S35slvm.init
fa9e4066f08beec538e775443c5be79dd423fcabahrensetc/rc2.d/S95slvm.sync
fa9e4066f08beec538e775443c5be79dd423fcabahrensetc/init.d/slvm.init
fa9e4066f08beec538e775443c5be79dd423fcabahrensetc/init.d/slvm.sync
fa9e4066f08beec538e775443c5be79dd423fcabahrensetc/init.d/init.mdlogd
fa9e4066f08beec538e775443c5be79dd423fcabahrensetc/rc3.d/S25mdlogd
fa9e4066f08beec538e775443c5be79dd423fcabahrens"
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# List of flashprom-related files that must be deleted.
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew AhrensFLASHPROMLIST="
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrensetc/rc2.d/S75flashprom
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrensetc/init.d/flashprom
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrensusr/platform/SUNW,Ultra-2/lib/flash-update.sh
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrensusr/platform/SUNW,Ultra-4/lib/flash-update.sh
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrensusr/platform/SUNW,Ultra-Enterprise/lib/flash-update.sh
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Lingusr/platform/sun4u/doc/flashupdate.txt
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Lingusr/platform/sun4u/lib/flash-update.sh
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Lingusr/platform/sun4u/lib/prom/SUNW,Ultra-2
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Lingusr/platform/sun4u/lib/prom/SUNW,Ultra-4
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Lingusr/platform/sun4u/lib/prom/SUNW,Ultra-Enterprise
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling"
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling#
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens# delete the entries associated with bootlist from /etc/system
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling#
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Lingdelete_system_bootlist() {
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling sed -e /"Begin MDD database info"/,/"End MDD database info"/d \
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens < ${SYSTEM_FILE} > /tmp/system.$$
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens cp /tmp/system.$$ ${SYSTEM_FILE} || \
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling echo "copy error: /tmp/system.$$ to ${SYSTEM_FILE}"
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling}
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling#
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling# Add entries in md.conf for bootlist
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling#
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Lingfix_mdconf() {
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling cp ${mdconf} /tmp/md.conf.$$
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling echo >> /tmp/md.conf.$$
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling echo "# Begin MDD database info (do not edit)" >> /tmp/md.conf.$$
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling sed -e 's/^set md://' -e 's/$/;/' ${SYSTEM_FILE} | \
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling grep mddb_bootlist >> /tmp/md.conf.$$
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling echo "# End MDD database info (do not edit)" >> /tmp/md.conf.$$
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling cp /tmp/md.conf.$$ ${mdconf} || \
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling echo "copy error: /tmp/md.conf.$$ to ${mdconf}"
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling}
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling#
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling# add_devid_destroy(filename)
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling# returns contents in filename
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens# md_devid_destroy property is required when upgrading
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens# from pre SVM to SVM releases or when the device ID returned from
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens# the driver changes.
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling# It is specifically placed between
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling# # Begin MDD database info and # End MDD database info because
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling# on the subsequent reboot, this line will be removed automatically when
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling# metadevadm is run in rc2.d.
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens#
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Lingadd_devid_destroy() {
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling cat $1 | awk '{
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling if ( $2 == "End" && $4 == "database") {
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling print "md_devid_destroy=1;"
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling }
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling print $0
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling }' >> /tmp/t$$
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling mv /tmp/t$$ $1
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling}
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens#
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling# Reads existing configuration values in /etc/rcap.conf and puts
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling# them in repository upon reboot(via /var/svc/profile/upgrade).
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens#
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrensmigrate_rcap_conf() {
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling RCAP_CONF="${rootprefix}/etc/rcap.conf"
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling PROFILE_UPGRADE="${rootprefix}/var/svc/profile/upgrade"
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling SVCCFG="/usr/sbin/svccfg"
3b2aab18808792cbd248a12f1edf139b89833c13Matthew Ahrens RCAP_FMRI="svc:/system/rcap:default"
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling PG="config"
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling pressure=`awk '$1 == "RCAPD_MEMORY_CAP_ENFORCEMENT_PRESSURE" \
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling && NF == 3 {print $3}' $RCAP_CONF`
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling reconfig_int=`awk '$1 == "RCAPD_RECONFIGURATION_INTERVAL" \
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling && NF == 3 {print $3}' $RCAP_CONF`
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling walk_int=`awk '$1 == "RCAPD_PROC_WALK_INTERVAL" && \
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling NF == 3 {print $3}' $RCAP_CONF`
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling report_int=`awk '$1 == "RCAPD_REPORT_INTERVAL" && \
44cb6abc89aa591c23f5e58296c6d2a29302344abmc NF == 3 {print $3}' $RCAP_CONF`
44cb6abc89aa591c23f5e58296c6d2a29302344abmc
44cb6abc89aa591c23f5e58296c6d2a29302344abmc rss_sample_int=`awk '$1 == "RCAPD_RSS_SAMPLE_INTERVAL" && \
44cb6abc89aa591c23f5e58296c6d2a29302344abmc NF == 3 {print $3}' $RCAP_CONF`
44cb6abc89aa591c23f5e58296c6d2a29302344abmc
44cb6abc89aa591c23f5e58296c6d2a29302344abmc # Blindly update default configuration values with
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens # pre-existing values
44cb6abc89aa591c23f5e58296c6d2a29302344abmc #
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens echo "# Migrating pre-existing rcap configuration" >> \
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens $PROFILE_UPGRADE
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens
44cb6abc89aa591c23f5e58296c6d2a29302344abmc echo "$SVCCFG -s $RCAP_FMRI setprop ${PG}/pressure = " \
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens "$pressure" >> $PROFILE_UPGRADE
9253d63df408bb48584e0b1abfcc24ef2472382eGeorge Wilson
20128a0826f9c53167caa9215c12f08beee48e30George Wilson echo "$SVCCFG -s $RCAP_FMRI " \
9253d63df408bb48584e0b1abfcc24ef2472382eGeorge Wilson "setprop ${PG}/reconfig_interval = $reconfig_int" >> \
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens $PROFILE_UPGRADE
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens echo "$SVCCFG -s $RCAP_FMRI " \
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens "setprop ${PG}/walk_interval = $walk_int" >> \
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens $PROFILE_UPGRADE
44cb6abc89aa591c23f5e58296c6d2a29302344abmc
44cb6abc89aa591c23f5e58296c6d2a29302344abmc echo "$SVCCFG -s $RCAP_FMRI " \
44cb6abc89aa591c23f5e58296c6d2a29302344abmc "setprop ${PG}/report_interval = $report_int" >> \
44cb6abc89aa591c23f5e58296c6d2a29302344abmc $PROFILE_UPGRADE
44cb6abc89aa591c23f5e58296c6d2a29302344abmc
44cb6abc89aa591c23f5e58296c6d2a29302344abmc echo "$SVCCFG -s $RCAP_FMRI " \
44cb6abc89aa591c23f5e58296c6d2a29302344abmc "setprop ${PG}/rss_sample_interval = $rss_sample_int" >> \
44cb6abc89aa591c23f5e58296c6d2a29302344abmc $PROFILE_UPGRADE
44cb6abc89aa591c23f5e58296c6d2a29302344abmc
44cb6abc89aa591c23f5e58296c6d2a29302344abmc echo "/usr/sbin/svcadm refresh $RCAP_FMRI" >> \
44cb6abc89aa591c23f5e58296c6d2a29302344abmc $PROFILE_UPGRADE
44cb6abc89aa591c23f5e58296c6d2a29302344abmc
44cb6abc89aa591c23f5e58296c6d2a29302344abmc echo "rm /etc/rcap.conf" >> \
44cb6abc89aa591c23f5e58296c6d2a29302344abmc $PROFILE_UPGRADE
44cb6abc89aa591c23f5e58296c6d2a29302344abmc}
44cb6abc89aa591c23f5e58296c6d2a29302344abmc
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens#
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens# smf(5) "Greenline" doesn't install the init.d or rc*.d scripts for
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens# converted services. Clean up previous scripts for such services.
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens#
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrenssmf_obsolete_rc_files="
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/ANNOUNCE
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/MOUNTFSYS
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/RMTMPFILES
44cb6abc89aa591c23f5e58296c6d2a29302344abmc etc/init.d/audit
44cb6abc89aa591c23f5e58296c6d2a29302344abmc etc/init.d/autofs
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/coreadm
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/cron
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/cryptosvc
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/cvc
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/devfsadm
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/dhcp
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/dhcpagent
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/domainname
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/efcode
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/inetd
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/inetinit
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/inetsvc
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/initboot
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/ipfboot
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/kdc
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/kdc.master
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/keymap
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/ldap.client
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/libc.mount
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/network
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/nfs.client
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/nodename
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/nscd
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/perf
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/picld
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/power
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/rcapd
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/rootusr
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/rpc
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/savecore
44cb6abc89aa591c23f5e58296c6d2a29302344abmc etc/init.d/sckm
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/sf880dr
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/slpd
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/sshd
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/standardmounts
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/svm.init
44cb6abc89aa591c23f5e58296c6d2a29302344abmc etc/init.d/svm.sync
44cb6abc89aa591c23f5e58296c6d2a29302344abmc etc/init.d/sysid.net
44cb6abc89aa591c23f5e58296c6d2a29302344abmc etc/init.d/sysid.sys
44cb6abc89aa591c23f5e58296c6d2a29302344abmc etc/init.d/syslog
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/utmpd
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/volmgt
44cb6abc89aa591c23f5e58296c6d2a29302344abmc etc/init.d/xntpd
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/init.d/zones
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/rc0.d/K00ANNOUNCE
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/rc0.d/K01zones
44cb6abc89aa591c23f5e58296c6d2a29302344abmc etc/rc0.d/K03sshd
44cb6abc89aa591c23f5e58296c6d2a29302344abmc etc/rc0.d/K05volmgt
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/rc0.d/K07snmpdx
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/rc0.d/K10rcapd
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/rc0.d/K21dhcp
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/rc0.d/K28kdc
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/rc0.d/K28kdc.master
44cb6abc89aa591c23f5e58296c6d2a29302344abmc etc/rc0.d/K28nfs.server
44cb6abc89aa591c23f5e58296c6d2a29302344abmc etc/rc0.d/K32cryptosvc
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/rc0.d/K33audit
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/rc0.d/K33efcode
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/rc0.d/K34svm.sync
44cb6abc89aa591c23f5e58296c6d2a29302344abmc etc/rc0.d/K36sendmail
44cb6abc89aa591c23f5e58296c6d2a29302344abmc etc/rc0.d/K36utmpd
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/rc0.d/K37power
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/rc0.d/K40cron
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/rc0.d/K40inetd
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/rc0.d/K40nscd
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/rc0.d/K40sf880dr
44cb6abc89aa591c23f5e58296c6d2a29302344abmc etc/rc0.d/K40slpd
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/rc0.d/K40syslog
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/rc0.d/K40xntpd
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens etc/rc0.d/K41autofs
44cb6abc89aa591c23f5e58296c6d2a29302344abmc etc/rc0.d/K41ldap.client
44cb6abc89aa591c23f5e58296c6d2a29302344abmc etc/rc0.d/K41nfs.client
44cb6abc89aa591c23f5e58296c6d2a29302344abmc etc/rc0.d/K41rpc
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc0.d/K42sckm
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc0.d/K43inet
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc0.d/K68picld
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc0.d/K83devfsadm
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc0.d/K90dhcpagent
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K00ANNOUNCE
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K01zones
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K03sshd
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K05volmgt
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K07snmpdx
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K10rcapd
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K21dhcp
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K28kdc
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K28kdc.master
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K28nfs.server
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K33audit
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick etc/rc1.d/K33efcode
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K34svm.sync
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K36sendmail
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K36utmpd
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K37power
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K40cron
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K40inetd
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K40nscd
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K40sf880dr
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K40slpd
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K40syslog
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K40xntpd
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K41autofs
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K41ldap.client
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K41rpc
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K42sckm
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K43inet
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/K99libc.mount
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc1.d/S01MOUNTFSYS
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/K01zones
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/K03sshd
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/K05volmgt
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/K07snmpdx
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/K21dhcp
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/K28kdc
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/K28kdc.master
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/K28nfs.server
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S01MOUNTFSYS
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S05RMTMPFILES
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S21perf
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S30sysid.net
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S65ipfboot
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S69domainname
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S69inet
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S70sckm
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S71ldap.client
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S71rpc
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock etc/rc2.d/S71sysid.sys
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S72inetsvc
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S72slpd
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S73nfs.client
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick etc/rc2.d/S74autofs
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S74syslog
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S74xntpd
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S75cron
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S75savecore
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S76nscd
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S77inetd
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S77sf880dr
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S85power
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S88sendmail
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S88utmpd
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S95svm.sync
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S98efcode
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S98libc.mount
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S99audit
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc2.d/S99rcapd
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc3.d/S13kdc.master
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc3.d/S14kdc
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc3.d/S15nfs.server
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc3.d/S34dhcp
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc3.d/S76snmpdx
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc3.d/S81volmgt
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc3.d/S89sshd
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rc3.d/S99zones
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/K01zones
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/K03sshd
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/K05volmgt
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/K07snmpdx
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens etc/rcS.d/K10rcapd
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens etc/rcS.d/K21dhcp
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens etc/rcS.d/K28kdc
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens etc/rcS.d/K28kdc.master
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/K28nfs.server
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/K33audit
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/K33efcode
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/K34svm.sync
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/K36sendmail
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/K36utmpd
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/K37power
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/K40cron
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/K40inetd
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/K40nscd
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/K40sf880dr
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens etc/rcS.d/K40slpd
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/K40syslog
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/K40xntpd
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/K41autofs
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/K41ldap.client
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens etc/rcS.d/K41rpc
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens etc/rcS.d/K42sckm
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/K43inet
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/K99libc.mount
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/S10cvc
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/S28network.sh
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/S29nodename.sh
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/S30rootusr.sh
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/S33keymap.sh
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/S35svm.init
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/S40standardmounts.sh
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/S42coreadm
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/S45initboot
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/S50devfsadm
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/S72cryptosvc
fa9e4066f08beec538e775443c5be79dd423fcabahrens etc/rcS.d/S95picld
fa9e4066f08beec538e775443c5be79dd423fcabahrens"
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens# Obsolete smf manifests
fa9e4066f08beec538e775443c5be79dd423fcabahrenssmf_obsolete_manifests="
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/svc/manifest/application/print/cleanup.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/svc/manifest/network/tftp.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/svc/manifest/network/lp.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/svc/manifest/system/filesystem/volfs.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/svc/manifest/network/pfil.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/svc/manifest/platform/sun4u/mpxio-upgrade.xml
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens var/svc/manifest/network/tname.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens"
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens# smf services whose manifests have been renamed
fa9e4066f08beec538e775443c5be79dd423fcabahrenssmf_renamed_manifests="
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/svc/manifest/milestone/name-service.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/svc/manifest/system/filesystem/boot-archive.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens"
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens# Obsolete smf methods
fa9e4066f08beec538e775443c5be79dd423fcabahrenssmf_obsolete_methods="
fa9e4066f08beec538e775443c5be79dd423fcabahrens lib/svc/method/print-cleanup
fa9e4066f08beec538e775443c5be79dd423fcabahrens lib/svc/method/print-server
fa9e4066f08beec538e775443c5be79dd423fcabahrens lib/svc/method/svc-volfs
fa9e4066f08beec538e775443c5be79dd423fcabahrens lib/svc/method/pfil
fa9e4066f08beec538e775443c5be79dd423fcabahrens"
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrenssmf_cleanup () {
fa9e4066f08beec538e775443c5be79dd423fcabahrens (
fa9e4066f08beec538e775443c5be79dd423fcabahrens cd $root;
fa9e4066f08beec538e775443c5be79dd423fcabahrens print "Removing obsolete rc.d scripts ... \c"
fa9e4066f08beec538e775443c5be79dd423fcabahrens rm -f $smf_obsolete_rc_files
fa9e4066f08beec538e775443c5be79dd423fcabahrens print "done."
fa9e4066f08beec538e775443c5be79dd423fcabahrens )
fa9e4066f08beec538e775443c5be79dd423fcabahrens}
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrenssmf_new_profiles () {
fa9e4066f08beec538e775443c5be79dd423fcabahrens [[ "$bfu_isa" = "sparc" ]] || return 0
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens [[ -x /tmp/bfubin/svccfg ]] || return 0
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens print "Clearing platform profile hash ..."
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens # platform_SUNW,Sun-Fire.xml (and other new and
fa9e4066f08beec538e775443c5be79dd423fcabahrens # corrected platforms) were delivered in Build 68.
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ ! -f \
fa9e4066f08beec538e775443c5be79dd423fcabahrens $rootprefix/var/svc/profile/platform_SUNW,Sun-Fire.xml \
fa9e4066f08beec538e775443c5be79dd423fcabahrens ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens for pfx in " " "v"; do
fa9e4066f08beec538e775443c5be79dd423fcabahrens for plname in \
fa9e4066f08beec538e775443c5be79dd423fcabahrens none \
fa9e4066f08beec538e775443c5be79dd423fcabahrens SUNW_Sun_Fire_880 \
fa9e4066f08beec538e775443c5be79dd423fcabahrens SUNW_Sun_Fire_V890 \
fa9e4066f08beec538e775443c5be79dd423fcabahrens SUNW_Sun_Fire_15000 \
fa9e4066f08beec538e775443c5be79dd423fcabahrens SUNW_UltraEnterprise_10000; do
fa9e4066f08beec538e775443c5be79dd423fcabahrens svccfg -f - <<EOF
fa9e4066f08beec538e775443c5be79dd423fcabahrensselect smf/manifest
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrockdelpg ${pfx}ar_svc_profile_platform_${plname}_xml
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrockexit
fa9e4066f08beec538e775443c5be79dd423fcabahrensEOF
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock done
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock done
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock}
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock
fa9e4066f08beec538e775443c5be79dd423fcabahrenssmf_handle_new_services () {
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock #
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock # Detect, prior to extraction the arrival of new,
fa9e4066f08beec538e775443c5be79dd423fcabahrens # default-enabled-in-profile services. If so, add a command
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock # such that they are enabled.
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock #
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock if [ ! -f $rootprefix/var/svc/profile/system/sac.xml ]; then
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock echo /usr/sbin/svcadm enable system/sac >> \
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock $rootprefix/var/svc/profile/upgrade
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock fi
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock if [[ $zone = global &&
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock ! -f $rootprefix/var/svc/manifest/system/intrd.xml ]]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo /usr/sbin/svcadm enable system/intrd >> \
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock $rootprefix/var/svc/profile/upgrade
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [[ $zone = global &&
fa9e4066f08beec538e775443c5be79dd423fcabahrens ! -f $rootprefix/var/svc/manifest/system/scheduler.xml ]]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo /usr/sbin/svcadm enable system/scheduler >> \
fa9e4066f08beec538e775443c5be79dd423fcabahrens $rootprefix/var/svc/profile/upgrade
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [[ $zone = global &&
fa9e4066f08beec538e775443c5be79dd423fcabahrens ! -f $rootprefix/var/svc/manifest/system/hal.xml ]]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo /usr/sbin/svcadm enable system/hal >> \
fa9e4066f08beec538e775443c5be79dd423fcabahrens $rootprefix/var/svc/profile/upgrade
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [[ $zone = global &&
fa9e4066f08beec538e775443c5be79dd423fcabahrens ! -f $rootprefix/var/svc/manifest/system/filesystem/rmvolmgr.xml ]]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo /usr/sbin/svcadm enable system/filesystem/rmvolmgr >> \
fa9e4066f08beec538e775443c5be79dd423fcabahrens $rootprefix/var/svc/profile/upgrade
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [[ $zone = global &&
fa9e4066f08beec538e775443c5be79dd423fcabahrens ! -f $rootprefix/var/svc/manifest/network/ipsec/manual-key.xml &&
fa9e4066f08beec538e775443c5be79dd423fcabahrens -f $rootprefix/etc/inet/secret/ipseckeys ]]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens smf_enable svc:/network/ipsec/manual-key:default
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [[ $zone = global &&
fa9e4066f08beec538e775443c5be79dd423fcabahrens ! -f $rootprefix/var/svc/manifest/network/ipsec/ike.xml &&
fa9e4066f08beec538e775443c5be79dd423fcabahrens -f $rootprefix/etc/inet/ike/config ]]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens smf_enable svc:/network/ipsec/ike:default
b87f3af36bb994656da117319f5129ddfd05ed21perrin fi
b87f3af36bb994656da117319f5129ddfd05ed21perrin if [[ $zone = global &&
b87f3af36bb994656da117319f5129ddfd05ed21perrin ! -f $rootprefix/var/svc/manifest/system/pools.xml &&
b87f3af36bb994656da117319f5129ddfd05ed21perrin -f $rootprefix/etc/pooladm.conf ]]; then
b87f3af36bb994656da117319f5129ddfd05ed21perrin smf_enable svc:/system/pools:default
b87f3af36bb994656da117319f5129ddfd05ed21perrin fi
ad135b5d644628e791c3188a6ecbd9c257961ef8Christopher Siden}
ad135b5d644628e791c3188a6ecbd9c257961ef8Christopher Siden
ad135b5d644628e791c3188a6ecbd9c257961ef8Christopher Sidensmf_copy_manifest() {
b87f3af36bb994656da117319f5129ddfd05ed21perrin mfstbase=`basename $1`
b87f3af36bb994656da117319f5129ddfd05ed21perrin mymfs=$rootprefix/var/svc/manifest/$2/$mfstbase
b87f3af36bb994656da117319f5129ddfd05ed21perrin if [[ ! -f $mymfs ]] || ! cmp -s $manifest_src/$1 $mymfs ; then
b87f3af36bb994656da117319f5129ddfd05ed21perrin cp $manifest_src/$1 $mymfs ||
b87f3af36bb994656da117319f5129ddfd05ed21perrin echo "bfu: could not copy $manifest_src/$1"
b87f3af36bb994656da117319f5129ddfd05ed21perrin fi
b87f3af36bb994656da117319f5129ddfd05ed21perrin}
b87f3af36bb994656da117319f5129ddfd05ed21perrin
b87f3af36bb994656da117319f5129ddfd05ed21perrinsmf_copy_method() {
b87f3af36bb994656da117319f5129ddfd05ed21perrin cp $manifest_src/$1 $rootprefix/lib/svc/method ||
b87f3af36bb994656da117319f5129ddfd05ed21perrin echo "bfu: could not copy $manifest_src/$1"
b87f3af36bb994656da117319f5129ddfd05ed21perrin}
1195e687f1c03c8d57417b5999578922e20a3554Mark J Musante
1195e687f1c03c8d57417b5999578922e20a3554Mark J Musantesmf_cleanup_initd() {
1195e687f1c03c8d57417b5999578922e20a3554Mark J Musante rm -f $rootprefix/etc/rc?.d/[SK]??$1
1195e687f1c03c8d57417b5999578922e20a3554Mark J Musante}
1195e687f1c03c8d57417b5999578922e20a3554Mark J Musante
1195e687f1c03c8d57417b5999578922e20a3554Mark J Musantesmf_delete_manifest() {
fa9e4066f08beec538e775443c5be79dd423fcabahrens (
fa9e4066f08beec538e775443c5be79dd423fcabahrens mfst=$1
fa9e4066f08beec538e775443c5be79dd423fcabahrens cd $root
fa9e4066f08beec538e775443c5be79dd423fcabahrens [ -f $mfst ] || return;
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ -r /etc/svc/volatile/repository_door ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens ENTITIES=`/tmp/bfubin/svccfg inventory $mfst`
fa9e4066f08beec538e775443c5be79dd423fcabahrens for fmri in $ENTITIES; do
fa9e4066f08beec538e775443c5be79dd423fcabahrens /tmp/bfubin/svccfg delete -f $fmri
fa9e4066f08beec538e775443c5be79dd423fcabahrens done
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens rm $mfst
fa9e4066f08beec538e775443c5be79dd423fcabahrens )
fa9e4066f08beec538e775443c5be79dd423fcabahrens}
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrenssmf_delete_methods() {
fa9e4066f08beec538e775443c5be79dd423fcabahrens (
fa9e4066f08beec538e775443c5be79dd423fcabahrens cd $root;
fa9e4066f08beec538e775443c5be79dd423fcabahrens rm -f $smf_obsolete_methods
fa9e4066f08beec538e775443c5be79dd423fcabahrens )
fa9e4066f08beec538e775443c5be79dd423fcabahrens}
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrenssmf_delete_renamed_manifests() {
fa9e4066f08beec538e775443c5be79dd423fcabahrens (
fa9e4066f08beec538e775443c5be79dd423fcabahrens cd $root;
fa9e4066f08beec538e775443c5be79dd423fcabahrens rm -f $smf_renamed_manifests
fa9e4066f08beec538e775443c5be79dd423fcabahrens )
fa9e4066f08beec538e775443c5be79dd423fcabahrens}
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrenssmf_gldv3_manifests="
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/svc/manifest/network/aggregation.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/svc/manifest/network/datalink.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens var/svc/manifest/network/datalink-init.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens"
fa9e4066f08beec538e775443c5be79dd423fcabahrenssmf_gldv3_methods="
fa9e4066f08beec538e775443c5be79dd423fcabahrens lib/svc/method/aggregation
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens lib/svc/method/datalink
fa9e4066f08beec538e775443c5be79dd423fcabahrens lib/svc/method/datalink-init
fa9e4066f08beec538e775443c5be79dd423fcabahrens"
fa9e4066f08beec538e775443c5be79dd423fcabahrenssmf_cleanup_gldv3() {
fa9e4066f08beec538e775443c5be79dd423fcabahrens (
fa9e4066f08beec538e775443c5be79dd423fcabahrens for f in $smf_gldv3_manifests; do
fa9e4066f08beec538e775443c5be79dd423fcabahrens smf_delete_manifest $f
fa9e4066f08beec538e775443c5be79dd423fcabahrens done
fa9e4066f08beec538e775443c5be79dd423fcabahrens cd $root;
fa9e4066f08beec538e775443c5be79dd423fcabahrens rm -f $smf_gldv3_methods
fa9e4066f08beec538e775443c5be79dd423fcabahrens )
fa9e4066f08beec538e775443c5be79dd423fcabahrens}
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensold_mfst_dir="var/svc/manifest.orig"
fa9e4066f08beec538e775443c5be79dd423fcabahrensnew_mfst_dir="var/svc/manifest"
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrenssmf_enable() {
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens echo "svcadm enable $*" >> $rootprefix/var/svc/profile/upgrade
fa9e4066f08beec538e775443c5be79dd423fcabahrens}
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrenssmf_check_repository() {
fa9e4066f08beec538e775443c5be79dd423fcabahrens repository=etc/svc/repository.db
fa9e4066f08beec538e775443c5be79dd423fcabahrens [[ -f $rootprefix/$repository ]] || return
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens print -n "$rootprefix/$repository: " >&2
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens sqlite="${SQLITEBIN-$GATE/public/bin/$bfu_isa/sqlite}"
fa9e4066f08beec538e775443c5be79dd423fcabahrens [[ -x $sqlite ]] || sqlite=/lib/svc/bin/sqlite
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [[ ! -x $sqlite ]]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "no sqlite binary: skipped integrity check" >&2
c5904d138f3bdf0762dbf452a43d5a5c387ea6a8eschrock return
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens rm -f /tmp/bfurepo.db;
fa9e4066f08beec538e775443c5be79dd423fcabahrens cp $rootprefix/$repository /tmp/bfurepo.db
c5904d138f3bdf0762dbf452a43d5a5c387ea6a8eschrock bad_errors=`echo "PRAGMA integrity_check;" |
fa9e4066f08beec538e775443c5be79dd423fcabahrens $sqlite /tmp/bfurepo.db 2>&1 | grep -v '^ok$'`
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [[ $? -eq 0 ]]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "integrity check failed:" >&2
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "$bad_errors" >&2
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo >&2
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [[ $force_override = no ]]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens cat >&2 <<EOF
fa9e4066f08beec538e775443c5be79dd423fcabahrensReseed the repository (see http://greenline.eng/quickstart.shtml#newrep)
c5904d138f3bdf0762dbf452a43d5a5c387ea6a8eschrockbefore BFUing (or use the -f flag to force BFU to continue). Re-seeding
fa9e4066f08beec538e775443c5be79dd423fcabahrenswill lose all smf(5) customizations.
fa9e4066f08beec538e775443c5be79dd423fcabahrensEOF
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens echo >&2
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens exit 2;
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens else
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens echo "driving on anyway" >&2
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens fi
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens else
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens echo "passed integrity check" >&2;
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens fi
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens}
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrenssmf_bkbfu_warning() {
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens print ""
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens print "*************************************************************"
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens print " WARNING: BFU'ing $1 backwards across 5090532."
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens print " Fixes have been made but the services cannot be refreshed"
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens print " on the $1's inactive repository. Next boot for the"
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens print " $1 will probably result in maintenance mode due to"
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens print " dependency cycles. If so, at the $1's console, run:"
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens print ""
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens print " /usr/sbin/svcadm refresh system/sysidtool:system"
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens print " /usr/sbin/svcadm refresh system/sysidtool:net"
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens print " /usr/sbin/svcadm clear milestone/single-user"
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens print " /usr/sbin/svcadm clear system/sysidtool:system"
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens print " /usr/sbin/svcadm clear system/sysidtool:net"
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens print ""
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens print " to resolve."
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens print " To avoid these problems, reseed the zone's repository."
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens print " See http://greenline.eng/quickstart.shtml#newrep ."
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens print " Note: Re-seeding will lose all smf(5) customization."
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens print "*************************************************************"
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens print ""
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens}
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrenssmf_is_sysconfig() {
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens #
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # Return success if going to post-5090532, i.e. post-sysconfig bits
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens #
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # By now, we're going to post-smf bits - so multi-user.xml must
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # exist (since it was introduced by first SMF putback).
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens #
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # Function return status is return status of last command executed.
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # So, no need to check return status from grep below.
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens grep sysconfig $rootprefix/var/svc/manifest/milestone/multi-user.xml \
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens >/dev/null 2>&1
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens}
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrenssmf_bkbfu_past_sysconfig() {
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens #
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # Check if bfu'ing back from post-5090532 to pre-5090532 bits.
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens #
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens if [[ -f $rootprefix/var/svc/manifest/milestone/sysconfig.xml ]] &&
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens ! smf_is_sysconfig ; then
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens return 0
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens fi
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens return 1
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens}
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrenssmf_bkbfu_repair_sysconfig() {
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens #
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # Perform the necessary corrections when bfu'ing backwards
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # from post-5090532 to pre-5090532 bits.
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens #
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # Get the pre-5090532 non-ON manifests, and issue minimal fixes
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # to the repository, to enable re-boot.
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens #
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens smf_copy_manifest pre-5090532/sysidtool.xml system
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens if [[ $zone = global && $karch = i86pc ]]; then
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens smf_copy_manifest pre-5090532/kdmconfig.xml platform/i86pc
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens fi
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens #
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # Now, remove sysidtool:{system, net}'s dependency on
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # single-user and filesystem-local.
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens #
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # If $rootprefix is not empty, this could be the global zone,
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens # with an alternate root BFU, or a non-global zone. For either
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens # case, the repository to be updated is not the live one: use
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens # SVCCFG_REPOSITORY to point to the repository to be updated.
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens #
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # Note that in the alternate-root case, doing this seems better
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # than forcing the user to re-seed, or to dis-allow it. The
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # issue of svccfg and the repository not matching seems remote,
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # given that from initial SMF integration (on10_64) to on10_74,
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # there was no mismatch. In the remote possibility that there is a
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # mis-match (in the future) causing these calls to be suspect,
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # the user is already being advised, via the warning message, to
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # reseed the repository in case of trouble. If a mis-match is ever
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # introduced, code such as this would have to be fixed, so this
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # aspect of the warning is useful only during the interim period.
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens #
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # NOTE that this is not an issue for non-global zones'
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # repositories - they couldn't be out-of-sync with
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # /tmp/bfubin/svccfg.
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens #
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [[ -n $rootprefix ]]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens export SVCCFG_REPOSITORY=$rootprefix/etc/svc/repository.db
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [[ $zone = global ]]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens smf_bkbfu_warning "alternate root"
fa9e4066f08beec538e775443c5be79dd423fcabahrens else
fa9e4066f08beec538e775443c5be79dd423fcabahrens smf_bkbfu_warning "zone"
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens #
fa9e4066f08beec538e775443c5be79dd423fcabahrens # Using the newer "-s" option to svccfg in the following is OK
fa9e4066f08beec538e775443c5be79dd423fcabahrens # since its introduction preceded 5090532 (and this routine wouldn't
fa9e4066f08beec538e775443c5be79dd423fcabahrens # be called unless the machine is running post-5090532 bits).
fa9e4066f08beec538e775443c5be79dd423fcabahrens #
fa9e4066f08beec538e775443c5be79dd423fcabahrens /tmp/bfubin/svccfg -s system/sysidtool:net delpg single-user
fa9e4066f08beec538e775443c5be79dd423fcabahrens /tmp/bfubin/svccfg -s system/sysidtool:system delpg single-user
fa9e4066f08beec538e775443c5be79dd423fcabahrens /tmp/bfubin/svccfg -s system/sysidtool:net delpg filesystem_local
fa9e4066f08beec538e775443c5be79dd423fcabahrens /tmp/bfubin/svccfg -s system/sysidtool:system delpg filesystem_local
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens #
fa9e4066f08beec538e775443c5be79dd423fcabahrens # On a live system, issue the refresh; For alternate root or non-global
fa9e4066f08beec538e775443c5be79dd423fcabahrens # zone, the user was asked to issue the refreshes and "clear"s in the
fa9e4066f08beec538e775443c5be79dd423fcabahrens # message above after a post-bfu reboot.
fa9e4066f08beec538e775443c5be79dd423fcabahrens #
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [[ -z $rootprefix ]]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens /tmp/bfubin/svcadm refresh system/sysidtool:system \
fa9e4066f08beec538e775443c5be79dd423fcabahrens system/sysidtool:net
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
ecc2d604e885a75cc75e647b5641af99d5a6f4a6bonwick
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens #
fa9e4066f08beec538e775443c5be79dd423fcabahrens # Now, reset SVCCFG_REPOSITORY, if it was set
fa9e4066f08beec538e775443c5be79dd423fcabahrens #
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens [[ -n $rootprefix ]] && unset SVCCFG_REPOSITORY
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens #
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # Remove the sysconfig.xml manifest when going back. So backward
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # bfu check continues to work, and all manifests are correct.
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens #
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens cat >> $rootprefix/var/svc/profile/upgrade <<-EOF
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens rm -f /var/svc/manifest/milestone/sysconfig.xml
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens EOF
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens}
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens#
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens# Return true if $file exists in $archive. $file may also be a pattern.
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens#
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrensarchive_file_exists()
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens{
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens archive=$1
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens file=$2
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens $ZCAT $cpiodir/${archive}${ZFIX} | cpio -it 2>/dev/null | \
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens egrep -s "$file"
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens}
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens#
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens# If we're no longer delivering the eeprom service, remove it from the system,
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens# as eeprom -I is removed as well.
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens#
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrenssmf_fix_i86pc_profile () {
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens mfst="var/svc/manifest/platform/i86pc/eeprom.xml"
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens profile="var/svc/profile/platform_i86pc.xml"
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens if [ ! "$karch" = "i86pc" ]; then
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens return
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens fi
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens if ! archive_file_exists generic.root "^$profile"; then
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens rm -f $rootprefix/$profile
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens rm -f $rootprefix/var/svc/profile/platform.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ ! -f $rootprefix/$mfst ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens return
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens if archive_file_exists generic.root "^$mfst"; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens return
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens rm -f $rootprefix/$mfst
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens #
fa9e4066f08beec538e775443c5be79dd423fcabahrens # we must disable via svccfg directly, as manifest-import runs after
fa9e4066f08beec538e775443c5be79dd423fcabahrens # this service tries to run
fa9e4066f08beec538e775443c5be79dd423fcabahrens #
fa9e4066f08beec538e775443c5be79dd423fcabahrens [[ -n "$rootprefix" ]] &&
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens export SVCCFG_REPOSITORY=$rootprefix/etc/svc/repository.db
fa9e4066f08beec538e775443c5be79dd423fcabahrens /tmp/bfubin/svccfg delete -f platform/i86pc/eeprom
fa9e4066f08beec538e775443c5be79dd423fcabahrens [[ -n "$rootprefix" ]] && unset SVCCFG_REPOSITORY
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens}
fa9e4066f08beec538e775443c5be79dd423fcabahrens
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrenssmf_apply_conf () {
fa9e4066f08beec538e775443c5be79dd423fcabahrens #
fa9e4066f08beec538e775443c5be79dd423fcabahrens # Go thru the original manifests and move any that were unchanged
fa9e4066f08beec538e775443c5be79dd423fcabahrens # (or are not system-provided) back to their proper location. This
fa9e4066f08beec538e775443c5be79dd423fcabahrens # will avoid superfluous re-import on reboot, as the inode and mtime
fa9e4066f08beec538e775443c5be79dd423fcabahrens # are both part of the hash.
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens #
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ -d $rootprefix/$old_mfst_dir ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens for f in `cd $rootprefix/$old_mfst_dir ; find . -type f`
fa9e4066f08beec538e775443c5be79dd423fcabahrens do
fa9e4066f08beec538e775443c5be79dd423fcabahrens old=$rootprefix/$old_mfst_dir/$f
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens new=$rootprefix/$new_mfst_dir/$f
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens if [ ! -f $new ]; then
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens mkdir -m 0755 -p `dirname $new`
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens mv $old $new
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens continue
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens cmp -s $old $new && mv $old $new
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens done
fa9e4066f08beec538e775443c5be79dd423fcabahrens rm -rf $rootprefix/$old_mfst_dir
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens fi
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens if [ -f $rootprefix/etc/init.d/inetd ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens #
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens # BFUing to non-SMF system -- undo our previous changes,
fa9e4066f08beec538e775443c5be79dd423fcabahrens # run an old hack, and skip the remainder of this function.
fa9e4066f08beec538e775443c5be79dd423fcabahrens #
fa9e4066f08beec538e775443c5be79dd423fcabahrens smf_inetd_reenable
fa9e4066f08beec538e775443c5be79dd423fcabahrens smf_tftp_reinstall
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens # Update inetd.conf only if we find rpc.metad file.
fa9e4066f08beec538e775443c5be79dd423fcabahrens [ -f $usr/sbin/rpc.metad ] &&
fa9e4066f08beec538e775443c5be79dd423fcabahrens inetd_conf_svm_hack
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens return
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens #
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # At this point, the archive in question is a SMF version. If
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # the smf(5) repository does not yet exist, create it by copying
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # the appropriate seed repository. Since updating of non-global
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # zones only occurs when the live system is bfu'ed, the
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # appropriate seed is guaranteed to exist under the /lib
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens # directory.
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens #
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens repository=$rootprefix/etc/svc/repository.db
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ ! -f $repository ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens print "Initializing service configuration repository ..."
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ $zone = global ]; then
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens cp $rootprefix/lib/svc/seed/global.db $repository
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens else
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens cp /lib/svc/seed/nonglobal.db $repository
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens chmod 0600 $repository
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens chown root:sys $repository
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens fi
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens print "Removing obsolete smf services ..."
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens for f in $smf_obsolete_manifests; do
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens smf_delete_manifest $f
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens done
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens smf_delete_methods
fa9e4066f08beec538e775443c5be79dd423fcabahrens smf_delete_renamed_manifests
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ $need_datalink = no ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens smf_cleanup_gldv3
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens print "Disabling unneeded inetd.conf entries ..."
fa9e4066f08beec538e775443c5be79dd423fcabahrens smf_inetd_disable
fa9e4066f08beec538e775443c5be79dd423fcabahrens smf_tftp_reinstall
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens print "Connecting platform and name service profiles ..."
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens rm -f $rootprefix/var/svc/profile/name_service.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens grep ldap $rootprefix/etc/nsswitch.conf >/dev/null 2>&1
fa9e4066f08beec538e775443c5be79dd423fcabahrens is_ldap=$?
fa9e4066f08beec538e775443c5be79dd423fcabahrens grep nisplus $rootprefix/etc/nsswitch.conf >/dev/null 2>&1
fa9e4066f08beec538e775443c5be79dd423fcabahrens is_nisplus=$?
fa9e4066f08beec538e775443c5be79dd423fcabahrens grep nis $rootprefix/etc/nsswitch.conf >/dev/null 2>&1
fa9e4066f08beec538e775443c5be79dd423fcabahrens is_nis=$?
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ $is_ldap = 0 ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens ns_profile=ns_ldap.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens elif [ $is_nisplus = 0 ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens ns_profile=ns_nisplus.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens elif [ $is_nis = 0 ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens ns_profile=ns_nis.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens else
fa9e4066f08beec538e775443c5be79dd423fcabahrens ns_profile=ns_files.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens ln -s $ns_profile $rootprefix/var/svc/profile/name_service.xml
fa9e4066f08beec538e775443c5be79dd423fcabahrens
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock rm -f $rootprefix/var/svc/profile/inetd_services.xml
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock ln -s inetd_upgrade.xml $rootprefix/var/svc/profile/inetd_services.xml
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock print "Marking converted services as enabled ..."
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock [ -f $rootprefix/etc/resolv.conf ] && smf_enable network/dns/client
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock [ -f $rootprefix/etc/inet/dhcpsvc.conf ] && \
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock smf_enable network/dhcp-server
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock # Not concerned about enabling/disabling rcap but will migrate
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock # configuration parameters if rcap.conf exists
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock #
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock if [ -f $rootprefix/etc/rcap.conf ]; then
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock migrate_rcap_conf
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock fi
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock if [ $zone = global ]; then
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock if [ -f $rootprefix/etc/dfs/dfstab ] &&
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock grep '^[ ]*[^# ]' $rootprefix/etc/dfs/dfstab \
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock > /dev/null; then
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock smf_enable network/nfs/server
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock fi
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock else
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock echo "/usr/sbin/svcadm disable network/nfs/server" >> \
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock $rootprefix/var/svc/profile/upgrade
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock fi
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock [ -f $rootprefix/etc/inet/ntp.conf ] && smf_enable network/ntp
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock domainname=`cat $rootprefix/etc/defaultdomain 2>/dev/null`
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock if [ ! -z "$domainname" -a -d $rootprefix/var/yp/$domainname ]; then
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock smf_enable network/nis/server
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock # Determining whether we're a NIS master requires
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock # looking through the maps.
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock cat >>$rootprefix/var/svc/profile/upgrade <<\_EOF
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock# Determine whether we are a YP master.
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrockdomain=`/usr/bin/domainname`
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrockhostname=`uname -n | cut -d. -f1 | tr '[A-Z]' '[a-z]'`
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrockif [ -x /usr/sbin/makedbm ]; then
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock if [ -f /var/yp/NISLDAPmapping ]; then
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock master=`/usr/sbin/makedbm -u /var/yp/\$domain/LDAP_passwd.byname | grep YP_MASTER_NAME | nawk '{ print $2 }'`
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock else
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock master=`/usr/sbin/makedbm -u /var/yp/\$domain/passwd.byname | grep YP_MASTER_NAME | nawk '{ print $2 }'`
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrensfi
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens# If we are the master server, enable appropriate services.
fa9e4066f08beec538e775443c5be79dd423fcabahrensif [ "$master" = "$hostname" -a "$YP_SERVER" = "TRUE" ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens /usr/sbin/svcadm enable network/nis/xfr
c5904d138f3bdf0762dbf452a43d5a5c387ea6a8eschrock /usr/sbin/svcadm enable network/nis/passwd
c5904d138f3bdf0762dbf452a43d5a5c387ea6a8eschrock
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ ! -f /var/yp/NISLDAPmapping ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens [ -f /var/yp/updaters ] && \
fa9e4066f08beec538e775443c5be79dd423fcabahrens /usr/svc/svcadm enable network/nis/update
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrensfi
fa9e4066f08beec538e775443c5be79dd423fcabahrens_EOF
c5904d138f3bdf0762dbf452a43d5a5c387ea6a8eschrock fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock # Check if mddbs don't exist on the image. If so, disable SVM services.
fa9e4066f08beec538e775443c5be79dd423fcabahrens MDDB_STATUS=1
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ -f $rootprefix/kernel/drv/md.conf ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens sed -e 's/#.*$//' $rootprefix/kernel/drv/md.conf | \
fa9e4066f08beec538e775443c5be79dd423fcabahrens egrep '^[ ]*mddb_bootlist' >/dev/null 2>&1
fa9e4066f08beec538e775443c5be79dd423fcabahrens MDDB_STATUS=$?
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ $MDDB_STATUS -ne 0 ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens for svc in metainit mdmonitor; do
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "/usr/sbin/svcadm disable system/$svc:default" >> \
fa9e4066f08beec538e775443c5be79dd423fcabahrens $rootprefix/var/svc/profile/upgrade
fa9e4066f08beec538e775443c5be79dd423fcabahrens done
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens for svc in meta mdcomm metamed metamh; do
088e9d477eee66081e407fbc5a33c4da25f66f6aeschrock echo "/usr/sbin/svcadm disable network/rpc/$svc:default" \
088e9d477eee66081e407fbc5a33c4da25f66f6aeschrock >> $rootprefix/var/svc/profile/upgrade
088e9d477eee66081e407fbc5a33c4da25f66f6aeschrock done
088e9d477eee66081e407fbc5a33c4da25f66f6aeschrock fi
088e9d477eee66081e407fbc5a33c4da25f66f6aeschrock
088e9d477eee66081e407fbc5a33c4da25f66f6aeschrock # Workaround inetd's handling of "tcp6/udp6" when no IPv6 interfaces
088e9d477eee66081e407fbc5a33c4da25f66f6aeschrock # are configured.
088e9d477eee66081e407fbc5a33c4da25f66f6aeschrock for svc in meta mdcomm metamed metamh; do
c5904d138f3bdf0762dbf452a43d5a5c387ea6a8eschrock echo "/usr/sbin/inetadm -m network/rpc/$svc:default proto=tcp" \
c5904d138f3bdf0762dbf452a43d5a5c387ea6a8eschrock ">/dev/null 2>&1" >> $rootprefix/var/svc/profile/upgrade
fa9e4066f08beec538e775443c5be79dd423fcabahrens done
c5904d138f3bdf0762dbf452a43d5a5c387ea6a8eschrock
c5904d138f3bdf0762dbf452a43d5a5c387ea6a8eschrock manifest_src=${MANIFEST_SRC-$GATE/public/smf}
c5904d138f3bdf0762dbf452a43d5a5c387ea6a8eschrock [[ -d $manifest_src ]] ||
c5904d138f3bdf0762dbf452a43d5a5c387ea6a8eschrock manifest_src=/net/onnv.eng/export/gate/public/smf
c5904d138f3bdf0762dbf452a43d5a5c387ea6a8eschrock [[ -d $manifest_src ]] || manifest_src=/net/greenline.eng/meta0/smf
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock if smf_bkbfu_past_sysconfig ; then
ec9f632e53cc822267588170e45d89b9dc72153fEric Schrock echo "BFU'ing backwards across 5090532! Now repairing..."
c5904d138f3bdf0762dbf452a43d5a5c387ea6a8eschrock smf_bkbfu_repair_sysconfig
c5904d138f3bdf0762dbf452a43d5a5c387ea6a8eschrock fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens #
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock # If bfu'ing milestone/sysconfig bits or onwards, update the
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock # corresponding non-ON manifests - sysidtool and kdmconfig.
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock #
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock sysidmfst=$rootprefix/var/svc/manifest/system/sysidtool.xml
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock kdmmfst=$rootprefix/var/svc/manifest/platform/i86pc/kdmconfig.xml
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock if smf_is_sysconfig ; then
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock if [[ ! -f $sysidmfst ]]; then
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock #
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock # if WOS build on machine is pre-greenline, and
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock # we're bfu'ing to the sysconfig bits.
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock #
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock smf_copy_manifest post-5090532/sysidtool.xml system
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock if [[ $zone = global ]]; then
fac3008cc3156093d29951128c236e1a6c4bc0e8eschrock smf_copy_method sysidtool-net
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore smf_copy_method sysidtool-system
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore fi
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore echo "Converted system/sysidtool (post-5090532)"
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore else
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore #
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore # If sysidtool.xml already exists, update it
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore # if necessary. Future updates of sysidtool.xml
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore # must occur in the dir: $manifest_src/post-5090532
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore #
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore smf_copy_manifest post-5090532/sysidtool.xml system
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore fi
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore if [[ $zone = global && $karch = i86pc ]]; then
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore if [[ ! -f $kdmmfst ]]; then
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore #
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens # if WOS build on machine is pre-greenline, and
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens # we're bfu'ing to the sysconfig bits.
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens #
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens smf_copy_manifest post-5090532/kdmconfig.xml \
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens platform/i86pc
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens smf_copy_method svc-kdmconfig
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens smf_cleanup_initd kdmconfig
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens echo "Converted platform/i86pc/kdmconfig"
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens echo "(post-5090532)"
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens else
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens #
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens # If kdmconfig.xml already exists, update
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens # it if necessary. Future updates of
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens # kdmconfig.xml must occur in the dir:
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore # $manifest_src/post-5090532
fac3008cc3156093d29951128c236e1a6c4bc0e8eschrock #
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock smf_copy_manifest post-5090532/kdmconfig.xml \
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens platform/i86pc
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock fi
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock fi
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore else
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock if [[ ! -f $sysidmfst ]]; then
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore smf_copy_manifest pre-5090532/sysidtool.xml system
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock if [[ $zone = global ]]; then
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore smf_copy_method sysidtool-net
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore smf_copy_method sysidtool-system
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock fi
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock echo "Converted system/sysidtool"
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock fi
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock if [[ $zone = global && $karch = i86pc && ! -f $kdmmfst ]];
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock then
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock smf_copy_manifest pre-5090532/kdmconfig.xml \
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock platform/i86pc
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock smf_copy_method svc-kdmconfig
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock smf_cleanup_initd kdmconfig
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock echo "Converted platform/i86pc/kdmconfig"
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock fi
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock fi
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens # If we've still got the old dtlogin manifest delivered by earlier
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens # versions of bfu, delete it, as it was broken and should have
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens # never been delivered. A new version delivered by the CDE
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens # consolidation should be left alone.
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens if [[ -f $rootprefix/var/svc/manifest/application/dtlogin.xml &&
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens `grep -c GLXXX \
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens $rootprefix/var/svc/manifest/application/dtlogin.xml` -gt 0 &&
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens -x /tmp/bfubin/svccfg ]]; then
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore # Delete the obsolete manifest.
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore rm -f $rootprefix/var/svc/manifest/application/dtlogin.xml
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore # Delete the service from repository, then use dtconfig -e to
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore # revert to whatever the WOS bits are using if dtlogin was
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore # enabled.
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore cat >> $rootprefix/var/svc/profile/upgrade <<-EOFA
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Mooreif /usr/bin/svcprop -q application/cde-login; then
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore if [ \`/usr/bin/svcprop -p general/enabled \
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore application/cde-login:default\` = "true" ]; then
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore do_dtconfig=1;
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore else
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore do_dtconfig=0;
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore fi
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock /usr/sbin/svccfg delete -f application/cde-login
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore type instance_refresh 2>&1 > /dev/null
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens if [ \$? = 0 ]; then
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens instance_refresh system/console-login
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock else
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens /usr/sbin/svcadm refresh system/console-login
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens fi
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore if [ \$do_dtconfig -eq 1 -a -x /usr/dt/bin/dtconfig ]; then
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore /usr/dt/bin/dtconfig -e
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore fi
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrockfi
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrockEOFA
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore fi
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock # Enable the inetd-upgrade service to convert any changes to inetd.conf
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock smf_enable network/inetd-upgrade
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock # If global zone, and bfu'ing from smf, and the inetd-upgrade
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore # service has an obsolete dependency, then add a clear of inetd
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock # and inetd-upgrade to the upgrade file as either may drop into
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore # maintenance due to a dependency loop resulting from the new
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens # inetd manifest
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore if [[ $zone = global && -x /tmp/bfubin/svccfg ]]; then
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore /tmp/bfubin/svcprop -q -p network/entities network/inetd-upgrade
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore if [[ $? = 0 ]]; then
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore echo "/usr/sbin/svcadm clear network/inetd" >> \
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore $rootprefix/var/svc/profile/upgrade
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore echo "/usr/sbin/svcadm clear network/inetd-upgrade" >> \
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore $rootprefix/var/svc/profile/upgrade
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore fi
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore fi
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore # If we're in the global zone, and using an alternate root, see if
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore # we are in an smf root. If so, import name-service-cache. If we're
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore # not bfu'ing an alternate root, and we're post-smf, import
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens # name-service-cache. This is to get name-service-cache(with correct
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore # dependencies) in the repository before reboot. If we're bfu'ing
fac3008cc3156093d29951128c236e1a6c4bc0e8eschrock # from pre-smf, this isn't an issue, as name-service-cache will be
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore # installed with correct dependencies.
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore if [[ $zone = global &&
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore -f $rootprefix/var/svc/manifest/system/name-service-cache.xml ]];
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore then
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore if [[ -n $rootprefix ]]; then
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore if [ -x /usr/sbin/svccfg ]; then
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore SVCCFG_REPOSITORY=$rootprefix/etc/svc/repository.db
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens /usr/sbin/svccfg import \
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore $rootprefix/var/svc/manifest/system/name-service-cache.xml
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock else
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock echo "Warning: This system does not have SMF, so I "
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock echo "cannot ensure the pre-import of "
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock echo "name-service-cache. If name-service-cache does "
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore echo "not work, reboot your alternate root to fix it."
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore fi
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore elif [ -x /tmp/bfubin/svccfg ]; then
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore /tmp/bfubin/svccfg import \
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore /var/svc/manifest/system/name-service-cache.xml
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore fi
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore fi
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore # If we're in the global zone, and using an alternate root, see if
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore # we are in an smf root. If so, import datalink and aggregation svcs.
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore # If we're not bfu'ing an alternate root, and we're post-smf,
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore # import datalink and aggregation. This is to get them
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore # in the repository before reboot. If we're bfu'ing from pre-smf,
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore # this isn't an issue, as they are in the seed repository.
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore if [[ $zone = global &&
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore -f $rootprefix/var/svc/manifest/network/datalink.xml ]]; then
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens if [[ -n $rootprefix ]]; then
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock if [ -x /usr/sbin/svccfg ]; then
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock SVCCFG_REPOSITORY=$rootprefix/etc/svc/repository.db
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore sed -e "s/enabled='true'/enabled='false'/" \
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore $rootprefix/var/svc/manifest/network/aggregation.xml \
fac3008cc3156093d29951128c236e1a6c4bc0e8eschrock | svccfg import -
fac3008cc3156093d29951128c236e1a6c4bc0e8eschrock sed -e "s/enabled='true'/enabled='false'/" \
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore $rootprefix/var/svc/manifest/network/datalink.xml \
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock | svccfg import -
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock sed -e "s/enabled='true'/enabled='false'/" \
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock $rootprefix/var/svc/manifest/network/datalink-init.xml \
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock | svccfg import -
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock else
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock echo "Warning: This system does not have SMF, so I"
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock echo "cannot ensure the pre-import of datalink and"
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock echo "network aggregation. If they do not work"
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock echo "reboot your alternate root to fix it."
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock fi
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock elif [ -x /tmp/bfubin/svccfg ]; then
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock sed -e "s/enabled='true'/enabled='false'/" \
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock /var/svc/manifest/network/aggregation.xml | \
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock svccfg import -
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock sed -e "s/enabled='true'/enabled='false'/" \
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock /var/svc/manifest/network/datalink.xml | \
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock svccfg import -
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock sed -e "s/enabled='true'/enabled='false'/" \
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock /var/svc/manifest/network/datalink-init.xml | \
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock svccfg import -
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock fi
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock #
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock # Make sure the services are enabled after reboot.
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock #
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock enable_next_boot svc:/network/aggregation:default
fa9e4066f08beec538e775443c5be79dd423fcabahrens enable_next_boot svc:/network/datalink:default
fa9e4066f08beec538e775443c5be79dd423fcabahrens enable_next_boot svc:/network/datalink-init:default
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens # Enable new NFS status and nlockmgr services if client is enabled
fa9e4066f08beec538e775443c5be79dd423fcabahrens cat >> $rootprefix/var/svc/profile/upgrade <<-EOF
fa9e4066f08beec538e775443c5be79dd423fcabahrens cl="svc:/network/nfs/client:default"
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ \`/usr/bin/svcprop -p general/enabled \$cl\` = "true" ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens /usr/sbin/svcadm enable svc:/network/nfs/status:default
fa9e4066f08beec538e775443c5be79dd423fcabahrens /usr/sbin/svcadm enable svc:/network/nfs/nlockmgr:default
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensEOF
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens kpmani="$rootprefix/var/svc/manifest/network/security/krb5_prop.xml"
fa9e4066f08beec538e775443c5be79dd423fcabahrens if grep svc-kdc.slave $kpmani > /dev/null 2>&1; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens cat >> $rootprefix/var/svc/profile/upgrade <<EOF
fa9e4066f08beec538e775443c5be79dd423fcabahrens # We are deleting and reimporting kpropd's manifest, because we
fa9e4066f08beec538e775443c5be79dd423fcabahrens # need to change the restarter.
fa9e4066f08beec538e775443c5be79dd423fcabahrens kpfmri="svc:/network/security/krb5_prop"
fa9e4066f08beec538e775443c5be79dd423fcabahrens kkfmri="svc:/network/security/krb5kdc:default"
fa9e4066f08beec538e775443c5be79dd423fcabahrens lkpmani="/var/svc/manifest/network/security/krb5_prop.xml"
fa9e4066f08beec538e775443c5be79dd423fcabahrens restarter=\`svcprop -c -p general/restarter \$kpfmri 2>&1\`
fa9e4066f08beec538e775443c5be79dd423fcabahrens case \$restarter in
fa9e4066f08beec538e775443c5be79dd423fcabahrens *network/inetd:default)
fa9e4066f08beec538e775443c5be79dd423fcabahrens kken=\`svcprop -c -p general/enabled \$kkfmri\`
fa9e4066f08beec538e775443c5be79dd423fcabahrens svccfg delete -f \$kpfmri
fa9e4066f08beec538e775443c5be79dd423fcabahrens svccfg import \$lkpmani
fa9e4066f08beec538e775443c5be79dd423fcabahrens # Enable kpropd if krb5kdc is enabled, since
fa9e4066f08beec538e775443c5be79dd423fcabahrens # krb5kdc would have run kpropd
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ \$kken = "true" ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens svcadm enable \$kpfmri
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens ;;
fa9e4066f08beec538e775443c5be79dd423fcabahrens esac
fa9e4066f08beec538e775443c5be79dd423fcabahrensEOF
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens # Enable print server if there are local queues
fa9e4066f08beec538e775443c5be79dd423fcabahrens queues=`echo $rootprefix/etc/lp/printers/*/configuration`
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ "$queues" != "$rootprefix/etc/lp/printers/*/configuration" ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens smf_enable application/print/server
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens # Enable rarpd and bootparamd if they would have been running pre-SMF
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ -d $rootprefix/tftpboot ] || [ -d $rootprefix/rplboot ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens smf_enable network/rarp
fa9e4066f08beec538e775443c5be79dd423fcabahrens smf_enable network/rpc/bootparams
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens # To handle the transition from pre-smf ipfilter to smf-aware ipfilter,
fa9e4066f08beec538e775443c5be79dd423fcabahrens # check if ipfilter had been enabled with at least one rule, and if so
fa9e4066f08beec538e775443c5be79dd423fcabahrens # enable the smf instance.
fa9e4066f08beec538e775443c5be79dd423fcabahrens if grep '^[ \t]*[^# \t]' $rootprefix/etc/ipf/ipf.conf >/dev/null 2>&1 &&
fa9e4066f08beec538e775443c5be79dd423fcabahrens [[ $zone = global ]]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens smf_enable network/ipfilter
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens touch $rootprefix/var/svc/profile/.upgrade_prophist
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens cat >> $rootprefix/var/svc/profile/upgrade <<EOF
fa9e4066f08beec538e775443c5be79dd423fcabahrens # We are deleting and reimporting dcs's manifest, because we
fa9e4066f08beec538e775443c5be79dd423fcabahrens # need to change the restarter.
fa9e4066f08beec538e775443c5be79dd423fcabahrens dcsfmri="svc:/platform/sun4u/dcs:default"
fa9e4066f08beec538e775443c5be79dd423fcabahrens dcsmani="/var/svc/manifest/platform/sun4u/dcs.xml"
fa9e4066f08beec538e775443c5be79dd423fcabahrens restarter=\`svcprop -c -p general/restarter \$dcsfmri 2>&1\`
fa9e4066f08beec538e775443c5be79dd423fcabahrens case \$restarter in
fa9e4066f08beec538e775443c5be79dd423fcabahrens *network/inetd:default)
fa9e4066f08beec538e775443c5be79dd423fcabahrens en=\`svcprop -c -p general/enabled \$dcsfmri\`
fa9e4066f08beec538e775443c5be79dd423fcabahrens svccfg delete -f \$dcsfmri
fa9e4066f08beec538e775443c5be79dd423fcabahrens svccfg import \$dcsmani
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ \$en = "true" ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens svcadm enable \$dcsfmri
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens ;;
fa9e4066f08beec538e775443c5be79dd423fcabahrens esac
fa9e4066f08beec538e775443c5be79dd423fcabahrensEOF
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens smf_fix_i86pc_profile
fa9e4066f08beec538e775443c5be79dd423fcabahrens}
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# The directboot putback moved the console property from
fa9e4066f08beec538e775443c5be79dd423fcabahrens# /boot/solaris/bootenv.rc to /boot/grub/menu.lst. It should be kept in both.
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrenscleanup_eeprom_console()
fa9e4066f08beec538e775443c5be79dd423fcabahrens{
fa9e4066f08beec538e775443c5be79dd423fcabahrens bootenvrc="$root/boot/solaris/bootenv.rc"
fa9e4066f08beec538e775443c5be79dd423fcabahrens menu_console=`eeprom console 2>/dev/null | \
fa9e4066f08beec538e775443c5be79dd423fcabahrens grep -v 'data not available' | cut -d= -f2-`
fa9e4066f08beec538e775443c5be79dd423fcabahrens bootenv_console=`grep '^setprop[ ]\{1,\}console\>' $bootenvrc`
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [ -n "$menu_console" ] && [ -z "$bootenv_console" ]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "setprop console '$menu_console'" >> $bootenvrc
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens}
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensEXTRACT_LOG=/tmp/bfu-extract-log.$$
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensrm -f $EXTRACT_LOG
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensextraction_error() {
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo error $* >> $EXTRACT_LOG
fa9e4066f08beec538e775443c5be79dd423fcabahrens}
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrens# Make a local copy of bfu in /tmp and execute that instead.
fa9e4066f08beec538e775443c5be79dd423fcabahrens# This makes us immune to loss of networking and/or changes
fa9e4066f08beec538e775443c5be79dd423fcabahrens# to the original copy that might occur during execution.
fa9e4066f08beec538e775443c5be79dd423fcabahrens#
fa9e4066f08beec538e775443c5be79dd423fcabahrenscd .
fa9e4066f08beec538e775443c5be79dd423fcabahrensabspath=`[[ $0 = /* ]] && print $0 || print $PWD/$0`
fa9e4066f08beec538e775443c5be79dd423fcabahrensif [[ $abspath != /tmp/* ]]; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens localpath=/tmp/bfu.$$
fa9e4066f08beec538e775443c5be79dd423fcabahrens print "Copying $abspath to $localpath"
fa9e4066f08beec538e775443c5be79dd423fcabahrens cp $abspath $localpath
fa9e4066f08beec538e775443c5be79dd423fcabahrens chmod +x $localpath
fa9e4066f08beec538e775443c5be79dd423fcabahrens print "Executing $localpath $*\n"
fa9e4066f08beec538e775443c5be79dd423fcabahrens exec $localpath $*
fa9e4066f08beec538e775443c5be79dd423fcabahrensfi
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensexport PATH=/usr/bin:/usr/sbin:/sbin
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensusage() {
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "Usage:"
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo " bfu [-fh] <archive_dir> [root-dir]"
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "\tUpdate a single machine by loading archives on root-dir."
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "\troot-dir defaults to / (a live bfu).\n"
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo " bfu -c [-fh] <archive_dir> <exec-dir>"
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "\tUpdate all diskless clients by loading archives on each client"
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "\tthat mounts exec-dir as /usr. <exec-dir> must start with"
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "\t/export/exec and each client's root must be in /export/root.\n"
fa9e4066f08beec538e775443c5be79dd423fcabahrens echo "\t-f force bfu to continue even if it doesn't seem safe"
fa9e4066f08beec538e775443c5be79dd423fcabahrens fail "\t-h|-help print this usage message and exit\n"
fa9e4066f08beec538e775443c5be79dd423fcabahrens}
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensdiskless=no
fa9e4066f08beec538e775443c5be79dd423fcabahrensforce_override=no
fa9e4066f08beec538e775443c5be79dd423fcabahrenswhile [ $# -gt 0 ]; do
fa9e4066f08beec538e775443c5be79dd423fcabahrens case $1 in
fa9e4066f08beec538e775443c5be79dd423fcabahrens -c) diskless=yes;;
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock -f) force_override=yes;;
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock -h|-help) usage;;
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock *) break;;
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock esac
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock shift
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrockdone
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock# Variables for x86 platforms
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrockboot_is_pcfs=no
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrockhave_realmode=no
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrockis_pcfs_boot=no
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrockneed_datalink=no
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrocknew_dladm=no
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock# Set when moving to either directboot or multiboot
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrockmulti_or_direct=no
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock#
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock# Shows which type of archives we have, which type of system we are
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock# running on (before the bfu), and what the failsafe archives are
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock# (again, before the bfu). failsafe_type is only needed on diskful
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock# bfu's, so it's not set in the diskless case.
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock# Possible values: unknown, dca, multiboot, directboot
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens#
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrockarchive_type=unknown
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrenssystem_type=unknown
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrensfailsafe_type=unknown
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrocktest $# -ge 1 || usage
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrockif [ -x /usr/bin/ppriv ]; then
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock # We prefer to use ppriv, as it is a more accurate test, and also
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock # has the benefit of preventing use from within a nonglobal zone.
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock ppriv $$ | grep -w "E: all" > /dev/null 2>&1 || \
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock fail "bfu requires all privileges"
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrockelse
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock # Fall back to old id check if system does not yet have ppriv.
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock uid=`id | nawk '{print $1}'`
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock [ "$uid" = "uid=0(root)" ] || \
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock fail "You must be super-user to run this script."
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrockfi
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrockbfu_isa=`uname -p`
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrenstarget_isa=$bfu_isa
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrockkarch=`uname -m`
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrensplat=`uname -i`
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrockcpiodir=$1
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrockif [ "$cpiodir" = again ]; then
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock cpiodir=`nawk '/^bfu.ed from / { print $3; exit }' /etc/motd`
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrockfi
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens[[ "$cpiodir" = */* ]] || cpiodir=$ARCHIVE/archives/$target_isa/$1
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens[[ "$cpiodir" = /* ]] || fail "archive-dir must be an absolute path"
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrockcd $cpiodir
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrockcase `echo generic.root*` in
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock generic.root) ZFIX=""; ZCAT="cat";;
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock generic.root.gz) ZFIX=".gz"; ZCAT="gzip -d -c";;
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock generic.root.Z) ZFIX=".Z"; ZCAT="zcat";;
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens *) fail "generic.root missing or in unknown compression format";;
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrensesac
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens
ff64c0f7947882a0dbee45c31d69cb30bd003e5fMatthew Ahrens#
ff64c0f7947882a0dbee45c31d69cb30bd003e5fMatthew Ahrens# Determine what kind of archives we're installing, using the following rules:
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens#
ff64c0f7947882a0dbee45c31d69cb30bd003e5fMatthew Ahrens# 1. If strap.com is present, the archives are pre-multiboot
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens# 2. If symdef is present, the archives are directboot
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens# 3. Otherwise, the archives are multiboot
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens#
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrensif [ $target_isa = i386 ]; then
ff64c0f7947882a0dbee45c31d69cb30bd003e5fMatthew Ahrens if [ -f $cpiodir/i86pc.boot$ZFIX ] && \
ff64c0f7947882a0dbee45c31d69cb30bd003e5fMatthew Ahrens archive_file_exists i86pc.boot "strap.com"; then
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens archive_type=dca
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens elif [ -f $cpiodir/i86pc.root$ZFIX ] && \
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens archive_file_exists i86pc.boot symdef; then
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens archive_type=directboot
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens multi_or_direct=yes
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens else
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens archive_type=multiboot
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens multi_or_direct=yes
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens fi
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrensfi
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrensif [ $diskless = no ]; then
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens root=${2:-/}
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens [[ "$root" = /* ]] || fail "root-dir must be an absolute path"
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens usrroot=$root
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens usr=${usrroot%/}/usr
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens rootlist=$root
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens [[ -f $root/etc/system ]] || \
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens fail "$root/etc/system not found; nonglobal zone target not allowed"
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens
ff64c0f7947882a0dbee45c31d69cb30bd003e5fMatthew Ahrens # Make sure we extract the sun4u-us3 libc_psr.so.1
ff64c0f7947882a0dbee45c31d69cb30bd003e5fMatthew Ahrens if [ -d $root/platform/sun4u -a \
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens ! -d $root/platform/sun4u-us3 ]
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens then
ff64c0f7947882a0dbee45c31d69cb30bd003e5fMatthew Ahrens mkdir $root/platform/sun4u-us3
ff64c0f7947882a0dbee45c31d69cb30bd003e5fMatthew Ahrens chmod 755 $root/platform/sun4u-us3
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens chown root $root/platform/sun4u-us3
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens chgrp sys $root/platform/sun4u-us3
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens fi
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens if [ $karch != $plat -a -f ${cpiodir}/${plat}.usr$ZFIX ]; then
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens usrarchs="$karch $plat"
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens else
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens usrarchs="$karch"
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens fi
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens if [ $karch != $plat -a -f ${cpiodir}/${plat}.root$ZFIX ]; then
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens rootarchs="$karch $plat"
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens else
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens rootarchs="$karch"
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens fi
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens if [ -h ${root}/platform/${plat} ]; then
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens rm -f ${root}/platform/${plat}
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens fi
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens if [ -h ${usr}/platform/${plat} ]; then
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens rm -f ${usr}/platform/${plat}
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens fi
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens if [ $plat != $karch -a -f ${cpiodir}/${plat}.root$ZFIX \
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens -a -f ${cpiodir}/${plat}.usr$ZFIX ]
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens then
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens cd $cpiodir
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens #
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens # Look through all the archives we build and match
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens # the names of built archives with the names of
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens # directories installed on this machine. We assume
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens # here that we can get the names of all architectures
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens # by pattern matching the names of .root archives - so
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens # if we ever had a case where we had only a .usr archive
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens # we wouldn't find that archive.
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens #
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens for i in *.root*
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens do
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens platname=${i%.root*}
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens if [ -z "${platname}" -o ${platname} = $karch -o \
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens $platname = generic -o ${platname} = $plat ]; then
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens continue;
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens fi
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens if [ -d ${root}/platform/${platname} -o \
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens -h ${root}/platform/${platname} ]; then
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens rootarchs="${rootarchs} ${platname}"
ad135b5d644628e791c3188a6ecbd9c257961ef8Christopher Siden fi
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens if [ -d ${usr}/platform/${platname} -o \
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens -h ${usr}/platform/${platname} ]; then
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens usrarchs="${usrarchs} ${platname}"
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens fi
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens if [ -h ${root}/platform/${platname} ]; then
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens rm -f ${root}/platform/${platname}
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens fi
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens if [ -h ${usr}/platform/${platname} ]; then
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens rm -f ${usr}/platform/${platname}
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens fi
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens done
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens fi
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens rootslice=`df -k $root | nawk 'NR > 1 { print $1 }' | sed s/dsk/rdsk/`
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens print "Loading $cpiodir on $root"
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrenselse
ad135b5d644628e791c3188a6ecbd9c257961ef8Christopher Siden usrroot=$2
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens usr=$2/usr
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens [[ "$usr" = /export/exec/* ]] || fail "exec-dir $usrroot sounds bogus"
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens case $2 in
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens *sparc*)
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens target_isa=sparc ;;
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens *i386*)
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens target_isa=i386 ;;
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens esac
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens cd $cpiodir
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens test -f generic.root$ZFIX || fail "$cpiodir/generic.root$ZFIX missing"
ad135b5d644628e791c3188a6ecbd9c257961ef8Christopher Siden allarchs=$(echo $(ls *.root$ZFIX | grep -v generic.root$ZFIX | \
ad135b5d644628e791c3188a6ecbd9c257961ef8Christopher Siden sed -e 's/.root.*//'))
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens # XXX Pick karch as last available root arch
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens karch=${allarchs##* }
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens # XXX Pick plat as first available root arch
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens plat=${allarchs%% *}
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens rootlist=""
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens for root in /export/root/*
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens do
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens test -f $root/etc/vfstab &&
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens egrep -s $usrroot $root/etc/vfstab &&
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens rootlist="$rootlist $root"
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens done
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens test -n "$rootlist" || fail "no clients to upgrade"
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens print "Loading $cpiodir usr archives on:\n\t$usr\n"
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens print "Loading $cpiodir root archives on:"
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens for root in $rootlist
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens do
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens print "\t$root"
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens done
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrensfi
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrensif grep '^[ ]*zfsroot:' $root/etc/system >/dev/null && \
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens archive_file_exists i86pc.boot boot/grub/zfs_stage1_5; then
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens echo "Cannot BFU a system with the mountroot version"\
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens "of zfs boot support."
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens echo "For information on how to transition this system to the new"
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens echo "zfs boot support, see:"
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens echo "http://www.opensolaris.org/os/community/zfs/boot/zfsboot-manual/mntroot-transition/"
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens fail ""
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrensfi
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrensnss_lib="$usr/lib/mps/libnss3.so"
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrensnss_lib64="$usr/lib/mps/64/libnss3.so"
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrensvalid_rpath="\$ORIGIN:/usr/lib/mps/secv1:/usr/lib/mps"
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrensrpath_msg="R(UN)?PATH from file ${nss_lib}\)"
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrensif [ ! -x /usr/bin/ldd ]; then
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens if [ "$force_override" = yes ]; then
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens echo "/usr/bin/ldd is missing but -f is set; continuing."
ff64c0f7947882a0dbee45c31d69cb30bd003e5fMatthew Ahrens else
ff64c0f7947882a0dbee45c31d69cb30bd003e5fMatthew Ahrens echo "/usr/bin/ldd is missing."
ff64c0f7947882a0dbee45c31d69cb30bd003e5fMatthew Ahrens fail "Install the SUNWtoo package."
ff64c0f7947882a0dbee45c31d69cb30bd003e5fMatthew Ahrens fi
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrensfi
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrensnss_rpath=`ldd -s $nss_lib | egrep "$rpath_msg" | head -1 | cut -d'=' -f2 | \
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens awk '{print $1}'`
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrensupdate_script="/ws/onnv-gate/public/bin/update_nsspkgs"
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrensif [ $valid_rpath != "$nss_rpath" ]; then
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens if [ "$force_override" = yes ]; then
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens echo "$nss_lib is not valid but -f is set; continuing."
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens else
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens echo "$nss_lib is not valid."
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens fail "Run $update_script to update the SUNWtls package."
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens fi
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrensfi
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrensif [ $target_isa = i386 -a ! -f $nss_lib64 ]; then
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens echo "$nss_lib64 does not exist."
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens fail "Run $update_script to update the NSS packages."
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrensfi
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrensupdate_script="/ws/onnv-gate/public/bin/migrate_bind9"
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrensif [[ ! -f $usr/lib/dns/libdns.so ]] && ! $ZCAT $cpiodir/generic.usr$ZFIX | \
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens cpio -it 2>/dev/null | egrep -s '^usr/sbin/ndc' ; then
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens if [ "$force_override" = yes ]; then
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens echo "BIND 9 has not been installed, but -f is set; continuing."
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens else
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens echo "BIND 8 has been removed from ON; BIND 9 is available from SFW."
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens fail "Run $update_script to migrate to BIND 9."
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling fi
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrensfi
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrensupdate_script="/ws/onnv-gate/public/bin/update_ce"
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrensif ifconfig -a | egrep '^ce' >/dev/null 2>/dev/null; then
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens # CE version 1.148 or later is required
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens cever=`modinfo | grep 'CE Ethernet' | sed 's/.*v1\.//' | tr -d ')' | \
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens nawk '{ if ($1 < 148) print "BAD"; else print $1 }'`
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens if [ "$cever" = "BAD" ]; then
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens fail "You must run $update_script to upgrade your ce driver."
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens fi
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrensfi
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrensupdate_script="/ws/onnv-gate/public/bin/update_dbus"
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrensif [ ! -x $usr/lib/dbus-daemon ]; then
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens fail "Run $update_script to update D-Bus."
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrensfi
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling#
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens# We need biosdev if we're moving from pre-multiboot to multiboot or directboot
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens# kernels.
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens#
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrensif [ $target_isa = i386 ] && [ $multi_or_direct = yes ] && [ $diskless = no ]
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrensthen
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens prtconf -v | grep biosdev >/dev/null 2>&1
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens if [ $? -ne 0 ] && [ ! -f $rootprefix/platform/i86pc/multiboot ]; then
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens echo "biosdev cannot be run on this machine."
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens echo "Transitioning from classic to multiboot requires a"
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens echo "bootconf which is compatible with biosdev."
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens echo "bfu to onnv_12 first, then to a build with multiboot."
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens fail ""
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens fi
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrensfi
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrensif $ZCAT $cpiodir/generic.root$ZFIX | cpio -it 2>/dev/null | \
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens grep datalink.conf > /dev/null 2>&1 ; then
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens need_datalink=yes
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrensfi
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens#
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens# Check whether the archives have an etc/dladm directory; this is
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens# later used to determine if aggregation.conf needs to be moved.
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens#
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrensif $ZCAT $cpiodir/generic.root$ZFIX | cpio -it 2>/dev/null | \
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens grep etc/dladm > /dev/null 2>&1 ; then
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens new_dladm=yes
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrensfi
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrenstime_ref=/tmp/bfu.time_ref.$$
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrensrm -f $time_ref
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrenstouch $time_ref || fail "$time_ref: Unable to create time reference."
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrenstime_ref_seconds=$SECONDS
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrensprint "\nCreating bfu execution environment ..."
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens#
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens# Save off a few critical libraries and commands, so that bfu will
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens# continue to function properly even in the face of major
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens# kernel/library/command incompatibilities during a live upgrade.
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens#
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrensbfucmd="
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens /usr/bin/awk
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens /usr/bin/cat
2e2c135528b3edfe9aaf67d1f004dc0202fa1a54Matthew Ahrens /usr/bin/chgrp
2e2c135528b3edfe9aaf67d1f004dc0202fa1a54Matthew Ahrens /usr/bin/chmod
2e2c135528b3edfe9aaf67d1f004dc0202fa1a54Matthew Ahrens /usr/bin/chown
2e2c135528b3edfe9aaf67d1f004dc0202fa1a54Matthew Ahrens /usr/bin/cmp
2e2c135528b3edfe9aaf67d1f004dc0202fa1a54Matthew Ahrens /usr/bin/cp
2e2c135528b3edfe9aaf67d1f004dc0202fa1a54Matthew Ahrens /usr/bin/cpio
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens /usr/bin/csh
2e2c135528b3edfe9aaf67d1f004dc0202fa1a54Matthew Ahrens /usr/bin/cut
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens /usr/bin/date
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens /usr/bin/dd
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens /usr/bin/df
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens /usr/bin/diff
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens /usr/bin/du
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens /usr/bin/echo
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens /usr/bin/ed
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens /usr/bin/egrep
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens /usr/bin/env
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens /usr/bin/ex
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens /usr/bin/expr
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens /usr/bin/false
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens /usr/bin/fgrep
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens /usr/bin/file
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens /usr/bin/find
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens /usr/bin/gettext
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens /usr/bin/grep
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens /usr/bin/head
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens /usr/bin/id
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens /usr/bin/ksh
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens /usr/bin/line
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens /usr/bin/ln
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens /usr/bin/ls
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens /usr/bin/mkdir
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens /usr/bin/mktemp
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens /usr/bin/more
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens /usr/bin/mv
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens /usr/bin/nawk
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens /usr/bin/pgrep
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens /usr/bin/pkginfo
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens /usr/bin/pkill
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens /usr/bin/printf
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens /usr/bin/ps
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens /usr/bin/ptree
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens /usr/bin/rm
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens /usr/bin/rmdir
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens /usr/bin/sed
9966ca11f4a1481acce85f690fa59e4084050627Matthew Ahrens /usr/bin/sh
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/bin/sleep
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/bin/sort
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/bin/strings
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/bin/stty
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/bin/su
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/bin/sum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/bin/tail
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/bin/tee
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/bin/touch
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/bin/tr
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/bin/true
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/bin/truss
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/bin/tty
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/bin/uname
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/bin/uniq
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/bin/uptime
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/bin/vi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/bin/w
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/bin/wc
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/bin/xargs
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/bin/zcat
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/sbin/add_drv
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/sbin/chroot
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/sbin/halt
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/sbin/lockfs
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/sbin/lofiadm
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/sbin/mkfile
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/sbin/mkfs
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/sbin/mknod
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/sbin/mount
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/sbin/newfs
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/sbin/pkgrm
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/sbin/prtconf
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/sbin/reboot
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/sbin/sync
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/sbin/tar
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/sbin/uadmin
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/sbin/umount
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/sbin/wall
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/sbin/zonecfg
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum ${FASTFS-$GATE/public/bin/$bfu_isa/fastfs}
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens ${GZIPBIN-$GATE/public/bin/$bfu_isa/gzip}
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum"
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# Scripts needed by BFU. These must be modified to use the interpreters in
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# /tmp/bfubin. The interpreters in /usr/bin may not be compatible with the
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# libraries in the archives being extracted.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumbfuscr="
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum ${ACR-${GATE}/public/bin/acr}
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum"
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# basename and dirname may be ELF executables, not shell scripts;
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# make sure they go into the right list.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumif `file /usr/bin/basename | grep ELF >/dev/null`
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumthen bfucmd="$bfucmd /usr/bin/basename"
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumelse bfuscr="$bfuscr /usr/bin/basename"
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumfi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumif `file /usr/bin/dirname | grep ELF >/dev/null`
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumthen bfucmd="$bfucmd /usr/bin/dirname"
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumelse bfuscr="$bfuscr /usr/bin/dirname"
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumfi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumrm -rf /tmp/bfubin
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaummkdir /tmp/bfubin
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumset $bfucmd
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumisalist=`isalist`
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumwhile [ $# -gt 0 ]
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumdo
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum dir=${1%/*}
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cmd=${1##*/}
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cd $dir
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum isacmd=`(find $isalist -name $cmd 2>/dev/null; echo $cmd) | head -1`
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cp $dir/$isacmd /tmp/bfubin || fail "cannot copy $dir/$isacmd"
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum shift
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrensdone
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens#
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens# Optional commands. We warn, but do not abort, if we are crossing a
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens# feature boundary (where a command is not present in the parent).
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# Clauses requiring these commands must explicitly test for their
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# presence in /tmp/bfubin.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumbfuoptcmd="
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /sbin/biosdev
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens /sbin/bootadm
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /sbin/installgrub
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/sbin/fdisk
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/sbin/metastat
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/bin/mkisofs
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens /usr/sbin/svcadm
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/sbin/svccfg
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/bin/svcprop
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum"
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumset $bfuoptcmd
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumisalist=`isalist`
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumwhile [ $# -gt 0 ]
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumdo
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum dir=${1%/*}
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cmd=${1##*/}
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cd $dir
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum isacmd=`(find $isalist -name $cmd 2>/dev/null; echo $cmd) | head -1`
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cp $dir/$isacmd /tmp/bfubin 2>/dev/null
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum shift
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumdone
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# set up installgrub and friends if transitioning to multiboot or directboot
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# do this now so ldd can determine library dependencies
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# We split the binaries into two groups: the type where we want to make any
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# effort to get the newest version (like symdef and bootadm), and the type
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# where any old version will do (like installgrub and biosdev).
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# If we're bfu'ing across the directboot/multiboot boundary, we need the new
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# bootadm and symdef to properly handle menu.lst changes. If the system is
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# directboot, we can use the local copies. If the system is multiboot but
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# the archives are directboot, we extract the binaries early. Otherwise,
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# we're not crossing the boundary, and which one we use doesn't matter.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens# NB - if bootadm or symdef is ever changed to require a new library, the
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# early extraction will blow up horribly.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# For testing purposes, a user can set DIRECTBOOT_BIN_DIR in the environment,
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# and we'll use that instead.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark ShellenbaumMULTIBOOT_BIN_DIR=${MULTIBOOT_BIN_DIR:=${GATE}/public/multiboot}
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumhave_new_bootadm=unknown
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumif [ -x $root/boot/solaris/bin/symdef ] && \
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum $root/boot/solaris/bin/symdef $root/platform/i86pc/kernel/unix dboot_image
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumthen
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum root_is_directboot=yes
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumelse
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum root_is_directboot=no
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumfi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# A comma-separated list of the command and the archive it's in
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaummultiboot_new_cmds="
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum sbin/bootadm,generic.sbin
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum boot/solaris/bin/symdef,i86pc.boot
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum"
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumif [ $multi_or_direct = yes ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum for line in $multiboot_new_cmds
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum do
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cmd=${line%,*}
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum file=${cmd##*/}
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum archive=${line#*,}
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum if [ -n "$DIRECTBOOT_BIN_DIR" ] && \
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum [ -f $DIRECTBOOT_BIN_DIR/$file ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cp $DIRECTBOOT_BIN_DIR/$file /tmp/bfubin/
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum else
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum if [ $root_is_directboot = yes ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cp $root/$cmd /tmp/bfubin/
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum have_new_bootadm=yes
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum elif [ $archive_type = directboot ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum DBOOT_TMPDIR=/tmp/dboot.$$
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum trap "rm -rf $DBOOT_TMPDIR" EXIT
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum OLD_PWD=$(pwd)
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm -rf $DBOOT_TMPDIR
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum mkdir $DBOOT_TMPDIR
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cd $DBOOT_TMPDIR
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum $ZCAT $cpiodir/${archive}$ZFIX | \
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cpio -id "$cmd" 2>/dev/null
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum if [ -x $cmd ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cp $cmd /tmp/bfubin/
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum have_new_bootadm=yes
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum fi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cd $OLD_PWD
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm -rf $DBOOT_TMPDIR
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum trap - EXIT
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum fi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum fi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum #
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # If all else fails, grab the local version
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum #
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum if [ ! -x /tmp/bfubin/$file ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum [ -x /$cmd ] && cp /$cmd /tmp/bfubin
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum fi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum done
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum if [ $archive_type = directboot ] && [ $root_is_directboot = yes ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cleanup_eeprom_console
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum fi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumfi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaummultiboot_cmds="
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /sbin/biosdev
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /sbin/installgrub
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum"
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumcopying_mboot_cmds=no
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumif [ $multi_or_direct = yes ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum for cmd in $multiboot_cmds
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum do
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum file=`basename $cmd`
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum if [ -f $cmd ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cp $cmd /tmp/bfubin
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum elif [ -n "$DIRECTBOOT_BIN_DIR" ] &&
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum [ -d $DIRECTBOOT_BIN_DIR ] &&
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum [ -x $DIRECTBOOT_BIN_DIR/$file ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cp $DIRECTBOOT_BIN_DIR/$file /tmp/bfubin/
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum else
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum if [ ! -d $MULTIBOOT_BIN_DIR ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum echo "$MULTIBOOT_BIN_DIR: not found"
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum elif [ ! -f $MULTIBOOT_BIN_DIR/$file ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum echo "$MULTIBOOT_BIN_DIR/$file: not found"
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum fi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum if [ $copying_mboot_cmds = no ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum echo "installing files from $MULTIBOOT_BIN_DIR"
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum copying_mboot_cmds=yes
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum fi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cp $MULTIBOOT_BIN_DIR/$file /tmp/bfubin
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum fi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum done
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumfi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# If available, use ldd to determine which libraries bfu depends on.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# Otherwise, just make an educated guess.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumif [ -x /usr/bin/ldd ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum bfulib="`ldd /tmp/bfubin/* | nawk '$3 ~ /lib/ { print $3 }' | sort -u`"
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumelse
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum bfulib="
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /lib/libc.so.1
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /lib/libm.so.2
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /lib/libdoor.so.1
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /lib/libm.so.2
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /lib/libmd.so.1
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /lib/libmd5.so.1
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /lib/libnvpair.so.1
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /lib/libscf.so.1
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /lib/libuutil.so.1
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/lib/libbsm.so.1
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/lib/libc2.so
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/lib/libdl.so.1
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/lib/libelf.so.1
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/lib/libkstat.so.1
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/lib/libmapmalloc.so.1
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/lib/libmp.so.1
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/lib/libnsl.so.1
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/lib/libpam.so.1
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/lib/libsec.so.1
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/lib/libsocket.so.1
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/lib/libtecla.so.1
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum "
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumfi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# add dlopen()'ed stuff
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumbfulib="
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum $bfulib
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /lib/ld.so.1
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /usr/lib/nss_*
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum"
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# add libc_psr.so.1, if available and not empty
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumif [ -s /platform/`uname -i`/lib/libc_psr.so.1 ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum bfulib="
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum $bfulib
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /platform/`uname -i`/lib/libc_psr.so.1
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum "
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumfi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumrm -rf /tmp/bfulib /tmp/bl
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaummkdir /tmp/bfulib /tmp/bl
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# Create 64 bit directory structure and determine 64 bit arch name.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumif [ -h /usr/lib/64 ]
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumthen
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum link=`ls -dl /usr/lib/64 | awk '{print $NF}'`
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum ln -s $link /tmp/bfulib/64
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum ln -s $link /tmp/bl/64
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum mkdir /tmp/bfulib/$link /tmp/bl/$link
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum bfulib="$bfulib /usr/lib/64/nss_*"
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum #
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # Copy libraries to proper directories
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum #
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum for lib in $bfulib
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum do
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum case $lib in
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum */64/* | */$link/*)
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cp $lib /tmp/bfulib/64;;
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum *)
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cp $lib /tmp/bfulib;;
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum esac
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum done
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum #
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # Private 64 bit runtime linker.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum #
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cp /lib/64/ld.so.1 /tmp/bfulib/64/bf.1
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cp /lib/64/ld.so.1 /tmp/bl/64/bf.1
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumelse
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cp $bfulib /tmp/bfulib
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumfi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumcp /lib/ld.so.1 /tmp/bfulib/bf.1 # bfu's private runtime linker
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumcp /lib/ld.so.1 /tmp/bl/bf.1
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum${BFULD-$GATE/public/bin/$bfu_isa/bfuld} /tmp/bfubin/* || fail "bfuld failed"
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumfor x in $bfuscr
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumdo
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum sed -e 's/\/usr\/bin\//\/tmp\/bfubin\//g' \
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum -e 's/\/bin\//\/tmp\/bfubin\//g' < $x > /tmp/bfubin/`basename $x`
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum chmod +x /tmp/bfubin/`basename $x`
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumdone
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# scripts used together with multiboot
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaummultiboot_scr="
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /boot/solaris/bin/create_ramdisk
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /boot/solaris/bin/create_diskmap
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /boot/solaris/bin/root_archive
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum"
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumif [ $multi_or_direct = yes ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum for cmd in $multiboot_scr
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum do
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum file=`basename $cmd`
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum if [ -f $cmd ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cp $cmd /tmp/bfubin
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum else
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum if [ ! -d $MULTIBOOT_BIN_DIR ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum echo "$MULTIBOOT_BIN_DIR: not found"
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum fail ""
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum fi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum if [ ! -f $MULTIBOOT_BIN_DIR/$file ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum echo "$MULTIBOOT_BIN_DIR/$file: not found"
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum fail ""
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum fi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum echo "copying $file from $MULTIBOOT_BIN_DIR"
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cp $MULTIBOOT_BIN_DIR/$file /tmp/bfubin
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum fi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum #
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # We do two substitutions here to replace references to
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # both /usr/bin/ and /bin/ with /tmp/bfubin/
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum #
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum mv /tmp/bfubin/${file} /tmp/bfubin/${file}-
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum sed -e 's/\/usr\/bin\//\/tmp\/bfubin\//g' \
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum -e 's/\/bin\//\/tmp\/bfubin\//g' \
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum < /tmp/bfubin/${file}- > /tmp/bfubin/${file}
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum chmod +x /tmp/bfubin/${file}
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum done
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumfi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# For directboot archives, /boot/platform/i86pc/kernel/unix will be
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# overwritten, which could cause a mis-match with the failsafe
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# miniroot. Extract unix from the miniroot and save it off for now.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumif [ $archive_type = directboot ] && [ $diskless = no ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum if gunzip -c "$root/boot/x86.miniroot-safe" \
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum >/tmp/bfubin/miniroot-unzipped; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum lofifile=/tmp/bfubin/miniroot-unzipped
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum else
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # Shouldn't happen? See if someone already unzipped it.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum lofifile="$root/boot/x86.miniroot-safe"
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum fi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum lofidev=`lofiadm -a $lofifile 2>/dev/null`
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum if [ -n "$lofidev" ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum mkdir /tmp/bfubin/mnt
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum mount -r $lofidev /tmp/bfubin/mnt
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum unix=/tmp/bfubin/mnt/boot/platform/i86pc/kernel/unix
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum if [ -f $unix ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cp $unix /tmp/bfubin/unix
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum failsafe_type=directboot
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum elif [ -f /tmp/bfubin/mnt/platform/i86pc/multiboot ]
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum failsafe_type=multiboot
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum fi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum umount /tmp/bfubin/mnt
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rmdir /tmp/bfubin/mnt
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum lofiadm -d $lofidev
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum fi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm -f /tmp/bfubin/miniroot-unzipped
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumfi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumcreate_datalink_conf()
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum{
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # /etc/datalink.conf needs to be populated.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum drivers="bge rge xge"
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum conf=$rootprefix/etc/datalink.conf
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum if [ ! -f $conf ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # nothing to do if we bfu'ed from an archive that doesn't
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # provide /etc/datalink.conf
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum return
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum fi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum ls -1 $rootprefix/etc | egrep -e '^hostname.|^hostname6.|^dhcp.' | \
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cut -d . -f2 | sort -u > /tmp/ifnames.$$
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum for driver in $drivers
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum do
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum grep $driver /tmp/ifnames.$$ | \
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum while read ifname
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum do
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum devnum=`echo $ifname | sed "s/$driver//g"`
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum if [ "$driver$devnum" != $ifname -o \
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum -n "`echo $devnum | tr -d '[0-9]'`" ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum echo "skipping invalid interface $ifname"
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum continue
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum fi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum vid=`expr $devnum / 1000`
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum inst=`expr $devnum % 1000`
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum awk '{ print $1 }' $conf | grep $ifname > /dev/null
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum if [ $? -ne 0 ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # An entry for that interface does not exist
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum printf \
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum "$ifname\t$driver$inst\t0\t$vid\n" \
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum >> $conf
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum fi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum done
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum done
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm -f /tmp/ifnames.$$
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum}
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumrevert_aggregation_conf()
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens{
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens aggrconf=$rootprefix/etc/aggregation.conf
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum nawk '
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /^[ \t]*#/ || /^[ \t]*$/ || $4 ~ "/0" {
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum print;
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum next;
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum }
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum {
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum OFS="\t";
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum gsub(/[^,]*/, "&/0", $4);
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum print;
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum }' $aggrconf > $aggrconf.bfutmp
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum mv -f $aggrconf.bfutmp $aggrconf
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum}
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumremove_initd_links()
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum{
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # If we're delivering a new version of an existing /etc/init.d script,
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # remove all hard links to the existing file in /etc/rc?.d whose
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # names begin with [SK][0-9][0-9]. Additionally, in case an S or K
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # file was previously delivered as a symbolic link or the hard link
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # was broken, remove any file in /etc/rc?.d whose name is
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # [SK][0-9][0-9] followed by the basename of the file we're going
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # to update in /etc/init.d.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum print "Removing init.d links ... \c"
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum scripts=`$ZCAT $cpiodir/generic.root$ZFIX |
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cpio -it 2>/dev/null | grep '^etc/init\.d/'`
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum if [ -n "$scripts" ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum inodes=`ls -li $scripts 2>/dev/null | \
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum nawk '{ print "-inum " $1 " -o " }'`
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum names=`ls -1 $scripts 2>/dev/null | \
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum nawk -F/ '{ print "-name [SK][0-9][0-9]" $NF }'`
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum find etc/rc?.d \( $inodes $names \) -print | xargs rm -f
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum fi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum print "done."
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum}
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# Remove the old 5.005_03 version of perl.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumremove_perl_500503()
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum{
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # Packages to remove.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum typeset -r perl_pkgs='SUNWopl5m SUNWopl5p SUNWopl5u'
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum typeset -r pkgroot=${rootprefix:+-R $rootprefix}
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum typeset pkg
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum #
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # First, attempt to remove the packages cleanly if possible.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum #
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum printf 'Removing perl 5.005_03 packages'
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum for pkg in $perl_pkgs
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum do
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum if pkginfo $pkgroot -q $pkg; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum printf ' %s' $pkg
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum pkgrm $pkgroot -n $pkg >/dev/null 2>&1
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum fi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum done
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum printf '\n'
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum #
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # In case that didn't work, do it manually.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum #
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum printf 'Removing perl 5.005_03 from %s/var/sadm/install/contents' \
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum $rootprefix
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum for pkg in $PKGS
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum do
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum printf ' %s' $pkg
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum if [ -d $rootprefix/var/sadm/pkg/$pkg ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm -rf $rootprefix/var/sadm/pkg/$pkg
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum grep -vw $pkg $rootprefix/var/sadm/install/contents > \
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /tmp/contents.$$
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cp /tmp/contents.$$ /var/sadm/install/contents.$$
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm /tmp/contents.$$
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum fi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum done
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum printf '\n'
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum #
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # Remove any remaining 5.005_03 files,
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum #
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum printf 'Removing perl 5.005_03 from %s/perl5\n' $usr
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # Directories.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm -rf $usr/perl5/5.00503
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm -rf $usr/perl5/site_perl/5.005
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum}
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum# Remove Wildcat (aka Sun Fire Link)
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum#
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaumremove_eof_wildcat()
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum{
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # Packages to remove
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum typeset -r wildcat_pkgs='SUNWwrsa SUNWwrsd SUNWwrsu SUNWwrsm'
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum typeset -r pkgroot=${rootprefix:+-R $rootprefix}
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum typeset pkg
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum #
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # First, attempt to remove the packages cleanly if possible.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # Use a custom "admin" file to specify that removal scripts
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # in the packages being removed should be run even if they
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # will run as root.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum #
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum typeset -r admfile='/tmp/wcat_eof.$$'
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum echo "action=nocheck" > $admfile
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum printf 'Removing Wildcat packages...'
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum for pkg in $wildcat_pkgs
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum do
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum if pkginfo $pkgroot -q $pkg; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum printf ' %s' $pkg
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum pkgrm $pkgroot -n -a $admfile $pkg >/dev/null 2>&1
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum fi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum done
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum printf '\n'
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum #
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # In case that didn't work, do it manually.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum #
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum printf 'Removing Wildcat from %s/var/sadm/install/contents...' \
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum $rootprefix
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum for pkg in $wildcat_pkgs
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum do
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum printf ' %s' $pkg
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum if [ -d $rootprefix/var/sadm/pkg/$pkg ]; then
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm -rf $rootprefix/var/sadm/pkg/$pkg
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum grep -vw $pkg $rootprefix/var/sadm/install/contents > \
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum /tmp/contents.$$
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cp /tmp/contents.$$ \
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum $rootprefix/var/sadm/install/contents
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm /tmp/contents.$$
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum fi
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum done
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum printf '\n'
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum #
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # Cleanup any remaining Wildcat files, symlinks, and directories.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum #
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm -f $usr/platform/sun4u/include/sys/wci_common.h
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm -f $usr/platform/sun4u/include/sys/wci_regs.h
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm -f $usr/platform/sun4u/include/sys/wci_offsets.h
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm -f $usr/platform/sun4u/include/sys/wci_cmmu.h
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm -f $usr/platform/sun4u/include/sys/wrsm.h
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm -f $usr/platform/sun4u/include/sys/wrsm_common.h
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm -f $usr/platform/sun4u/include/sys/wrsm_config.h
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm -f $usr/platform/sun4u/include/sys/wrsm_types.h
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm -f $usr/platform/sun4u/include/sys/wrsm_plat.h
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm -f $usr/platform/sun4u/include/sys/wrsm_plugin.h
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm -f $usr/platform/sun4u/include/sys/wrsmconf.h
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm -f $usr/platform/sun4u/lib/mdb/kvm/sparcv9/wrsm.so
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm -f $usr/platform/sun4u/lib/mdb/kvm/sparcv9/wrsmd.so
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm -f $rootprefix/platform/SUNW,Sun-Fire-15000/kernel/misc/sparcv9/gptwo_wci
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm -f $rootprefix/platform/sun4u/kernel/kmdb/sparcv9/wrsm
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum rm -f $rootprefix/platform/sun4u/kernel/kmdb/sparcv9/wrsmd
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens rm -f $admfile
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens}
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens#
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens# Remove ASET
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens#
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrensremove_eof_aset()
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens{
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens # Packages to remove
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens typeset -r aset_pkgs='SUNWast'
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens typeset -r pkgroot=${rootprefix:+-R $rootprefix}
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens typeset pkg
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens printf 'Removing ASET... '
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens #
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens # First, attempt to remove the packages cleanly if possible.
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens #
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens for pkg in $aset_pkgs
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens do
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens if pkginfo $pkgroot -q $pkg; then
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens printf ' %s' $pkg
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens pkgrm $pkgroot -n $pkg >/dev/null 2>&1
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens fi
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens done
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens printf '\n'
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens #
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens # In case that didn't work, do it manually.
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens # Remove ASET from $rootprefix/var/sadm/install/contents
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens #
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens for pkg in $aset_pkgs
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens do
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens if [ -d $rootprefix/var/sadm/pkg/$pkg ]; then
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens rm -rf $rootprefix/var/sadm/pkg/$pkg
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens grep -vw $pkg $rootprefix/var/sadm/install/contents > \
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens /tmp/contents.$$
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens cp /tmp/contents.$$ $rootprefix/var/sadm/install/contents.$$
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens rm /tmp/contents.$$
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens fi
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens done
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens #
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens # Cleanup any remaining ASET files, symlinks, and directories.
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens #
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens rm -rf $usr/aset
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens}
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens#
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens# Remove BIND 8 named server/tools packages
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens#
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrensremove_eof_bind8()
fa9e4066f08beec538e775443c5be79dd423fcabahrens{
fa9e4066f08beec538e775443c5be79dd423fcabahrens # Packages to remove
fa9e4066f08beec538e775443c5be79dd423fcabahrens typeset -r bind8_pkg='SUNWinamd'
fa9e4066f08beec538e775443c5be79dd423fcabahrens typeset -r pkgroot=${rootprefix:+-R $rootprefix}
fa9e4066f08beec538e775443c5be79dd423fcabahrens typeset pkg
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens printf 'Removing BIND 8 named server/tools... '
fa9e4066f08beec538e775443c5be79dd423fcabahrens
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens #
fa9e4066f08beec538e775443c5be79dd423fcabahrens # We cann't pkgrm SUNWinamd at this time as the BIND 9 binaries are
fa9e4066f08beec538e775443c5be79dd423fcabahrens # already in /usr/sbin.
fa9e4066f08beec538e775443c5be79dd423fcabahrens # Remove BIND 8 packages from $rootprefix/var/sadm/install/contents
fa9e4066f08beec538e775443c5be79dd423fcabahrens #
4223fc7cdcf5a51019f631eec2b4217ddf736451Mark Shellenbaum for pkg in $bind8_pkgs
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore do
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore if [ -d $rootprefix/var/sadm/pkg/$pkg ]; then
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore rm -rf $rootprefix/var/sadm/pkg/$pkg
fa9e4066f08beec538e775443c5be79dd423fcabahrens grep -vw $pkg $rootprefix/var/sadm/install/contents > \
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore /tmp/contents.$$
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore cp /tmp/contents.$$ /var/sadm/install/contents.$$
fa9e4066f08beec538e775443c5be79dd423fcabahrens rm /tmp/contents.$$
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens done
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens #
91ebeef555ce7f899b6270a3c2df47b51f7ad59aahrens # Cleanup any BIND 8 specific files, symlinks.
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore #
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore # files and symlinks.
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore rm -f $usr/sbin/named-xfer
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore rm -f $usr/lib/nslookup.help
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore rm -f $usr/sbin/dnskeygen
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore rm -f $usr/sbin/named-bootconf
a3f829ae41ece20e7f5f63604e177aeeb8b24628Bill Moore rm -f $usr/sbin/nstest
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock rm -rf $rootprefix/var/run/ndc.d
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock printf 'done.\n'
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens}
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens#
614409b5be5411058e7e9b6cc93dddaff9fb13f7ahrens# Remove the 5.8.3 version of perl.
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens#
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrensremove_perl_583()
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens{
3f1f80124f2b2b91c4c06303305e5badae5228e8Matthew Ahrens #
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # Copy perl 5.8.3 into the new 5.8.4 locations. This will preserve
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # any add-on modules that might have been installed, and any 5.8.3
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # core files that get copied over will be replaced by the new 5.8.4
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # versions when the cpio archives are subsequently extracted.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum #
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum printf 'Preserving user-installed perl modules...\n'
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum mkdir -p $usr/perl5/5.8.4
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum cp -rp $usr/perl5/5.8.3/* \
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens $usr/perl5/5.8.4
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling mkdir -p $usr/perl5/site_perl/5.8.4
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens cp -rp $usr/perl5/site_perl/5.8.3/* \
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens $usr/perl5/site_perl/5.8.4
fa9e4066f08beec538e775443c5be79dd423fcabahrens mkdir -p $usr/perl5/vendor_perl/5.8.4
fa9e4066f08beec538e775443c5be79dd423fcabahrens cp -rp $usr/perl5/vendor_perl/5.8.3/* \
fa9e4066f08beec538e775443c5be79dd423fcabahrens $usr/perl5/vendor_perl/5.8.4
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens #
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens # Update the #! lines in any scripts in /usr/perl5/5.8.4/bin to refer
fa9e4066f08beec538e775443c5be79dd423fcabahrens # to 5.8.4 instead of 5.8.3. Take care to edit only scripts.
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens #
fa9e4066f08beec538e775443c5be79dd423fcabahrens typeset bindir="$usr/perl5/5.8.4/bin"
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens typeset script
fa9e4066f08beec538e775443c5be79dd423fcabahrens for script in $(ls $bindir); do
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens script="$bindir/$script"
fa9e4066f08beec538e775443c5be79dd423fcabahrens if [[ $script = "$usr/perl5/5.8.4/bin/perl5.8.3" ]]; then
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens rm -f $script
fa9e4066f08beec538e775443c5be79dd423fcabahrens elif file $script | \
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens egrep -s 'executable .*perl .*script'; then
ccae0b50330edda9b094cee1ec6a0ad35443e8b0eschrock sed -e \
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens 's!/usr/perl5/5.8.3/bin/perl!/usr/perl5/5.8.4/bin/perl!g' \
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens < $script > $script.tmp
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens mv -f $script.tmp $script
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens done
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens
5f5f7a6f9c8e9c1587a54e690556d756ec67558cahrens #
28e4da25922bdfc5cba7ab29f47de911bbd78009Matthew Ahrens # Packages to remove.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum #
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum typeset -r perl_pkgs='SUNWperl583man SUNWperl583usr SUNWperl583root'
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum typeset -r pkgroot=${rootprefix:+-R $rootprefix}
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum #
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum # First, attempt to remove the packages cleanly if possible.
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum #
fa9e4066f08beec538e775443c5be79dd423fcabahrens typeset pkg
fa9e4066f08beec538e775443c5be79dd423fcabahrens printf 'Removing perl 5.8.3 packages'
fa9e4066f08beec538e775443c5be79dd423fcabahrens for pkg in $perl_pkgs
fa9e4066f08beec538e775443c5be79dd423fcabahrens do
fa9e4066f08beec538e775443c5be79dd423fcabahrens if pkginfo $pkgroot -q $pkg; then
fa9e4066f08beec538e775443c5be79dd423fcabahrens printf ' %s' $pkg
fa9e4066f08beec538e775443c5be79dd423fcabahrens pkgrm $pkgroot -n $pkg >/dev/null 2>&1
fa9e4066f08beec538e775443c5be79dd423fcabahrens fi
fa9e4066f08beec538e775443c5be79dd423fcabahrens done
fa9e4066f08beec538e775443c5be79dd423fcabahrens printf '\n'
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens #
# In case that didn't work, do it manually.
#
printf 'Removing perl 5.8.3 from %s/var/sadm/install/contents' \
$rootprefix
for pkg in $PKGS
do
printf ' %s' $pkg
if [ -d $rootprefix/var/sadm/pkg/$pkg ]; then
rm -rf $rootprefix/var/sadm/pkg/$pkg
grep -vw $pkg $rootprefix/var/sadm/install/contents > \
/tmp/contents.$$
cp /tmp/contents.$$ /var/sadm/install/contents.$$
rm /tmp/contents.$$
fi
done
printf '\n'
#
# Remove any remaining 5.8.3 files,
# and fix up the symlinks if necessary.
#
printf 'Removing perl 5.8.3 from %s/perl5\n' $usr
# Directories.
rm -rf $usr/perl5/5.8.3
rm -rf $usr/perl5/site_perl/5.8.3
rm -rf $usr/perl5/vendor_perl/5.8.3
# bin symlink.
rm -f $usr/perl5/bin
ln -s ./5.8.4/bin $usr/perl5/bin
# pod symlink.
rm -f $usr/perl5/pod
ln -s ./5.8.4/lib/pod $usr/perl5/pod
#
# man symlink. In earlier S10 builds the man symlink mistakenly points
# to the 5.6.1 manpages, instead of 5.8.3. Fix to point to 5.8.4.
#
rm -f $usr/perl5/man
ln -s ./5.8.4/man $usr/perl5/man
# Symlink /bin/perl to 5.8.4.
rm -f $usr/bin/perl
ln -s ../perl5/5.8.4/bin/perl $usr/bin/perl
}
#
# Remove FNS/XFN packages
#
remove_eof_fns()
{
# Packages to remove
typeset -r fns_pkgs='SUNWfnx5x SUNWfnsx5 SUNWfnsx SUNWfns'
typeset -r pkgroot=${rootprefix:+-R $rootprefix}
typeset pkg
printf 'Removing FNS/XFN ... '
#
# First, attempt to remove the packages cleanly if possible.
#
for pkg in $fns_pkgs
do
if pkginfo $pkgroot -q $pkg; then
printf ' %s' $pkg
pkgrm $pkgroot -n $pkg >/dev/null 2>&1
fi
done
printf '\n'
#
# In case that didn't work, do it manually.
# Remove FNS/XFN from $rootprefix/var/sadm/install/contents
#
for pkg in $fns_pkgs
do
if [ -d $rootprefix/var/sadm/pkg/$pkg ]; then
rm -rf $rootprefix/var/sadm/pkg/$pkg
grep -vw $pkg $rootprefix/var/sadm/install/contents > \
/tmp/contents.$$
cp /tmp/contents.$$ $rootprefix/var/sadm/install/contents.$$
rm /tmp/contents.$$
fi
done
#
# Cleanup if any remaining FNS/XFN files, symlinks, and directories.
#
# directories.
rm -rf $rootprefix/etc/fn
rm -rf $usr/include/xfn
rm -rf $usr/lib/fn
rm -rf $rootprefix/var/fn
# files and symlinks.
rm -f $rootprefix/etc/fn.conf
rm -f $usr/bin/fnattr
rm -f $usr/bin/fnbind
rm -f $usr/bin/fncreate_printer
rm -f $usr/bin/fnlist
rm -f $usr/bin/fnlookup
rm -f $usr/bin/fnrename
rm -f $usr/bin/fnsearch
rm -f $usr/bin/fnunbind
rm -f $usr/sbin/fncheck
rm -f $usr/sbin/fncopy
rm -f $usr/sbin/fncreate
rm -f $usr/sbin/fncreate_fs
rm -f $usr/sbin/fndestroy
rm -f $usr/sbin/fnselect
rm -f $usr/sbin/fnsypd
rm -f $usr/lib/libfn_p.so
rm -f $usr/lib/libfn_p.so.1
rm -f $usr/lib/libfn_spf.so
rm -f $usr/lib/libfn_spf.so.1
rm -f $usr/lib/libxfn.so
rm -f $usr/lib/libxfn.so.1
rm -f $usr/lib/libxfn.so.2
rm -f $usr/lib/sparcv9/libfn_p.so
rm -f $usr/lib/sparcv9/libfn_p.so.1
rm -f $usr/lib/sparcv9/libfn_spf.so
rm -f $usr/lib/sparcv9/libfn_spf.so.1
rm -f $usr/lib/sparcv9/libxfn.so
rm -f $usr/lib/sparcv9/libxfn.so.1
rm -f $usr/lib/sparcv9/libxfn.so.2
}
remove_eof_face() {
# Packages to remove
typeset -r face_pkgs='SUNWfac'
typeset -r pkgroot=${rootprefix:+-R $rootprefix}
typeset pkg
printf 'Removing AT&T FACE... '
#
# First, attempt to remove the packages cleanly if possible.
#
for pkg in $face_pkgs
do
if pkginfo $pkgroot -q $pkg; then
printf ' %s' $pkg
pkgrm $pkgroot -n $pkg >/dev/null 2>&1
fi
done
printf '\n'
#
# In case that didn't work, do it manually.
# Remove FACE from $rootprefix/var/sadm/install/contents
#
for pkg in $face_pkgs
do
if [ -d $rootprefix/var/sadm/pkg/$pkg ]; then
rm -rf $rootprefix/var/sadm/pkg/$pkg
grep -vw $pkg $rootprefix/var/sadm/install/contents > \
/tmp/contents.$$
cp /tmp/contents.$$ $rootprefix/var/sadm/install/contents.$$
rm /tmp/contents.$$
fi
done
#
# Cleanup any remaining FACE files, symlinks, and directories.
#
rm -rf $usr/oasys
rm -rf $usr/vmsys
}
remove_eof_dmi() {
# Packages to remove
typeset -r dmi_pkgs='SUNWsadmi'
typeset -r pkgroot=${rootprefix:+-R $rootprefix}
typeset pkg
printf 'Removing DMI... '
#
# First, attempt to remove the packages cleanly if possible.
#
for pkg in $dmi_pkgs
do
if pkginfo $pkgroot -q $pkg; then
printf ' %s' $pkg
pkgrm $pkgroot -n $pkg >/dev/null 2>&1
fi
done
printf '\n'
#
# In case that didn't work, do it manually.
# Remove DMI from $rootprefix/var/sadm/install/contents
#
for pkg in $dmi_pkgs
do
if [ -d $rootprefix/var/sadm/pkg/$pkg ]; then
rm -rf $rootprefix/var/sadm/pkg/$pkg
grep -vw $pkg $rootprefix/var/sadm/install/contents > \
/tmp/contents.$$
cp /tmp/contents.$$ $rootprefix/var/sadm/install/contents.$$
rm /tmp/contents.$$
fi
done
#
# Cleanup any remaining DMI files, symlinks, and directories.
#
rm -rf $usr/lib/dmi
rm -rf $rootprefix/var/dmi
rm -rf $rootprefix/etc/dmi
rm -f $usr/lib/libdmi.so
rm -f $usr/lib/libdmici.so
rm -f $usr/lib/libdmimi.so
rm -f $usr/lib/libdmi.so.1
rm -f $usr/lib/libdmici.so.1
rm -f $usr/lib/libdmimi.so.1
rm -f $usr/lib/sparcv9/libdmi.so
rm -f $usr/lib/sparcv9/libdmici.so
rm -f $usr/lib/sparcv9/libdmimi.so
rm -f $usr/lib/sparcv9/libdmi.so.1
rm -f $usr/lib/sparcv9/libdmici.so.1
rm -f $usr/lib/sparcv9/libdmimi.so.1
rm -f $usr/lib/amd64/libdmi.so
rm -f $usr/lib/amd64/libdmici.so
rm -f $usr/lib/amd64/libdmimi.so
rm -f $usr/lib/amd64/libdmi.so.1
rm -f $usr/lib/amd64/libdmici.so.1
rm -f $usr/lib/amd64/libdmimi.so.1
rm -f $usr/sbin/dmi_cmd
rm -f $usr/sbin/dmiget
rm -f $rootprefix/etc/init.d/init.dmi
rm -f $rootprefix/etc/rc0.d/K07dmi
rm -f $rootprefix/etc/rc1.d/K07dmi
rm -f $rootprefix/etc/rc2.d/K07dmi
rm -f $rootprefix/etc/rcS.d/K07dmi
rm -f $rootprefix/etc/rc3.d/S77dmi
}
#
# Remove vold
#
remove_eof_vold()
{
printf 'Removing vold... '
rm -rf $usr/lib/vold
rm -rf $usr/lib/rmmount
rm -f $usr/lib/fs/hsfs/ident_hsfs.so.1
rm -f $usr/lib/fs/pcfs/ident_pcfs.so.1
rm -f $usr/lib/fs/udfs/ident_udfs.so.1
rm -f $usr/lib/fs/ufs/ident_ufs.so.1
rm -f $usr/sbin/vold
rm -f $usr/kernel/drv/vol
rm -f $usr/kernel/drv/amd64/vol
rm -f $usr/kernel/drv/sparcv9/vol
rm -f $usr/include/rmmount.h
rm -f $usr/include/vol.h
rm -f $rootprefix/etc/vold.conf
rm -f $rootprefix/etc/rmmount.conf
printf '\n'
}
remove_properties() {
#
# Remove obsolete smartii setprop from bootenv.rc
#
srcbootenvrc=$root/boot/solaris/bootenv.rc
tmpbootenvrc=/tmp/tmp.bootenvrc.$$
# Don't touch bootenv.rc unless it contains obsolete property
egrep -s 'target-driver-for-smartii' $srcbootenvrc 2>/dev/null
res=$?
if [ -f $srcbootenvrc -a $res -eq 0 ]; then
egrep -v "target-driver-for-smartii"\
$srcbootenvrc > $tmpbootenvrc 2>/dev/null
cp $tmpbootenvrc $srcbootenvrc
fi
rm -f $tmpbootenvrc
}
rbac_cleanup()
{
# This is a copy of the RBAC portions of the SUNWcsr postinstall
# We need to ensure that the RBAC profiles are self-consistent
# as refinements are made that add granularity to the profiles
print "Cleaning up old RBAC profiles... \c"
auth_attr=$rootprefix/etc/security/auth_attr
exec_attr=$rootprefix/etc/security/exec_attr
if [ -f $auth_attr ]; then
sed '/^solaris\.\*/d' $auth_attr > /tmp/a.$$
cp /tmp/a.$$ $auth_attr
rm -f /tmp/a.$$
fi
if [ -f $exec_attr ]; then
sed -e '/^Network Security.*sbin\/ipsec.*/ D' \
-e '/^Network Security.*sbin\/ike.*/ D' \
-e '/^Network Security.*inet\/in\.iked.*/ D' \
-e '/^Network Security.*inet\/cert.*/ D' $exec_attr > /tmp/e.$$
cp /tmp/e.$$ $exec_attr
rm -f /tmp/e.$$
fi
print "\n"
}
enable_crypto_unlimited()
{
# This is a "copy" of the SUNWcry* postinstall scripts.
# We enable the encryption kit aes256, arcfour2048, and blowfish448 modules.
# This is needed to ensure bfu users continue to have the full strength of
# cryptographic algorithms they use.
print "Simulating SUNWcry* installation...\c"
kcfconf=$rootprefix/etc/crypto/kcf.conf
ipsecalgs=$rootprefix/etc/inet/ipsecalgs
cp $kcfconf ${kcfconf}.tmp
sed -e 's/^aes:/aes256:/' -e 's/^blowfish:/blowfish448:/' -e \
's/^arcfour:/arcfour2048:/'\
$kcfconf > ${kcfconf}.tmp
mv -f ${kcfconf}.tmp $kcfconf
cp $ipsecalgs ${ipsecalgs}.tmp
sed -e 's/_CBC|128\/32-128,8/_CBC|128\/32-448,8/' \
-e 's/AES_CBC|128|/AES_CBC|128\/128-256,64|/' \
$ipsecalgs > ${ipsecalgs}.tmp
mv -f ${ipsecalgs}.tmp $ipsecalgs
# Since we do that for the kernel we do it for userland as well.
# "Clone" the policy for pkcs11_softtoken to the encryption kit version
# and "disable" pkcs11_softoken.
pkcs11conf=$rootprefix/etc/crypto/pkcs11.conf
cp $pkcs11conf ${pkcs11conf}.tmp
sed 's/pkcs11_softtoken\.so/pkcs11_softtoken_extra.so/' \
$pkcs11conf > ${pkcs11conf}.tmp
mv -f ${pkcs11conf}.tmp $pkcs11conf
print "\n"
}
#
# Add metaslot configuration to pkcs11.conf if it doesn't already exist
#
enable_crypto_metaslot()
{
pkcs11conf=$rootprefix/etc/crypto/pkcs11.conf
egrep '^metaslot' ${pkcs11conf} > /dev/null 2>& 1
if [ $? != 0 ] ; then
print "Adding cryptographic framework's meta slot feature"
cp $pkcs11conf ${pkcs11conf}.tmp
export metaslot_config=\
"metaslot:metaslot_status=enabled;metaslot_auto_key_migrate=enabled;"\
"metaslot_token=Sun Software PKCS#11 softtoken;"\
"metaslot_slot=Sun Crypto Softtoken"
nawk '/^# End SUNWcsr/ \
{ print ENVIRON["metaslot_config"] } \
{ print } \
' ${pkcs11conf} > ${pkcs11conf}.tmp
mv -f ${pkcs11conf}.tmp $pkcs11conf
print "\n"
fi
}
cleanup_kerberos_mechanisms()
{
#
# This checks to see if the old 'gl' and 'do' directories
# for the Kerberos GSS-API mechanisms can be deleted.
# If the mechanism exists in /usr/lib/gss, then the old
# subdirs may be deleted.
#
print "Cleaning up old Kerberos GSS-API mechanisms...\c"
kerneldir=kernel/misc/kgss
kerneldir_sparc=kernel/misc/kgss/sparcv9
newmech=no;
if [ -f $usr/lib/gss/mech_krb5.so.1 ]; then
#
# There is a mech in the "new" location, so
# the old stuff can be deleted.
#
if [ -d $usr/lib/gss/gl ]; then
rm -rf $usr/lib/gss/gl
fi
if [ -d $usr/lib/gss/do ]; then
rm -rf $usr/lib/gss/do
fi
newmech=yes;
fi
if [ -f $usr/lib/sparcv9/gss/mech_krb5.so.1 ]; then
if [ -d $usr/lib/sparcv9/gss/gl ]; then
rm -rf $usr/lib/sparcv9/gss/gl
fi
if [ -d $usr/lib/sparcv9/gss/do ]; then
rm -rf $usr/lib/sparcv9/gss/do
fi
fi
#
# Cleanup kernel mechanisms from default location
#
if [ -f $rootprefix/$kerneldir/kmech_krb5 ]; then
if [ -f $rootprefix/$kerneldir/gl_kmech_krb5 ]; then
rm -f $rootprefix/$kerneldir/gl_kmech_krb5
fi
if [ -f $rootprefix/$kerneldir/do_kmech_krb5 ]; then
rm -f $rootprefix/$kerneldir/do_kmech_krb5
fi
fi
#
# For SPARC, cleanup from 2 locations.
#
# 1. /kernel/misc/kgss/sparcv9
#
if [ -f $rootprefix/$kerneldir_sparc/kmech_krb5 ]; then
if [ -f $rootprefix/$kerneldir_sparc/gl_kmech_krb5 ]; then
rm -f $rootprefix/$kerneldir_sparc/gl_kmech_krb5
fi
if [ -f $rootprefix/$kerneldir_sparc/do_kmech_krb5 ]; then
rm -f $rootprefix/$kerneldir_sparc/do_kmech_krb5
fi
fi
#
# 2. /platform/sun4u/kernel/misc/kgss/sparcv9
#
kerneldir_sparc=platform/$karch/$kerneldir_sparc
if [ -f $rootprefix/$kerneldir_sparc/kmech_krb5 ]; then
if [ -f $rootprefix/$kerneldir_sparc/gl_kmech_krb5 ]; then
rm -f $rootprefix/$kerneldir_sparc/gl_kmech_krb5
fi
if [ -f $rootprefix/$kerneldir_sparc/do_kmech_krb5 ]; then
rm -f $rootprefix/$kerneldir_sparc/do_kmech_krb5
fi
fi
#
# Make sure the GSS mechanism configuration file is correct
#
if [ "$newmech" = "yes" ]; then
gssmechconf=$rootprefix/etc/gss/mech
sed -e 's/gl\/mech_krb5\.so/mech_krb5\.so/' \
-e 's/do\/mech_krb5\.so/mech_krb5\.so/' \
-e 's/gl_kmech_krb5/kmech_krb5/' \
-e 's/do_kmech_krb5/kmech_krb5/'\
$gssmechconf > ${gssmechconf}.tmp
if [ $? -eq 0 ]; then
mv -f ${gssmechconf}.tmp $gssmechconf
else
echo "WARNING: update of $gssmechconf failed."
return 1
fi
fi
print "\n"
}
mpxiodisableno='^[ ]*mpxio-disable[ ]*=[ ]*"no"[ ]*;'
mpxiodisableyes='^[ ]*mpxio-disable[ ]*=[ ]*"yes"[ ]*;'
#
# fix up audit permissions
#
fix_up_audit()
{
chmod 644 $root/etc/security/audit_control
chmod 644 $root/etc/security/audit_user
}
#
# disable mpxio on fp(7D) ports using fp.conf
#
disable_mpxio_using_fpconf()
{
conffile=$rootprefix/kernel/drv/fp.conf
test -f $conffile || return
egrep -s "$mpxiodisableyes" $conffile && return
print "To preserve device names, disabled mpxio on fp(7D) ports by"
if egrep -s "$mpxiodisableno" $conffile; then
tmpfile=/tmp/fp.conf.$$
sed "s/$mpxiodisableno/mpxio-disable=\"yes\";/" $conffile \
> $tmpfile
cp $tmpfile $conffile
rm -f $tmpfile
print "changing the value of mpxio-disable to \"yes\" in" \
"$conffile"
else
echo 'mpxio-disable="yes";' >> $conffile
print "adding mpxio-disable=\"yes\" entry to $conffile"
fi
}
#
# enable mpxio in scsi_vhci
#
enable_mpxio_using_scsivhciconf()
{
#
# depending on whether the bfu restored the child's or parent's version
# of scsi_vhci.conf file, we may already have the file with the change
# we need in place. So make the change only if necessary.
#
conffile=$rootprefix/kernel/drv/scsi_vhci.conf
egrep -s "$mpxiodisableno" $conffile && return
print "To preserve device names, restored your current mpxio" \
"configuration by"
if egrep -s "$mpxiodisableyes" $conffile; then
tmpfile=/tmp/scsi_vhci.conf.$$
sed "s/$mpxiodisableyes/mpxio-disable=\"no\";/" $conffile \
> $tmpfile
cp $tmpfile $conffile
rm -f $tmpfile
print "changing the value of mpxio-disable to \"no\" in" \
"$conffile"
else
echo 'mpxio-disable="no";' >> $conffile
print "adding mpxio-disable=\"no\" entry to $conffile"
fi
}
#
# restore the pre-bfu MPxIO on/off setting to the post-bfued configuration
#
fixup_mpxio()
{
conffile=$rootprefix/kernel/drv/scsi_vhci.conf
parentconffile=$rootprefix/bfu.parent/kernel/drv/scsi_vhci.conf
childconffile=$rootprefix/bfu.child/kernel/drv/scsi_vhci.conf
ancestorconffile=$rootprefix/bfu.ancestor/kernel/drv/scsi_vhci.conf
# if scsi_vhci.conf doesn't exist return
test -f $conffile || return
#
# Determine the mpxio setting in the child. If the system was bfued
# before and running with mpxio on by deafult bits, can't rely on the
# mpxio-disable entry in the child's scsi_vhci.conf file as it may
# contain stale left over entries.
#
mpxio_child=1
if [ -f $ancestorconffile ]; then
if egrep -s "$mpxiodisableyes" $ancestorconffile; then
#
# prior to the bfu the system was running with
# mpxio off by default bits.
#
mpxio_child=0
egrep -s "$mpxiodisableno" $childconffile && \
mpxio_child=1
fi
else
egrep -s "$mpxiodisableyes" $childconffile && mpxio_child=0
fi
if egrep -s "$mpxiodisableyes" $parentconffile; then
# these bits require explicit enabling of mpxio at in scsi_vhci
if [ $mpxio_child -eq 1 ]; then
egrep -s "$mpxiodisableyes" \
$rootprefix/kernel/drv/fp.conf || \
enable_mpxio_using_scsivhciconf
fi
else
#
# these bits have mpxio enabled by default in scsi_vhci.
# if mpxio is disabled in the child, disable mpxio on all
# fp(7D) ports using fp.conf.
#
[ $mpxio_child -eq 0 ] && disable_mpxio_using_fpconf
fi
}
#
# Check to see if root in $1 has a mounted boot, and that
# it's mounted at the right place for bfu to handle it.
#
# Returns 0 (true) if bfu can handle the upgrade; fails if not
#
boot_is_upgradeable()
{
ROOT=$1
if [ "$ROOT" = "/" ] ; then ROOT=""; fi
BOOTPARTDEV="$(grep -s -v '^#' ${ROOT}/etc/vfstab | \
grep "[ ]/boot[ ]*pcfs[ ]" | \
awk '{print $1}')"
# find out if, and where, boot is mounted
if [ -n "$BOOTPARTDEV" ] ; then
if [ -n "$ROOT" ] ; then
BOOTMNT=$(mount | grep "$BOOTPARTDEV" | \
awk '{print $1}')
else
BOOTMNT="/boot"
fi
if [ "$BOOTMNT" != ${ROOT}/boot ] ; then
cat << BOOTMOUNTERR
${ROOT} refers to an x86 boot partition, but it's not mounted
at ${ROOT}/boot.
BOOTMOUNTERR
fail "Mount ${ROOT}s bootpart at ${ROOT}/boot.\n\n"
fi
fi
return 0
}
# update the realmode boot programs at $1 (root)
# from classic boot psm/stand/bootblks/ufs/i386/installboot.sh
install_boot_i386()
{
PBOOT=$1
BOOTBLK=$2
DEVICE=$3
if [ ! -f $PBOOT ]; then
echo "$PBOOT: File not found"
return 1
fi
if [ ! -f $BOOTBLK ]; then
echo "$BOOTBLK: File not found"
return 1
fi
if [ ! -c $DEVICE ]; then
echo "$DEVICE: Not a character device"
return 1
fi
if [ ! -w $DEVICE ]; then
echo "$DEVICE: Not writeable"
return 1
fi
# pboot at block 0, label at blocks 1 and 2, bootblk from block 3 on
dd if=$PBOOT of=$DEVICE bs=1b count=1 conv=sync >/dev/null 2>&1
dd if=$BOOTBLK of=$DEVICE bs=1b oseek=3 conv=sync >/dev/null 2>&1
return 0
}
update_realmode_booters()
{
ROOT=$1
TMPDIR=/tmp/rmupdate.$$
trap "rm -rf $TMPDIR" EXIT
# go get new versions of boot files into TMPDIR
OLD_PWD=$(pwd)
mkdir $TMPDIR
cd $TMPDIR
# i86pc.boot archive
REQFILES="boot/mdboot boot/strap.com"
$ZCAT $cpiodir/i86pc.boot$ZFIX | cpio -id $REQFILES 2>/dev/null
mv $REQFILES $TMPDIR
# i86pc.usr archive
REQFILES="usr/platform/i86pc/lib/fs/ufs/pboot"
REQFILES="$REQFILES usr/platform/i86pc/lib/fs/ufs/bootblk"
$ZCAT $cpiodir/i86pc.usr$ZFIX | cpio -id $REQFILES 2>/dev/null
mv $REQFILES $TMPDIR
cd $OLD_PWD
grep -s -v '^#' ${ROOT}/etc/vfstab | \
grep "[ ]/boot[ ]*pcfs[ ]" >/dev/null
if [ $? -eq 0 ] ; then
echo 'Updating /boot on x86 boot partition.'
REQFILES="mdboot strap.com"
for f in ${REQFILES}; do
if [ ! -f ${TMPDIR}/$f ]; then
fail "Missing $f, aborting."
fi
done
MDBOOT=${TMPDIR}/mdboot
STRAP=${TMPDIR}/strap.com
LUBIN=/usr/lib/lu
TMP_FDFILE1=${TMPDIR}/fdfile1.$$
LOGFILE=${TMPDIR}/mkfs.log.$$
DDCOPY=${TMPDIR}/.dd_x86_boot_copy
DISKID="$(grep -s -v '^#' ${ROOT}/etc/vfstab | \
grep "[ ]/boot[ ]*pcfs[ ]" |\
awk '{print $1}' | sed -e 's:p0\:boot::g')"
DISKID="$(basename ${DISKID})"
# Obtain the disk table; it will look something like the following:
#
# * Id Act Bhead Bsect Bcyl Ehead Esect Ecyl Rsect Numsect
# 130 128 27 28 0 242 9 553 1728 8897472
#
# Delete all blank lines, and all lines that begin with *,
# leaving only actual fdisk entries that we can scan
# looking for the X86BOOT partition
fdisk -W - /dev/rdsk/${DISKID}p0 | \
grep -v '^*' | grep -v '^$' > ${TMP_FDFILE1}
num=1
while read id act bhead bcyl ehead ecyl rsect numsect
do
# Ignore entry if not X86 /boot partition
# ID '190' is the X86BOOT partition (see man fdisk(1M))
if [ $id -ne "190" ] ; then
num=$(expr $num + 1)
continue
fi
# Found X86 boot partition - save contents to $DDCOPY
BOOTPART=/dev/rdsk/${DISKID}p${num}
echo "Boot device is <${BOOTPART}>"
ERRMSG="$(dd if=${BOOTPART} of=${DDCOPY} 2>&1)"
if [ $? -ne 0 ] ; then
[ -n "${ERRMSG}" ] && echo "${ERRMSG}"
fail "Unable to save copy of <${BOOTPART}>."
fi
# mount copy of old /boot partition
LOBOOTDEV=$(lofiadm -a ${DDCOPY} 2>&1)
if [ $? -ne 0 ] ; then
[ -n "${LOBOOTDEV}" ] && echo "${LOBOOTDEV}"
fail "Unable to make lo-device <${DDCOPY}>"
fi
SOURCE_BOOT_DEV="${TMPDIR}/tmpbootdev.$$"
mkdir ${SOURCE_BOOT_DEV}
ERRMSG=$(mount -F pcfs ${LOBOOTDEV} \
${SOURCE_BOOT_DEV})
if [ $? -ne 0 ] ; then
[ -n "${ERRMSG}" ] && echo "${ERRMSG}"
fail "Unable to mount lo-device <${LOBOOTDEV}>."
fi
# recreate existing boot partition with updated
# boot files
# umount ${ROOT}'s /boot if mounted
BOOTMOUNTPT=$(mount | grep ${DISKID}p0:boot 2>&1 | \
awk '{print $1;}')
if [ -n "${BOOTMOUNTPT}" ] ; then
echo "unmounting /dev/dsk/${DISKID}p0:boot"
ERRMSG=$(umount \
/dev/dsk/${DISKID}p0:boot 2>&1)
if [ $? -ne 0 ] ; then
[ -n "${ERRMSG}" ] && echo "${ERRMSG}"
fail "Unable to umount X86 boot device."
fi
fi
echo "Making new pcfs file system on ${DISKID}"
echo y | /usr/lib/fs/pcfs/mkfs -F pcfs \
-o S,s,B=$MDBOOT,b=BOOT,i=$STRAP \
/dev/rdsk/${DISKID}p0:boot >> ${LOGFILE} 2>&1
if [ $? -ne 0 ] ; then
echo "Unable to make pcfs:"
cat ${LOGFILE}
fail ""
fi
echo "Copying x86 boot partition contents back\c"
echo " to new /boot fs."
OLD_PWD=$(pwd)
echo "Remounting freshened /boot partition"
if [ -z "${BOOTMOUNTPT}" ] ; then
# boot ptn wasn't mounted
BOOTMOUNT="/tmp/bootpart"
mkdir ${BOOTMOUNT}
else
BOOTMOUNT=${BOOTMOUNTPT}
fi
ERRMSG=$(mount -F pcfs \
/dev/dsk/${DISKID}p0:boot ${BOOTMOUNT} 2>&1)
if [ $? -ne 0 ] ; then
[ -n "${ERRMSG}" ] && echo "${ERRMSG}"
fail "Unable to mount X86 boot device."
fi
# copy old /boot contents
cd ${SOURCE_BOOT_DEV}
find . -mount \! -type s -print | \
cpio -pcdum ${BOOTMOUNT} 2>&1 | \
${LUBIN}/lustripcpioerr
if [ $? -ne 0 ] ; then
fail "Unable to copy boot partition contents."
fi
cd ${OLD_PWD}
# unmount and rm our boot mount, if we created it
if [ -z "${BOOTMOUNTPT}" ] ; then
ERRMSG=$(umount ${BOOTMOUNT} 2>&1)
if [ $? -ne 0 ] ; then
[ -n "${ERRMSG}" ] && echo "${ERRMSG}"
fail "Unable to umount <$BOOTMOUNT>."
fi
rm -rf ${BOOTMOUNT}
fi
# unmount, un-lofi, and rm SOURCE_BOOT_DEV
ERRMSG=$(umount ${SOURCE_BOOT_DEV} 2>&1)
if [ $? -ne 0 ] ; then
[ -n "${ERRMSG}" ] && echo "${ERRMSG}"
fail "Cannot umount lo-device <${LOBOOTDEV}>."
fi
ERRMSG=$(lofiadm -d ${DDCOPY} 2>&1)
if [ $? -ne 0 ] ; then
[ -n "${ERRMSG}" ] && echo "${ERRMSG}"
fail "Cannot remove lo-device <${LOBOOTDEV}>."
fi
rm -rf ${SOURCE_BOOT_DEV}
done < ${TMP_FDFILE1}
rm ${TMP_FDFILE1} ${LOGFILE} ${DDCOPY}
else
# non boot-partition: use installboot to get pboot and bootblk
echo "Updating /boot on Solaris partition."
if [ -z "${ROOT}" ] ; then SEARCH="/"; else SEARCH="${ROOT}"; fi
ROOTRAWDEV=$(mount | grep "^${SEARCH} on " | \
awk '{print $3}' | sed 's;/dsk;/rdsk;')
if [ -z "${ROOTRAWDEV}" ] ; then
[ -n "${ROOTRAWDEV}" && echo "${ROOTRAWDEV}" ]
fail "${SEARCH} must be a mounted filesystem"
fi
echo "Updating Solaris partition ${ROOTRAWDEV} with installboot"
REQFILES="pboot bootblk"
for f in ${REQFILES}; do
if [ ! -f ${TMPDIR}/$f ]; then
fail "Missing $f, aborting."
fi
done
PBOOT=${TMPDIR}/pboot
BOOTBLK=${TMPDIR}/bootblk
install_boot_i386 $PBOOT $BOOTBLK ${ROOTRAWDEV}
if [ $? -ne 0 ] ; then
fail "Unable to installboot to <${ROOTRAWDEV}>."
fi
fi
}
print "Verifying archives ..."
for a in generic $allarchs $rootarchs
do
test -r $cpiodir/$a.root$ZFIX ||
fail "bfu archive $cpiodir/$a.root$ZFIX missing"
done
if [ ! -r $cpiodir/generic.lib$ZFIX -o ! -r $cpiodir/generic.kernel$ZFIX -o \
! -r $cpiodir/generic.sbin$ZFIX ]; then
old_style_archives="true"
$ZCAT $cpiodir/generic.root$ZFIX | cpio -it 2>/dev/null | \
egrep -s '^etc/zones' && \
fail "bfu archive $cpiodir/generic.{kernel,lib,sbin}$ZFIX" \
"missing;\npossible mkbfu version mismatch: pre-zones" \
"style archives with zones files."
fi
for a in generic $allarchs $usrarchs
do
test -r $cpiodir/$a.usr$ZFIX ||
fail "bfu archive $cpiodir/$a.usr$ZFIX missing"
done
for root in $rootlist
do
cd $root || fail "Cannot cd $root"
prologue=${root%/}/bfu.prologue
if [ -f $prologue ]; then
print "Executing $prologue"
$prologue || fail "$prologue failed with code $?"
fi
done
print "Performing basic sanity checks ..."
for dir in $usr $rootlist
do
test -d $dir || fail "$dir does not exist"
test -w $dir || fail "$dir is not writable"
cd $dir || fail "Cannot cd $dir"
done
RM_32BIT_KERNEL=0;
if [ "$karch" = "sun4u" ] &&
($ZCAT $cpiodir/sun4u.root$ZFIX | cpio -itv 2>&1 |
grep "^l.*platform/sun4u/kernel/unix -> sparcv9/unix$" > /dev/null);
then
RM_32BIT_KERNEL=1;
if [ "$force_override" = "no" ] &&
(prtconf -F 2>&1 | egrep '(cgthree|bwtwo)' > /dev/null);
then
print "\n\nERROR: You are upgrading to a 64-bit-only OS. " \
"Your frame buffer does not have a 64-bit driver and " \
"will not work after reboot. To proceed you must run " \
"bfu with the -f flag.";
exit;
fi;
fi;
if [ $plat = "SUNW,Ultra-1" ] && [ ! -f $cpiodir/SUNW,Ultra-1.root$ZFIX ] &&
[ "$force_override" = "no" ];
then
print "\nERROR: These archives do not have Ultra-1 platform support." \
"\nProceeding with this BFU may render this machine unbootable." \
"\nTo proceed anyway, you must run bfu with the -f flag.\n";
exit;
fi;
for root in $rootlist
do
rootprefix=${root%/}
smf_check_repository
done
MINIMUM_OS_REV=10
#
# Perform additional sanity checks if we are upgrading the live system.
#
if [ "$rootlist" = "/" ]
then
#
# Disallow from older releases
#
os_rev=`uname -r | sed -e s/5.//`
if [ $os_rev -lt $MINIMUM_OS_REV -a "$force_override" = "no" ]; then
fail "Cannot bfu from pre-Solaris $MINIMUM_OS_REV"
fi
if [ ! -x /usr/sbin/svcadm ]; then
fail "This version of bfu cannot run on pre-Greenline " \
"(s10_64) systems"
fi
#
# Filesystem space checks
#
set $root 4 $usr 6
while [ $# -gt 0 ]
do
test "`df -b $1 | tail -1 | nawk '{ print $2 }'`" -ge ${2}000 ||
fail "Less than $2 MB free on $1 -- bfu not safe."
shift 2
done
#
# Disable kernel module unloading
#
print "Disabling kernel module unloading ... \c"
test -x /usr/bin/adb || fail "/usr/bin/adb not found: bfu not safe."
echo "moddebug/W20000" | adb -kw /dev/ksyms /dev/mem | grep moddebug
#
# Load modules and drivers here not to reload them when you access
# /devices or its subdirectories later.
#
nawk '$1 !~ /^#|^$/ {print $1}' /etc/name_to_major | \
sed -e 's/#.*$//' | while read driver
do
modload -p drv/${driver} >/dev/null 2>&1
done
ls $cpiodir >>/dev/null # loads elfexec and networking
# exec/intpexec and sys/kaio are needed by lofi
modload -p exec/intpexec >/dev/null 2>&1
modload -p sys/kaio >/dev/null 2>&1
# umount /lib/libc.so.1 if necessary
if [ -n "`mount | grep '^/lib/libc.so.1'`" ]
then
print "Unmounting /lib/libc.so.1 ..."
umount /lib/libc.so.1
fi
PLAT=`/usr/bin/uname -i`
ARCH=`/usr/bin/uname -m`
# umount /platform/$PLAT/lib/libc_psr.so.1 if necessary
if [ -n "`mount | grep "^/platform/$PLAT/lib/libc_psr.so.1"`" ]
then
print "Unmounting /platform/$PLAT/lib/libc_psr.so.1 ..."
umount /platform/$PLAT/lib/libc_psr.so.1
else
# umount /platform/$ARCH/lib/libc_psr.so.1 if necessary
if [ -n "`mount | grep "^/platform/$ARCH/lib/libc_psr.so.1"`" ]
then
print "Unmounting /platform/$ARCH/lib/libc_psr.so.1 ..."
umount /platform/$ARCH/lib/libc_psr.so.1
fi
fi
# umount /platform/$PLAT/lib/sparcv9/libc_psr.so.1 if necessary
if [ -n "`mount | grep "^/platform/$PLAT/lib/sparcv9/libc_psr.so.1"`" ]
then
print "Unmounting /platform/$PLAT/lib/sparcv9/libc_psr.so.1 ..."
umount /platform/$PLAT/lib/sparcv9/libc_psr.so.1
else
# umount /platform/$ARCH/lib/sparcv9/libc_psr.so.1 if necessary
if [ -n "`mount | grep \
"^/platform/$ARCH/lib/sparcv9/libc_psr.so.1"`" ]
then
print "Unmounting \c"
print "/platform/$ARCH/lib/sparcv9/libc_psr.so.1 ..."
umount /platform/$ARCH/lib/sparcv9/libc_psr.so.1
fi
fi
# umount /platform/sun4u-us3/lib/libc_psr.so.1 if necessary
if [ -n "`mount | grep '^/platform/sun4u-us3/lib/libc_psr.so.1'`" ]
then
print "Unmounting /platform/sun4u-us3/lib/libc_psr.so.1 ..."
umount /platform/sun4u-us3/lib/libc_psr.so.1
fi
# umount /platform/sun4u-us3/lib/sparcv9/libc_psr.so.1 if necessary
if [ -n "`mount | grep '^/platform/sun4u-us3/lib/sparcv9/libc_psr.so.1'`" ]
then
print "Unmounting /platform/sun4u-us3/lib/sparcv9/libc_psr.so.1 ..."
umount /platform/sun4u-us3/lib/sparcv9/libc_psr.so.1
fi
if [ -x /usr/sbin/zoneadm ]; then
#
# Stop any running zones: the init script will print a
# message if needed.
#
if [ -x /etc/init.d/zones ]; then
/etc/init.d/zones stop
elif [ -x /lib/svc/method/svc-zones ]; then
#
# We need all zones to be down before proceeding.
# We can't accomplish this by just disabling the
# zones service, since it might already be disabled.
# So we pretend to be SMF, and invoke the stop method.
#
# When zones are someday independently managed as
# service instances, this will need to be revised.
#
export SMF_FMRI="svc:/system/zones:default"
/lib/svc/method/svc-zones stop
unset SMF_FMRI
fi
[ -z `zoneadm list | grep -v global` ] || \
fail "zone(s) failed to halt"
#
# Determine the installed zones, which we will want to do
# after we're done with the global zone. This is done now
# rather than later in case bfu'ing the global zone causes
# the zone configuration to become unreadable (e.g., via a
# DTD flag day).
#
bfu_zone_list=$root/.bfu_zone_list
rm -f $bfu_zone_list
zoneadm list -pi | nawk -F: '{
if ($3 == "installed" &&
($6 == "native" || $6 == "" || $6 == "sn1")) {
printf "%s %s\n", $2, $4
}
}' > $bfu_zone_list
fi
#
# Stop sendmail so that mail doesn't bounce during the interval
# where /etc/mail/aliases is (effectively) empty.
#
# (note that unlike other services here, /etc/init.d/sendmail
# remains post-smf(5) because it is a public interface.)
#
if [ -r /etc/svc/volatile/repository_door ]; then
print "Disabling sendmail temporarily ..."
svcadm disable -t network/smtp
else
print "Killing sendmail ..."
/etc/init.d/sendmail stop
fi
print "Disabling remote logins ..."
echo "bfu in progress -- remote logins disabled" >/etc/nologin
#
# Stop syslogd so it doesn't interfere with saving preserved files.
#
if [ -f /etc/init.d/syslog ]; then
print "Killing syslogd ..."
/etc/init.d/syslog stop
elif [ -r /etc/svc/volatile/repository_door ]; then
print "Disabling syslog temporarily ..."
svcadm disable -t system/system-log
fi
#
# Stop apache so it doesn't get upset when the entire world changes
# out from underneath it.
#
if [ -f /etc/init.d/apache ]; then
print "Killing httpd ..."
/etc/init.d/apache stop
elif [ -r /etc/svc/volatile/repository_door ]; then
print "Disabling httpd temporarily ..."
svcadm disable -t network/http
fi
#
# Kill off fmd so it doesn't get upset when the entire world changes
# out from underneath it.
#
if [ -f /etc/init.d/savecore ]; then
print "Killing fmd ..."
pkill -x fmd
elif [ -r /etc/svc/volatile/repository_door ]; then
print "Disabling fmd temporarily ..."
svcadm disable -t system/fmd
fi
#
# Stop nscd so it doesn't interfere with stuff.
#
if [ -x /etc/init.d/nscd ]; then
print "Killing nscd ..."
/etc/init.d/nscd stop
elif [ -r /etc/svc/volatile/repository_door ]; then
print "Disabling nscd temporarily ..."
svcadm disable -t system/name-service-cache:default
fi
if grep -v "^#" $rootprefix/etc/vfstab | grep boot | \
grep "[ ]pcfs[ ]" >/dev/null 2>&1
then
boot_is_pcfs=yes
fi
smf_new_profiles
else
#
# Check ${root}/etc/motd for SunOS value to get `uname -r`
#
os_rev=`head -1 ${root}/etc/motd | sed -e 's/^.*SunOS //' | \
awk '{print $1}' | sed -e s/5.//`
if [ $os_rev -lt $MINIMUM_OS_REV -a "$force_override" = "no" ]; then
fail "Cannot bfu from pre-Solaris $MINIMUM_OS_REV"
fi
if [ ! -x /usr/sbin/svcadm ]; then
fail "This version of bfu cannot run on pre-Greenline " \
"(s10_64) systems"
fi
fi
export PATH=/tmp/bfubin:$PATH
export LD_LIBRARY_PATH=/tmp/bfulib
if [ -h /tmp/bfulib/64 ]
then
ldlib64="LD_LIBRARY_PATH_64=/tmp/bfulib/64"
export LD_LIBRARY_PATH_64=/tmp/bfulib/64
fi
# turn off auxiliary filters, since they can cause objects to be loaded
# from outside of the protected environment.
export LD_NOAUXFLTR=1
#
# Since we've turned off auxiliary filters, libc_psr will normally not
# be loaded at all. But libc_psr was overriding broken code in libc
# for over a week before the fix for 6324631, so we need to explicitly
# LD_PRELOAD it to allow users to bfu from the broken libc. This can be
# removed once there are no sun4u machines bfued to Nevada bits between
# 9/7/2005 and 9/15/2005.
#
if [ -f /tmp/bfulib/libc_psr.so.1 ]; then
export LD_PRELOAD_32=/tmp/bfulib/libc_psr.so.1
fi
print "Turning on delayed i/o ..."
fastfs -f $rootlist $usr
fastfs $rootlist $usr
#
# The "| tee -a $EXTRACT_LOG" following do_extraction() is not pulled into the
# function itself because it interferes with the cpio exit status detection.
# pcfs boot is an exception, since its cpio exit status is expected to be bad,
# so a heuristic must be employed to infer whether or not any errors occurred.
#
do_extraction() {
compressed_archive=$1
shift
$ZCAT $compressed_archive | cpio -idmucB $* 2>&1 \
|| extraction_error "extracting archive $1"
}
do_pcfs_boot_extraction() {
PCFS_BOOT_LOG=/tmp/bfu-pcfs-boot-log.$$
$ZCAT $1 | cpio -idmucB 2>&1 | grep -v "error.s" | \
grep -v "cpio: Cannot chown()" | \
grep -v "cpio: Error during chown()" | tee $PCFS_BOOT_LOG
cat $PCFS_BOOT_LOG >> $EXTRACT_LOG
egrep -s -v blocks $PCFS_BOOT_LOG
if [ $? -eq 0 ]; then
extraction_error "extracting archive $1 ... see $PCFS_BOOT_LOG"
else
rm -f $PCFS_BOOT_LOG
fi
}
#
# Usage: extract_archives (root|usr|lib|sbin|kernel) arch-list
#
extract_archives() {
base=$1
shift
test $base = usr && cd $usrroot || cd $root
for archive in $*
do
print "Extracting $archive.$base$ZFIX ... \c" \
| tee -a $EXTRACT_LOG
test -h platform/$archive && rm platform/$archive
if [ $base = root ]; then
exclude="-f dev/fd home proc etc/mnttab"
#
# We don't want to overwrite the sharetab if
# it is a mount-point. We assume it is a
# mount-point if it is not writable.
#
if [ -f etc/dfs/sharetab ]; then
if [ ! -w etc/dfs/sharetab ]; then
exclude="$exclude etc/dfs/sharetab"
fi
fi
[ -d system/contract ] &&
exclude="$exclude system/contract"
[ -d system/object ] &&
exclude="$exclude system/object"
[ -f etc/svc/repository.db ] &&
exclude="$exclude etc/svc/repository.db"
[ -e etc/repository_door ] &&
exclude="$exclude etc/repository_door"
[ -f etc/svc/volatile ] &&
exclude="$exclude etc/svc/volatile"
do_extraction $cpiodir/$archive.$base$ZFIX $exclude |
tee -a $EXTRACT_LOG
elif [ $base = usr ]; then
do_extraction $cpiodir/$archive.$base$ZFIX \
-f "usr/openwin" | tee -a $EXTRACT_LOG
else
do_extraction $cpiodir/$archive.$base$ZFIX \
| tee -a $EXTRACT_LOG
fi
done
cd $root
}
extract_boot_archives() {
base=$1
shift
cd $root
for archive in $*
do
if [ ! -f $cpiodir/$archive.$base$ZFIX ]; then
continue
fi
print "Extracting $archive.$base$ZFIX ... \c" \
| tee -a $EXTRACT_LOG
if [ $boot_is_pcfs = yes ]; then
do_pcfs_boot_extraction $cpiodir/$archive.$base$ZFIX
else
do_extraction $cpiodir/$archive.$base$ZFIX | \
tee -a $EXTRACT_LOG
fi
$ZCAT $cpiodir/$archive.$base$ZFIX | cpio -it 2>&1 | \
grep "boot/solaris/devicedb/master" >/dev/null 2>&1
if [ "$?" = "0" ]; then
have_realmode=yes
fi
done
cd $root
}
#
# Classic boot pboot and bootblk compatibility with old archives
#
setup_pboot()
{
NEWPBOOTDIR=$GATE/public/pboot
NEWPBOOT=${NEWPBOOTDIR}/pboot
NEWBOOTBLK=${NEWPBOOTDIR}/bootblk
PBOOTDIR=$usr/platform/$karch/lib/fs/ufs
PBOOT=${PBOOTDIR}/pboot
BOOTBLK=${PBOOTDIR}/bootblk
# they should already be there, but...
if [ -f $NEWPBOOT -a ! -f $PBOOT ]; then
print "Installing pboot from $NEWPBOOTDIR"
cp $NEWPBOOT $PBOOT
fi
if [ -f $NEWBOOTBLK -a ! -f $BOOTBLK ]; then
print "Installing bootblk from $NEWPBOOTDIR"
cp $NEWBOOTBLK $BOOTBLK
fi
if [ -f $NEWPBOOT -a -f $PBOOT ]; then
LATEST=`ls -Lt $PBOOT $NEWPBOOT | head -1`
if [ "$LATEST" = "$NEWPBOOT" ]; then
print "Updating pboot from $NEWPBOOT"
cp $NEWPBOOT $PBOOT
fi
fi
if [ -f $NEWBOOTBLK -a -f $BOOTBLK ]; then
LATEST=`ls -Lt $BOOTBLK $NEWBOOTBLK | head -1`
if [ "$LATEST" = "$NEWBOOTBLK" ]; then
print "Updating bootblk from $NEWBOOTBLK"
cp $NEWBOOTBLK $BOOTBLK
fi
fi
if [[ "$rootslice" = /dev/rdsk/* ]]; then
print "Installing boot block."
( cd $PBOOTDIR ;
install_boot_i386 ./pboot ./bootblk ${rootslice%??}s2 )
fi
#
# Since /platform/i86pc/boot/solaris/boot.bin is moved
# to /boot/solaris, remove the old one if it really
# exists.
#
OLDBOOTDIR=${root}/platform/i86pc/boot/solaris
OLDBOOTBIN=${OLDBOOTDIR}/boot.bin
if [ ! -h ${OLDBOOTDIR} -a -f ${OLDBOOTBIN} ] ;
then
print "Removing old boot.bin."
rm -rf ${OLDBOOTBIN}
fi
}
#
# Multiboot support
#
saved_boot_files="
solaris/bootenv.rc
solaris/devicedb/master
"
#
# transition from multiboot to dca
#
check_multi_to_dca_boot()
{
bootdev=`grep p0:boot $rootprefix/etc/vfstab | \
grep pcfs | nawk '{print $1}'`
if [ "$bootdev" != "" ]; then
is_pcfs_boot=yes
fi
if [ $is_pcfs_boot = yes ]; then
df -h | grep stubboot >/dev/null 2>&1
if [ $? -eq 0 ]; then
# save configurable files from /boot
# before remounting /stubboot.
# files are relative to /boot.
for file in $saved_boot_files
do
dir="`dirname $rootprefix/stubboot/$file`"
mkdir -p $dir
cp $rootprefix/boot/$file $dir
done
echo "unmount $bootdev at $rootprefix/stubboot"
ERRMSG=$(umount $bootdev 2>&1)
if [ $? -ne 0 ] ; then
[ -n "${ERRMSG}" ] && echo "${ERRMSG}"
fail "Unable to umount $bootdev on $rootprefix/stubboot."
fi
# adjust vfstab
sed -e "s/[ ]\/stubboot[ ]/ \/boot /" \
<$rootprefix/etc/vfstab >$rootprefix/etc/vfstab+
mv $rootprefix/etc/vfstab $rootprefix/etc/vfstab-
mv $rootprefix/etc/vfstab+ $rootprefix/etc/vfstab
ERRMSG=$(mount -F pcfs $bootdev $rootprefix/boot 2>&1)
if [ $? -ne 0 ] ; then
[ -n "${ERRMSG}" ] && echo "${ERRMSG}"
fail "Unable to mount $bootdev on $rootprefix/boot."
fi
fi
fi
}
check_dca_to_multiboot()
{
bootdev=`grep p0:boot $rootprefix/etc/vfstab | \
grep pcfs | nawk '{print $1}'`
if [ "$bootdev" != "" ]; then
is_pcfs_boot=yes
fi
if [ $system_type != dca ]; then
return
fi
# ensure bootpath is in $rootprefix/boot/solaris/bootenv.rc
# It's ok to put a meta device path in there
bootenvrc=$rootprefix/boot/solaris/bootenv.rc
grep "^setprop[ ]*bootpath[ ]" $bootenvrc > /dev/null
if [ $? != 0 ]; then
rootdev=`grep -v "^#" $rootprefix/etc/vfstab | \
grep "[ ]/[ ]" | nawk '{print $1}'`
bootpath=`ls -l $rootdev | nawk '{ print $NF }' |\
sed "s#../../devices##"`
echo "setprop bootpath '$bootpath'" >> $bootenvrc
fi
rm -f $rootprefix/boot/mdboot
}
#
# Figure out the boot architecture of the current system:
# 1. If dboot_image is in unix, it's a dboot system
# 2. Otherwise, if multiboot is present, it's a multiboot system
# 3. Otherwise, it's a pre-multiboot system
#
# This is called before we lay down the new archives.
#
check_system_type()
{
if [ -x $root/boot/solaris/bin/symdef ] && \
$root/boot/solaris/bin/symdef $root/platform/i86pc/kernel/unix \
dboot_image; then
system_type=directboot
elif [ -x $root/platform/i86pc/multiboot ]; then
system_type=multiboot
else
system_type=dca
fi
}
#
# Detect SVM root and return the list of raw devices under the mirror
#
get_rootdev_list()
{
if [ -f $rootprefix/etc/lu/GRUB_slice ]; then
grep '^PHYS_SLICE' $rootprefix/etc/lu/GRUB_slice | cut -d= -f2
else
metadev=`grep -v "^#" $rootprefix/etc/vfstab | \
grep "[ ]/[ ]" | nawk '{print $2}'`
if [[ $metadev = /dev/rdsk/* ]]; then
rootdevlist=`echo "$metadev" | sed -e "s#/dev/rdsk/##"`
elif [[ $metadev = /dev/md/rdsk/* ]]; then
metavol=`echo "$metadev" | sed -e "s#/dev/md/rdsk/##"`
rootdevlist=`metastat -p $metavol |\
grep -v "^$metavol[ ]" | nawk '{print $4}'`
fi
for rootdev in $rootdevlist
do
echo /dev/rdsk/$rootdev
done
fi
}
#
# Done once per transition from classic (dca) to multi boot
#
setup_stubboot()
{
bootdev=`grep -v "^#" $rootprefix/etc/vfstab | grep pcfs | \
grep "[ ]/boot[ ]"`
if [[ -n $bootdev ]] ; then
bootdev=`echo "$bootdev" | nawk '{print $1}'`
rbootdev=`echo "$bootdev" | sed -e "s/dev\/dsk/dev\/rdsk/"`
# Remount boot partition as /stubboot, set up new /boot
mkdir -p $rootprefix/stubboot
ERRMSG=$(umount $bootdev 2>&1)
if [ $? -ne 0 ] ; then
[ -n "${ERRMSG}" ] && echo "${ERRMSG}"
fail "Unable to umount $bootdev."
fi
ERRMSG=$(mount -F pcfs $bootdev $rootprefix/stubboot 2>&1)
if [ $? -ne 0 ] ; then
[ -n "${ERRMSG}" ] && echo "${ERRMSG}"
fail "Unable to mount $bootdev on $rootprefix/stubboot."
fi
mkdir -p $rootprefix/boot
cp -r $rootprefix/stubboot/* $rootprefix/boot
# adjust /etc/vfstab
sed <$rootprefix/etc/vfstab \
-e "s/[ ]\/boot[ ]/ \/stubboot /" | \
sed -n >$rootprefix/etc/vfstab+ '
/p0:boot/ {
s/[ ]no/ yes/
}
p
'
mv $rootprefix/etc/vfstab $rootprefix/etc/vfstab-
mv $rootprefix/etc/vfstab+ $rootprefix/etc/vfstab
fi
}
#
# multiboot: install grub on the boot slice
#
install_grub()
{
STAGE1=$rootprefix/boot/grub/stage1
STAGE2=$rootprefix/boot/grub/stage2
if [ -x $rootprefix/boot/solaris/bin/update_grub ]; then
/tmp/bfubin/ksh $rootprefix/boot/solaris/bin/update_grub \
-R $root
elif [ $is_pcfs_boot = no ]; then
get_rootdev_list | while read rootdev
do
print "Install grub on $rootdev"
PATH=/tmp/bfubin /tmp/bfubin/installgrub \
$STAGE1 $STAGE2 $rootdev
done
else
# copy /boot grub & solaris to /stubboot
cp -r $rootprefix/boot/grub $rootprefix/stubboot/grub
cp -r $rootprefix/boot/solaris $rootprefix/stubboot/solaris
# Adjust grub paths relative to pcfs filesystem
rm -rf $rootprefix/stubboot/boot
mkdir -p $rootprefix/stubboot/boot
mv $rootprefix/stubboot/grub $rootprefix/stubboot/boot
mv $rootprefix/stubboot/solaris $rootprefix/stubboot/boot
#
# Run installgrub after copying stubboot to avoid overwriting
# /stubboot/boot/grub/stage2, which must stay untouched.
#
bootdev=`grep -v "^#" $rootprefix/etc/vfstab | grep pcfs | \
grep "[ ]/stubboot[ ]" | nawk '{print $1}'`
rbootdev=`echo "$bootdev" | sed -e "s/dev\/dsk/dev\/rdsk/"`
if [ "$rbootdev" != "" ]; then
print "Install grub on $rbootdev"
PATH=/tmp/bfubin /tmp/bfubin/installgrub $STAGE1 $STAGE2 $rbootdev
fi
fi
}
#
# We check for several possibilites of a bootenv.rc line:
#
# 1. setprop name 'value'
# 2. setprop name "value"
# 3. setprop name value
#
parse_bootenv_line()
{
line=$1
value=`echo $line | grep "'" | cut -d\' -f2`
if [ -z "$value" ]; then
value=`echo $line | grep "\"" | cut -d\" -f2`
if [ -z "$value" ]; then
value=`echo $line | cut -d' ' -f3-`
fi
fi
echo $value
}
update_bootenv()
{
bootenvrc=$rootprefix/boot/solaris/bootenv.rc
bootenvrc_updated=0
# Note: the big space below is actually a space and tab
boot_file=`grep '^setprop[ ]\{1,\}boot-file\>' $bootenvrc`
if [ -n "$boot_file" ]; then
file=`parse_bootenv_line "$boot_file"`
if [ -n "$file" ]; then
PATH=/tmp/bfubin /tmp/bfubin/bootadm set-menu kernel="$file"
bootenvrc_updated=1
fi
fi
console=`grep '^setprop[ ]\{1,\}console\>' $bootenvrc`
if [ -z "$console" ]; then
console=`grep '^setprop[ ]\{1,\}input-device\>' \
$bootenvrc`
fi
if [ -n "$console" ]; then
cons=`parse_bootenv_line "$console"`
fi
boot_args=`grep '^setprop[ ]\{1,\}boot-args\>' $bootenvrc`
if [ -n "boot_args" ]; then
args=`parse_bootenv_line "$boot_args"`
fi
if [ -n "$cons" ] && [ -n "$args" ]; then
# If args starts with a -B, remove it and add a comma instead
if echo $args | grep '^-B ' >/dev/null; then
new_args=`echo $args | sed 's/^-B //'`
args_line="-B console=$cons,$new_args"
else
args_line="-B console=$cons $args"
fi
elif [ -n "$cons" ]; then
args_line="-B console=$cons"
elif [ -n "$args" ]; then
args_line="$args"
else
args_line=""
fi
if [ -n "$args_line" ]; then
PATH=/tmp/bfubin /tmp/bfubin/bootadm set-menu args="$args_line"
bootenvrc_updated=1
fi
if [ $bootenvrc_updated = 1 ]; then
egrep -v '^setprop[ ]+(boot-file|boot-args)[ ]' $bootenvrc > ${bootenvrc}.new
[ -s ${bootenvrc}.new ] && mv ${bootenvrc}.new $bootenvrc
fi
}
get_biosdisk()
{
rootdev=$1
rootphys=`ls -l $rootdev | nawk '{ print $NF }' | \
sed -e "s/\.\.\/\.\.\/devices//" -e "s/:[abcdefgh],raw//"`
rbootdev=`echo "$rootdev" | sed -e "s/s[0-7]/p0/"`
#
# Use biosdev to get the bios disk number
#
biosdisk=`biosdev | grep $rootphys | \
nawk '{print $1}' | sed -e "s/0x8//"`
}
#
# multiboot: set up initial grub menu
#
update_grub_menu()
{
MENU=$rootprefix/boot/grub/menu.lst
grubhd=$1
if [ $archive_type = multiboot ]; then
BOOT_PROG="kernel /platform/i86pc/multiboot"
BOOT_ARCHIVE="module /platform/i86pc/boot_archive"
else
#
# directboot archives
#
BOOT_PROG="kernel\$ /platform/i86pc/kernel/\$ISADIR/unix"
BOOT_ARCHIVE="module\$ /platform/i86pc/\$ISADIR/boot_archive"
fi
#
# The failsafe archives may be different than the boot archives
#
if [ -x /boot/platform/i86pc/kernel/unix ]; then
BOOT_FAILSAFE_FILE="/boot/platform/i86pc/kernel/unix"
BOOT_FAILSAFE_SUFFIX=""
else
BOOT_FAILSAFE_FILE="/boot/multiboot"
BOOT_FAILSAFE_SUFFIX="kernel/unix"
fi
#
# Append some useful entries to the existing menu
#
echo "Update GRUB menu $MENU with entries for $grubhd"
grep ^default $MENU > /dev/null
[ $? = 0 ] || echo "default=0" >> $MENU
grep ^timeout $MENU > /dev/null
[ $? = 0 ] || echo "timeout=10" >> $MENU
echo "#serial --unit=0 --speed=9600" >> $MENU
echo "#terminal serial" >> $MENU
echo "#splashimage=$grubhd/boot/grub/splash.xpm.gz" >> $MENU
echo "title Solaris" >> $MENU
echo " root $grubhd" >> $MENU
echo " ${BOOT_PROG}" >> $MENU
echo " ${BOOT_ARCHIVE}" >> $MENU
echo "GRUB menu entry 'Solaris' boots to eeprom(1m) settings"
if [ -f ${rootprefix}/$BOOT_FAILSAFE_FILE ] &&
[ -f ${rootprefix}/boot/x86.miniroot-safe ] ; then
TTY=`grep "^setprop input-device" \
${rootprefix}/boot/solaris/bootenv.rc | cut -f 2 -d \'`
if [ -z "${TTY}" ] ; then
TTY=`grep "^setprop console" \
${rootprefix}/boot/solaris/bootenv.rc | \
cut -f 2 -d \'`
fi
if [ "${TTY}" = "ttya" ] || [ "${TTY}" = "ttyb" ] ; then
FS_CONSOLE="-B console=${TTY}"
fi
cat >>$MENU <<EOF
title Solaris failsafe
root $grubhd
kernel $BOOT_FAILSAFE_FILE $BOOT_FAILSAFE_SUFFIX $FS_CONSOLE -s
module /boot/x86.miniroot-safe
EOF
fi
}
bootadm_f_flag=""
install_failsafe()
{
if [ "$root" != "/" ] || \
[ -f /boot/x86.miniroot-safe ] || \
[ ! -x ${GATEPATH}/public/bin/update_failsafe ]; then
#
# Either we're not bfu'ing /, or the failsafe archives were
# already installed, or update_failsafe is not available.
# If the old failsafe archives were multiboot, clear out the
# directboot kernel.
#
if [ $failsafe_type = multiboot ]; then
rm -f $rootprefix/boot/platform/i86pc/kernel/unix
elif [ $failsafe_type = directboot ]; then
cp /tmp/bfubin/unix \
$rootprefix/boot/platform/i86pc/kernel/unix
fi
else
echo "Updating failsafe archives"
${GATEPATH}/public/bin/update_failsafe
# Force bootadm to update the failsafe entry
bootadm_f_flag="-f"
fi
}
setup_grub_menu()
{
MENU=$rootprefix/boot/grub/menu.lst
get_rootdev_list | while read rootdev
do
rootphys=`ls -l $rootdev | nawk '{print $NF}' | \
sed -e "s/\.\.\/\.\.\/devices//"`
gslice=`echo "$rootphys" | cut -f 2 -d : | sed s/,raw//`
rootphys=`echo "$rootphys" | sed -e "s/:[abcdefgh],raw//"`
rbootdev=`echo "$rootdev" | sed -e "s/s[0-7]/p0/"`
#
# Wallow through fdisk to get the active partition number
# Partition numbering is zero-based
#
part=0
fdisk -W - $rbootdev | grep -v '^*' | grep -v '^$' | \
while read id act bhead bcyl ehead ecyl rsect numsect
do
# Find solaris partition, either older 130 or 191
if [ $id -eq "191" -o $id -eq "130" ] ; then
break
fi
part=`expr "$part" + 1`
done
get_biosdisk $rootdev
grubhd="(hd${biosdisk},${part},${gslice})"
#
# update the grub menu if it doesn't exist or
# doesn't have usable boot entries
#
if [ -f $MENU ]; then
grep -v "^#" $MENU | grep $grubhd >/dev/null 2>&1
if [ $? -eq 1 ]; then
update_grub_menu $grubhd
fi
else
update_grub_menu $grubhd
fi
done
}
#
# Build the multiboot boot archive
#
build_boot_archive()
{
#
# We should be able to run bootadm here but that's a
# little more complicated than one would think
#bootadm_args=${rootprefix:+-R $rootprefix}
#PATH=/tmp/bfubin /tmp/bfubin/bootadm update $bootadm_args
cr_args=${rootprefix:+ -R $rootprefix}
LD_LIBRARY_PATH=/tmp/bfulib PATH=/tmp/bfubin \
/tmp/bfubin/ksh $rootprefix/boot/solaris/bin/create_ramdisk $cr_args
#
# Disable the boot-archive service on the first boot
# to silence complaints about new files
# svccfg -s system/boot-archive setprop start/exec = true
mkdir -p $rootprefix/bfu.conflicts/lib/svc/method
cp $rootprefix/lib/svc/method/boot-archive \
$rootprefix/bfu.conflicts/lib/svc/method/boot-archive
cat >$rootprefix/lib/svc/method/boot-archive <<"EOF"
#!/sbin/sh
exit 0
EOF
cat >$rootprefix/etc/rc2.d/S99postbfu <<EOF
#!/bin/sh
#
case "\$1" in
'start')
cp /bfu.conflicts/lib/svc/method/boot-archive /lib/svc/method/boot-archive
chmod +x /lib/svc/method/boot-archive
rm -f /etc/rc2.d/S99postbfu
;;
*)
echo "usage: \$0 start"
exit 1
;;
esac
exit 0
EOF
chmod +x $rootprefix/etc/rc2.d/S99postbfu
chmod +x $rootprefix/lib/svc/method/boot-archive
chmod +x $rootprefix/bfu.conflicts/lib/svc/method/boot-archive
}
disable_boot_service()
{
svccfg -s system/boot-archive setprop start/exec = true
cat >$rootprefix/lib/svc/method/boot-archive <<EOF
#!/sbin/sh
. /lib/svc/share/smf_include.sh
. /lib/svc/share/fs_include.sh
exit 0
EOF
}
dir_is_inherited() {
dir=$1
set -- `zonecfg -z $zone info inherit-pkg-dir dir=/$dir`
[ "$3" = "/$dir" ] && return 0 || return 1
}
check_boot_env()
{
if [ $multi_or_direct = yes ]; then
if [ $archive_type != $system_type ]; then
install_failsafe
[ $system_type = dca ] && setup_grub_menu
if [ $have_new_bootadm = yes ] || \
[ -x /tmp/bfubin/symdef ] && \
[ -x /tmp/bfubin/bootadm ] && \
/tmp/bfubin/symdef /tmp/bfubin/bootadm \
dboot_or_multiboot; then
if [[ -z $rootprefix ]]; then
PATH=/tmp/bfubin /tmp/bfubin/bootadm \
-m upgrade $bootadm_f_flag
else
PATH=/tmp/bfubin /tmp/bfubin/bootadm \
-m upgrade -R $rootprefix \
$bootadm_f_flag
fi
install_grub
[ $archive_type = directboot ] && update_bootenv
else
install_grub
cat >&2 <<EOF
WARNING: Cannot find new bootadm. If bfu'ing across the multiboot/directboot
boundary, you will need to manually change menu.lst. See
http://www.sun.com/msg/SUNOS-8000-CF for details.
EOF
fi
#
# If we're going backwards, we need to remove the
# symdef binary.
#
if [ -f $rootprefix/boot/solaris/bin/symdef ] && \
[ $archive_type = multiboot ]
then
rm -f $rootprefix/boot/solaris/bin/symdef \
$rootprefix/boot/solaris/bin/update_grub
fi
elif [ $failsafe_type = multiboot ]; then
rm -f $rootprefix/boot/platform/i86pc/kernel/unix
elif [ $failsafe_type = directboot ]; then
cp /tmp/bfubin/unix \
$rootprefix/boot/platform/i86pc/kernel/unix
fi
build_boot_archive
else
disable_boot_service
fi
}
mondo_loop() {
typeset pkgroot
typeset pkg
root=$1
zone=$2
if [ $zone != global ]; then
usrroot=$root
fi
# If the archives being installed contain i86pc.boot,
# check to see if it contains strap.com, one of the
# four possibly-required booters. If i86pc.boot does,
# try to upgrade the realmode booters from the current
# archive set.
#
# Don't bother doing the upgrade for diskless bfu, as the boot
# will be done with floppy or PXE, which must match the build
# anyway (floppy must match or add_install_client must be
# rerun), and in any event we can't touch the boot bits
# for diskless boot from here. Also don't do this for
# any zone but 'global'.
cd $root || fail "Cannot cd $root"
rootprefix=${root%/}
if [ "$karch" = "i86pc" -a "$diskless" = "no" -a "$zone" = "global" ]
then
remove_properties
check_system_type
if boot_is_upgradeable $root && \
[ $archive_type = dca ]; then
check_multi_to_dca_boot
print "\nUpdating realmode boot loaders\n"
update_realmode_booters $root
setup_pboot
fi
if [ $multi_or_direct = yes ]; then
check_dca_to_multiboot
if [ $is_pcfs_boot = yes ]; then
setup_stubboot
fi
fi
fi
SECONDS=0 # time each iteration
print "\nSaving configuration files in $rootprefix/bfu.child ... \c"
cd $root
rm -rf bfu.default bfu.restore # historical
rm -rf bfu.child bfu.conflicts
mkdir bfu.child bfu.conflicts
filelist $zone | cpio -pdmu bfu.child || \
fail 'failed to save config files'
test -f etc/motd && mv etc/motd etc/motd.old
#
# If the var/sadm/system/admin/INST_RELEASE file still exists,
# this system has never been bfu'd before. Therefore, the
# information in var/sadm/install/contents is still valid and
# can be used to determine whether files have been modified
# since installation (the bfu.ancestors directory serves this
# purpose for systems that have already been bfu'd.)
#
if [ -f var/sadm/system/admin/INST_RELEASE ] ; then
firstbfu=yes
else
firstbfu=no
fi
#
# bfu'ed systems are not upgradeable; prevent suninstall from
# even *presenting* the upgrade option by removing INST_RELEASE.
#
rm -f var/sadm/system/admin/INST_RELEASE
#
# Hacks to work around minor annoyances and make life more pleasant.
# Part 1 of 2: pre-archive-extraction stuff
#
#
# Do not remove remove_initd_links, since this makes sure things
# work properly when init scripts are shuffled around.
#
remove_initd_links
#
# Remove rc.d scripts and things made superfluous by smf.
# Backwards BFUs will resurrect them from the archives.
#
smf_cleanup
#
# New, enabled-by-default services need to be checked for, such
# that their enabled status is not flipped by BFU after their
# initial arrival.
#
smf_handle_new_services
# Reflect SUNWcsr's pre-install change, ensures
# the i.hosts action script works during 'acr'
if [[ -f $rootprefix/etc/inet/ipnodes && \
! -h $rootprefix/etc/inet/ipnodes ]]; then
rm -f $rootprefix/etc/inet/ipnodes.hostsmerge
cp -p $rootprefix/etc/inet/ipnodes \
$rootprefix/etc/inet/ipnodes.hostsmerge
fi
#
# Remove obsolete disassembler module
#
if [ $target_isa = sparc ]; then
rm -rf $usr/lib/mdb/disasm/*
rm -f $root/kernel/kmdb/sparcv9/sparc
fi
#
# Remove obsolete Sun-Fire-880 (daktari) FMA Fault Tree directory
# and file. Backwards BFUs will resurrect them from the archives.
#
if [ $target_isa = sparc ]; then
rm -rf $usr/platform/SUNW,Sun-Fire-880/lib/fm
fi
#
# Remove old ndpd header (moved to /usr/include per 6509782)
#
rm -f $usr/include/protocols/ndpd.h
#
# Remove old FMA dictionary files
#
rm -f $usr/lib/fm/FMD.dict
rm -f $usr/lib/fm/SUN4U.dict
rm -f $usr/lib/fm/SUNOS.dict
# Remove unused SMF dictionary
rm -f $root/usr/lib/fm/dict/SMF.dict
rm -f $root/usr/lib/locale/C/LC_MESSAGES/SMF.mo
#
# Remove old FMA .eft files and directories
#
rm -f $usr/platform/sun4u/lib/fm/eft/pci-sun4u.eft
rm -rf $usr/platform/SUNW,Serverblade1/lib/fm
rm -rf $usr/platform/SUNW,Sun-Fire/lib/fm
rm -rf $usr/platform/SUNW,Sun-Fire-15000/lib/fm
#
# Remove old FMA LDOMS files
#
rm -f $usr/platform/sun4v/lib/fm/fmd/libldom.so.1
rm -f $usr/platform/sun4v/lib/fm/fmd/libldom.so
rm -f $usr/platform/sun4v/lib/fm/fmd/llib-lldom
rm -f $usr/platform/sun4v/lib/fm/fmd/llib-lldom.ln
rm -f $usr/platform/sun4v/lib/fm/fmd/sparcv9/libldom.so.1
rm -f $usr/platform/sun4v/lib/fm/fmd/sparcv9/libldom.so
rm -f $usr/platform/sun4v/lib/fm/fmd/sparcv9/llib-lldom.ln
#
# Remove old topology data
#
rm -rf $usr/lib/fm/topo
rm -f $usr/platform/*/lib/fm/topo/hc-topology.xml
#
# Remove old prtopo and obsoleted include file.
#
rm -f $usr/include/fm/libtopo_enum.h
rm -f $usr/lib/fm/prtopo
#
# Remove obsolete buildmnttab script. Backwards BFUs will
# resurrect it by extracting it from the archives.
#
rm -f $root/etc/init.d/buildmnttab
rm -f $root/etc/rcS.d/S70buildmnttab.sh
#
# Break-up of inetsvc, inetinit & network -- remove both the old
# and new init scripts. The correct ones will be extracted from
# the archives whether bfu'ing backwards or forwards.
#
# old: need to remove going forwards:
#
rm -f $root/etc/rc0.d/K42inetsvc
rm -f $root/etc/rc1.d/K42inetsvc
rm -f $root/etc/rcS.d/K42inetsvc
rm -f $root/etc/rcS.d/S29network.sh
#
# new: need to remove going backwards:
#
rm -f $root/etc/init.d/domainname
rm -f $root/etc/init.d/inetd
rm -f $root/etc/init.d/named
rm -f $root/etc/init.d/nodename
rm -f $root/etc/rc0.d/K40inetd
rm -f $root/etc/rc0.d/K42named
rm -f $root/etc/rc1.d/K40inetd
rm -f $root/etc/rc1.d/K42named
rm -f $root/etc/rc2.d/S69domainname
rm -f $root/etc/rc2.d/S72named
rm -f $root/etc/rc2.d/S77inetd
rm -f $root/etc/rcS.d/K40inetd
rm -f $root/etc/rcS.d/K42named
rm -f $root/etc/rcS.d/S28network.sh
rm -f $root/etc/rcS.d/S29nodename.sh
#
# Remove Zones init scripts: they will be extracted properly
# going forwards; after going backwards, they will be gone,
# thus preventing scary warnings on subsequent bfu's.
#
rm -f $root/etc/init.d/zones
rm -f $root/etc/rc0.d/K01zones
rm -f $root/etc/rc1.d/K01zones
rm -f $root/etc/rc2.d/K01zones
rm -f $root/etc/rc3.d/S99zones
rm -f $root/etc/rcS.d/K01zones
#
# Remove <inet>6 STREAMS modules; these no longer exist (and
# should never have existed in the first place).
#
rm -f $root/kernel/strmod/icmp6 \
$root/kernel/strmod/ip6 \
$root/kernel/strmod/tcp6 \
$root/kernel/strmod/udp6 \
rm -f $root/kernel/strmod/sparcv9/icmp6 \
$root/kernel/strmod/sparcv9/ip6 \
$root/kernel/strmod/sparcv9/tcp6 \
$root/kernel/strmod/sparcv9/udp6 \
#
# Remove old ZFS binaries (back when it was three modules)
#
find $root/kernel/drv -name zpool 2> /dev/null | xargs rm -f
rm -f $root/kernel/drv/zpool.conf
rm -f $root/kernel/drv/zpool.cache
find $root/kernel/drv -name zvol 2> /dev/null | xargs rm -f
rm -f $root/kernel/drv/zvol.conf
#
# Remove /usr/lib/old_libthread since support for it has
# been removed from the kernel in Solaris 10. If this is
# a backwards BFU, it will all be extracted again by cpio.
rm -rf $usr/lib/old_libthread
# Remove libconfig
rm -f $usr/lib/drv/config_md.so.1
rm -f $usr/include/config_md.h
# remove libssd
rm -f $usr/lib/libssd.a
rm -f $usr/lib/libssd.so
rm -f $usr/lib/libssd.so.1
# remove libap
rm -f $usr/lib/libap_dmd.a
rm -f $usr/lib/libap_dmd.so.1
# remove libintpos
rm -f $usr/lib/libintpos.a
rm -f $usr/lib/libintpos.so.1
# Remove obsolete abi subdirectories
if [ -d $usr/platform/*/lib/abi ]; then
rm -rf $usr/platform/*/lib/abi
fi
rm -rf $usr/lib/gss/abi
rm -rf $usr/lib/krb5/abi
rm -rf $usr/xpg4/lib/abi
rm -rf $usr/ucblib/abi
#
# Remove old stuff related to libthread now that libthread has
# been folded into libc and libthread_db has been renamed libc_db.
# In addition, all the apptrace's tracing libraries (i.e., abi_*.so*),
# spec2map and spec2trace are no longer needed, should be removed.
rm -f \
$usr/lib/mdb/proc/libthread.so \
$usr/lib/mdb/proc/sparcv9/libthread.so \
$usr/lib/abi/spec2map \
$usr/lib/abi/spec2trace \
$usr/lib/abi/abi_*.so* \
$usr/lib/abi/sparcv9/abi_*.so*
#
# Remove the old symlink /lib => usr/lib, if necessary.
# /lib is now a real directory in the root filesystem.
# Remove all of the old static libraries and commands now
# that we no longer build them. If this is a backwards
# BFU, all this will all be extracted again by cpio.
rm $root/lib 2>/dev/null
rm -rf $usr/lib/pics
rm -rf $usr/sbin/static
rm -f \
$usr/ccs/lib/libcurses.a \
$usr/ccs/lib/libform.a \
$usr/ccs/lib/libgen.a \
$usr/ccs/lib/libl.a \
$usr/ccs/lib/libmalloc.a \
$usr/ccs/lib/libmenu.a \
$usr/ccs/lib/libpanel.a \
$usr/ccs/lib/libtermcap.a \
$usr/ccs/lib/libtermlib.a \
$usr/ccs/lib/liby.a \
$usr/lib/lib300.a \
$usr/lib/lib300s.a \
$usr/lib/lib4014.a \
$usr/lib/lib450.a \
$usr/lib/libTL.a \
$usr/lib/libadm.a \
$usr/lib/libadt_jni.a \
$usr/lib/libbsdmalloc.a \
$usr/lib/libbsm.a \
$usr/lib/libc.a \
$usr/lib/libc2.a \
$usr/lib/libc2stubs.a \
$usr/lib/libcmd.a \
$usr/lib/libcrypt.a \
$usr/lib/libcrypt_d.a \
$usr/lib/libcrypt_i.a \
$usr/lib/libcurses.a \
$usr/lib/libdevid.a \
$usr/lib/libdevinfo.a \
$usr/lib/libdhcpagent.a \
$usr/lib/libdhcputil.a \
$usr/lib/libdl_stubs.a \
$usr/lib/libefi.a \
$usr/lib/libelf.a \
$usr/lib/libform.a \
$usr/lib/libgen.a \
$usr/lib/libgenIO.a \
$usr/lib/libike.a \
$usr/lib/libinetcfg.a \
$usr/lib/libinetutil.a \
$usr/lib/libintl.a \
$usr/lib/libkstat.a \
$usr/lib/libl.a \
$usr/lib/libldfeature.a \
$usr/lib/libmail.a \
$usr/lib/libmalloc.a \
$usr/lib/libmapmalloc.a \
$usr/lib/libmenu.a \
$usr/lib/libmeta.a \
$usr/lib/libmp.a \
$usr/lib/libnisdb.a \
$usr/lib/libnls.a \
$usr/lib/libnsl.a \
$usr/lib/libnss_compat.a \
$usr/lib/libnss_dns.a \
$usr/lib/libnss_files.a \
$usr/lib/libnss_nis.a \
$usr/lib/libnss_nisplus.a \
$usr/lib/libp/libc.a \
$usr/lib/libpam.a \
$usr/lib/libpanel.a \
$usr/lib/libplot.a \
$usr/lib/librac.a \
$usr/lib/libresolv.a \
$usr/lib/librpcsvc.a \
$usr/lib/libsec.a \
$usr/lib/libsendfile.a \
$usr/lib/libsocket.a \
$usr/lib/libstraddr.a \
$usr/lib/libtermcap.a \
$usr/lib/libtermlib.a \
$usr/lib/libuuid.a \
$usr/lib/libvolmgt.a \
$usr/lib/libvt0.a \
$usr/lib/libw.a \
$usr/lib/liby.a \
$usr/lib/null.a \
$usr/lib/sparcv9/libadt_jni.a \
$usr/lib/sparcv9/libinetutil.a \
$usr/lib/sparcv9/libldfeature.a \
$usr/lib/sparcv9/libsendfile.a \
$usr/platform/sun4u/lib/libwrsmconf.a \
$usr/ucblib/libcurses.a \
$usr/ucblib/libdbm.a \
$usr/ucblib/libtermcap.a \
$usr/ucblib/libucb.a
#
# Remove other obsolete files, too
rm -f \
$usr/include/table.h \
$usr/include/libgenIO.h \
$usr/lib/llib-lTL \
$usr/lib/llib-lTL.ln
#
# libc_psr.so.1 and libmd5_psr.so.1 have been moved
# from /usr/platform/*/lib to /platform/*/lib.
# Remove the old files and their containing directories
rm -f $usr/platform/*/lib/libc_psr.so.1
rm -f $usr/platform/*/lib/sparcv9/libc_psr.so.1
rm -f $usr/platform/*/lib/libmd5_psr.so.1
rm -f $usr/platform/*/lib/sparcv9/libmd5_psr.so.1
rmdir $usr/platform/*/lib/sparcv9 2>/dev/null
rmdir $usr/platform/*/lib 2>/dev/null
#
# libmd5_psr.so.1 and symlinks to it have been replaced
# by libmd_psr.so.1 and thus need to be removed
rm -f $root/platform/*/lib/libmd5_psr.so.1
rm -f $root/platform/*/lib/sparcv9/libmd5_psr.so.1
#
# Remove obsolete profile libc symlinks
rm -f $usr/lib/libp/libc.so
rm -f $usr/lib/libp/sparcv9/libc.so
#
# Remove Legacy DR files, now obsolete due to NGDR Phase II putback
#
STARFIRE_PLAT=platform/SUNW,Ultra-Enterprise-10000
rm -f \
$root/$STARFIRE_PLAT/kernel/drv/dr \
$root/$STARFIRE_PLAT/kernel/drv/dr.conf \
$root/$STARFIRE_PLAT/kernel/misc/drmach \
$root/$STARFIRE_PLAT/kernel/drv/sparcv9/dr \
$root/$STARFIRE_PLAT/kernel/misc/sparcv9/drmach \
$root/$STARFIRE_PLAT/lib/dr_daemon \
$usr/platform/sun4u/include/sys/dr.h \
$usr/platform/sun4u/include/sys/sfdr.h
# Remove obsolete OPL platform links.
rm -f $root/platform/FJSV,SPARC-Enterprise
rm -f $root/platform/SUNW,OPL-Enterprise
rm -f $usr/platform/FJSV,SPARC-Enterprise
rm -f $usr/platform/SUNW,OPL-Enterprise
# Solstice Enterprise Agent(SEA) : mib-II subagent mibiisa
# needs to be disabled during startup. SMA(System Management Agent)
# has the capability to support mib-II requests.
# The correct ones will be extracted from
# the archives whether bfu'ing backwards or forwards.
#
# old: need to remove going forwards:
rm -f $root/etc/snmp/conf/mibiisa.rsrc
#
# new: need to remove going backwards:
rm -f $root/etc/snmp/conf/mibiisa.rsrc-
# remove old terminal emulator module:
# (renamed from 'terminal-emulator' to 'tem')
#
# old: need to remove going forwards:
rm -f $root/kernel/misc/terminal-emulator
rm -f $root/kernel/misc/amd64/terminal-emulator
#
# new: need to remove going backwards:
rm -f $root/kernel/misc/tem
rm -f $root/kernel/misc/amd64/tem
rm -f $root/kernel/misc/sparcv9/tem
#
# Remove /dev/mc symlink and /platform/sun4u/kernel/drv/mc-us3.conf
# if any.
#
if [ -h $root/dev/mc ]; then
rm -f $root/dev/mc
fi
if [ -f $root/platform/sun4u/kernel/drv/mc-us3.conf ]; then
rm -f $root/platform/sun4u/kernel/drv/mc-us3.conf
fi
#
# Remove the snowbird sbin and include symlinks
#
if [[ -h $usr/platform/SUNW,Netra-CP2300/sbin ]] ; then
rm -f $usr/platform/SUNW,Netra-CP2300/sbin
fi
if [[ -h $usr/platform/SUNW,Netra-CP2300/include ]] ; then
rm -f $usr/platform/SUNW,Netra-CP2300/include
fi
# If we still have the old lp(7D) driver, remove it and its symlinks
# and header file. (If driver already gone, don't trample new symlinks.)
#
if [ -f $root/platform/i86pc/kernel/drv/lp -a \
-h $root/dev/lp[012] ]; then
rm -f $root/dev/lp[012]
fi
rm -f $root/platform/i86pc/kernel/drv/lp.conf
rm -f $root/platform/i86pc/kernel/drv/lp
rm -f $root/usr/include/sys/lp.h
#
# Remove V880 CPU DR files, program cancelled
#
DAKTARI_PLAT=platform/SUNW,Sun-Fire-880
rm -f \
$root/$DAKTARI_PLAT/kernel/drv/gptwo.conf \
$root/$DAKTARI_PLAT/kernel/drv/sparcv9/bbc \
$root/$DAKTARI_PLAT/kernel/drv/sparcv9/gptwo \
$root/$DAKTARI_PLAT/kernel/misc/sparcv9/sbdp \
$usr/platform/sun4u/include/sys/sbdp.h
#
# Remove crash(1M), now obsoleted by mdb(1). If this is a backwards
# BFU, it will be extracted again by cpio.
#
rm -f $root/etc/crash $usr/sbin/crash $usr/sbin/i86/crash \
$usr/sbin/sparcv7/crash $usr/sbin/sparcv9/crash
#
# Remove kadb(1M), now obsoleted by kmdb(1M)
#
rm -f $root/platform/*/kadb
#
# Remove old platform dmod symlinks
#
for dir in $usr/platform/*/lib/mdb ; do
[[ -h $dir ]] && rm -f $dir
done
#
# Remove ADB macros
#
rm -fr $usr/lib/adb
for dir in $usr/platform/*/lib/adb ; do
rm -fr $dir
done
#
# Remove the SGENV driver from the Sun-Fire directory structure.
# If this is a backwards BFU, it will be extracted again by cpio.
#
SERENGETI_PLAT=platform/SUNW,Sun-Fire
rm -f $root/$SERENGETI_PLAT/kernel/drv/sgenv.conf \
$root/$SERENGETI_PLAT/kernel/drv/sparcv9/sgenv
#
# Remove sun4m
#
rm -rf $root/platform/sun4m
rm -rf $usr/platform/sun4m
if [ $target_isa = sparc ]; then
rm -f $root/kernel/genunix
fi
rm -f $root/kernel/drv/xbox
rm -f $usr/include/sys/comvec.h
rm -f $usr/include/sys/openprom.h
rm -f $usr/include/sys/cg14io.h
rm -f $usr/include/sys/cg14reg.h
rm -f $usr/include/sys/cg8reg.h
rm -f $usr/include/sys/cg8var.h
#
# Remove perl 5.005_03. If this is a backwards bfu,
# it will be extracted again by cpio.
#
if [[ -d $usr/perl5/5.00503 ]]; then
remove_perl_500503
fi
#
# Remove perl 5.8.3, but only if the generic.usr archive contains 5.8.4.
# If this is a backwards bfu, 5.8.3 will be extracted again by cpio.
#
if [[ -d $usr/perl5/5.8.3 ]] && $ZCAT $cpiodir/generic.usr$ZFIX | \
cpio -it 2>/dev/null | egrep -s '^usr/perl5/5.8.4/'; then
remove_perl_583
fi
#
# Clean up legacy versions of the FMA CPU/Mem DE which may be still
# be laying around. This check may be removed when a sufficient time
# has lapsed between the FMA putback as to ensure that no test machines
# still have development FMA bits.
#
for platdir in $usr/platform/SUNW,* ; do
[[ -h $platdir ]] && continue
rm -f $platdir/lib/fm/fmd/plugins/cpumem-diagnosis.so
rm -f $platdir/lib/fm/fmd/plugins/cpumem-diagnosis.conf
done
#
# Clean up legacy versions of x4500 FMA modules which may be still
# be laying around. This check may be removed when a sufficient time
# has lapsed between the FMA putback as to ensure that no test machines
# still have development FMA bits.
#
rm -f $usr/platform/i86pc/lib/fm/topo/plugins/sata.so
rm -f $usr/platform/i86pc/lib/fm/topo/maps/storage-hc-topology.xml
rm -f $usr/platform/i86pc/lib/fm/fmd/plugins/sfx4500-disk.so
rm -f $usr/platform/i86pc/lib/fm/fmd/plugins/sfx4500-disk.conf
# Remove pam_unix
#
rm -f $usr/lib/security/pam_unix.so.1
rm -f $usr/lib/security/pam_unix.so
rm -f $usr/lib/security/sparcv9/pam_unix.so.1
rm -f $usr/lib/security/sparcv9/pam_unix.so
#
# Remove pam_projects
rm -f $usr/lib/security/pam_projects.so.1
rm -f $usr/lib/security/pam_projects.so
rm -f $usr/lib/security/64/pam_projects.so.1
rm -f $usr/lib/security/64/pam_projects.so
#
# Remove libldap.so.3
#
rm -f $usr/lib/libldap.so.3
rm -f $usr/lib/sparcv9/libldap.so.3
#
# Remove nss XFN support no longer used by printing
#
sed -e '/printers:/s/xfn[ ]*//' \
$rootprefix/bfu.child/etc/nsswitch.conf > /tmp/nssw.$$
cp /tmp/nssw.$$ $rootprefix/bfu.child/etc/nsswitch.conf
rm -f /tmp/nssw.$$
rm -f $usr/lib/nss_xfn.so.1
rm -f $usr/lib/sparcv9/nss_xfn.so.1
#
# Remove FNS/XFN.
#
if [ -d $rootprefix/etc/fn -o \
-d $usr/include/xfn -o \
-d $usr/lib/fn -o \
-d $rootprefix/var/fn ]; then
remove_eof_fns
fi
#
# Remove AT&T FACE
#
if [ -d $usr/oasys -o -d $usr/vmsys ]; then
remove_eof_face
fi
#
# Remove DMI
#
if [ -d $usr/lib/dmi -o \
-d $rootprefix/etc/dmi -o \
-d $rootprefix/var/dmi ]; then
remove_eof_dmi
fi
#
# Remove Wildcat
#
if [ -f $rootprefix/platform/SUNW,Sun-Fire-15000/kernel/misc/sparcv9/gptwo_wci -o \
-f $usr/platform/SUNW,Sun-Fire/lib/rsmlib/wrsm.so.1 -o \
-f $rootprefix/platform/sun4u/kernel/drv/wrsmd.conf -o \
-d $rootprefix/etc/wrsm -o \
-f $usr/platform/sun4u/sbin/wrsmstat ]; then
remove_eof_wildcat
fi
#
# Remove ASET
#
if [ -d $usr/aset ]; then
remove_eof_aset
fi
#
# Remove BIND 8, but only if the generic.usr archive doesn't contains
# BIND 8 named server/tools. If this is a backwards bfu, BIND 8 will
# be extracted again by cpio.
#
if [[ -f $usr/sbin/dnskeygen ]] && ! $ZCAT $cpiodir/generic.usr$ZFIX \
| cpio -it 2>/dev/null | egrep -s '^usr/sbin/ndc' ; then
remove_eof_bind8
fi
#
# Remove any sendmailvars: line from /etc/nsswitch.conf
#
sed -e '/^sendmailvars:/d' $rootprefix/bfu.child/etc/nsswitch.conf > \
/tmp/nssw.$$
cp /tmp/nssw.$$ $rootprefix/bfu.child/etc/nsswitch.conf
rm -f /tmp/nssw.$$
#
# Remove vold
#
if [ -f $rootprefix/etc/vold.conf -o -d $usr/lib/vold ]; then
remove_eof_vold
fi
#
# Remove SUNWcoff package
#
pkgroot=${rootprefix:+-R $rootprefix}
pkg=SUNWcoff
if [ $target_isa = i386 ]; then
if pkginfo $pkgroot -q $pkg; then
pkgrm $pkgroot -n $pkg >/dev/null 2>&1
fi
# In case that did not work, do it manually.
if [ -d $rootprefix/var/sadm/pkg/$pkg ]; then
rm -rf $rootprefix/var/sadm/pkg/$pkg
rm $rootprefix/kernel/exec/coffexec
fi
fi
#
# Remove GMT* zoneinfo files
#
rm -f $usr/share/lib/zoneinfo/GMT-12
rm -f $usr/share/lib/zoneinfo/GMT-11
rm -f $usr/share/lib/zoneinfo/GMT-10
rm -f $usr/share/lib/zoneinfo/GMT-9
rm -f $usr/share/lib/zoneinfo/GMT-8
rm -f $usr/share/lib/zoneinfo/GMT-7
rm -f $usr/share/lib/zoneinfo/GMT-6
rm -f $usr/share/lib/zoneinfo/GMT-5
rm -f $usr/share/lib/zoneinfo/GMT-4
rm -f $usr/share/lib/zoneinfo/GMT-3
rm -f $usr/share/lib/zoneinfo/GMT-2
rm -f $usr/share/lib/zoneinfo/GMT-1
rm -f $usr/share/lib/zoneinfo/GMT+1
rm -f $usr/share/lib/zoneinfo/GMT+2
rm -f $usr/share/lib/zoneinfo/GMT+3
rm -f $usr/share/lib/zoneinfo/GMT+4
rm -f $usr/share/lib/zoneinfo/GMT+5
rm -f $usr/share/lib/zoneinfo/GMT+6
rm -f $usr/share/lib/zoneinfo/GMT+7
rm -f $usr/share/lib/zoneinfo/GMT+8
rm -f $usr/share/lib/zoneinfo/GMT+9
rm -f $usr/share/lib/zoneinfo/GMT+10
rm -f $usr/share/lib/zoneinfo/GMT+11
rm -f $usr/share/lib/zoneinfo/GMT+12
rm -f $usr/share/lib/zoneinfo/GMT+13
# Remove stc(7d)-related files
rm -f $usr/include/sys/stcio.h
rm -f $usr/include/sys/stcvar.h
rm -f $usr/include/sys/stcreg.h
rm -f $usr/include/sys/stcconf.h
SUN4U_DRV=platform/sun4u/kernel/drv
rm -f $rootprefix/$SUN4U_DRV/stc.conf
rm -f $rootprefix/$SUN4U_DRV/stc
rm -f $rootprefix/$SUN4U_DRV/sparcv9/stc
# Remove old CPC adb macros.
rm -f $usr/lib/adb/cpc_ctx
rm -f $usr/lib/adb/cpc_event
if [ $target_isa = sparc ]; then
rm -f $usr/lib/adb/sparcv9/cpc_ctx
rm -f $usr/lib/adb/sparcv9/cpc_event
fi;
# Remove obsolete DTrace demos
rm -f $usr/demo/dtrace/cputick.d
# Remove flashprom-related files.
if [ $target_isa = sparc ]; then
for x in $FLASHPROMLIST
do
rm -f $root/$x;
done
fi;
# Remove pt_chmod - obsoleted by new /dev filesystem
if [ $zone = global ]; then
rm -f $usr/lib/pt_chmod
fi
if [ $RM_32BIT_KERNEL -eq 1 -a $zone = global ];
then
print "Removing 32-bit commands and kernel binaries ... \c";
rm -rf \
$usr/bin/sparcv7/amt \
$usr/bin/sparcv7/cputrack \
$usr/bin/sparcv7/newtask \
$usr/bin/sparcv7/nohup \
$usr/bin/sparcv7/pargs \
$usr/bin/sparcv7/pcred \
$usr/bin/sparcv7/pfiles \
$usr/bin/sparcv7/pflags \
$usr/bin/sparcv7/pldd \
$usr/bin/sparcv7/plimit \
$usr/bin/sparcv7/pmap \
$usr/bin/sparcv7/ppgsz \
$usr/bin/sparcv7/ppriv \
$usr/bin/sparcv7/prctl \
$usr/bin/sparcv7/preap \
$usr/bin/sparcv7/prex \
$usr/bin/sparcv7/prstat \
$usr/bin/sparcv7/prun \
$usr/bin/sparcv7/ps \
$usr/bin/sparcv7/psig \
$usr/bin/sparcv7/pstack \
$usr/bin/sparcv7/pstop \
$usr/bin/sparcv7/ptime \
$usr/bin/sparcv7/ptree \
$usr/bin/sparcv7/pwait \
$usr/bin/sparcv7/pwdx \
$usr/bin/sparcv7/setuname \
$usr/bin/sparcv7/sort \
$usr/bin/sparcv7/tnfxtract \
$usr/bin/sparcv7/uptime \
$usr/bin/sparcv7/w \
$usr/sbin/sparcv7/intrstat \
$usr/sbin/sparcv7/lockstat \
$usr/sbin/sparcv7/prtconf \
$usr/sbin/sparcv7/swap \
$usr/sbin/sparcv7/sysdef \
$usr/sbin/sparcv7/whodo \
$root/kernel/dacf/consconfig_dacf \
$root/kernel/drv/arp \
$root/kernel/drv/audiocs \
$root/kernel/drv/audioens \
$root/kernel/drv/bofi \
$root/kernel/drv/bpp \
$root/kernel/drv/clone \
$root/kernel/drv/cn \
$root/kernel/drv/conskbd \
$root/kernel/drv/consms \
$root/kernel/drv/dad \
$root/kernel/drv/devinfo \
$root/kernel/drv/ecpp \
$root/kernel/drv/ehci \
$root/kernel/drv/esp \
$root/kernel/drv/fas \
$root/kernel/drv/fcip \
$root/kernel/drv/fcp \
$root/kernel/drv/fp \
$root/kernel/drv/glm \
$root/kernel/drv/hid \
$root/kernel/drv/hme \
$root/kernel/drv/hubd \
$root/kernel/drv/icmp \
$root/kernel/drv/icmp6 \
$root/kernel/drv/ifp \
$root/kernel/drv/ip \
$root/kernel/drv/ip6 \
$root/kernel/drv/ippctl \
$root/kernel/drv/ipsecah \
$root/kernel/drv/ipsecesp \
$root/kernel/drv/isp \
$root/kernel/drv/iwscn \
$root/kernel/drv/keysock \
$root/kernel/drv/le \
$root/kernel/drv/lebuffer \
$root/kernel/drv/llc1 \
$root/kernel/drv/lofi \
$root/kernel/drv/log \
$root/kernel/drv/md \
$root/kernel/drv/mm \
$root/kernel/drv/mpt \
$root/kernel/drv/nca \
$root/kernel/drv/ohci \
$root/kernel/drv/openeepr \
$root/kernel/drv/options \
$root/kernel/drv/pcata \
$root/kernel/drv/pcelx \
$root/kernel/drv/pcic \
$root/kernel/drv/pcmem \
$root/kernel/drv/pcram \
$root/kernel/drv/pcs \
$root/kernel/drv/pcser \
$root/kernel/drv/pem \
$root/kernel/drv/pln \
$root/kernel/drv/poll \
$root/kernel/drv/pseudo \
$root/kernel/drv/ptc \
$root/kernel/drv/ptsl \
$root/kernel/drv/qlc \
$root/kernel/drv/random \
$root/kernel/drv/rts \
$root/kernel/drv/sad \
$root/kernel/drv/scsa2usb \
$root/kernel/drv/scsi_vhci \
$root/kernel/drv/sd \
$root/kernel/drv/se \
$root/kernel/drv/ses \
$root/kernel/drv/sgen \
$root/kernel/drv/soc \
$root/kernel/drv/socal \
$root/kernel/drv/spdsock \
$root/kernel/drv/ssd \
$root/kernel/drv/st \
$root/kernel/drv/stp4020 \
$root/kernel/drv/sy \
$root/kernel/drv/sysmsg \
$root/kernel/drv/tcp \
$root/kernel/drv/tcp6 \
$root/kernel/drv/tl \
$root/kernel/drv/uata \
$root/kernel/drv/udp \
$root/kernel/drv/udp6 \
$root/kernel/drv/ugen \
$root/kernel/drv/usb_ac \
$root/kernel/drv/usb_as \
$root/kernel/drv/usb_mid \
$root/kernel/drv/usbprn \
$root/kernel/drv/usbser_edge \
$root/kernel/drv/usoc \
$root/kernel/drv/wc \
$root/kernel/exec/aoutexec \
$root/kernel/exec/elfexec \
$root/kernel/exec/intpexec \
$root/kernel/fs/autofs \
$root/kernel/fs/cachefs \
$root/kernel/fs/devfs \
$root/kernel/fs/fifofs \
$root/kernel/fs/hsfs \
$root/kernel/fs/lofs \
$root/kernel/fs/mntfs \
$root/kernel/fs/nfs \
$root/kernel/fs/procfs \
$root/kernel/fs/sockfs \
$root/kernel/fs/specfs \
$root/kernel/fs/tmpfs \
$root/kernel/fs/udfs \
$root/kernel/fs/ufs \
$root/kernel/ipp/dlcosmk \
$root/kernel/ipp/dscpmk \
$root/kernel/ipp/flowacct \
$root/kernel/ipp/ipgpc \
$root/kernel/ipp/tokenmt \
$root/kernel/ipp/tswtclmt \
$root/kernel/misc/amsrc1 \
$root/kernel/misc/audiosup \
$root/kernel/misc/busra \
$root/kernel/misc/consconfig \
$root/kernel/misc/dada \
$root/kernel/misc/des \
$root/kernel/misc/diaudio \
$root/kernel/misc/fctl \
$root/kernel/misc/fssnap_if \
$root/kernel/misc/gld \
$root/kernel/misc/hidparser \
$root/kernel/misc/hpcsvc \
$root/kernel/misc/ipc \
$root/kernel/misc/kbtrans \
$root/kernel/misc/kgss/do_kmech_krb5 \
$root/kernel/misc/kgss/gl_kmech_krb5 \
$root/kernel/misc/kgssapi \
$root/kernel/misc/klmmod \
$root/kernel/misc/klmops \
$root/kernel/misc/krtld \
$root/kernel/misc/md5 \
$root/kernel/misc/md_hotspares \
$root/kernel/misc/md_mirror \
$root/kernel/misc/md_notify \
$root/kernel/misc/md_raid \
$root/kernel/misc/md_sp \
$root/kernel/misc/md_stripe \
$root/kernel/misc/md_trans \
$root/kernel/misc/mixer \
$root/kernel/misc/mpxio \
$root/kernel/misc/nfs_dlboot \
$root/kernel/misc/nfssrv \
$root/kernel/misc/pcicfg \
$root/kernel/misc/pcihp \
$root/kernel/misc/phx \
$root/kernel/misc/rpcsec \
$root/kernel/misc/rpcsec_gss \
$root/kernel/misc/rsmops \
$root/kernel/misc/scsi \
$root/kernel/misc/seg_drv \
$root/kernel/misc/seg_mapdev \
$root/kernel/misc/sha1 \
$root/kernel/misc/strplumb \
$root/kernel/misc/swapgeneric \
$root/kernel/misc/tlimod \
$root/kernel/misc/ufs_log \
$root/kernel/misc/usba \
$root/kernel/misc/usbser \
$root/kernel/sched/TS \
$root/kernel/sched/TS_DPTBL \
$root/kernel/strmod/6to4tun \
$root/kernel/strmod/arp \
$root/kernel/strmod/atun \
$root/kernel/strmod/authmd5h \
$root/kernel/strmod/authsha1 \
$root/kernel/strmod/bufmod \
$root/kernel/strmod/connld \
$root/kernel/strmod/dedump \
$root/kernel/strmod/drcompat \
$root/kernel/strmod/encr3des \
$root/kernel/strmod/encraes \
$root/kernel/strmod/encrbfsh \
$root/kernel/strmod/encrdes \
$root/kernel/strmod/icmp \
$root/kernel/strmod/ip \
$root/kernel/strmod/ipsecah \
$root/kernel/strmod/ipsecesp \
$root/kernel/strmod/keysock \
$root/kernel/strmod/ldterm \
$root/kernel/strmod/ms \
$root/kernel/strmod/nca \
$root/kernel/strmod/pckt \
$root/kernel/strmod/pfmod \
$root/kernel/strmod/pipemod \
$root/kernel/strmod/ptem \
$root/kernel/strmod/redirmod \
$root/kernel/strmod/rpcmod \
$root/kernel/strmod/rts \
$root/kernel/strmod/tcp \
$root/kernel/strmod/timod \
$root/kernel/strmod/tirdwr \
$root/kernel/strmod/ttcompat \
$root/kernel/strmod/tun \
$root/kernel/strmod/udp \
$root/kernel/strmod/usb_ah \
$root/kernel/strmod/usbkbm \
$root/kernel/strmod/usbms \
$root/kernel/sys/c2audit \
$root/kernel/sys/doorfs \
$root/kernel/sys/inst_sync \
$root/kernel/sys/kaio \
$root/kernel/sys/msgsys \
$root/kernel/sys/nfs \
$root/kernel/sys/pipe \
$root/kernel/sys/pset \
$root/kernel/sys/rpcmod \
$root/kernel/sys/semsys \
$root/kernel/sys/shmsys \
$root/platform/SUNW,Ultra-250/kernel/drv/envctrltwo \
$root/platform/SUNW,Ultra-250/kernel/misc/platmod \
$root/platform/SUNW,Ultra-4/kernel/drv/envctrl \
$root/platform/SUNW,Ultra-4/kernel/misc/platmod \
$root/platform/SUNW,Ultra-5_10/kernel/misc/platmod \
$root/platform/SUNW,Ultra-80/kernel/misc/platmod \
$root/platform/SUNW,Ultra-Enterprise-10000/kernel/cpu/SUNW,UltraSPARC \
$root/platform/SUNW,Ultra-Enterprise-10000/kernel/cpu/SUNW,UltraSPARC-II \
$root/platform/SUNW,Ultra-Enterprise-10000/kernel/drv/cvc \
$root/platform/SUNW,Ultra-Enterprise-10000/kernel/drv/cvcredir \
$root/platform/SUNW,Ultra-Enterprise-10000/kernel/drv/idn \
$root/platform/SUNW,Ultra-Enterprise-10000/kernel/drv/ngdr \
$root/platform/SUNW,Ultra-Enterprise-10000/kernel/drv/pcipsy \
$root/platform/SUNW,Ultra-Enterprise-10000/kernel/drv/rootnex \
$root/platform/SUNW,Ultra-Enterprise-10000/kernel/drv/sbus \
$root/platform/SUNW,Ultra-Enterprise-10000/kernel/misc/ngdrmach \
$root/platform/SUNW,Ultra-Enterprise-10000/kernel/misc/platmod \
$root/platform/SUNW,Ultra-Enterprise-10000/kernel/unix \
$root/platform/SUNW,Ultra-Enterprise/kernel/drv/ac \
$root/platform/SUNW,Ultra-Enterprise/kernel/drv/central \
$root/platform/SUNW,Ultra-Enterprise/kernel/drv/environ \
$root/platform/SUNW,Ultra-Enterprise/kernel/drv/fhc \
$root/platform/SUNW,Ultra-Enterprise/kernel/drv/simmstat \
$root/platform/SUNW,Ultra-Enterprise/kernel/drv/sram \
$root/platform/SUNW,Ultra-Enterprise/kernel/drv/sysctrl \
$root/platform/SUNW,Ultra-Enterprise/kernel/misc/platmod \
$root/platform/sun4u/boot.conf \
$root/platform/sun4u/kernel/cpu/SUNW,UltraSPARC \
$root/platform/sun4u/kernel/cpu/SUNW,UltraSPARC-II \
$root/platform/sun4u/kernel/cpu/SUNW,UltraSPARC-III \
$root/platform/sun4u/kernel/cpu/SUNW,UltraSPARC-III+ \
$root/platform/sun4u/kernel/cpu/SUNW,UltraSPARC-IIIi \
$root/platform/sun4u/kernel/cpu/SUNW,UltraSPARC-IIe \
$root/platform/sun4u/kernel/cpu/SUNW,UltraSPARC-IIi \
$root/platform/sun4u/kernel/cpu/SUNW,UltraSPARC-IV \
$root/platform/sun4u/kernel/drv/bwtwo \
$root/platform/sun4u/kernel/drv/cgsix \
$root/platform/sun4u/kernel/drv/cgthree \
$root/platform/sun4u/kernel/drv/cpc \
$root/platform/sun4u/kernel/drv/db21554 \
$root/platform/sun4u/kernel/drv/dma \
$root/platform/sun4u/kernel/drv/ebus \
$root/platform/sun4u/kernel/drv/fd \
$root/platform/sun4u/kernel/drv/ledma \
$root/platform/sun4u/kernel/drv/memtest \
$root/platform/sun4u/kernel/drv/pci_pci \
$root/platform/sun4u/kernel/drv/pcipsy \
$root/platform/sun4u/kernel/drv/power \
$root/platform/sun4u/kernel/drv/rootnex \
$root/platform/sun4u/kernel/drv/sbbc \
$root/platform/sun4u/kernel/drv/sbus \
$root/platform/sun4u/kernel/drv/sbusmem \
$root/platform/sun4u/kernel/drv/sf \
$root/platform/sun4u/kernel/drv/simba \
$root/platform/sun4u/kernel/drv/su \
$root/platform/sun4u/kernel/drv/tod \
$root/platform/sun4u/kernel/drv/trapstat \
$root/platform/sun4u/kernel/drv/zs \
$root/platform/sun4u/kernel/drv/zsh \
$root/platform/sun4u/kernel/genunix \
$root/platform/sun4u/kernel/misc/bootdev \
$root/platform/sun4u/kernel/misc/cpr \
$root/platform/sun4u/kernel/misc/forthdebug \
$root/platform/sun4u/kernel/misc/kgss/do_kmech_krb5 \
$root/platform/sun4u/kernel/misc/kgss/gl_kmech_krb5 \
$root/platform/sun4u/kernel/misc/md5 \
$root/platform/sun4u/kernel/misc/obpsym \
$root/platform/sun4u/kernel/misc/pcmcia \
$root/platform/sun4u/kernel/misc/platmod \
$root/platform/sun4u/kernel/misc/vis \
$root/platform/sun4u/kernel/strmod/kb \
$root/platform/sun4u/kernel/sys/cpc \
$root/platform/sun4u/kernel/tod/todmostek \
$root/platform/sun4u/kernel/tod/todstarfire \
$usr/include/v7/sys/mon_clock.h \
$usr/kernel/drv/dump \
$usr/kernel/drv/fssnap \
$usr/kernel/drv/gen_drv \
$usr/kernel/drv/kstat \
$usr/kernel/drv/ksyms \
$usr/kernel/drv/llc2 \
$usr/kernel/drv/lo \
$usr/kernel/drv/lockstat \
$usr/kernel/drv/logindmux \
$usr/kernel/drv/pm \
$usr/kernel/drv/pshot \
$usr/kernel/drv/ptm \
$usr/kernel/drv/pts \
$usr/kernel/drv/rsm \
$usr/kernel/drv/sppp \
$usr/kernel/drv/sppptun \
$usr/kernel/drv/sysevent \
$usr/kernel/drv/tidg \
$usr/kernel/drv/tivc \
$usr/kernel/drv/tmux \
$usr/kernel/drv/tnf \
$usr/kernel/drv/vol \
$usr/kernel/drv/winlock \
$usr/kernel/exec/javaexec \
$usr/kernel/fs/fdfs \
$usr/kernel/fs/namefs \
$usr/kernel/fs/pcfs \
$usr/kernel/sched/FSS \
$usr/kernel/sched/FX \
$usr/kernel/sched/FX_DPTBL \
$usr/kernel/sched/IA \
$usr/kernel/sched/RT \
$usr/kernel/sched/RT_DPTBL \
$usr/kernel/strmod/cryptmod \
$usr/kernel/strmod/lmodb \
$usr/kernel/strmod/lmode \
$usr/kernel/strmod/lmodr \
$usr/kernel/strmod/lmodt \
$usr/kernel/strmod/rlmod \
$usr/kernel/strmod/spppasyn \
$usr/kernel/strmod/spppcomp \
$usr/kernel/strmod/sppptun \
$usr/kernel/strmod/telmod \
$usr/kernel/sys/acctctl \
$usr/kernel/sys/exacctsys \
$usr/kernel/sys/sysacct \
$usr/lib/gss/mech_spnego.so \
$usr/lib/gss/mech_spnego.so.1 \
$usr/lib/mdb/kvm/cpc.so \
$usr/lib/mdb/kvm/genunix.so \
$usr/lib/mdb/kvm/ip.so \
$usr/lib/mdb/kvm/ipc.so \
$usr/lib/mdb/kvm/ipp.so \
$usr/lib/mdb/kvm/isp.so \
$usr/lib/mdb/kvm/krtld.so \
$usr/lib/mdb/kvm/lofs.so \
$usr/lib/mdb/kvm/logindmux.so \
$usr/lib/mdb/kvm/mdb_ks.so \
$usr/lib/mdb/kvm/nca.so \
$usr/lib/mdb/kvm/nfs.so \
$usr/lib/mdb/kvm/ptm.so \
$usr/lib/mdb/kvm/random.so \
$usr/lib/mdb/kvm/sd.so \
$usr/lib/mdb/kvm/sppp.so \
$usr/lib/mdb/kvm/ssd.so \
$usr/lib/mdb/kvm/ufs_log.so \
$usr/lib/mdb/kvm/usba.so \
$usr/lib/sparcv9/gss/mech_spnego.so \
$usr/lib/sparcv9/gss/mech_spnego.so.1 \
$usr/platform/SUNW,Ultra-1 \
$usr/platform/SUNW,Ultra-250/doc \
$usr/platform/SUNW,Ultra-250/lib/flash-update.sh \
$usr/platform/SUNW,Ultra-250/lib/prom \
$usr/platform/SUNW,Ultra-Enterprise-10000/doc \
$usr/platform/SUNW,Ultra-Enterprise-10000/lib/flash-update.sh \
$usr/platform/SUNW,Ultra-Enterprise-10000/lib/prom \
$usr/platform/sun4u/lib/mdb/kvm/unix.so \
$usr/platform/sun4u/lib/prom/SUNW,Ultra-1 > /dev/null 2>&1;
print "done.";
fi;
#
# Remove kmdbmod from /kernel
#
rm -f $root/kernel/misc/sparcv9/kmdbmod
#
# Remove obsolete drivers/header files as a result of sun4v source
# code reorg
#
rm -f $root/platform/sun4u/kernel/drv/sparcv9/pci_pci
rm -f $root/platform/sun4u/kernel/misc/sparcv9/pcmcia
rm -f $usr/include/v9/sys/traptrace.h
rm -f $usr/platform/sun4u/include/sys/spitasi.h
rm -f $usr/kernel/pcbe/sparcv9/pcbe.SUNW,UltraSPARC-T1
#
# Remove the IPsec encryption and authentication modules.
# IPsec now uses the Kernel Crypto Framework for crypto.
#
rm -f $rootprefix/kernel/strmod/encr3des
rm -f $rootprefix/kernel/strmod/encrdes
rm -f $rootprefix/kernel/strmod/encrbfsh
rm -f $rootprefix/kernel/strmod/encraes
rm -f $rootprefix/kernel/strmod/authmd5h
rm -f $rootprefix/kernel/strmod/authsha1
rm -f $rootprefix/kernel/strmod/sparcv9/encr3des
rm -f $rootprefix/kernel/strmod/sparcv9/encrdes
rm -f $rootprefix/kernel/strmod/sparcv9/encrbfsh
rm -f $rootprefix/kernel/strmod/sparcv9/encraes
rm -f $rootprefix/kernel/strmod/sparcv9/authmd5h
rm -f $rootprefix/kernel/strmod/sparcv9/authsha1
#
# Remove obsolete SSA utility, firmware and fcode.
# usr/lib/firmware/ssa contains ssafirmware
#
rm -rf $usr/lib/firmware/ssa
rm -f $usr/lib/firmware/fc_s/fc_s_fcode
rm -f $usr/sbin/ssaadm
#
# Remove seg_drv, seg_mapdev driver
#
rm -f $root/kernel/misc/seg_drv
rm -f $root/kernel/misc/sparcv9/seg_drv
rm -f $usr/include/sys/seg_drv.h
rm -f $root/kernel/misc/seg_mapdev
rm -f $root/kernel/misc/sparcv9/seg_mapdev
#
# Remove mpxio module
#
rm -f $root/kernel/misc/sparcv9/mpxio
#
# Remove mpxio/vhci adb macros.
#
if [ $target_isa = sparc -a $zone = global ]; then
rm -f $usr/lib/adb/mdi_client
rm -f $usr/lib/adb/sparcv9/mdi_client
rm -f $usr/lib/adb/mdi_pathinfo
rm -f $usr/lib/adb/sparcv9/mdi_pathinfo
rm -f $usr/lib/adb/mdi_phci
rm -f $usr/lib/adb/sparcv9/mdi_phci
rm -f $usr/lib/adb/mdi_vhci
rm -f $usr/lib/adb/sparcv9/mdi_vhci
rm -f $usr/lib/adb/scsi_vhci_pkt
rm -f $usr/lib/adb/sparcv9/scsi_vhci_pkt
rm -f $usr/lib/adb/scsi_vhci_softstate
rm -f $usr/lib/adb/sparcv9/scsi_vhci_softstate
fi
#
# Diskless clients have already extracted /usr so don't delete this
# Non-global zones never extracts /usr so don't delete these
#
if [ $diskless = no -a $zone = global ]; then
rm -f $usr/sbin/stmsboot
rm -f $usr/lib/mdb/kvm/mpxio.so
rm -f $usr/lib/mdb/kvm/sparcv9/mpxio.so
rm -f $usr/lib/mdb/kvm/amd64/mpxio.so
rm -f $usr/lib/mdb/kvm/scsi_vhci.so
rm -f $usr/lib/mdb/kvm/sparcv9/scsi_vhci.so
rm -f $usr/lib/mdb/kvm/amd64/scsi_vhci.so
fi
rm -f $root/lib/mpxio/mpxio
rm -f $root/lib/mpxio/stmsboot_util
rm -f $root/kernel/kmdb/mpxio
rm -f $root/kernel/kmdb/sparcv9/mpxio
rm -f $root/kernel/kmdb/amd64/mpxio
rm -f $root/kernel/kmdb/scsi_vhci
rm -f $root/kernel/kmdb/sparcv9/scsi_vhci
rm -f $root/kernel/kmdb/amd64/scsi_vhci
#
# Remove rpcib misc module (converted to driver)
#
rm -f $root/kernel/misc/sparcv9/rpcib
rm -f $root/kernel/drv/sparcv9/rpcib
#
# Remove old smartcard header files
#
rm -f \
$usr/include/smartcard.h \
$usr/include/smartcard/ocf_authenticate.h \
$usr/include/smartcard/ocf_core.h \
$usr/include/smartcard/ocf_core_cardservices.h
#
# Remove smartcard libraries that should not have been shipped.
#
rm -rf $usr/lib/smartcard/sparcv9/ \
$usr/share/lib/smartcard/scmtester.jar
#
# Remove external smartcard reader driver
#
rm -f $usr/share/lib/smartcard/scmrsr3.jar
#
# Remove old internal smartcard reader driver
#
rm -f $usr/share/lib/smartcard/scmiscr.jar
rm -f $usr/lib/smartcard/libSCMI2CNative.so
rm -f $usr/lib/smartcard/libSCMI2CNative.so.1
#
# Remove Smart OS
#
rm -f $usr/share/lib/smartcard/smartos.jar
#
# Remove drivers & header files for EOL of soc & pln drivers
# as per PSARC/2003/233
#
rm -f $root/kernel/drv/pln.conf
rm -f $root/kernel/drv/sparcv9/pln
rm -f $root/kernel/drv/sparcv9/soc
rm -f $usr/include/sys/socvar.h
rm -f $usr/include/sys/socmap.h
rm -f $usr/include/sys/soc_cq_defs.h
rm -f $usr/include/sys/socreg.h
rm -f $usr/include/sys/scsi/adapters/plndef.h
rm -f $usr/include/sys/scsi/adapters/plnvar.h
rm -f $usr/include/sys/scsi/adapters/ssaisp.h
rm -f $usr/include/sys/scsi/targets/pln_ctlr.h
rm -f $usr/include/sys/scsi/targets/osesio.h
#
# PSARC/2003/629 Common Solaris Target Disk Driver
# remove adb macro "scsi_disk" for the x86 platform
#
if [ $target_isa = i386 ]; then
rm -f $usr/lib/adb/scsi_disk
fi
# Remove CPCv1 API header per PSARC/2004/648
rm -f $usr/include/sys/cpc_event.h
# Remove headers per PSARC/2005/561
rm -f $usr/include/sys/nexusintr.h
rm -f $usr/platform/sun4u/include/sys/nexusintr_impl.h
rm -f $usr/platform/sun4v/include/sys/nexusintr_impl.h
# Remove usr/lib/mail which has moved to etc/mail/cf, but first,
# attempt to migrate any user-added files, which primarily live
# under usr/lib/mail/cf . Blow away the seven files which we
# ship under that directory, then move any that remain to the
# new location, which we will `mkdir -p` just to be safe.
# If the zone in question is non-global, then skip all this.
#
if [ $zone = "global" ]; then
# -d follow sym-links: make sure it's not a link.
if [ -d $usr/lib/mail -a ! -h $usr/lib/mail ]; then
# Only do this if usr/lib/mail is still a directory;
# bfu'ing backwards does not merit such migration.
rm -f $usr/lib/mail/cf/Makefile
rm -f $usr/lib/mail/cf/main.cf
rm -f $usr/lib/mail/cf/main.mc
rm -f $usr/lib/mail/cf/submit.cf
rm -f $usr/lib/mail/cf/submit.mc
rm -f $usr/lib/mail/cf/subsidiary.cf
rm -f $usr/lib/mail/cf/subsidiary.mc
mkdir -p -m 0755 $root/etc/mail/cf/cf
mv $usr/lib/mail/cf/* $root/etc/mail/cf/cf >/dev/null 2>&1
fi
rm -rf $usr/lib/mail
fi
#
# Remove drivers and header files for EOF of Lance Ethernet
# driver(le) as per PSARC/2003/335.
#
rm -f $root/kernel/drv/le
rm -f $root/kernel/drv/sparcv9/le
rm -f $root/kernel/drv/lebuffer
rm -f $root/kernel/drv/sparcv9/lebuffer
rm -f $root/platform/sun4u/kernel/drv/ledma
rm -f $root/platform/sun4u/kernel/drv/sparcv9/ledma
rm -f $usr/include/sys/le.h
rm -f $usr/include/sys/lance.h
rm -f $usr/lib/adb/le
rm -f $usr/lib/adb/lestr
#
# Remove drivers and header files for EOF of ieef driver as
# per PSARC/2003/009
#
rm -f $root/kernel/drv/ieef
rm -f $root/kernel/drv/ieef.conf
rm -f $usr/include/sys/ieef.h
rm -f $root/boot/solaris/drivers/notisa.010/ieef.bef
#
# Remove drivers and header files for EOF of elx driver as
# per PSARC/2003/770
#
rm -f $root/platform/i86pc/kernel/drv/elx
rm -f $root/platform/i86pc/kernel/drv/elx.conf
rm -f $usr/include/sys/elx.h
rm -f $root/boot/solaris/drivers/isa.175/elx.bef
#
# Remove drivers for EOF of pe driver as per PSARC/2004/051
#
rm -f $root/kernel/drv/pe
rm -f $root/kernel/drv/pe.conf
rm -f $root/boot/solaris/drivers/isa.125/pe3.bef
#
# Remove drivers for EOF of Compaq NCR, Compaq SMART2, AMI Mega
# card and /usr/bin/smart2cfg as per PSARC/2003/701 and
# PSARC/2004/207
#
rm -f $root/kernel/drv/cpqncr
rm -f $root/kernel/drv/cpqncr.conf
rm -f $root/boot/solaris/drivers/notisa.020/cpqncr.bef
rm -f $root/platform/i86pc/kernel/drv/smartii
rm -f $root/platform/i86pc/kernel/drv/smartii.conf
rm -f $usr/bin/smart2cfg
rm -f $root/kernel/drv/mega
rm -f $root/kernel/drv/mega.conf
rm -f $root/boot/solaris/drivers/notisa.010/mega.bef
rm -f $root/kernel/mach/compaq
rm -f $root/kernel/mach/corollary
#
# Remove eisa nexus driver and header files for EOF of EISA
# support as per PSARC/2003/650
#
rm -f $root/platform/i86pc/kernel/drv/eisa
rm -f $usr/platform/i86pc/include/sys/eisarom.h
rm -f $usr/platform/i86pc/include/sys/nvm.h
#
# Remove xmem headers (they moved back to usr/include/sys/fs)
#
rm -f $usr/include/ia32/sys/fs/xmem.h
rm -f $usr/include/ia32/sys/fs/seg_xmem.h
rm -rf $usr/include/ia32/sys/fs
#
# Remove junk headers
#
rm -f $usr/platform/i86pc/include/sys/mcdma.h
rm -f $usr/platform/i86pc/include/sys/xque.h
#
# Remove obsolete x86 hat layer and associated adb scripts
#
rm -f $root/platform/i86pc/kernel/mmu/mmu32
rm -f $root/platform/i86pc/kernel/mmu/mmu36
rm -rf $root/platform/i86pc/kernel/mmu
rm -f $usr/lib/adb/hwpp
rm -f $usr/lib/adb/hatppp
rm -f $usr/lib/adb/hat.nxt
rm -f $usr/lib/adb/hwpp.nxt
#
# Remove drivers for EOF of chs as per PSARC/2005/581
#
rm -f $root/kernel/drv/chs
rm -f $root/kernel/drv/chs.conf
rm -f $root/boot/solaris/drivers/notisa.020/chs.bef
#
# Remove drivers & header files for EOF of dbri as per PSARC 2005/582
#
rm -f $root/kernel/drv/sparcv9/dbri
rm -f $root/usr/include/sys/dbriio.h
rm -f $root/usr/include/sys/mmcodecreg.h
#
# Remove drivers for EOF of pcscsi as per PSARC/2005/003
#
rm -f $root/kernel/drv/pcscsi
rm -f $root/kernel/drv/pcscsi.conf
rm -f $root/boot/solaris/drivers/notisa.010/pcscsi.bef
#
# Remove drivers for EOF of dpt as per PSARC/2003/701
#
rm -f $root/boot/solaris/drivers/isa.125/dpt.bef
rm -f $root/platform/i86pc/kernel/drv/dpt
rm -f $root/platform/i86pc/kernel/drv/dpt.conf
rm -rf $usr/include/sys/dktp/dpt
#
# Remove drivers for EOF of mlx driver as per PSARC/2003/701
#
rm -f $root/boot/solaris/drivers/notisa.010/mlx.bef
rm -f $root/platform/i86pc/kernel/drv/mlx
rm -f $root/platform/i86pc/kernel/drv/mlx.conf
rm -rf $usr/include/sys/dktp/mlx
#
# Remove snlb
#
rm -f $root/kernel/misc/snlb
rm -f $root/kernel/misc/amd64/snlb
rm -f $root/usr/include/sys/dktp/dklb.h
rm -f $root/usr/include/sys/dktp/snlb.h
#
# Remove objmgr
#
rm -f $root/kernel/drv/objmgr.conf
rm -f $root/kernel/drv/objmgr
rm -f $root/kernel/drv/amd64/objmgr
rm -f $root/usr/include/sys/dktp/objmgr.h
#
# Remove other unused headers
#
rm -f $root/usr/include/sys/scsi/impl/pkt_wrapper.h
rm -f $root/usr/include/sys/dktp/hba.h
rm -f $root/usr/include/sys/dktp/cdtypes.h
rm -f $root/usr/include/sys/dktp/scdk.h
rm -f $root/usr/include/sys/dktp/scdkwatch.h
rm -f $root/usr/include/sys/dktp/sctarget.h
rm -f $root/usr/include/sys/dktp/tgcd.h
rm -f $root/usr/include/sys/dktp/tgpassthru.h
#
# Remove Floating Point Emulator for EOF as per PSARC/2003/651
#
rm -f $root/platform/i86pc/kernel/misc/emul_80387
#
# Remove 64-bit adp, cadp and cpqhpc
#
rm -f $root/kernel/drv/amd64/adp
rm -f $root/kernel/drv/amd64/cadp
rm -f $root/kernel/drv/amd64/cpqhpc
#
# Remove 64-bit i2o_bs, i2o_msg, i2o_scsi, pci_to_i2o, mscsi, ncrs,
# msm, spwr, bscv, bscbus
#
rm -f $root/kernel/drv/amd64/i2o_bs
rm -f $root/kernel/misc/amd64/i2o_msg
rm -f $root/kernel/drv/amd64/i2o_scsi
rm -f $root/kernel/drv/amd64/pci_to_i2o
rm -f $root/platform/i86pc/kernel/drv/amd64/mscsi
rm -f $root/kernel/drv/amd64/ncrs
rm -f $root/platform/i86pc/kernel/drv/amd64/msm
rm -f $root/kernel/drv/amd64/spwr
rm -f $root/platform/i86pc/kernel/drv/amd64/bscv
rm -f $root/platform/i86pc/kernel/drv/amd64/bscbus
# Remove obsolete pfil modules, binaries, and configuration files
rm -f $root/kernel/drv/pfil
rm -f $root/kernel/drv/pfil.conf
rm -f $root/kernel/drv/sparcv9/pfil
rm -f $root/kernel/drv/amd64/pfil
rm -f $root/kernel/strmod/pfil
rm -f $root/kernel/strmod/sparcv9/pfil
rm -f $root/kernel/strmod/amd64/pfil
rm -f $root/usr/sbin/pfild
# Remove obsolete atomic_prim.h file.
rm -f $usr/include/v9/sys/atomic_prim.h
#
# Remove sc_nct binary and the corresponding symlink to sc_nct from the
# Montecarlo platform specific directories (Reference: PSARC 2003/606).
# To be specific, the following binary will be removed.
# /platform/SUNW,UltraSPARC-IIe-NetraCT-40/kernel/drv/sparcv9/sc_nct
# Also, the following symlink will be removed.
# /platform/SUNW,UltraSPARC-IIe-NetraCT-60/kernel/drv/sparcv9/sc_nct
#
if [ -f $root/platform/SUNW,UltraSPARC-IIe-NetraCT-40/kernel/drv/sparcv9/sc_nct ]; then
rm -f $root/platform/SUNW,UltraSPARC-IIe-NetraCT-40/kernel/drv/sparcv9/sc_nct
rm -f $root/platform/SUNW,UltraSPARC-IIe-NetraCT-60/kernel/drv/sparcv9/sc_nct
fi
#
# In case of bfu to an older release, remove traces of "new"
# Kerberos mechanisms. Kerberos libraries and paths are corrected
# after extraction is complete.
#
rm -f $root/kernel/misc/kgss/kmech_krb5
rm -f $root/kernel/misc/kgss/sparcv9/kmech_krb5
rm -f $root/platform/$karch/kernel/misc/kgss/sparcv9/kmech_krb5
#
# Diskless clients have already extracted /usr so don't delete these
# Non-global zones never extracts /usr so don't delete these
#
if [ $diskless = no -a $zone = global ]; then
rm -f $usr/lib/gss/mech_krb5.so
rm -f $usr/lib/gss/mech_krb5.so.1
rm -f $usr/lib/sparcv9/gss/mech_krb5.so
rm -f $usr/lib/sparcv9/gss/mech_krb5.so.1
fi
# Remove old OpenSSL stuff from SUNWwbint
rm -rf $usr/include/openssl
rm -rf $usr/lib/openssl
#Remove ufs logging module - now merged into ufs module
rm -f $rootprefix/kernel/misc/ufs_log
rm -f $rootprefix/kernel/misc/sparcv9/ufs_log
#Remove ufs_log mdb/kmdb modules - now merged in to ufs module
rm -f $rootprefix/kernel/kmdb/ufs_log
rm -f $rootprefix/kernel/kmdb/sparcv9/ufs_log
rm -f $rootprefix/kernel/kmdb/amd64/ufs_log
rm -f $rootprefix/usr/lib/mdb/kvm/ufs_log.so
rm -f $rootprefix/usr/lib/mdb/kvm/sparcv9/ufs_log.so
rm -f $rootprefix/usr/lib/mdb/kvm/amd64/ufs_log.so
#Remove diskmgtd. If backward BFU, will get re-installed from
#archive.
rm -f $usr/lib/diskmgtd
#
# Remove old ia64 cruft
#
if [ $target_isa = i386 ]; then
rm -f $usr/include/sys/ia64_archext.h
rm -f $usr/include/sys/sysia64.h
rm -rf $usr/include/ia64
fi
#
# Remove machpage-related stuff
#
rm -f $usr/platform/*/include/vm/mach_page.h
rm -f $usr/lib/adb/machpp
#
# Remove old cacheos
#
rm -f $root/etc/init.d/cacheos
rm -f $root/etc/init.d/cacheos.finish
rm -f $root/etc/init.d/cachefs.root
rm -f $root/etc/rcS.d/S35cacheos.sh
rm -f $root/etc/rc2.d/S93cacheos.finish
rm -f $root/etc/rcS.d/S41cachefs.root
#
# Remove unneeded nfsmapid entries
#
nfsmapid_cfg
#
# Nuke the nfsauth headers when we're working with the 'global'
# or a fully populated nonglobal zone. The cpio archive will lay the
# right one to match mountd(1m)'s comm method w/the kernel (via
# kRPC or Doors/XDR).
#
dir_is_inherited usr 2>/dev/null;
if [ $? = 1 -o $zone = global ]; then
rm -f ${rootprefix}/usr/include/rpcsvc/nfsauth_prot.x
rm -f ${rootprefix}/usr/include/rpcsvc/nfsauth_prot.h
rm -f ${rootprefix}/usr/include/nfs/auth.h
fi
#
# Move the original manifests aside; later we will restore
# unchanged originals to avoid superfluous re-import on reboot.
# (First blow away the old dir path just to be safe.)
#
rm -rf $root/$old_mfst_dir
[ -d $root/$new_mfst_dir ] && mv $root/$new_mfst_dir $root/$old_mfst_dir
#
# Remove obsolete sum.h
#
rm -f $usr/include/sum.h
#
# Remove obsolete std.h
#
rm -f $usr/include/std.h
#
# Remove obsolete rpc/trace.h
#
rm -f $usr/include/rpc/trace.h
#
# Remove acpi_intp module
#
if [ $target_isa = i386 ]; then
rm -f $root/kernel/misc/acpi_intp
rm -f $root/kernel/misc/amd64/acpi_intp
fi
#
# Remove obsolete librac
#
rm -f $usr/include/rpc/rac.h
rm -f $usr/lib/llib-lrac
rm -f $usr/lib/llib-lrac.ln
rm -f $usr/lib/amd64/llib-lrac.ln
rm -f $usr/lib/sparcv9/llib-lrac.ln
rm -f $usr/lib/librac.so
rm -f $usr/lib/librac.so.1
rm -f $usr/lib/amd64/librac.so
rm -f $usr/lib/amd64/librac.so.1
rm -f $usr/lib/sparcv9/librac.so
rm -f $usr/lib/sparcv9/librac.so.1
#
# Remove /kernel/mac. This directory was introduced by
# PSARC/2006/248, and along with this came a syntax change to the
# /etc/aggregation.conf file. After archives have been extracted,
# we check for the existance of the /kernel/mac directory to see if
# we're doing a backward bfu and need to convert the syntax of the
# /etc/aggregation.conf file to its old format.
#
if [ -d $root/kernel/mac ]; then
from_new_aggrconf=1
rm -rf $root/kernel/mac
else
from_new_aggrconf=0
fi
# Remove libcmd from $root/lib. It has moved back to $usr/lib.
rm -f $root/lib/libcmd.so
rm -f $root/lib/libcmd.so.1
rm -f $root/lib/amd64/libcmd.so
rm -f $root/lib/amd64/libcmd.so.1
rm -f $root/lib/sparcv9/libcmd.so
rm -f $root/lib/sparcv9/libcmd.so.1
rm -f $root/lib/llib-lcmd
rm -f $root/lib/llib-lcmd.ln
rm -f $root/lib/amd64/llib-lcmd.ln
rm -f $root/lib/sparcv9/llib-lcmd.ln
# Remove audit_record_attr. Moved to /usr/lib/security
rm -f $root/etc/security/audit_record_attr
#
# Remove xmemfs altogether.
#
rm -f $usr/include/sys/fs/xmem.h
rm -f $usr/include/sys/fs/seg_xmem.h
rm -f $usr/kernel/fs/xmemfs
rm -f $usr/kernel/fs/amd64/xmemfs
rm -rf $usr/lib/fs/xmemfs
#
# Remove obsolete libmacadm, liblaadm and libwladm. If this is
# a backwards BFU, they will be extracted by cpio.
#
rm -f $root/lib/libmacadm.so.1
rm -f $root/lib/liblaadm.so.1
rm -f $root/lib/libwladm.so.1
#
# Remove PCI hotplug devlinks. Their format has changed,
# and the old devlinks will interfere with the new ones.
#
rm -f $root/dev/cfg/*pci*
#
# remove the architecture-specific sn1_brand module since it's being
# replaced with platform-specific modules.
#
rm -f $root/kernel/brand/sparcv9/sn1_brand
#
# Remove I2O.
#
rm -f $root/kernel/drv/i2o_bs
rm -f $root/kernel/drv/i2o_bs.conf
rm -f $root/kernel/drv/i2o_scsi
rm -f $root/kernel/drv/i2o_scsi.conf
rm -f $root/kernel/drv/pci_to_i2o
rm -f $root/kernel/drv/pci_to_i2o.conf
rm -f $root/kernel/misc/i2o_msg
rm -f $root/usr/include/sys/i2o/*
rmdir $root/usr/include/sys/i2o/ 2>/dev/null
#
# Remove /usr/ccs/bin dependency files that now live in
# /usr/share/lib/ccs
#
rm -f $usr/ccs/bin/gprof.callg.blurb
rm -f $usr/ccs/bin/gprof.flat.blurb
rm -f $usr/ccs/bin/nceucform
rm -f $usr/ccs/bin/ncform
rm -f $usr/ccs/bin/nrform
rm -f $usr/ccs/bin/yaccpar
#
# Remove us driver header.
#
rm -f $usr/platform/sun4u/include/sys/us_drv.h
# End of pre-archive extraction hacks.
if [ $diskless = no -a $zone = global ]; then
print "Extracting ufs modules for boot block ... \c" | \
tee -a $EXTRACT_LOG
do_extraction $cpiodir/$karch.usr$ZFIX \
'usr/platform/'$karch'/lib/fs/ufs/*' | \
tee -a $EXTRACT_LOG
case $target_isa in
sparc)
if [[ "$rootslice" = /dev/rdsk/* ]]; then
print "Installing boot block on $rootslice."
cd $usr/platform/$karch/lib/fs/ufs
installboot ./bootblk $rootslice
fi
;;
i386)
;;
*)
;; # unknown ISA
esac
fi
if [ $diskless = yes ]; then
node=${root##*/}
archlist=""
for arch in $allarchs
do
egrep -s '/export/exec/.*'$arch'/usr/kvm' \
$root/etc/vfstab ||
test -d $root/platform/$arch &&
archlist="$archlist $arch"
done
if [ -z "$old_style_archives" ]; then
extract_archives lib generic
extract_archives sbin generic
extract_archives kernel generic
fi
extract_archives root generic $archlist
if [ $target_isa = i386 ]; then
extract_boot_archives boot $archlist
fi
else
export PATH=/tmp/bfubin
node=`uname -n`
if [ $zone = global ]; then
extract_archives usr generic $usrarchs
if [ -z "$old_style_archives" ]; then
extract_archives lib generic
extract_archives sbin generic
extract_archives kernel generic
fi
extract_archives root generic $rootarchs
if [ $target_isa = i386 ]; then
#
# The assumption here is that if boot
# archives exist at all, they only exist
# for architectures where we also have
# .root archives.
#
extract_boot_archives boot $rootarchs
fi
else
dir_is_inherited usr ||
extract_archives usr generic $usrarchs
dir_is_inherited lib ||
extract_archives lib generic
dir_is_inherited sbin ||
extract_archives sbin generic
dir_is_inherited platform &&
extract_archives root generic ||
extract_archives root generic $rootarchs
fi
fi
touch reconfigure
#
# UltraSparc III platforms have aes module in platform directory
#
if [ ! -f $root/platform/$plat/kernel/crypto/sparcv9/aes ]; then
rm -f $root/platform/sun4u-us3/kernel/crypto/sparcv9/aes
rm -f $root/platform/sun4u-us3/kernel/crypto/sparcv9/aes256
fi
if [ $zone = global ]; then
print "\nRemoving duplicate kernel binaries ..."
#
# First, find all regular files underneath the */kernel
# directories we extracted, and mark them as older or newer
# than our reference file -- if newer, they were extracted
# during the bfu.
#
# We then split out the pre-/kernel part from the post-/kernel
# part, sort by post-/kernel part and age (new first), and
# delete old files which have new counterparts.
#
dirs="$rootprefix/kernel $usr/kernel"
for plat in $archlist $rootarchs $usrarchs; do
dir=$rootprefix/platform/$plat/kernel
[[ -d $dir ]] && dirs="$dirs $dir"
done
age=new
ls -ct $time_ref `find $dirs -type f 2>/dev/null` | uniq |
while read f; do
if [[ $f = $time_ref ]] then
age=old
else
echo $age $f
fi
done |
sed 's@\(.*/kernel\)/@\1 @' | sort -k 3 -k 1 | nawk '
/^new/ { lastname = $3 }
/^old/ { if (lastname == $3) { print $2 "/" $3 } }
' | while read x; do
echo rm $x
rm $x
done
fi
echo
# Simulate installation of SUNWcry* - these are in the bfu archives.
if [ -f $rootprefix/etc/crypto/kcf.conf -a \
-f $rootprefix/etc/crypto/pkcs11.conf ]; then
enable_crypto_unlimited
fi
# Add uCF's metaslot feature
if [ -f $rootprefix/etc/crypto/pkcs11.conf ] ; then
enable_crypto_metaslot
fi
# Cleanup old Kerberos mechanisms
cleanup_kerberos_mechanisms
# Cleanup old RBAC profiles
rbac_cleanup
# Fix network datalink configuration
if [ $zone = global -a $need_datalink = yes ]; then
create_datalink_conf
fi
print "\nRestoring configuration files.\n"
cd $root
rm -rf bfu.ancestor
test -d bfu.parent && mv bfu.parent bfu.ancestor
mkdir bfu.parent
print "Restoring configuration files ... \c" >> $EXTRACT_LOG
filelist $zone | cpio -pdmu bfu.parent 2>>$EXTRACT_LOG || \
extraction_error "restoring configuration files"
if [ $multi_or_direct = no ]; then
if [ $have_realmode = yes ]; then
if [ -d bfu.realmode ]; then
( cd bfu.realmode ; realmode_filelist | \
cpio -pdmu ../bfu.ancestor 2>/dev/null )
rm -rf bfu.realmode
fi
mkdir bfu.realmode
( cd bfu.parent ; realmode_filelist | \
cpio -pdmu ../bfu.realmode 2>/dev/null )
else
for file in $realmode_files
do
rm -rf bfu.parent/$file
done
fi
fi
cd bfu.child
for file in `filelist $zone`
do
# parent: freshly-BFUed version
# child: pre-BFU version
# ancestor: installed from archives the last time you BFUed
# actual: in the root filesystem at this moment (same as parent)
parent=$rootprefix/bfu.parent/$file
child=$rootprefix/bfu.child/$file
ancestor=$rootprefix/bfu.ancestor/$file
conflicts=$rootprefix/bfu.conflicts/$file
actual=$rootprefix/$file
# if a superfluous-to-local-zones file was blown away, skip it
[ -f $actual ] || continue
# if there's been no change by the BFU, skip it
cmp -s $child $actual && continue
# if the file was not installed by the BFU, skip it
[ -f $parent ] || continue
# if this is a file which should never be updated by BFU,
# preserve the original (child) version
if (echo $preserve_files | grep $file >/dev/null 2>&1)
then
print " preserve: $file"
cp -p $child $actual
continue
fi
# if the file was accepted from the parent on the last BFU,
# then accept it again this time without argument. Or, if
# this is the first bfu after an standard Solaris install
# or upgrade, compare the file to one installed from packages.
# If it hasn't been modified since installation, accept
# the file from the parent.
if [ -f $ancestor ] ; then
if cmp -s $child $ancestor; then
print " update: $file"
continue
fi
elif [ "$firstbfu" = "yes" ] ; then
installedsum=$(grep "^/$file " \
$rootprefix/var/sadm/install/contents |
awk '{ print $8 }')
if [ -n "$installedsum" ] ; then
actualsum=`sum $child | sed 's/ .*//'`
if [ "$installedsum" -eq "$actualsum" ] ; then
print " update: $file"
continue
fi
fi
fi
# if the BFU'ed file is the same as the beginning of the
# pre-BFUed file, assume the user has added lines to the
# end, and restore the pre-BFUed version
if (cmp $child $parent 2>&1) | egrep -s 'EOF on '$parent; then
print " restore: $file"
cp -p $child $actual
continue
fi
# if the new version is the same as it was the last time
# BFU was run, but still different than the pre-BFU version,
# this is an "old" conflict; otherwise, it's a "NEW"
# conflict. Old conflicts can usually be safely ignored.
if cmp -s $parent $ancestor; then
print "old \c"
else
print "NEW \c"
print $file >>$rootprefix/bfu.conflicts/NEW
fi
print "conflict: $file"
(cd $root; print $file | cpio -pdmu bfu.conflicts 2>/dev/null)
# for all conflicts, restore the pre-BFU version and let
# the user decide what to do.
cp -p $child $actual
done
if [ $zone = global ]; then
#
# correct permissions using /etc/minor_perm from the parent and
# child, prefer parent.
#
mperm=$rootprefix/etc/minor_perm
pmperm=$rootprefix/bfu.parent/etc/minor_perm
if [ -f $pmperm ]
then
mperm="$pmperm $mperm"
fi
#
# Devices with changed permissions should be added here much
# like in i.minorperm. The "ssm" devices are special in that
# they have no /dev links associated with them.
#
while read minor dev
do (
set -- `fgrep -h "$minor" $mperm` "";
if [ ! -z "$2" ]
then
chmod $2 $rootprefix/dev/$dev 2>/dev/null
chown $3:$4 $rootprefix/dev/$dev 2>/dev/null
fi
) done <<-EOF
ssm:* ../devices/ssm*:*
cpc:shared ../devices/pseudo/cpc*
icmp:icmp icmp
icmp6:icmp6 icmp6
ip:ip ip
ip6:ip6 ip6
rts:rts rts
keysock:keysock keysock
ipsecah:ipsecah ipsecah
ipsecesp:ipsecesp ipsecesp
spdsock:spdsock spdsock
sad:admin sad/admin
fssnap:ctl fssnapctl
fssnap:* fssnap/*
clone:ce ce
clone:eri eri
clone:ge ge
clone:hme hme
clone:le le
clone:qfe qfe
clone:bge bge
bge:* bge*
clone:dmfe dmfe
dmfe:* dmfe*
clone:pcelx pcelx
pcelx:* pcelx*
clone:dnet dnet
dnet:* dnet*
clone:elxl elxl
elxl:* elxl*
clone:iprb iprb
iprb:* iprb*
clone:spwr spwr
spwr:* spwr*
EOF
if [ $target_isa = i386 ] && [[ $rootslice = /dev/rdsk/* || \
$rootslice = /dev/md/rdsk/* ]]; then
check_boot_env
fi
# Check for damage due to CR 6379341. This was actually fixed
# back in snv_24, but users BFUing from an S10 build up to
# Nevada can still encounter it.
rzi=$root/etc/zones/index
if [ -f $rzi ]; then
# Look for duplicated UUIDs. If there are any, then
# just wipe them out.
if nawk -F: '
/^\#/ || NF != 4 { print $0; next; }
{
if (flags[$4])
sub(/:[-0-9a-z]*$/,":");
print $0;
flags[$4]=1;
}
' < $rzi > ${rzi}.bfu.$$; then
if cmp -s $rzi ${rzi}.bfu.$$; then
rm -f ${rzi}.bfu.$$
else
chown root:sys ${rzi}.bfu.$$
chmod 644 ${rzi}.bfu.$$
mv ${rzi}.bfu.$$ $rzi
fi
else
rm -f ${rzi}.bfu.$$
fi
fi
# Move existing /etc/aggregation.conf entries to
# /etc/dladm/aggregation.conf; or, if bfu'ing
# backwards, move aggregation.conf back to /etc
aggr_old=$rootprefix/etc/aggregation.conf
aggr_new=$rootprefix/etc/dladm/aggregation.conf
if [ $new_dladm = yes ]; then
if [ -f $aggr_old ]; then
# use cat instead of cp/mv to keep
# owner+group of dest
cat $aggr_old > $aggr_new
rm -f $aggr_old
fi
else
if [ -f $aggr_new ]; then
cp $aggr_new $aggr_old
chgrp sys $aggr_old
rm -rf $rootprefix/etc/dladm
fi
fi
fi
# Fix up audit permissions
fix_up_audit
print "\nFor each file in conflict, your version has been restored."
print "The new versions are under $rootprefix/bfu.conflicts."
print "\nMAKE SURE YOU RESOLVE ALL CONFLICTS BEFORE REBOOTING.\n"
if [ $multi_or_direct = yes ]; then
print "To install resolved changes required for reboot in the boot"
print "archive, invoke 'bootadm update-archive${cr_args}'\n"
fi
if [ $zone != global ]; then
print "Resolve conflicts in the global zone first. Many of"
print "the conflicts in non-global zones can be resolved by"
print "copying the corresponding file from the global zone.\n"
else
fixup_mpxio
#
# If we're bfuing backward across PSARC/2006/248, then
# revert the /etc/aggregation.conf to its old format.
#
if [ -f $rootprefix/etc/aggregation.conf -a \
! -d $rootprefix/kernel/mac -a \
$from_new_aggrconf = 1 ]; then
revert_aggregation_conf
fi
fi
cd $root
smf_apply_conf
update_policy_conf
if [ $target_isa = i386 ]; then
update_mptconf_i386
fi
if [ $zone != global ]; then
rm -rf $global_zone_only_files $superfluous_nonglobal_zone_files
fi
print "bfu'ed from $cpiodir on `date +%Y-%m-%d`" >>etc/motd
tail +`nawk '/bfu.ed from/ { x=NR }; END { print x+1 }' \
etc/motd.old` etc/motd.old >> etc/motd
#
# Hacks to work around minor annoyances and make life more pleasant.
# Part 2 of 2: post-archive-extraction stuff
#
rm -f var/statmon/state # to prevent lockd/statd hangs
for f in etc/auto_* # to make autofs happy
do
file $f | grep executable >/dev/null || chmod -x $f
done
epilogue=$rootprefix/bfu.epilogue
if [ -f $epilogue ]; then
print "Executing $epilogue"
$epilogue || print "WARNING: $epilogue failed with code $?"
fi
((seconds = SECONDS))
((min = seconds / 60))
((sec = seconds % 60))
if [ $zone = global ]; then
target=$node
else
target=$zone
fi
printf "Upgrade of $target took ${min}:%02d.\n" $sec
#
# Do logging in the background so that if the automounter is gone,
# bfu doesn't wedge at this point.
#
log=$GATE/public/bfu.log
(test -w $log && printf \
"`date +%Y'%'m%d` $node `uname -rv` $karch $cpiodir ${min}:%02d\n" \
$sec >>$log) &
}
#
# make sure the time reference is older than anything extracted
#
test $time_ref_seconds -eq $SECONDS && sleep 1
test $diskless = yes && extract_archives usr generic $allarchs
for root in $rootlist
do
mondo_loop $root global
lastroot=$root
done
if [ -s "$bfu_zone_list" ]; then
cat "$bfu_zone_list" | while read zone zonepath; do
print "\nNow for zone $zone..."
mondo_loop $zonepath/root $zone
done
#
# Normally we would clean up $bfu_zone_list but instead we leave it
# behind for ACR to locate and use inside the BFU alternate reality.
#
fi
print "Turning off delayed i/o and syncing filesystems ..."
sync
fastfs -s $rootlist $usr
fastfs $rootlist $usr
sync
lockfs -f $rootlist $usr
egrep -s "^error " $EXTRACT_LOG
if [ $? -eq 0 ]; then
print "\nWARNING: archive extraction errors occurred.\n"
print "See $EXTRACT_LOG for details.\n"
fi
lastrootprefix=${lastroot%/}
if [ -t 0 -a -t 1 -a -t 2 ]; then
print "\nEntering post-bfu protected environment (shell: ksh)."
print "Edit configuration files as necessary, then reboot.\n"
cd $lastrootprefix/bfu.conflicts
PS1='bfu# ' ksh -ip
fi
print "Exiting post-bfu protected environment. To reenter, type:"
print LD_NOAUXFLTR=1 LD_LIBRARY_PATH=/tmp/bfulib $ldlib64 PATH=/tmp/bfubin \
/tmp/bfubin/ksh
exit 0