17c478bd9Sstevel@tonic-gate#
27c478bd9Sstevel@tonic-gate# CDDL HEADER START
37c478bd9Sstevel@tonic-gate#
47c478bd9Sstevel@tonic-gate# The contents of this file are subject to the terms of the
5986fd29aSsetje# Common Development and Distribution License (the "License").
6986fd29aSsetje# You may not use this file except in compliance with the License.
77c478bd9Sstevel@tonic-gate#
87c478bd9Sstevel@tonic-gate# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97c478bd9Sstevel@tonic-gate# or http://www.opensolaris.org/os/licensing.
107c478bd9Sstevel@tonic-gate# See the License for the specific language governing permissions
117c478bd9Sstevel@tonic-gate# and limitations under the License.
127c478bd9Sstevel@tonic-gate#
137c478bd9Sstevel@tonic-gate# When distributing Covered Code, include this CDDL HEADER in each
147c478bd9Sstevel@tonic-gate# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157c478bd9Sstevel@tonic-gate# If applicable, add the following below this CDDL HEADER, with the
167c478bd9Sstevel@tonic-gate# fields enclosed by brackets "[]" replaced with your own identifying
177c478bd9Sstevel@tonic-gate# information: Portions Copyright [yyyy] [name of copyright owner]
187c478bd9Sstevel@tonic-gate#
197c478bd9Sstevel@tonic-gate# CDDL HEADER END
207c478bd9Sstevel@tonic-gate#
217c478bd9Sstevel@tonic-gate
22986fd29aSsetjeCopyright 2007 Sun Microsystems, Inc.  All rights reserved.
237c478bd9Sstevel@tonic-gateUse is subject to license terms.
247c478bd9Sstevel@tonic-gate
257c478bd9Sstevel@tonic-gate/lib/svc/share/README
267c478bd9Sstevel@tonic-gate
277c478bd9Sstevel@tonic-gatesmf(5):  Notes on maintenance mode and recovery
287c478bd9Sstevel@tonic-gate
297c478bd9Sstevel@tonic-gateFailures that bring the system to maintenance mode may include hardware
307c478bd9Sstevel@tonic-gateor critical software failures.  The procedures below are given so that
317c478bd9Sstevel@tonic-gatesome software repairs can be made; the recommended exit approach once a
327c478bd9Sstevel@tonic-gaterepair has been made is to reboot the system.  The system can be brought
337c478bd9Sstevel@tonic-gateto maintenance mode deliberately via the '-s' option to boot(1M), or via
347c478bd9Sstevel@tonic-gatethe 's' option to init(1M).
357c478bd9Sstevel@tonic-gate
367c478bd9Sstevel@tonic-gateIn failure scenarios, smf(5) may or may not be running, depending on
377c478bd9Sstevel@tonic-gatewhich component has failed.  If smf(5) is running, and the /usr
387c478bd9Sstevel@tonic-gatefilesystem is reachable, then the usual svcadm(1M) invocations to clear
397c478bd9Sstevel@tonic-gatemaintenance state and restart services instances can be used.
407c478bd9Sstevel@tonic-gateOtherwise, the following instructions describe the direct execution of
417c478bd9Sstevel@tonic-gateservice methods, so that capabilities that svc.startd(1M) would normally
427c478bd9Sstevel@tonic-gatestart automatically can be started manually.  In the case that the
437c478bd9Sstevel@tonic-gatedocument recommends an invocation like
447c478bd9Sstevel@tonic-gate
457c478bd9Sstevel@tonic-gate# /lib/svc/method/example-method start
467c478bd9Sstevel@tonic-gate
477c478bd9Sstevel@tonic-gateyou may also consider running these scripts with the shell displaying
487c478bd9Sstevel@tonic-gatethe commands from the service method as they are executed.  For sh(1)
497c478bd9Sstevel@tonic-gatebased scripts, this would mean running the method as
507c478bd9Sstevel@tonic-gate
517c478bd9Sstevel@tonic-gate# /sbin/sh -x /lib/svc/method/example-method start
527c478bd9Sstevel@tonic-gate
537c478bd9Sstevel@tonic-gateSome methods may be written to instead use ksh(1), with invocation
547c478bd9Sstevel@tonic-gate
557c478bd9Sstevel@tonic-gate# /usr/bin/ksh -x /lib/svc/method/example-method start
567c478bd9Sstevel@tonic-gate
577c478bd9Sstevel@tonic-gateThe first line of the service method script will generally specify its
587c478bd9Sstevel@tonic-gaterequired interpreter using the standard #! notation.  Method scripts may
597c478bd9Sstevel@tonic-gatepotentially require interpreters other than sh(1) or ksh(1).
607c478bd9Sstevel@tonic-gate
617c478bd9Sstevel@tonic-gate1.  Boot archive failure
627c478bd9Sstevel@tonic-gate
63986fd29aSsetjeThe boot archive may become out of sync with the root filesystem in a
64986fd29aSsetjereboot following an abnormal system shutdown. The recommended action is
65986fd29aSsetjeto reboot immediately to rebuild the archive and correct the inconsistency.
66986fd29aSsetjeTo accomplish this, on a GRUB-based platform, choose "Solaris failsafe"
67986fd29aSsetjewhen the boot menu is displayed.  Type 'i' to get an interactive recovery
68986fd29aSsetjeshell and follow instructions to update the boot archive.  On an OBP-
69986fd29aSsetjebased platform, type 'boot -F failsafe' and follow the instructions.
707c478bd9Sstevel@tonic-gate
717c478bd9Sstevel@tonic-gateIf the list of stale files are not yet loaded by the kernel
727c478bd9Sstevel@tonic-gateor are compatible, you may continue booting by clearing the
737c478bd9Sstevel@tonic-gateboot-archive service state
747c478bd9Sstevel@tonic-gate
757c478bd9Sstevel@tonic-gate# svcadm clear system/boot-archive
767c478bd9Sstevel@tonic-gate
777c478bd9Sstevel@tonic-gate2.  Failure to mount filesystems.
787c478bd9Sstevel@tonic-gate
797c478bd9Sstevel@tonic-gateIn cases where the system was unable to bring a combination of the
807c478bd9Sstevel@tonic-gatesystem/filesystem/{root,usr,minimal} services online, it may be possible
817c478bd9Sstevel@tonic-gateto directly execute the corresponding service methods
827c478bd9Sstevel@tonic-gate
837c478bd9Sstevel@tonic-gate# /lib/svc/method/fs-root
847c478bd9Sstevel@tonic-gate# /lib/svc/method/fs-usr
857c478bd9Sstevel@tonic-gate# /lib/svc/method/fs-minimal
867c478bd9Sstevel@tonic-gate
877c478bd9Sstevel@tonic-gateto mount the various filesystems.  In the case that these methods fail,
887c478bd9Sstevel@tonic-gatea direct invocation of mount(1M), and potentially fsck(1M), should be
897c478bd9Sstevel@tonic-gateattempted for file systems required for recovery purposes.
907c478bd9Sstevel@tonic-gate
917c478bd9Sstevel@tonic-gate/lib/svc/method/fs-usr attempts to remount the root file system
927c478bd9Sstevel@tonic-gateread-write, such that persistent changes can be made to the system's
937c478bd9Sstevel@tonic-gateconfiguration.  If this method is failing, one can directly remount
947c478bd9Sstevel@tonic-gateusing the mount(1M) command via
957c478bd9Sstevel@tonic-gate
967c478bd9Sstevel@tonic-gate# /sbin/mount -o rw,remount /
977c478bd9Sstevel@tonic-gate
987c478bd9Sstevel@tonic-gate/etc/svc/volatile is a temporary filesystem generally reserved for Sun
997c478bd9Sstevel@tonic-gateprivate use.  It may prove a useful location to create mount points if
1007c478bd9Sstevel@tonic-gatethe root file system cannot be remounted read-write.
1017c478bd9Sstevel@tonic-gate
1027c478bd9Sstevel@tonic-gate3.  Failure to run svc.configd(1M).
1037c478bd9Sstevel@tonic-gate
1047c478bd9Sstevel@tonic-gatesvc.configd(1M) will give detailed instructions for recovery if the
1057c478bd9Sstevel@tonic-gatecorruption is detected in the repository.  If svc.configd(1M) cannot be
1067c478bd9Sstevel@tonic-gaterun because of missing or corrupt library components, then the affected
1077c478bd9Sstevel@tonic-gatecomponents will need to be replaced.  Components could be copied from a
1087c478bd9Sstevel@tonic-gateCD-ROM or DVD-ROM, or from another system.
1097c478bd9Sstevel@tonic-gate
1107c478bd9Sstevel@tonic-gate4.  Failure to run svc.startd(1M).
1117c478bd9Sstevel@tonic-gate
1127c478bd9Sstevel@tonic-gateIf the inittab(4) line to invoke svc.startd(1M) is missing or incorrect,
1137c478bd9Sstevel@tonic-gateit will need to be restored.  A valid entry is
1147c478bd9Sstevel@tonic-gate
1157c478bd9Sstevel@tonic-gatesmf::sysinit:/lib/svc/bin/svc.startd    >/dev/msglog 2<>/dev/msglog </dev/console
1167c478bd9Sstevel@tonic-gate
1177c478bd9Sstevel@tonic-gateIf svc.startd(1M) cannot be run because of missing or corrupt library
1187c478bd9Sstevel@tonic-gatecomponents, then the affected components will need to be replaced, as
1197c478bd9Sstevel@tonic-gatefor svc.configd(1M) above.
1207c478bd9Sstevel@tonic-gate
1217c478bd9Sstevel@tonic-gate5.  Activating basic networking configuration.
1227c478bd9Sstevel@tonic-gate
1237c478bd9Sstevel@tonic-gateIf svc.startd(1M) did not execute successfully, it may also be necessary
1247c478bd9Sstevel@tonic-gateto activate network interfaces manually, such that other hosts can be
1257c478bd9Sstevel@tonic-gatecontacted.  The service methods can be invoked directly as
1267c478bd9Sstevel@tonic-gate
1277c478bd9Sstevel@tonic-gate# /lib/svc/method/net-loopback
1287c478bd9Sstevel@tonic-gate# /lib/svc/method/net-physical
1297c478bd9Sstevel@tonic-gate
1307c478bd9Sstevel@tonic-gateIf these methods fail, a direct invocation of ifconfig(1M) can be
1317c478bd9Sstevel@tonic-gateattempted.
1327c478bd9Sstevel@tonic-gate
1337c478bd9Sstevel@tonic-gateIn some scenarios, one may be able to use routeadm(1M) to activate more
1347c478bd9Sstevel@tonic-gatedynamic route management functionality; restoring the default dynamic
1357c478bd9Sstevel@tonic-gaterouting behaviour can be done using the '-u' option.  (Invoking routeadm
1367c478bd9Sstevel@tonic-gatewith no arguments will display which commands must be accessible for the
1377c478bd9Sstevel@tonic-gatecurrent routing configuration to be invoked.)  Otherwise, once
1387c478bd9Sstevel@tonic-gateinterfaces are up, a default route can be manually added using the
1397c478bd9Sstevel@tonic-gateroute(1M) command.  On typical IPv4 networks, this invocation would be
1407c478bd9Sstevel@tonic-gate
1417c478bd9Sstevel@tonic-gate# /sbin/route add net default _gateway_IP_
1427c478bd9Sstevel@tonic-gate
1437c478bd9Sstevel@tonic-gate--
1447c478bd9Sstevel@tonic-gate
1457c478bd9Sstevel@tonic-gate(An extended version of this document is available at
146*654b400cSJoshua M. Clulowhttp://illumos.org/msg/SMF-8000-QD.  That version includes additional
1477c478bd9Sstevel@tonic-gatedocument references.)
148