<?Pub UDT _bookmark _target?><?Pub UDT __target_1 _target?><?Pub UDT registeredtm trademark?><?Pub EntList bull rArr sect?><?Pub CX solbook(book(title()bookinfo()chapter(11)?><chapter id="hbsparcboot-79782"><?Pub Tag atict:info tracking="on" ref="0"?><?Pub Tag
atict:user user="sk23612" fullname="Juanita Heieck"?><?Pub Tag atict:user
user="jonj" fullname="Juanita Heieck"?><?Pub Tag atict:user user="kathys"
fullname="Kathy Slattery"?><?Pub Tag atict:user user="cathleen" fullname=""?><?Pub Tag
atict:user user="eb151805" fullname="Juanita Heieck"?><?Pub Tag atict:user
user="jh118764" fullname="Juanita Heieck"?><?Pub Tag atict:user user="lh136763"
fullname="Laura Hartman"?><title>Booting a Solaris System (Tasks)</title><highlights><para>This chapter describes the procedures for booting the Solaris release
on SPARC and x86 based systems.</para><itemizedlist><para>The following is a list of information that is in this chapter:</para><listitem><para><olink targetptr="hbsparcboot-69" remap="internal">Booting a SPARC Based System
(Task Map)</olink></para>
</listitem><listitem><para><olink targetptr="hbx86boot-68676" remap="internal">Booting an x86 Based System
by Using GRUB (Task Map)</olink></para>
</listitem><listitem><para><olink targetptr="ghsut" remap="internal">Using Fast Reboot on the x86 Platform
(Task Map)</olink></para>
</listitem>
</itemizedlist><para>For overview information about the boot process, see <olink targetptr="hboverview-25463" remap="internal">Chapter&nbsp;9, Shutting Down and Booting a System
(Overview)</olink>.</para>
</highlights><sect1 id="hbsparcboot-69"><title>Booting a SPARC Based System (Task Map)</title><informaltable frame="all" pgwide="1"><tgroup cols="3" colsep="0" rowsep="0"><?PubTbl tgroup dispwid="1137.00px"?><colspec colname="column1" colwidth="132.00*"/><colspec colname="column2" colwidth="130.56*"/><colspec colname="column3" colwidth="133.44*"/><thead><row rowsep="1"><entry colsep="1" rowsep="1"><para>Task</para>
</entry><entry colsep="1" rowsep="1"><para>Description</para>
</entry><entry colsep="1" rowsep="1"><para>For Instructions</para>
</entry>
</row>
</thead><tbody><row><entry colsep="1" rowsep="1"><para>Boot a SPARC based system to run level 3.</para>
</entry><entry colsep="1" rowsep="1"><para>Use this boot method after shutting down the system or performing a
system hardware maintenance task. </para>
</entry><entry colsep="1" rowsep="1"><para><olink targetptr="hbsparcboot-36744" remap="internal">How to Boot a System to Run Level
3 (Multiuser Level)</olink></para>
</entry>
</row><row><entry colsep="1" rowsep="1"><para>Boot a SPARC based system to run level S.</para>
</entry><entry colsep="1" rowsep="1"><para>Use this boot method to boot the system after performing a system maintenance
task such as backing up a file system. At this level, only local file systems
are mounted and users cannot log in to the system.</para>
</entry><entry colsep="1" rowsep="1"><para><olink targetptr="hbsparcboot-83723" remap="internal">How to Boot a System to Run Level
S (Single-User Level)</olink></para>
</entry>
</row><row><entry colsep="1" rowsep="1"><para>Boot a SPARC based system interactively.</para>
</entry><entry colsep="1" rowsep="1"><para>Use this boot method after making temporary changes to a system file
or the kernel for testing purposes.</para>
</entry><entry colsep="1" rowsep="1"><para><olink targetptr="hbsparcboot-66353" remap="internal">How to Boot a System Interactively</olink></para>
</entry>
</row><row><?PubTbl row rht="0.93in"?><entry colsep="1" rowsep="1"><para>Boot a Solaris kernel other than default.</para>
</entry><entry colsep="1" rowsep="1"><para>Use this procedure to boot a Solaris kernel other than the default kernel.</para><para>Alternately, you can obtain a copy of an alternate boot file, change
the default kernel to the new kernel, then set the <literal>boot-file</literal> parameter
to boot the new default boot device.</para>
</entry><entry colsep="1" rowsep="1"><para><olink targetptr="ggmuk" remap="internal">How to Boot a Solaris Kernel Other Than the
Default Kernel</olink></para>
</entry>
</row><row><?PubTbl row rht="1.96in"?><entry colsep="1" rowsep="1"><para>Display a list of the available ZFS bootable datasets on a SPARC based
system.</para>
</entry><entry colsep="1" rowsep="1"><para>Use the <command>boot</command> <option>L</option>  command to display
a list of the available BEs within a ZFS pool on a system.</para><note><para>This option is only supported for boot devices that contain a
ZFS pool.</para>
</note>
</entry><entry colsep="1" rowsep="1"><para><olink targetptr="ggqgy" remap="internal">How to List Available Bootable Datasets Within
a ZFS Root Pool</olink></para>
</entry>
</row><row><?PubTbl row rht="1.96in"?><entry colsep="1" rowsep="1"><para>Boot a SPARC based system from a ZFS root file system.</para>
</entry><entry colsep="1" rowsep="1"><para>Use the <command>boot</command> <option>Z</option> option to boot a
specified ZFS dataset.</para><note><para>This option is only supported for boot devices that contain a
ZFS pool.</para>
</note>
</entry><entry colsep="1" rowsep="1"><para><olink targetptr="ggqdk" remap="internal">How to Boot From a ZFS Root File System</olink></para>
</entry>
</row><row><?PubTbl row rht="1.96in"?><entry colsep="1" rowsep="1"><para>Boot the failsafe archive on a SPARC based system.</para>
</entry><entry colsep="1" rowsep="1"><para>Use this procedure to boot the failsafe archive on a SPARC based system.
Then, run the <command>bootadm</command> command to update the boot archive.</para>
</entry><entry colsep="1" rowsep="1"><para><olink targetptr="ggqgc" remap="internal">How to Boot the Failsafe Archive on a SPARC
Based System</olink></para>
</entry>
</row><row><?PubTbl row rht="1.96in"?><entry colsep="1" rowsep="1"><para>Boot a SPARC based system from the network.</para>
</entry><entry colsep="1" rowsep="1"><para>Use this boot method to boot a system from the network. Note that this
method is also used for booting a diskless client.</para>
</entry><entry colsep="1" rowsep="1"><para><olink targetptr="ggpmg" remap="internal">How to Boot a System From the Network</olink></para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect1><sect1 id="hbsparcboot-9"><title>Booting a SPARC Based System</title><para>If a system is turned off, turning it on starts the multiuser boot sequence.
The following procedures show how to boot to different run levels from the <literal>ok</literal> PROM prompt. These procedures assume that the system has been
cleanly shut down, unless stated otherwise.</para><para>Use the <command>who -r</command> command to verify that the system
is brought to the specified run level. For a description of run levels, see <olink targetptr="hbrunlevels-25516" remap="internal">Chapter&nbsp;16, Managing Services (Overview)</olink>.</para><task id="hbsparcboot-36744" arch="sparc"><title>How to Boot a System to Run
Level 3 (Multiuser Level)</title><tasksummary><para>Use this procedure to boot a system that is currently at run level 0
to run level 3.</para>
</tasksummary><procedure><step id="ggprd"><para><indexterm id="ggpnd"><primary>run level</primary><secondary>3 (multiuser with NFS)</secondary><tertiary>booting to</tertiary></indexterm>Boot the system to run level 3. </para><screen>ok <userinput>boot</userinput></screen><para>The automatic boot procedure displays a series of startup messages,
and brings the system to run level 3. For more information, see the <olink targetdoc="refman" targetptr="boot-1m" remap="external"><citerefentry><refentrytitle>boot</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> man page.</para>
</step><step id="ggpqs"><para>Verify that the system has booted to run level 3.</para><para>The login prompt is displayed when the boot process has finished successfully.</para><screen><replaceable>hostname</replaceable> console login:</screen>
</step>
</procedure><example arch="sparc"><title>Booting a System to Run Level 3 (Multiuser Level)</title><para>The following example displays the messages from booting a system to
run level 3.</para><screen>ok <userinput>boot</userinput>
Resetting ...

Sun Ultra 2 UPA/SBus (2 X UltraSPARC-II 296MHz), No Keyboard
OpenBoot 3.25, 512 MB memory installed, Serial #10342381.
Ethernet address 8:0:20:<replaceable>xx</replaceable>:cf:ed, Host ID: 80<replaceable>xx</replaceable>cfed.


Rebooting with command: boot
Boot device: /sbus@1f,0/SUNW,fas@e,8800000/sd@a,0:a  File and args: kadb
Loading kmdb...
SunOS Release 5.10		64-bit
Copyright 1983-2007 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms
WARNING: consconfig: cannot find driver for screen device /SUNW,ffb@1e,0
Hostname: dancehallgirl
NIS domain name is boulder.Central.Sun.COM
/dev/rdsk/c0t10d0s7 is clean
Reading ZFS config: done.

dancehallgirl console login:</screen>
</example>
</task><task id="hbsparcboot-83723" arch="sparc"><title>How to Boot a System to Run
Level S (Single-User Level)</title><tasksummary><para>Use this procedure to boot a system that is currently at run level 0
to run level S.  This run level is used for system maintenance tasks, such
as backing up a file system.</para>
</tasksummary><procedure><step id="ggppk"><para><indexterm id="ggpog"><primary>booting</primary><secondary>to run level S</secondary><tertiary>SPARC</tertiary></indexterm><indexterm id="ggpqt"><primary>run level</primary><secondary>s or S (single-user state)</secondary><tertiary>booting to</tertiary></indexterm>Boot the system to run level S.</para><screen>ok <userinput>boot -s</userinput></screen>
</step><step id="ggppr"><para>Type the superuser password when the following message
is displayed:</para><screen>SINGLE USER MODE

Root password for system maintenance (control-d to bypass): <userinput>xxxxxx</userinput></screen>
</step><step id="ggppq"><para>Verify that the system is at run level S.</para><screen># <userinput>who -r</userinput></screen>
</step><step><para>Perform the maintenance task that required the run level change
to S.</para>
</step><step id="ggpoo"><para>After you complete the system maintenance task, type
Control-D to bring the system to the multiuser state.</para>
</step>
</procedure><example arch="sparc"><title>Booting a System to Run Level S (Single-User Level)</title><para>The following example displays the messages from booting a system to
run level S.</para><screen>ok <userinput>boot -s</userinput>
Resetting ...

Sun Ultra 2 UPA/SBus (2 X UltraSPARC-II 296MHz), No Keyboard
OpenBoot 3.25, 512 MB memory installed, Serial #10342381.
Ethernet address 8:0:20:<replaceable>xx</replaceable>:cf:ed, Host ID: 80<replaceable>xx</replaceable>cfed.

Rebooting with command: boot -s
Boot device: /sbus@1f,0/SUNW,fas@e,8800000/sd@a,0:a  File and args: -s
SunOS Release 5.11
Copyright 1983-2007 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms
WARNING: consconfig: cannot find driver for screen device /SUNW,ffb@1e,0

Root password for system maintenance (control-d to bypass):
svc.startd: Returning to milestone all.
NIS domain name is boulder.Central.Sun.COM
/dev/rdsk/c0t10d0s7 is clean
Reading ZFS config: done.
dancehallgirl console login:</screen>
</example>
</task><task id="hbsparcboot-66353" arch="sparc"><title>How to Boot a System Interactively</title><tasksummary><para>Use this boot option when you need to specify an alternate kernel or <filename>/etc/system</filename> file.</para>
</tasksummary><taskprerequisites><itemizedlist><para>To specify an alternate <filename>/etc/system</filename> file when booting
a SPARC based system interactively by using the <command>boot</command> <option>a</option> command, you must perform the following steps before the system
is booted.</para><listitem><para>1. Make backup copies of the <filename>/etc/system</filename> and <filename>boot/solaris/filelist.ramdisk</filename> files.</para><screen># <userinput>cp /etc/system /etc/system.bak</userinput>
# cp <filename>/boot/solaris/filelist.ramdisk</filename> <filename>/boot/solaris/filelist.ramdisk.orig</filename></screen>
</listitem><listitem><para>2. Add the <filename>etc/system.bak</filename> file name to
the <filename>/boot/solaris/filelist.ramdisk</filename> file</para><screen># <userinput>echo "etc/system.bak" &gt;&gt; /boot/solaris/filelist.ramdisk</userinput></screen>
</listitem><listitem><para>3. Update the boot archive.</para><screen># <userinput>bootadm update-archive -v</userinput></screen>
</listitem>
</itemizedlist>
</taskprerequisites><procedure><step id="ggpms"><para><indexterm id="ggpnc"><primary>booting</primary><secondary>interactively (how to)</secondary><tertiary>SPARC</tertiary></indexterm>Boot the system interactively.</para><screen>ok <userinput>boot -a</userinput></screen>
</step><step id="ggprc"><para>Answer the following system prompts:</para><substeps><step><para>When prompted, enter the name of the kernel to use for booting.</para><para>Press enter to use the default kernel file name. Otherwise, provide
the name of an alternate kernel, press Enter.</para>
</step><step><para>When prompted, provide an alternate path for the <filename>modules</filename> directories.</para><para>Press enter to use the default module directories. Otherwise,
provide the alternate paths to module directories, press Enter.</para>
</step><step><para>When prompted, provide the name of an alternate system file.</para><para>Type <filename>/dev/null</filename> if your <filename>/etc/system</filename> file
has been damaged. </para>
</step><step><para>When prompted, enter the <literal>root</literal> filesystem type.</para><para>Press enter to select UFS for local disk booting, which is the default,
or enter <literal>NFS</literal> for network booting.</para>
</step><step><para>When prompted, enter the physical name of <literal>root</literal> device. </para><para>Provide an alternate device name or press return to use the default.</para>
</step>
</substeps>
</step><step id="ggpmz"><para>If you are not prompted to answer these questions,
verify that you typed the <command>boot</command> <option>a</option> command
correctly.</para>
</step>
</procedure><example arch="sparc"><title>Booting a System Interactively</title><para>In this example, the default choices (shown in square brackets <literal>[]</literal>)
are accepted. For instructions and an example of booting an alternate file
system by using the <command>boot</command> <option>a</option> command, see <olink targetptr="hbsparcboot-66353" remap="internal">How to Boot a System Interactively</olink>.</para><screen>ok boot -a
Resetting ...

Sun Ultra 2 UPA/SBus (2 X UltraSPARC-II 296MHz), No Keyboard
OpenBoot 3.25, 512 MB memory installed, Serial #10342381.
Ethernet address 8:0:20:9d:cf:ed, Host ID: 809dcfed.



Rebooting with command: boot -a
Boot device: /sbus@1f,0/SUNW,fas@e,8800000/sd@a,0:a  File and args: -a

Boot device: /sbus@1f,0/SUNW,fas@e,8800000/sd@a,0:a  File and args: -a
Name of system file [/etc/system]:
SunOS Release 5.11 Version zwicky:nbsclean-build:12/04/2007 64-bit
Copyright 1983-2007 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
Retire store [/etc/devices/retire_store] (/dev/null to bypass):
root filesystem type [ufs]:
Enter physical name of root device
[/sbus@1f,0/SUNW,fas@e,8800000/sd@a,0:a]:
WARNING: consconfig: cannot find driver for screen device /SUNW,ffb@1e,0
Hostname: dancehallgirl
NIS domain name is boulder.Central.Sun.COM
/dev/rdsk/c0t10d0s7 is clean
Reading ZFS config: done.
dancehallgirl login:</screen>
</example>
</task><task id="ggmuk" arch="sparc"><title>How to Boot a Solaris Kernel Other Than
the Default Kernel</title><procedure><step><para>Become superuser or assume an equivalent role.</para>
</step><step><para>Obtain a copy of an existing Solaris kernel and rename it.</para>
</step><step><para>Add the kernel that you copied and renamed in Step 2 to the <filename>/etc/boot/solaris/filelist.ramdisk</filename> file.</para><screen># <userinput>echo "kernel.<replaceable>name</replaceable>" &gt;&gt; /boot/solaris/filelist.ramdisk</userinput></screen>
</step><step><para>Verify that the alternate kernel has been added the <filename>/etc/boot/solaris/filelist.ramdisk</filename> file.</para><screen># <userinput>cat &gt; /etc/boot/solaris/filelist.ramdisk</userinput></screen>
</step><step><para>Update the boot archive by using the <command>bootadm</command> command.</para><screen># <userinput>bootadm update-archive</userinput></screen>
</step><step id="ggmwe"><para>Change to run level 0.</para><screen># <userinput>init 0</userinput></screen><para>The <literal>ok</literal> PROM prompt is displayed.</para>
</step><step><para>Boot the alternate kernel.</para><screen>ok <userinput>boot <replaceable>alternate-kernel</replaceable></userinput></screen><para>For example:</para><screen>ok <userinput>boot kernel.myname/sparcv9/unix</userinput></screen><stepalternatives><step><para>To boot the alternate kernel by default, follow these steps:</para><substeps><step><para>Set the boot-file parameter to the new kernel.</para><screen>ok <userinput>setenv boot-file kernel.<replaceable>name</replaceable>/sparc9/unix</userinput></screen>
</step><step><para>Verify that the boot-file property has been changed.</para><screen>ok <userinput>printenv boot-file</userinput></screen>
</step><step><para>Reboot the system.</para><screen>ok <userinput>boot</userinput></screen>
</step>
</substeps>
</step>
</stepalternatives>
</step><step><para>After the system has booted, verify that the alternate kernel
that was booted.</para><screen># <userinput>prtconf -vp | grep whoami</userinput></screen>
</step>
</procedure><example id="ggnbz"><title>Booting an Alternate Solaris Kernel by Changing the Default Boot File</title><screen># <userinput>cp -r /platform/sun4v/kernel /platform/sun4vu/kernel.caiobella</userinput>
# <userinput>echo "kernel.caiobela" &gt;&gt; /boot/solaris/filelist.ramdisk</userinput>

# <userinput>cat &gt; /etc/boot/solaris/filelist.ramdisk</userinput>
/platform/sun4v/kernel.caiobella
^D (control D)

ok <userinput>setenv boot-file kernel.caiobells/sparcv9/unix</userinput>
ok <userinput>printenv boot-file</userinput>
boot-file = kernel.caiobella/sparcv9/unix

ok <userinput>boot</userinput>

SC Alert: Host System has Reset

SC Alert: Host system has shut down.


Sun Fire T200, No KeyboardCopyright 2006 Sun Microsystems, Inc.  All rights reserved.
OpenBoot 4.25.0.build_01***PROTOTYPE BUILD***, 32760 MB memory available, Serial 
#69060038.
Ethernet address 0:<replaceable>x</replaceable>:4f:<replaceable>x</replaceable>:c5:c6, Host ID: 8<replaceable>xx</replaceable>c5c6.



Rebooting with command: boot
Boot device: /pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/disk@0,0:a  File and 
args: kernel.caiobella/sparcv9/unix
SunOS Release 5.10
Copyright 1983-2007 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
DEBUG enabled
misc/forthdebug (176650 bytes) loaded
Hostname: seasonz
NIS domain name is lab.domain.sun.com
Reading ZFS config: done.

seasonz console login:
Password:
Last login: Mon Nov 12 18:02:00 on console
Sun Microsystems Inc.   SunOS 5.11
.
.
.
You have new mail.
#
#
# <userinput>prtconf -vp | grep whoami</userinput>
        whoami:  '/platform/sun4v/kernel.caiobella/sparcv9/unix'</screen>
</example>
</task>
</sect1><sect1 id="ggqhf"><title>Booting From a ZFS Root File System on a SPARC Based
System</title><indexterm><primary>ZFS root file system</primary><secondary>booting from on SPARC platform</secondary>
</indexterm><indexterm><primary>booting from ZFS root file system</primary><secondary>SPARC platform</secondary>
</indexterm><indexterm><primary>boot options</primary><secondary><option>L</option></secondary><tertiary>ZFS root file system</tertiary>
</indexterm><indexterm><primary><option>L</option> boot option</primary><secondary>booting a ZFS root file system on SPARC platform</secondary>
</indexterm><indexterm><primary>boot options</primary><secondary><option>Z</option></secondary><tertiary>ZFS root file system</tertiary>
</indexterm><indexterm><primary><option>Z</option> boot option</primary><secondary>booting a ZFS root file system on SPARC platform</secondary>
</indexterm><indexterm><primary>ZFS booting on SPARC platform</primary><secondary>boot options used</secondary>
</indexterm><para>To support booting from ZFS on the Solaris SPARC platform, two new boot
options have been added:</para><variablelist><varlistentry><term><option>L</option></term><listitem><para>Displays a list of available bootable datasets within a ZFS
pool.</para><note><para>The boot <option>L</option> command is executed from the OBP, <emphasis>not</emphasis> from the command line.</para>
</note>
</listitem>
</varlistentry><varlistentry><term><option>Z</option> <replaceable>dataset</replaceable></term><listitem><para>Boots the root file system for the specified ZFS bootable
dataset.</para>
</listitem>
</varlistentry>
</variablelist><para>If you are booting a system from a ZFS root file system, first use the
boot command with the <option>L</option> option from the OBP to print a list
of the available BEs on the system. Then, use the <option>Z</option> option
to boot the specified BE.</para><para>For more information, see the <olink targetdoc="group-refman" targetptr="boot-1m" remap="external"><citerefentry><refentrytitle>boot</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> man page.</para><task id="ggqgy" arch="sparc"><title>How to List Available Bootable Datasets
Within a ZFS Root Pool</title><tasksummary><itemizedlist><para>On SPARC based systems, the <filename>menu.lst</filename> file contains
the following two GRUB commands:</para><listitem><para><literal>title</literal> &ndash; Provides a title for a boot
environment</para>
</listitem><listitem><para><literal>bootfs</literal> &ndash; Specifies the full name
of the bootable dataset</para>
</listitem>
</itemizedlist><para>To display a list of bootable datasets within a ZFS pool, choose from
the following methods:</para><itemizedlist><listitem><para>Use the <command>lustatus</command> command. This command
lists all of the BEs in a given ZFS pool.</para><para>Note that the <command>lustatus</command> command can also be used on x86 based systems.</para>
</listitem><listitem><para>Use the <command>boot</command> <option>L</option> command.
This command displays a list of available BEs in a given ZFS pool and provides
instructions for booting the system.</para>
</listitem>
</itemizedlist><para>The following procedure shows how to use the <command>boot</command> <option>L</option> command to list available BEs on a system. To boot a specified
BE after running this command, follow the instructions that are printed on
the screen.</para>
</tasksummary><procedure><step><para>Become superuser or assume an equivalent role.</para><para>Roles
contain authorizations and privileged commands. For more information about
roles, see <olink targetdoc="sysadv6" targetptr="rbactask-15" remap="external"><citetitle remap="section">Configuring RBAC (Task Map)</citetitle> in <citetitle remap="book">System Administration Guide: Security Services</citetitle></olink>.</para>
</step><step><para>Bring the system to the <literal>ok</literal> prompt.</para><screen># <userinput>init 0</userinput></screen>
</step><step><para>List the available BEs in a ZFS pool:</para><screen>ok <userinput>boot <replaceable>device-specifier</replaceable> -L</userinput></screen>
</step><step performance="optional"><para>To boot one of the entries that is displayed,
type the number of the entry. To boot the specified BE, follow the directions
that are printed to the screen.</para><para>For instructions, see <olink targetptr="ggqdk" remap="internal">How to Boot From a ZFS Root File System</olink>.</para>
</step>
</procedure><example id="ggqek" arch="sparc"><title>Displaying a List of Available BEs on a System by Using <command>boot</command> <option>L</option></title><screen># <userinput>init 0</userinput>
# svc.startd: The system is coming down. Please wait.
svc.startd: 94 system services are now being stopped.
svc.startd: The system is down.
syncing file systems... done
Program terminated
ok <userinput>boot -L</userinput>
.
.
.
Boot device: /pci@1f,0/pci@1/scsi@8/disk@0,0 File and args: -L
zfs-file-system
Loading: /platformsun4u/bootlst
1.s10s_nbu6wos
2 zfs2BE
Select environment to boot: [ 1 - 2 ]: 2

to boot the selected entry, invoke:
boot [&lt;root-device] -Z rpool/ROOT/zfs2BE</screen>
</example><taskrelated role="see-also"><para>For more information, see <olink targetdoc="group-sa" targetptr="zfsboot-1" remap="external">Chapter 4, <citetitle remap="chapter">Installing and Booting a ZFS Root File System,</citetitle> in <citetitle remap="book">Solaris ZFS Administration Guide</citetitle></olink>.</para>
</taskrelated>
</task><task id="ggqdk" arch="sparc"><title>How to Boot From a ZFS Root File System</title><tasksummary><para>Booting from ZFS differs from booting from UFS. When booting from ZFS,
a device specifier identifies a storage pool, <emphasis>not</emphasis> a single
root file system. A storage pool can contain multiple bootable datasets, or
root file systems.  Therefore, when booting from ZFS, you must also identify
a root file system within the pool that is identified by the boot device as
the default. By default, the default boot device is identified by the pool's <literal>bootfs</literal> property. This procedure shows how to boot the system by
specifying a ZFS bootable dataset. See the <olink targetdoc="group-refman" targetptr="boot-1m" remap="external"><citerefentry><refentrytitle>boot</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> man page for a complete description of
all the boot options that are available.</para><note><para>If the <literal>bootfs</literal> property was previously set up
correctly, for example, if you used the <command>luactivate</command> command
to activate a BE, the system boots a ZFS root automatically.</para>
</note><para>For more information, see <olink targetdoc="group-refman" targetptr="zpool-1m" remap="external"><citerefentry><refentrytitle>zpool</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> man page.</para>
</tasksummary><procedure><step><para>Become superuser or assume an equivalent role.</para><para>Roles
contain authorizations and privileged commands. For more information about
roles, see <olink targetdoc="sysadv6" targetptr="rbactask-15" remap="external"><citetitle remap="section">Configuring RBAC (Task Map)</citetitle> in <citetitle remap="book">System Administration Guide: Security Services</citetitle></olink>.</para>
</step><step><para>Bring the system to the <literal>ok</literal> prompt.</para><screen># <userinput>init 0</userinput></screen>
</step><step performance="optional"><para>To display a list of available BEs, use
the <command>boot</command> command with the <option>L</option> option.</para><para>For instructions, see <olink targetptr="ggqgy" remap="internal">How to List Available
Bootable Datasets Within a ZFS Root Pool</olink>.</para>
</step><step><para>To boot a specified entry, type the number of the entry and press
Return:</para><screen>Select environment to boot: [1 - 2]:</screen>
</step><step><para>To boot the system, follow the instructions that are printed to
the screen:</para><programlisting>To boot the selected entry, invoke:
boot [&lt;root-device&gt;] -Z rpool/ROOT/<replaceable>dataset</replaceable></programlisting><screen>ok <userinput>boot -Z rpool/ROOT/<replaceable>dataset</replaceable></userinput></screen><para>For example:</para><screen># <userinput>boot -Z rpool/ROOT/zfs2BE</userinput></screen>
</step><step><para>After the system has booted, type the following command to verify
the active BE:</para><screen># <userinput>prtconf -vp | grep whoami</userinput></screen><stepalternatives><step><para>To display the boot path for the active BE, type:</para><screen># <userinput>prtconf -vp | grep bootpath</userinput></screen>
</step><step><para>Alternately, you can type the following command to determine whether
the corrected BE was booted:</para><screen># <userinput>df -lk</userinput></screen>
</step>
</stepalternatives>
</step>
</procedure><example id="ggqhh" arch="sparc"><title>Booting From a ZFS Root File System</title><para>This example shows how to use the <command>boot</command> <option>Z</option> command
to boot a ZFS dataset on a SPARC based system.</para><screen># <userinput>init 0</userinput>
# svc.startd: The system is coming down. Please wait.
svc.startd: 79 system services are now being stopped.
svc.startd: The system is down.
syncing file systems... done
Program terminated
ok <userinput>boot -Z rpool/ROOT/zfs2BEe</userinput>
Resetting
LOM event: =44d+21h38m12s host reset
g ...

rProcessor Speed = 648 MHz
Baud rate is 9600
8 Data bits, 1 stop bits, no parity (configured from lom)

Firmware CORE Sun Microsystems, Inc.
@(#) core 1.0.12 2002/01/08 13:00
software Power ON
Verifying nVRAM...Done
Bootmode is 0
[New I2C DIMM address]
.
.
.
Environment monitoring: disabled
Executng last command: boot -Z rpool/ROOT/zfs2BE
Boot device: /pci@1f,0/pci@1/scsi@8/disk@0,0 File and args: -Z rpool/ROOT/zfs2Be
zfs-file-system
Loading: /platform/SUNW,UltraAX-i2/boot_archive
Loading: /platform/sun4u/boot_archive
ramdisk-root hsfs-file-system
Loading: /platform/SUNW,UltraAX-i2/kernel/sparcv9/unix
Loading: /platform/sun4u/kernel/sparcv9/unix
.
.
.
Hostname: mallory
NIS domainname is boulder.Central.Sun.COM
Reading ZFS config: done.
Mounting ZFS filesytems: (6/6)

mallory console login:</screen>
</example><taskrelated role="see-also"><para>For information about booting the failsafe archive for a specified ZFS
bootable dataset, see <olink targetptr="ggqgc" remap="internal">How to Boot the Failsafe Archive
on a SPARC Based System</olink>.</para>
</taskrelated>
</task>
</sect1><sect1 id="ggqqq"><title>Booting the Failsafe Archive on a SPARC Based System</title><para>Booting a system from a root (<filename>/</filename>) file system image
that is a boot archive, and then remounting this file system on the actual
root device can sometimes result in a boot archive and root file system that
do not match, or are <emphasis>inconsistent</emphasis>.  Under these conditions,
the proper operation and integrity of the system is compromised.  After the
root (<filename>/</filename>) file system is mounted, and before relinquishing
the in-memory file system, the system performs a consistency verification
against the two files systems. If an inconsistency is detected, the normal
boot sequence is suspended and the system reverts to <emphasis>failsafe mode</emphasis>.</para><para>Also, if a system failure, a power failure, or a kernel panic occurs
immediately following a kernel file update, the boot archives and the root
(<filename>/</filename>) file system might not be synchronized. Although the
system might still boot with the inconsistent boot archives, it is recommended
that you boot the failsafe archive to update the boot archives. You can also
use the <command>bootadm</command> command to manually update the boot archives.
For more information, see <olink targetptr="gglaj" remap="internal">Using the bootadm Command
to Manage the Boot Archives</olink>.</para><para>The failsafe archive can be booted for recovery purposes or to update
the boot archive on both the SPARC and x86 platforms.</para><para>On the SPARC platform the failsafe archive is:</para><para><filename>/platform/`uname -m`/failsafe</filename></para><para>You would boot the failsafe archive by using the following syntax:</para><screen><userinput>ok boot  -F failsafe</userinput></screen><para>Failsafe booting is also supported on systems that are booted from ZFS.
When booting from a ZFS-rooted BE, each BE has its own failsafe archive. 
The failsafe archive is located where the root (<filename>/</filename>) file
system is located, as is the case with a UFS-rooted BE.  The default failsafe
archive is the archive that is in the default bootable file system. The default
bootable file system (dataset) is indicated by the value of the pool's <literal>bootfs</literal> property.</para><para>For information about booting an x86 based failsafe archive, see <olink targetptr="ggqdn" remap="internal">Booting the Failsafe Archive on an x86 Based System</olink>.</para><para>Another method that can be used to update the boot archives is to clear
the boot-archive service. However, the preferred methods for updating the
boot archives are to boot the failsafe archive or use the <command>bootadm</command> command.
For more information, see <olink targetptr="gglbw" remap="internal">How to Update an Inconsistent
Boot Archive by Clearing the boot-archive Service</olink>.</para><task id="ggqgc"><title>How to Boot the Failsafe Archive on a SPARC Based
System</title><indexterm><primary>booting the failsafe archive</primary><secondary>SPARC based systems</secondary>
</indexterm><indexterm><primary>failsafe archive</primary><secondary>booting on SPARC based systems</secondary>
</indexterm><tasksummary><para>Use this procedure to boot the failsafe archive on a SPARC based system.
If the system does not boot after the boot archive is updated, you might need
to boot the system in single-user mode. For more information, see <olink targetptr="hbsparcboot-83723" remap="internal">How to Boot a System to Run Level S (Single-User
Level)</olink>.</para><note><para>This procedures also includes instructions for booting the failsafe
archive for a specific ZFS dataset.</para>
</note>
</tasksummary><procedure><step><para>Become superuser or assume an equivalent role.</para><para>Roles
contain authorizations and privileged commands. For more information about
roles, see <olink targetdoc="sysadv6" targetptr="rbactask-15" remap="external"><citetitle remap="section">Configuring RBAC (Task Map)</citetitle> in <citetitle remap="book">System Administration Guide: Security Services</citetitle></olink>.</para>
</step><step><para>Bring the system to the <literal>ok</literal> prompt:</para><screen># <userinput>init 0</userinput></screen>
</step><step><para>Boot the failsafe archive.</para><stepalternatives><step><para>To boot the default failsafe archive, type:</para><screen>ok <userinput>boot -F failsafe</userinput></screen>
</step><step><para>To boot the failsafe archive of a specific ZFS dataset:</para><screen>ok <userinput>boot -F failsafe -Z <replaceable>dataset</replaceable></userinput></screen><para>For example:</para><screen>ok  <userinput>boot -F failsafe -Z rpool/ROOT/zfsBE2</userinput></screen><note><para>To determine the name of the dataset to boot, first use the <command>boot</command> <option>L</option> command to display a list of the available
BEs on the system. For more information, see <olink targetptr="ggqgy" remap="internal">How
to List Available Bootable Datasets Within a ZFS Root Pool</olink>.</para>
</note>
</step>
</stepalternatives><para>If an inconsistent boot archive is detected a message is displayed.</para>
</step><step><para>To update the boot archive, type <command>y</command> and press
Return.</para><screen>An out of sync boot archive was detected on rpool.
The boot archive is a cache of files used during boot
and should be kept in sync to ensure proper system operation.

Do you wish to automatically update this boot archive? [y,n,?] <userinput>y</userinput></screen><para>If the archive was updated successfully, a message is displayed:</para><screen>The boot archive on rpool was updated successfully.</screen>
</step>
</procedure><example id="ggqch" arch="sparc"><title>Booting the Failsafe Archive</title><para>This example shows how to boot the failsafe archive on a SPARC based
system. If no device is specified, the failsafe archive for the default boot
device is booted.</para><screen>ok <userinput>boot -F failsafe</userinput>
Resetting ...
screen not found.
Can't open input device. Keyboard not present.  Using ttya for input and output.

Sun Enterprise 220R (2 X UltraSPARC-II 450MHz), No Keyboard
OpenBoot 3.23, 1024 MB memory installed, Serial #13116682.
Ethernet address 8:0:20:c8:25:a, Host ID: 80c8250a.

Rebooting with command: boot -F failsafe
Boot device: /pci@1f,4000/scsi@3/disk@1,0:a  File and args: -F failsafe
SunOS Release 5.10t
Copyright 1983-2007 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
Configuring /dev Searching for installed OS instances...

An out of sync boot archive was detected on /dev/dsk/c0t1d0s0.
The boot archive is a cache of files used during boot and
should be kept in syncto ensure proper system operation.

Do you wish to automatically update this boot archive? [y,n,?] <userinput>y</userinput> 
Updating boot archive on /dev/dsk/c0t1d0s0.
The boot archive on /dev/dsk/c0t1d0s0 was updated successfully.

Solaris 5.10 was found on /dev/dsk/c0t1d0s0.
Do you wish to have it mounted read-write on /a? [y,n,?] <userinput>n</userinput>
Starting shell.
#</screen>
</example><example id="ggvjn" arch="sparc"><title>Booting the Failsafe Archive for a Specified ZFS Dataset</title><para>This example shows how to boot the failsafe archive of a ZFS dataset.
Note that the <command>boot</command> <option>L</option> command is first
used to display a list of available boot environments. This
command must be run at the <literal>ok</literal> prompt.</para><screen>ok <userinput>boot -L</userinput>
Rebooting with command: boot -L                                       
Boot device: /pci@1f,4000/scsi@3/disk@1,0  File and args: -L
1 zfsBE2
Select environment to boot: [ 1 - 1 ]: <userinput>1</userinput>

To boot the selected entry, invoke:
boot [&lt;root-device&gt;] -Z rpool/ROOT/zfsBE2

Program terminated
{0} ok 





Resetting ... 

screen not found.
Can't open input device.
Keyboard not present.  Using ttya for input and output.

Sun Enterprise 220R (2 X UltraSPARC-II 450MHz), No Keyboard
OpenBoot 3.23, 1024 MB memory installed, Serial #13116682.
Ethernet address 8:0:20:c8:25:a, Host ID: 80c8250a.



                                                                      
{0} ok  <userinput>boot -F failsafe -Z rpool/ROOT/zfsBE2</userinput>
Boot device: /pci@1f,4000/scsi@3/disk@1,0  File and args: -F failsafe -Z 
rpool/ROOT/zfsBE2
SunOS Release 5.10
Copyright 1983-2008 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
Configuring /dev
Searching for installed OS instances...

ROOT/zfsBE2 was found on rpool.
Do you wish to have it mounted read-write on /a? [y,n,?] <userinput>y</userinput>
mounting rpool on /a

Starting shell.
# 
# 
# 
# <userinput>zpool list</userinput>
NAME    SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
rpool  16.8G  6.26G  10.5G    37%  ONLINE  /a
# 
# <userinput>zpool status</userinput>
  pool: rpool
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        rpool       ONLINE       0     0     0
          c0t1d0s0  ONLINE       0     0     0

errors: No known data errors
# 
# df -h
Filesystem             size   used  avail capacity  Mounted on
/ramdisk-root:a        163M   153M     0K   100%    /
/devices                 0K     0K     0K     0%    /devices
/dev                     0K     0K     0K     0%    /dev
ctfs                     0K     0K     0K     0%    /system/contract
proc                     0K     0K     0K     0%    /proc
mnttab                   0K     0K     0K     0%    /etc/mnttab
swap                   601M   344K   601M     1%    /etc/svc/volatile
objfs                    0K     0K     0K     0%    /system/object
sharefs                  0K     0K     0K     0%    /etc/dfs/sharetab
swap                   602M   1.4M   601M     1%    /tmp
/tmp/root/etc          602M   1.4M   601M     1%    /.tmp_proto/root/etc
fd                       0K     0K     0K     0%    /dev/fd
rpool/ROOT/zfsBE2       16G   5.7G   9.8G    37%    /a
rpool/export            16G    20K   9.8G     1%    /a/export
rpool/export/home       16G    18K   9.8G     1%    /a/export/home
rpool                   16G    63K   9.8G     1%    /a/rpool</screen>
</example>
</task>
</sect1><sect1 id="hbsparcboot-60"><title>Booting a SPARC Based System From the Network</title><itemizedlist><para>You might need to boot a system from the network under the following
conditions:</para><listitem><para>When the system is first installed</para>
</listitem><listitem><para>If the system won't boot from the local disk</para>
</listitem><listitem><para>If the system is a diskless client</para>
</listitem>
</itemizedlist><itemizedlist><para>Two network configuration boot strategies are available:</para><listitem><para>Reverse Address Resolution Protocol (RARP) and <trademark>ONC+</trademark> RPC
Bootparams Protocol </para>
</listitem><listitem><para>Dynamic Host Configuration Protocol (DHCP)</para>
</listitem><listitem><para>For network devices, the process for booting over a local
area network (LAN) and booting over a wide area network (WAN) is slightly
different. In both network boot scenarios, the PROM downloads the booter from
a boot server or an installation server, which is <command>inetboot</command> in
this case.</para><para>When booting over a (LAN), the firmware uses RARP and
BOOTP or DHCP to discover the boot or installation server.  TFTP is then used
to download the booter, which is <command>inetboot</command> in this case.</para><para>When booting over a WAN, the firmware uses either DHCP or NVRAM properties
to discover the installation server, the router, and the proxies that are
required for the system to boot from the network.  The protocol that is used
to download the booter is HTTP. In addition, the booter's signature might
be checked with a predefined private key.</para>
</listitem>
</itemizedlist><task id="ggpmg" arch="sparc"><title>How to Boot a System From the Network</title><tasksummary><para>Any system can boot from the network if a boot server is available.
You might want to boot a stand-alone system from the network if the system
cannot boot from the local disk. For information on changing or resetting
the default boot device, see <olink targetptr="hbsparcboot-61766" remap="internal">How to Change
the Default Boot Device by Using the Boot PROM</olink>.</para><itemizedlist><para>Two network configuration boot strategies are available on sun&ndash;4u
systems:</para><listitem><para>RARP &ndash; Reverse Address Resolution Protocol and ONC+
RPC Bootparams Protocol</para>
</listitem><listitem><para>DHCP &ndash; Dynamic Host Configuration Protocol</para>
</listitem>
</itemizedlist><para>The default network boot strategy is set to RARP. You can use either
protocol, depending on whether a RARP boot server or a DHCP boot server is
available on your network.</para><note><para>Sun Ultra systems must have at least PROM version 3.25.<replaceable>nn</replaceable> to use the DHCP network boot strategy. For information on determining
your PROM version, see <olink targetptr="hbsparcboot-68368" remap="internal">How to Find the
PROM Revision Number for a System</olink>.</para>
</note><para>If both protocols are available, you can temporarily specify which protocol
to use in the <command>boot</command> command. Or, you can save the network
boot strategy across system reboots at the PROM level by setting up an NVRAM
alias. The following example uses the <command>nvalias</command> command to
set up a network device alias for booting DHCP by default on a Sun Ultra 10
system.</para><screen>ok <userinput>nvalias net	/pci@1f,4000/network@1,1:dhcp</userinput></screen><para>As a result, when you type <command>boot net</command>, the system boots
by using the DHCP network book strategy.</para><note><para>You should not use the <command>nvalias</command> command to modify
the <filename>NVRAMRC</filename> file, unless you are very familiar with the
syntax of this command and the <command>nvunalias</command> command. For information
on using these commands, see the <citetitle>OpenBoot 3.x Command Reference
Manual</citetitle>.</para>
</note>
</tasksummary><taskprerequisites><para>You must have already set up a RARP or DHCP boot server in your network
to use either protocol to boot successfully.</para>
</taskprerequisites><procedure><step><para>If necessary, shut down the system.</para>
</step><step id="ggpor"><para>Determine the method for booting from the network,
and select one of the following:</para><substeps><step><para>Boot the system from the network by using the DHCP strategy.</para><screen>ok <userinput>boot net</userinput>[<userinput>:dhcp</userinput>]</screen><para>If you have changed the PROM setting to boot DHCP by default, as in
the preceding <command>nvalias</command> example, you only have to specify <command>boot net</command>.</para>
</step><step id="ggpnf"><para>Boot the system from the network by using the RARP
strategy.</para><screen>ok <userinput>boot net</userinput>[<userinput>:rarp</userinput>]</screen><para>Because RARP is the default network boot strategy, you only have to
specify <command>boot net:rarp</command> if you have changed the PROM value
to boot DHCP.</para>
</step>
</substeps>
</step>
</procedure>
</task>
</sect1><sect1 id="hbx86boot-68676"><title>Booting an x86 Based System by Using GRUB
(Task Map)</title><informaltable frame="all" pgwide="1"><tgroup cols="3" colsep="0" rowsep="0"><colspec colname="column1" colwidth="105.73*"/><colspec colname="column2" colwidth="162.35*"/><colspec colname="column3" colwidth="127.92*"/><thead><row rowsep="1"><entry colsep="1" rowsep="1"><para>Task</para>
</entry><entry colsep="1" rowsep="1"><para>Description</para>
</entry><entry colsep="1" rowsep="1"><para>For Instructions</para>
</entry>
</row>
</thead><tbody><row><entry colsep="1" rowsep="1"><para>Boot an x86 based system to run level 3, multiuser level.</para>
</entry><entry colsep="1" rowsep="1"><para>Use this boot method to bring the system back to multiuser level after
shutting down the system or performing a system hardware maintenance task.</para>
</entry><entry colsep="1" rowsep="1"><para><olink targetptr="fvzun" remap="internal">How to Boot a System to Run Level 3 (Multiuser)</olink></para>
</entry>
</row><row><entry colsep="1" rowsep="1"><para>Boot an x86 based system the in single-user mode.</para>
</entry><entry colsep="1" rowsep="1"><para>Use this boot method to perform a system maintenance task, such as backing
up a file system.</para>
</entry><entry colsep="1" rowsep="1"><para><olink targetptr="fvzqr" remap="internal">How to Boot a System to Run Level S (Single-User
Level)</olink></para>
</entry>
</row><row><entry colsep="1" rowsep="1"><para>Boot an x86 based system interactively.</para>
</entry><entry colsep="1" rowsep="1"><para>Use this boot method after making temporary changes to a system file
or the kernel for testing purposes.</para>
</entry><entry colsep="1" rowsep="1"><para><olink targetptr="fvzmg" remap="internal">How to Boot a System Interactively</olink></para>
</entry>
</row><row><?PubTbl row rht="1.96in"?><entry colsep="1" rowsep="1"><para>Display a list a ZFS bootable datasets on an x86 based system.</para>
</entry><entry colsep="1" rowsep="1"><itemizedlist><para>Use one of the following methods to display the available BEs on an
x86 based system that has a ZFS root file system:</para><listitem><para><command>lustatus</command></para>
</listitem><listitem><para><command>bootadm list-menu</command></para>
</listitem>
</itemizedlist>
</entry><entry colsep="1" rowsep="1"><para><olink targetptr="ggvjb" remap="internal">How to Display a List of the Available ZFS
Boot Environments on an x86 Based System</olink></para>
</entry>
</row><row><?PubTbl row rht="1.96in"?><entry colsep="1" rowsep="1"><para>Boot an x86 based system from a ZFS root file system.</para>
</entry><entry colsep="1" rowsep="1"><para>If you install or upgrade your system to a Solaris release that supports
a ZFS boot loader, the GRUB menu entry for the default ZFS BE contains the <command>-B $ZFS-BOOTFS</command> boot argument by default. The system boots automatically
from ZFS.</para><note><para>This option is supported <emphasis>only</emphasis> for boot devices
that contain a ZFS pool.</para>
</note>
</entry><entry colsep="1" rowsep="1"><para><olink targetptr="ggqgk" remap="internal">How to Boot From a ZFS Root File System on
an x86 Based System</olink></para>
</entry>
</row><row><?PubTbl row rht="1.96in"?><entry colsep="1" rowsep="1"><para>Boot the failsafe archive on an x86 based system.</para>
</entry><entry colsep="1" rowsep="1"><para>Use this procedure to boot the failsafe archive on an x86 based system.
Then, run the <command>bootadm</command> command to update the boot archive.</para>
</entry><entry colsep="1" rowsep="1"><para><olink targetptr="fvznb" remap="internal">How to Boot the Failsafe Archive on an x86
Based System by Using GRUB</olink></para>
</entry>
</row><row><?PubTbl row rht="1.80in"?><entry colsep="1" rowsep="1"><para>Boot an x86 based failsafe archive to forcibly update a corrupt boot
archive.</para>
</entry><entry colsep="1" rowsep="1"><para>Use this procedure in cases where the boot archive is corrupt, and the
system refuses to boot normally, or you are not prompted to update an inconsistent
boot archive.</para>
</entry><entry colsep="1" rowsep="1"><para><olink targetptr="gcbcn" remap="internal">How to Boot the Failsafe Archive to Forcibly
Update a Corrupt Boot Archive</olink></para>
</entry>
</row><row><entry colsep="1" rowsep="1"><para>Boot an x86 based system from the network by using GRUB.</para>
</entry><entry colsep="1" rowsep="1"><para>Use this method to boot a PXE or non-PXE device from the network with
the default network configuration strategy. This method is also used for booting
a diskless client.</para>
</entry><entry colsep="1" rowsep="1"><para><olink targetptr="fvzpk" remap="internal">How to Perform a GRUB Based Boot From the Network</olink></para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable><sect2 id="ggpts" arch="x86"><title>Error Messages
Upon System Boot</title><para>The Solaris installation software and utilities, including the <command>bootadm</command> command, use the presence of the <filename>/boot/multiboot</filename> and <filename>/platform/i86pc/multiboot</filename> files to determine if the system's running
OS or the Solaris installation software implements the GRUB boot method or
the Solaris Device Configuration Assistant boot method.</para><para>If the multiboot module from the previous GRUB implementation is loaded
by GRUB, the console displays an error message that says multiboot is no longer
support and to manually update the entries in the <filename>menu.lst</filename> file
to successfully boot the system.  For more information, see <ulink url="http://www.sun.com/msg/SUNOS-8000-AK" type="url"></ulink> and the <olink targetdoc="group-refman" targetptr="boot-1m" remap="external"><citerefentry><refentrytitle>boot</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> man page.</para><para>For instructions on booting a system interactively modifying the GRUB
kernel line at boot time, see <olink targetptr="fwbme" remap="internal">How to Modify Boot
Behavior by Editing the GRUB Menu at Boot Time</olink>.  For instructions
on modifying the <filename>menu.lst</filename> file permanently after the
system has booted, see <olink targetptr="fvbbb" remap="internal">How to Modify Boot Behavior
by Editing the menu.lst File</olink>.</para>
</sect2><task id="fvzun" arch="x86"><title>How to Boot a System to Run Level 3 (Multiuser)</title><tasksummary><para>Use this procedure to boot a system that is currently at run level 0
to run level 3.</para>
</tasksummary><procedure><step id="ggptf"><para>Reboot the system.</para><screen># <userinput>reboot</userinput></screen><para>If the system displays the <literal>Press any key to reboot</literal> prompt,
press any key to reboot the system.</para><para>You can also use the Reset button at this prompt. If the system is shut
down, turn the system on with the power switch.</para><para>When the boot sequence begins, the GRUB menu is displayed.</para>
</step><step id="ggprp"><para><indexterm id="ggpsq"><primary>run level</primary><secondary>3 (multiuser with NFS)</secondary><tertiary>booting to</tertiary></indexterm>When the GRUB menu is displayed, press Enter to boot the default
OS instance.</para><para>If you do not choose an entry within 10 seconds,
the system automatically boots to run level 3.</para><para>The login prompt is displayed when the boot process has finished successfully.</para>
</step><step><para>Log in to the system.</para><screen><replaceable>hostname</replaceable> console login:</screen>
</step><step id="ggpsp"><para>Verify that the system booted to run level 3.</para><screen># <userinput>who -r</userinput>
system% who -r
   .       run-level 3  Mar  2 09:44     3      0  S</screen>
</step>
</procedure><example id="ghbbm" arch="x86"><title>Booting a System To Run Level 3 (Multiuser Level)</title><screen># <userinput>reboot</userinput>

Jul 24 11:29:52 bearskin reboot: rebooted by root
syncing file systems... done
rebooting...

Adaptec AIC-7899 SCSI BIOS v2.57S4
(c) 2000 Adaptec, Inc. All Rights Reserved.

 Press &lt;Ctrl&gt;&lt;A&gt; for SCSISelect(TM) Utility! 

Ch B,  SCSI ID: 0 SEAGATE  ST336607LSUN36G   160

GNU GRUB  version 0.95  (637K lower / 2096064K upper memory)
==============================================================
Solaris 10 10/08 s10x_u6wos_03 X86
Solaris failsafe

==============================================================
		Use the  and  keys to select which entry is highlighted.
		Press enter to boot the selected OS, 'e' to edit the
		commands before booting, or 'c' for a command-line.


SunOS Release 5.10 Version Generic_137138-04 32-bit
Copyright 1983-2008 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
Hostname: pups
NIS domain name is ....sfbay.sun.com
Reading ZFS config: done.
Mounting ZFS filesystems: (5/5)

pups console login:

# <userinput>who -r</userinput>
   .       run-level 3  Jul 24 11:31     3      0  S</screen>
</example>
</task><task id="fvzqr" arch="x86"><title>How to Boot a System to Run Level S (Single-User
Level)</title><indexterm><primary>GRUB based booting</primary><secondary>how to boot a system run level S</secondary>
</indexterm><indexterm><primary>how to use GRUB to boot a system to run level s</primary>
</indexterm><indexterm><primary>booting a system to run level S</primary><secondary>GRUB based booting</secondary><tertiary>how to</tertiary>
</indexterm><tasksummary><para>Use this procedure to boot a system that is at run level 0 to run level
S. The single-user level is used for performing system maintenance.</para><note><para>This procedure can be used for all GRUB implementations. However,
the boot entries in the GRUB main menu vary, depending on the Solaris release
you are running. </para>
</note><para>For a description of all the kernel options that you can specify in
the GRUB menu at boot time, see <olink targetptr="fwbqs" remap="internal">Modifying Boot Behavior
by Editing the GRUB Menu at Boot Time</olink>.</para>
</tasksummary><procedure><step id="ggpso"><para>Reboot the system.</para><screen># <userinput>reboot</userinput></screen><para>If the system displays the <literal>Press any key to reboot</literal> prompt,
press any key to reboot the system.</para><para>You can also use the Reset button at this prompt. If the system is shut
down, turn the system on with the power switch.</para><para>When the boot sequence begins, the GRUB menu is displayed.</para>
</step><step id="ggprm"><para>When the GRUB main menu is displayed, type <command>e</command> to edit the GRUB menu.</para>
</step><step><para>Depending
on the release you are running, use the arrow keys to choose
the <filename>kernel</filename> or <filename>kernel$</filename> line.</para><para>If you cannot use the arrow keys, use the caret key (<literal>^</literal>)
key to scroll up and the letter <literal>v</literal> key to scroll down.</para>
</step><step><para>Type <command>e</command> again to edit the boot entry.</para><para>From
here, you can add options and arguments to the <command>kernel</command> or <command>kernel$</command> line.</para>
</step><step><para>To boot the system in single-user mode, type <option>s</option> at
the end of the boot entry line. Then, press Return to go back to the previous
screen.</para><stepalternatives><step><para>To specify other boot behaviors, replace the <option>s</option> option
with the appropriate boot option.</para><itemizedlist><para>The following alternate boot behaviors can be specified in this manner.</para><listitem><para>Perform a reconfiguration boot.</para>
</listitem><listitem><para>Boot a 64-bit capable system in 32-bit mode.</para>
</listitem><listitem><para>Boot the system with the kernel debugger.</para>
</listitem><listitem><para>Redirect the console.</para>
</listitem>
</itemizedlist><para>For more information, see the <olink targetdoc="group-refman" targetptr="boot-1m" remap="external"><citerefentry><refentrytitle>boot</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink>man page.</para>
</step>
</stepalternatives>
</step><step><para>To boot the system in single-user mode, type <command>b</command>.</para>
</step><step id="ggprn"><para>When prompted, type the root password.</para><note><para>If you are running
the OpenSolaris 2008.11 release, you need to also enter an account name <emphasis>before</emphasis> entering the root password. The account name can be root
or any other privileged account, such as &ldquo;jack&rdquo; on the Live CD,
or an account that you created during the installation.</para>
</note>
</step><step id="ggptx"><para>Verify that the system is at run level S.</para><screen># <userinput>who -r</userinput>
.       run-level S  Jun 13 11:07     S      0  0</screen>
</step><step id="ggptd"><para>Perform the system maintenance task that required the
run level change to S.</para>
</step><step id="ggprt"><para>After you complete the system maintenance task, reboot
the system.</para>
</step>
</procedure><example id="ggydx" arch="x86"><title>Booting a System in Single-User Mode</title><screen># <userinput>reboot</userinput>
Jul  2 14:30:01 pups reboot: initiated by root on /dev/console
syncing files...

Press &lt;Ctrl&gt;&lt;A&gt; forPSCSISelect(TM) Utility!


GNU GRUB  version 0.95  (637K lower / 2096064K upper memory)

===================================================
Solaris 10 10/08 s10x_u6wos_03 X86 
Solaris failsafe

=====================================================
		Use the  and  keys to select which entry is highlighted.
		Press enter to boot the selected OS, 'e' to edit the
		commands before booting, or 'c' for a command-line.
=====================================================

GNU GRUB  version 0.95  (637K lower / 2096064K upper memory)

=====================================================
findroot (pool_rpool,0,a)
kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS 
module /platform/i86pc/boot_archive
================================================
		Use the  and  keys to select which entry is highlighted.
		Press 'b' to boot, 'e' to edit the selected command in the
		boot sequence, 'c' for a command-line, 'o' to open a new line
		after ('O' for before) the selected line, 'd' to remove the
		selected line, or escape to go back to the main menu.

[ Minimal BASH-like line editing is supported.  For the first word, TAB
lists possible command completions.  Anywhere else TAB lists the possible
completions of a device/filename.  ESC at any time exits. ]

grub edit&gt; kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS <userinput>-s</userinput>

 GNU GRUB  version 0.95  (637K lower / 2096064K upper memory)

=======================================================
findroot (pool_rpool,0,a)
kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS -s 
module /platform/i86pc/boot_archive
======================================
		Use the  and  keys to select which entry is highlighted.
		Press 'b' to boot, 'e' to edit the selected command in the
 	boot sequence, 'c' for a command-line, 'o' to open a new line
		after ('O' for before) the selected line, 'd' to remove the
   selected line, or escape to go back to the main menu.
.
.
.
SunOS Release 5.10
Copyright 1983-2008 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
Booting to milestone "milestone/single-user:default".
Hostname: pups Requesting System Maintenance Mode SINGLE USER MODE
Root password for system maintenance (control-d to bypass):
single-user privilege assigned to /dev/console.
Entering System Maintenance Mode
Jul  2 14:41:48 su: 'su root' succeeded for root on /dev/console Sun Microsystems Inc.
# <userinput>who -r</userinput>
who -r    .       run-level S  Jul  2 14:39     S      0  0 # </screen>
</example>
</task><task id="fvzmg" arch="x86"><title>How to Boot a System Interactively</title><indexterm><primary>booting an x86 based system interactively with GRUB</primary>
</indexterm><indexterm><primary>GRUB based booting</primary><secondary>booting a system interactively</secondary>
</indexterm><indexterm><primary>interactive boot</primary><secondary>booting an x86 based system with GRUB</secondary>
</indexterm><tasksummary><para>Use this procedure to boot a system if you need to specify an alternate
kernel or an alternate <filename>/etc/system</filename> file.</para>
</tasksummary><taskprerequisites><itemizedlist><para>To specify an alternate <filename>/etc/system</filename> file when booting
an x86 based system interactively by using the <command>boot</command> <option>a</option> command,
you must first perform the following steps:</para><listitem><para>1. Make backup copies of the <filename>/etc/system</filename> and
the <filename>boot/solaris/filelist.ramdisk</filename> files.</para><screen># <userinput>cp /etc/system /etc/system.bak</userinput>
# cp <filename>/boot/solaris/filelist.ramdisk</filename> <filename>/boot/solaris/filelist.ramdisk.orig</filename></screen>
</listitem><listitem><para>2. Add the <filename>/etc/system.bak</filename> file name
to the <filename>/boot/solaris/filelist.ramdisk</filename> file</para><screen># <userinput>echo "etc/system.bak" &gt;&gt; /boot/solaris/filelist.ramdisk</userinput></screen>
</listitem><listitem><para>3. Update the boot archive.</para><screen># <userinput>bootadm update-archive -v</userinput></screen>
</listitem>
</itemizedlist>
</taskprerequisites><procedure><step id="ggpuq"><para>Reboot the system.</para><screen># <userinput>reboot</userinput></screen><para>If the system displays the <literal>Press any key to reboot</literal> prompt,
press any key to reboot the system.</para><para>You can also use the Reset button at this prompt. If the system is shut
down, turn the system on with the power switch.</para><para>When the boot sequence begins, the GRUB main menu is displayed.</para>
</step><step id="ggptn"><para>To access the GRUB edit menu, type <command>e</command>.</para>
</step><step><para>Use the arrow keys to select the <command>kernel</command> or <command>kernel$</command> line.</para>
</step><step><para>Type <command>e</command> to edit the boot entry line.</para>
</step><step><para>Type <option>a</option> to boot the system interactively. Then,
press Enter to return to the GRUB main menu.</para>
</step><step><para>To boot the system interactively, type <command>b</command>.</para>
</step><step><para>Type a default directory for modules, or press Enter to accept
the default.</para><screen>Enter default directory for modules [/platform/i86pc/kernel /kernel /usr/kernel]:</screen>
</step><step><para>Type an alternate system file name, <filename><replaceable>alternate-file</replaceable></filename>.</para><screen>Name of system file [etc/system]: <userinput>/etc/system.bak</userinput></screen><para>Pressing Enter without providing an alternate file accepts the default.</para><para>Repair the damaged <filename>/etc/system</filename> file.</para>
</step><step><para>Reboot the system to run level 3.</para>
</step>
</procedure><example id="ggqku" arch="x86"><title>Booting a System Interactively</title><screen># <userinput>reboot</userinput>
syncing file systems... done
rebooting...

 
GNU GRUB  version 0.95  (637K lower / 2096064K upper memory)
===================================================
Solaris 10 10/08 s10x_u6wos_03 X86 
Solaris failsafe
=====================================================
		Use the  and  keys to select which entry is highlighted.
		Press enter to boot the selected OS, 'e' to edit the
		commands before booting, or 'c' for a command-line.
=====================================================


GNU GRUB  version 0.95  (637K lower / 2096064K upper memory)
=====================================================
findroot (pool_rpool,0,a)
kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS 
module /platform/i86pc/boot_archive
======================================================
		Use the  and  keys to select which entry is highlighted.
		Press 'b' to boot, 'e' to edit the selected command in the
		boot sequence, 'c' for a command-line, 'o' to open a new line
		after ('O' for before) the selected line, 'd' to remove the
		selected line, or escape to go back to the main menu.

[ Minimal BASH-like line editing is supported.  For the first word, TAB
lists possible command completions.  Anywhere else TAB lists the possible
completions of a device/filename.  ESC at any time exits. ]

grub edit&gt; kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS <userinput>-a</userinput>
GNU GRUB  version 0.95  (637K lower / 2096064K upper memory)

===================================================
findroot (pool_rpool,0,a)
kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS -a 
module /platform/i86pc/boot_archive
====================================================
.
.
.
Enter default directory for modules [/platform/i86pc/kernel /kernel /usr/kernel]:
Name of system file [/etc/system]:  <userinput>/etc/system.bak</userinput>
SunOS Release 5.10 Version Generic_137138-04 32-bit
Copyright 1983-2008 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
Hostname: pups
NIS domain name is ....sfbay.sun.com
Reading ZFS config: done.
Mounting ZFS filesystems: (5/5)
pups console login:</screen>
</example>
</task>
</sect1><sect1 id="ggqaa"><title>Booting From a ZFS Root File System on an x86 Based
System</title><para>To support booting a ZFS root file system on the x86 platform, a new
GRUB keyword, <literal>$ZFS-BOOTFS</literal>, has been introduced.  If a root
device contains a ZFS pool, this keyword is assigned a value, which is then passed
to the kernel by using the <option>B</option> option to identify the dataset
to boot. If you install
or upgrade your system with a Solaris release that supports a ZFS boot loader,
the GRUB <filename>menu.lst</filename> file, as well as the GRUB boot menu,
contains this information by default.</para><task id="ggvjb"><title>How to Display a List of the Available ZFS Boot Environments
on an x86 Based System</title><procedure><step><para>Become superuser or assume an equivalent role.</para>
</step><step><para>To display a list of available BEs on the system, type the following
command:</para><screen># <userinput>lustatus</userinput></screen><para>Note that the <command>lustatus</command> command can also be used on
SPARC based systems.</para><note><para>If the following error is displayed when you run the <command>lustatus</command> command, it is an indication that a new installation was performed
and that Solaris Live Upgrade was not used. Before any BEs can be acknowledged
in the <command>lustatus</command> output, a new BE must be first created
on the system.</para><screen># <userinput>lustatus</userinput>
ERROR: No boot environments are configured on this system
ERROR: cannot determine list of all boot environment names</screen>
</note><para>For more information about using Solaris Live Upgrade to migrate a UFS
root file system to a ZFS root file system, see <olink targetdoc="group-sa" targetptr="ggpdm" remap="external"><citetitle remap="section">Migrating a UFS Root File System to a ZFS Root File System (Solaris Live Upgrade)</citetitle> in <citetitle remap="book">Solaris ZFS Administration Guide</citetitle></olink>.</para>
</step>
</procedure><example id="ggvjy"><title>Displaying a List of Available ZFS Bootable Datasets by Using the <command>lustatus</command> Command</title><para>In this example, the output of the <command>lustatus</command> command
shows the status of three ZFS bootable datasets. The default boot environment
is <literal>be1</literal> and therefore cannot be deleted.</para><screen># <userinput>lustatus</userinput>
Boot Environment           Is       Active Active    Can    Copy
Name                       Complete Now    On Reboot Delete Status
-------------------------- -------- ------ --------- ------ ----------
s10s_nbu6wos               yes      no     no        yes    -
zfs2BE                     yes      yes    yes       no     -
zfsbe3                     no       no     no        yes    -
#</screen><para>If the BE has been created and is bootable, a &ldquo;yes&rdquo; appears
in the <literal>Is Complete</literal> column. If a BE has been created, but
is not yet activated, a 'no&rdquo; appears in this column. To activate a BE,
use the <command>luactivate</command> command. Run the <command>lustatus</command> command
afterwards to verify that the BE was successfully activated.</para><para>For more information see the <olink targetdoc="group-refman" targetptr="lustatus-1m" remap="external"><citerefentry><refentrytitle>lustatus</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> and the <olink targetdoc="group-refman" targetptr="luactivate-1m" remap="external"><citerefentry><refentrytitle>luactivate</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink>man pages.</para>
</example>
</task><task id="ggqgk"><title>How to Boot From a ZFS Root File System on an x86
Based System</title><indexterm><primary>modifying kernel usage in the GRUB menu</primary>
</indexterm><indexterm><primary>boot behavior</primary><secondary>how to modify in GRUB menu</secondary>
</indexterm><indexterm><primary>GRUB based booting</primary><secondary>modifying the GRUB kernel behavior at boot time</secondary>
</indexterm><tasksummary><para>This procedure describes how to boot from a ZFS root file system on
an x86 system that supports a ZFS boot loader.</para><para>Note that if you install or upgrade your system to a Solaris release
that supports a ZFS boot loader, the GRUB menu entry contains the <command>-B
$ZFS-BOOTFS</command> boot argument by default, so the system boots from ZFS
without requiring any additional boot arguments.</para>
</tasksummary><procedure><step id="ggqdq"><para>Reboot the system.</para><screen># <userinput>reboot</userinput></screen><para>If the system displays the <literal>Press any key to reboot</literal> prompt,
press any key to reboot the system.</para><para>You can also use the Reset button at this prompt. If the system is shut
down, turn the system on with the power switch.</para><para>When the boot sequence begins, the GRUB main menu is displayed. If the
default boot entry is a ZFS file system menu is similar to the following:</para><screen>GNU GRUB  version 0.95  (637K lower / 3144640K upper memory)
 +----------------------------------------------------------------+
| be1
| be1 failsafe
| be3
| be3 failsafe
| be2
| be2 failfafe
  +---------------------------------------------------------------+
      Use the ^ and v keys to select which entry is highlighted.
      Press enter to boot the selected OS, 'e' to edit the
      commands before booting, or 'c' for a command-line.</screen>
</step><step><para>When the GRUB menu is displayed, press Enter to boot the default
OS instance.</para><para>If you do not choose an entry within 10 seconds,
the system automatically boots to run level 3.</para>
</step><step><para>To boot another BE, use the arrow keys to highlight the specified
boot entry.</para>
</step><step><para>Type <command>b</command> to boot this entry or <command>e</command> to
edit the entry.</para><para>If you type <command>e</command> to edit the entry,
the default menu for booting a system with a ZFS root would appear as follows:</para><screen>findroot (BE_be10,0,a)
kernel$ /platform/i86pc/kernel/$ISADIR/unix -B $ZFS-BOOTFS
module$ /platform/i86pc/$ISADIR/boot-archive</screen><para>For more information about GRUB menu entries at boot time, see<olink targetptr="fwbme" remap="internal">How to Modify Boot Behavior by Editing the GRUB Menu at
Boot Time</olink>.</para>
</step>
</procedure><example id="ggyac" arch="x86"><title>Activating a New Boot
Environment on an x86 Based System</title><para>This example shows the steps that are followed to activate a boot environment, <literal>be10</literal>, on a system. Note that the l<command>ustatus</command> command
is run first, to determine which BEs on the system are active and which BEs
require activation.</para><screen># <userinput>lustatus</userinput>
Boot Environment           Is       Active Active    Can    Copy
Name                      Complete Now    On Reboot Delete Status
-----------------------------------------------------------------
be1                        yes      yes    yes       no     
be10                       yes      no     no        yes



# <userinput>luactivate be10</userinput>
System has findroot enabled GRUB Generating boot-sign, partition and slice
information for PBE &lt;be1&gt;
WARNING: The following file s have change on both the current boot environment
&lt;be1&gt; zone &lt;global&gt; and the boot environment to be activitate &lt;be10&gt;
		/etc/zfs/zpool.cache
INFORMATION: The files listed above are in conflict between the current
boot environment &lt;be1&gt; zone &lt;global&gt; and the boot environment to be
activated &lt;be10&gt;. These files will not be automatically synchronized from
the current boot environment &lt;be1&gt; when boot environment &lt;be10&gt; is activated.

Setting failsafe console to &lt;ttyb&gt;
Generating boot-sign for ABE &lt;be10&gt;
Generating partition and slice information for ABE &lt;be10&gt;
Copied boot menu from top level dataset.
Generating direct boot menu entries for PBE.
Generating direct boot menu entries for ABE.
Disabling splashimage
Current GRUB menu default setting is not valid
title Solaris bootenv rc
No more bootadm entries. Deletion of bootadm entries is complete.
GRUB menu default setting is unchanged
Done eliding bootadm entries.
**************************************************************
The target boot environment has been activated. It will be used when you
reboot. NOTE: You MUST NOT USE the reboot, halt, or uadmin commands. You
MUST USE either the init or the shutdown command when you reboot. If you
do not use either init or shutdown, the system will not boot using the
target BE.
***************************************************************
,,,


# <userinput>reboot</userinput>
May 30 09:52:32 pups reboot: initiated by root on /dev/console
syncing file systems... done
rebooting...

CE SDRAM BIOS P/N GR-xlint.007-4.330
*

BIOS Lan-Console 2.0
Copyright (C) 1999-2001 Intel Corporation
.
.
.
GNU GRUB  version 0.95  (637K lower / 3144640K upper memory)
 +-------------------------------------------------------------------+
| be1
| be1 failsafe
| be10
| be10 failsafe
+------------------------------------------------------------------+
      Use the ^ and v keys to select which entry is highlighted.
      Press enter to boot the selected OS, 'e' to edit the
      commands before booting, or 'c' for a command-line.

SunOS Release 5.10 32-bit
Copyright 1983-2008 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.

Hostname: pups
NIS domain name is sunsoft.eng.sun.com
Reading ZFS config: done.
Mounting ZFS filesystems: (8/8)

pups console login:
# <userinput>lustatus</userinput>
Boot Environment           Is       Active Active    Can    Copy
Name                      Complete Now    On Reboot Delete Status
-----------------------------------------------------------------
be1                        yes      yes    yes       no     
be10                       yes      yes    yes       no
# </screen>
</example>
</task>
</sect1><sect1 id="ggqdn"><title>Booting the Failsafe Archive on an x86 Based System</title><para>To boot the failsafe archive on a x86 based system, select the failsafe
boot entry when the GRUB menu is displayed during a system boot.  During the
failsafe boot procedure, when prompted by the system, type <command>y</command> to
update the primary boot archive.</para><para>Failsafe booting is also supported on systems that are booted from ZFS.
When booting from a UFS-rooted BE, each BE has its own failsafe archive. 
The failsafe archive is located where the root file system is located, as
is the case with a ZFS-rooted BE.  On x86 based systems, each failsafe archive
has an entry in the pool-wide GRUB menu.  The default failsafe archive is
the archive that is in the default bootable file system. The default bootable
file system (dataset) is indicated by the value of the pool's <literal>bootfs</literal> property.</para><para>Another method that can be used to update the boot archives is to clear
the boot-archive service. See <olink targetptr="gglbw" remap="internal">How to Update an Inconsistent
Boot Archive by Clearing the boot-archive Service</olink>. However, the preferred
methods for updating the boot archives are to boot the failsafe archive or
use the <command>bootadm</command> command. For more information, see the <olink targetptr="archive-123" remap="internal">Chapter&nbsp;14, Managing the Solaris Boot Archives
(Tasks)</olink>.</para><task id="fvznb"><title>How to Boot the Failsafe Archive on an x86 Based System
by Using GRUB</title><indexterm><primary>failsafe archive</primary><secondary>GRUB based booting</secondary><tertiary>recovery</tertiary>
</indexterm><indexterm><primary>recovering</primary><secondary>booting the failsafe archive</secondary><tertiary>GRUB based booting</tertiary>
</indexterm><indexterm><primary>GRUB based booting</primary><secondary>booting the failsafe archive</secondary>
</indexterm><indexterm><primary>archive</primary><secondary>booting the failsafe archive</secondary><tertiary>GRUB</tertiary>
</indexterm><indexterm><primary>booting the failsafe archive</primary><secondary>GRUB based booting</secondary>
</indexterm><tasksummary><note><para>The GRUB failsafe interaction in some Solaris releases prompts
you to update the boot archives, regardless of whether any inconsistent boot
archive are detected. In this Solaris release, the system only prompts you
to update the boot archives if an inconsistent boot archive is detected.</para>
</note>
</tasksummary><procedure><step id="gcbmu"><para>Stop the system by using one of the methods described
in the procedure, <olink targetptr="fvzot" remap="internal">How to Stop a System for Recovery
Purposes</olink>.</para>
</step><step id="gcbnn"><para>If the system displays the <literal>Press any key to
reboot</literal> prompt, press any key to reboot the system.</para><para>You
can also use the Reset button at this prompt. Or, you can use the power switch
to reboot the system.</para><para>When the boot sequence begins, the GRUB menu is displayed.</para><screen>GNU GRUB  version 0.95  (637K lower / 3144640K upper memory)
 +-------------------------------------------------------------------+
| be1
| be1 failsafe
| be3
| be3 failsafe
| be2
| be2 failfafe
  +------------------------------------------------------------------+
      Use the ^ and v keys to select which entry is highlighted.
      Press enter to boot the selected OS, 'e' to edit the
      commands before booting, or 'c' for a command-line.</screen><note><para>The GRUB menu that is displayed may vary, depending on the Solaris
release you are running.</para>
</note>
</step><step><para>Use the arrow keys to navigate the GRUB menu to select a failsafe
entry.</para>
</step><step><para>Press Return to boot the failsafe archive.</para><para>The system
searches for installed OS instances. If an inconsistent boot archive is detected,
a message similar to the following is displayed:</para><screen>Searching for installed OS instances...
	
	An out of sync boot archive was detected on /dev/dsk/c0t0d0s0.
	The boot archive is a cache of files used during boot and
	should be kept in sync to ensure proper system operation.
	
	Do you wish to automatically update this boot archive? [y,n,?]</screen>
</step><step><para>Type <command>y</command> to update the boot archive.</para><para>If
multiple inconsistent boot archives are detected, the system will prompt you
to type <command>y</command> to update each inconsistent boot archive.</para><para>For each archive that is updated successfully, the following message
is displayed:</para><screen>Updating boot archive on /dev/dsk/c0t0d0s0.
	The boot archive on /dev/dsk/c0t0d0s0 was updated successfully.</screen><para>After the boot archive is updated, the system searches again for all
installed OS instances, then prompts you to select a device to mount on <filename>/a</filename>. Note that this same message is displayed when the system first
boots if no inconsistent boot archives are detected.</para><screen>Searching for installed OS instances...

Multiple OS instances were found. To check and mount one of them
read-write under /a, select it from the following list. To not mount
any, select 'q'.

  1  pool10:13292304648356142148     ROOT/be10
  2  rpool:14465159259155950256      ROOT/be01

Please select a device to be mounted (q for none) [?,??,q]:</screen><stepalternatives><step><para>If you choose not to mount a device, type <command>q</command> to
continue to boot process.</para>
</step><step><para>If you choose to mount a device, follow these steps:</para><substeps><step><para>Type the number of the device and press Return.</para><para>The
system mounts the device on <filename>/a</filename>, and returns you to a
shell prompt.</para>
</step><step><para>Repair the critical system resource.</para>
</step><step><para>When you are done repairing the critical system resource, unmount
the device.</para><screen># <userinput>umount /a</userinput></screen>
</step><step><para>Reboot the system.</para><screen># <userinput>reboot</userinput></screen>
</step>
</substeps>
</step>
</stepalternatives>
</step>
</procedure>
</task><task id="gcbcn" arch="x86"><title>How to Boot the Failsafe Archive to Forcibly
Update a Corrupt Boot Archive</title><indexterm><primary>rebuilding corrupt boot archive (how to)</primary>
</indexterm><indexterm><primary>boot archive</primary><secondary>how to rebuild a corrupt</secondary>
</indexterm><indexterm><primary>corrupt boot archive</primary><secondary>how to rebuild</secondary>
</indexterm><indexterm><primary>GRUB based booting</primary><secondary>how to rebuild a corrupt boot archive</secondary>
</indexterm><indexterm><primary>booting the failsafe archive</primary><secondary>to rebuild a corrupt boot archive</secondary>
</indexterm><tasksummary><para>This procedure shows how to rebuild an inconsistent or corrupt boot
archive in the event you are not prompted by the system to update the boot
archive the system, or in the event of a system hang or looping sequence occurs.</para>
</tasksummary><procedure><step id="gcbcp"><para>Stop the system by using one of the methods that are
described in the procedure, <olink targetptr="fvzot" remap="internal">How to Stop a System
for Recovery Purposes</olink>.</para>
</step><step id="gcbfg"><para>Reboot the system.</para><screen># <userinput>reboot</userinput></screen><para>If the system displays the <literal>Press any key to reboot</literal> prompt,
press any key to reboot the system.</para><para>You can also use the Reset button at this prompt.</para><para>When the boot sequence begins, the GRUB menu is displayed.</para><screen>+---------------------------------------------------------------------+
 | Solaris 10.1... X86                                                     |
 | Solaris failsafe                                                        |
 |                                                                         |
 |                                                                         |
 +-------------------------------------------------------------------------+
      Use the  and  keys to select which entry is highlighted.
      Press enter to boot the selected OS, 'e' to edit the
      commands before booting, or 'c' for a command-line.</screen><note><para>The contents of the GRUB menus vary, depending on the Solaris
release you are running.</para>
</note>
</step><step><para>Use the arrow keys to navigate the GRUB menu, then select the
failsafe entry. Press Return to boot the failsafe archive.</para><para>If
any boot archives are out of date, a message that is similar to the following
is displayed:</para><screen>Searching for installed OS instances...
	
	An out of sync boot archive was detected on /dev/dsk/c0t0d0s0.
	The boot archive is a cache of files used during boot and
	should be kept in sync to ensure proper system operation.
	
	Do you wish to automatically update this boot archive? [y,n,?]
		</screen>
</step><step><para>Type <command>y</command>, then press Enter to update the inconsistent
boot archive.</para><para>The system displays the following message:</para><screen>Updating boot archive on /dev/dsk/c0t0d0s0.
	The boot archive on /dev/dsk/c0t0d0s0 was updated successfully.</screen><para>If no inconsistent boot archives are found, a message that is similar
to the following is displayed:</para><screen>Searching for installed OS instances...
	
	Solaris 10.1... X86 was found on /dev/dsk/c0t0d0s0.
	Do you wish to have it mounted read-write on /a? [y,n,?]</screen><para>This message is also displayed after any inconsistent boot archives
are updated successfully.</para>
</step><step><para>Mount the device that contains the corrupt boot archive on <filename>/a</filename> by typing the corresponding number of the device, then press
Enter.</para><note><para>If any inconsistent boot archives were updated in the previous
step, the device is already mounted on <filename>/a</filename>. Proceed to
Step 6.</para>
</note>
</step><step id="gcbey"><para>To forcibly update the corrupt boot archive, type:</para><screen># <userinput>bootadm update-archive -f -R /a</userinput></screen>
</step><step id="gcber"><para>Unmount the device.</para><screen># <userinput>umount /a</userinput></screen>
</step><step><para>Reboot the system.</para><screen># <userinput>reboot</userinput></screen>
</step>
</procedure>
</task>
</sect1><sect1 id="ghsut"><title>Using Fast Reboot on the x86 Platform (Task Map)</title><indexterm><primary>fast reboot of an x86 based system</primary><secondary>(Task Map)</secondary>
</indexterm><informaltable frame="all" pgwide="1"><tgroup cols="3" colsep="0" rowsep="0"><?PubTbl tgroup dispwid="1137.00px"?><colspec colname="column1" colwidth="132.00*"/><colspec colname="column2" colwidth="130.56*"/><colspec colname="column3" colwidth="133.44*"/><thead><row rowsep="1"><entry colsep="1" rowsep="1"><para>Task</para>
</entry><entry colsep="1" rowsep="1"><para>Description</para>
</entry><entry colsep="1" rowsep="1"><para>For Instructions</para>
</entry>
</row>
</thead><tbody><row><entry colsep="1" rowsep="1"><para>Initiate a fast reboot of the system.</para>
</entry><entry colsep="1" rowsep="1"><para>Use the <command>reboot</command> command with <option>f</option> option
to initiate a fast reboot of the system.</para>
</entry><entry colsep="1" rowsep="1"><para><olink targetptr="ghswd" remap="internal">How to Initiate a Fast Reboot of the System</olink></para>
</entry>
</row><row><entry colsep="1" rowsep="1"><para>Use Fast Reboot to reboot to a specific UFS boot disk or a ZFS root
pool.</para>
</entry><entry colsep="1" rowsep="1"><para>The fast reboot capability can be used to reboot to a specific UFS boot
disk or a specific ZFS root pool.</para>
</entry><entry colsep="1" rowsep="1"><para><olink targetptr="ghsgj" remap="internal">Initiating a Fast Reboot to a Specific UFS
Boot Disk or a ZFS Root Pool</olink></para>
</entry>
</row><row><?PubTbl row rht="0.93in"?><entry colsep="1" rowsep="1"><para>Use Fast Reboot to initiate a reboot of a directly mounted root (<filename>/</filename>) disk or root dataset.</para>
</entry><entry colsep="1" rowsep="1"><para>After mounting a root (<filename>/</filename>) disk or root dataset,
you can initiate a fast reboot of the system.</para>
</entry><entry colsep="1" rowsep="1"><para><olink targetptr="ghsgy" remap="internal">How to Initiate a Fast Reboot of a Directly
Mounted Root Disk or Root Dataset</olink></para>
</entry>
</row><row><?PubTbl row rht="1.96in"?><entry colsep="1" rowsep="1"><para>Initiate a fast reboot to an alternate BE.</para>
</entry><entry colsep="1" rowsep="1"><para>Use the <command>reboot</command>command with the <option>f</option> and <option>e</option> options to fast reboot to an alternate BE.</para><note><para>Because the <option>e</option> option of the reboot command has
dependencies on Solaris Live Upgrade, this option is not currently supported
in the OpenSolaris 2008.11 release.</para>
</note>
</entry><entry colsep="1" rowsep="1"><para><olink targetptr="ghsfx" remap="internal">Initiating a Fast Reboot to an Alternate Boot
Environment</olink></para>
</entry>
</row><row><?PubTbl row rht="1.96in"?><entry colsep="1" rowsep="1"><para>Initiate a fast reboot by directly specifying an alternate dataset.</para>
</entry><entry colsep="1" rowsep="1"><para>If you are running the OpenSolaris 2008.11 release, you cannot use the
reboot <option>f</option> <option>e</option> command to reboot to an alternate
BE. Instead, use the <command>reboot</command> command with the just the <option>f</option> option, directly specifying which dataset to boot.</para>
</entry><entry colsep="1" rowsep="1"><para><olink targetptr="ghsqy" remap="internal">Initiating a Fast Reboot to an Alternate Boot
Environment in the OpenSolaris 2008.11 OS</olink></para>
</entry>
</row><row><?PubTbl row rht="1.96in"?><entry colsep="1" rowsep="1"><para>Facilitate a fast reboot of the system by using the <command>uadmin</command> command.</para>
</entry><entry colsep="1" rowsep="1"><para>The <command>uadmin</command> command has been modified to support the
Fast Reboot feature. You can facilitate a fast reboot by using this method.</para>
</entry><entry colsep="1" rowsep="1"><para><olink targetptr="ghspj" remap="internal">Facilitating a Fast Reboot by Using the uadmin
Command</olink></para>
</entry>
</row><row><?PubTbl row rht="1.96in"?><entry colsep="1" rowsep="1"><para>Change the behavior of the <command>reboot</command> command to make
Fast Reboot the default.</para>
</entry><entry colsep="1" rowsep="1"><para>Adding the <filename>/etc/fastreboot</filename> file to a system enables
the Fast Reboot feature by default.</para>
</entry><entry colsep="1" rowsep="1"><para><olink targetptr="ghshm" remap="internal">Making Fast Reboot the Default Behavior of
the reboot Command</olink></para>
</entry>
</row><row><?PubTbl row rht="1.96in"?><entry colsep="1" rowsep="1"><para>Troubleshoot issues and conditions that might prevent the Fast Reboot
feature from working.</para>
</entry><entry colsep="1" rowsep="1"><para>Under certain conditions, the fast reboot capability does not work.
In some of these situations, a workaround is available.</para>
</entry><entry colsep="1" rowsep="1"><para><olink targetptr="ghsex" remap="internal">Troubleshooting Conditions That Might Prevent
Fast Reboot From Working</olink></para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable><sect2 id="ghsdq" arch="x86"><title>Fast Reboot Implementation</title><indexterm><primary>x86: Fast Reboot</primary><secondary>feature description</secondary>
</indexterm><itemizedlist><para>The following are key components of the Fast Reboot implementation:</para><listitem><para>Two new options for the <command>reboot</command> command</para><variablelist><varlistentry><term><option>f</option></term><listitem><para>Initiates the fast reboot process, when used with the <command>reboot</command> command.</para>
</listitem>
</varlistentry><varlistentry><term><option>e</option></term><listitem><para>Reboots the system to an alternate BE, when used in conjunction
with the <command>reboot</command>command and the <option>f</option> option.</para>
</listitem>
</varlistentry>
</variablelist><note><para>The <option>e</option> option cannot be used to fast reboot to
an alternate BE in the OpenSolaris 2008.11 release. For instructions on rebooting
to an alternate BE in this release, see <olink targetptr="ghsqy" remap="internal">Initiating
a Fast Reboot to an Alternate Boot Environment in the OpenSolaris 2008.11
OS</olink>.</para>
</note>
</listitem><listitem><para>New <literal>quiesce</literal> Function</para><para>The drivers'
implementation of this function enables the driver to <literal>quiesce</literal> a
device, so that at completion of the function, the driver no longer generates
interrupts or access memory.</para><para>See the <olink targetdoc="group-refman" targetptr="quiesce-9e" remap="external"><citerefentry><refentrytitle>quiesce</refentrytitle><manvolnum>9E</manvolnum></citerefentry></olink> and
 <olink targetdoc="group-refman" targetptr="dev-ops-9s" remap="external"><citerefentry><refentrytitle>dev_ops</refentrytitle><manvolnum>9S</manvolnum></citerefentry></olink> man
pages.</para>
</listitem><listitem><para>New <command>uadmin</command> Function</para><para>Fast Reboot
also includes support for a new <command>uadmin</command> function, <literal>AD_FASTREBOOT</literal>.  This function resets the system, enabling the <command>reboot</command> command
to bypass both the BIOS and boot loader phases.</para><para>For more information, see the <olink targetdoc="group-refman" targetptr="uadmin-2" remap="external"><citerefentry><refentrytitle>uadmin</refentrytitle><manvolnum>2</manvolnum></citerefentry></olink>man page.</para>
</listitem>
</itemizedlist><para>The following procedures and examples describe how to use the fast reboot
capability on an x86 based system. For overview information, see the section, <olink targetptr="ghsbc" remap="internal">Introducing Fast Reboot</olink>.</para>
</sect2><task id="ghswd" arch="x86"><title>How to Initiate a Fast Reboot of the System</title><indexterm><primary>fast reboot</primary><secondary>how to initiate on x86 platform</secondary>
</indexterm><indexterm><primary>initiating a fast reboot of the system</primary><secondary>how to</secondary>
</indexterm><tasksummary><para>This procedure describes how to use the <command>reboot</command> command
with <option>f</option> option to initiate a fast reboot of an x86 based system.</para>
</tasksummary><procedure><step><para>Become superuser or assume an equivalent role.</para>
</step><step><para>Initiate a fast reboot of the system:</para><stepalternatives><step><para>To reboot to a new kernel, you would type:</para><screen># <userinput>reboot -f -- '/platform/i86pc/<replaceable>new&hyphen;kernel&hyphen;name</replaceable>/amd64/unix -k'</userinput></screen>
</step><step><para>To initiate a fast reboot using boot arguments from the previous
boot, you would type:</para><screen># <userinput>reboot -f</userinput></screen>
</step>
</stepalternatives><note><para>The boot archive is derived from the kernel argument.  In the
event of a failure in the fast reboot path, such as insufficient memory, the
normal reset path is used.</para>
</note>
</step>
</procedure><example id="ghsnw" arch="x86"><title>Using Fast Reboot to Reboot a 64-Bit Kernel</title><screen># <userinput>reboot -f -- '/platform/i86pc/kernel/amd64/unix'</userinput>
Oct 21 15:06:35 tonyspizza reboot: initiated by ... on /dev/console
Oct 21 15:06:36 /usr/lib/snmp/snmpdx: received signal 15
Fast reboot.
syncing file systems... done
SunOS Release 5.11 Version onnv-gate:2008-10-20 64-bit
Copyright 1983-2008 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
DEBUG enabled
Hostname: tonyspizza
NIS domain name is lab.sfbay.sun.com
/dev/rdsk/c1d0s7 is clean
Reading ZFS config: done.</screen>
</example><example id="ghsrq" arch="x86"><title>Using Fast Reboot Without Additional Boot Arguments</title><para>This example fast reboots a system using the boot arguments that were
used for the previous boot.</para><screen># <userinput>reboot -f</userinput>
Oct 21 15:02:38 tonyspizza reboot: initiated by ... on /dev/console
Oct 21 15:02:38 tonyspizza rpcbind: rpcbind terminating on signal.
Oct 21 15:02:38 tonyspizza syslogd: going down on signal 15
Fast reboot.
syncing file systems... done
Loading kmdb...
SunOS Release 5.11 Version onnv-gate:2008-10-20 64-bit
Copyright 1983-2008 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
DEBUG enabled
Hostname: tonyspizza
NIS domain name is mpklab.sfbay.sun.com
/dev/rdsk/c1d0s7 is clean
Reading ZFS config: done.</screen>
</example>
</task><sect2 id="ghsgj" arch="x86"><title>Initiating a Fast Reboot to a Specific
UFS Boot Disk or a ZFS Root Pool</title><indexterm><primary>fast reboot</primary><secondary>how to reboot to a UFS boot disk or ZFS root pool</secondary>
</indexterm><indexterm><primary>initiate a fast reboot</primary><secondary>to UFS boot disk or ZFS root pool</secondary>
</indexterm><para>You can specify an alternate UFS boot disk in any of the following ways:</para><screen># <userinput>reboot -f -- '/dev/dsk/c0t0s3'</userinput>
# <userinput>reboot -f -- '/dev/dsk/c0t0s3 -k'</userinput>
# <userinput>reboot -f -- '/dev/dsk/c0t0s3</userinput>
# <userinput>/platform/i86pc/mykernel/amd64/unix -k'</userinput></screen><para>You can specify a ZFS root dataset in any of the following ways:</para><screen># <userinput>reboot -f -- 'rpool/zfsbe1'</userinput>
# <userinput>reboot -f -- 'rpool/zfsbe2 -k'</userinput>
# <userinput>reboot -f -- 'rpool/zfsbe3 /platform/i86pc/mykernel/amd64/unix -k'</userinput></screen><note><para>When rebooting to a different root (<filename>/</filename>) disk
or root dataset by using a mount point or a boot environment, be aware that
no transient menu entry is added to the <filename>menu.lst</filename> file.</para>
</note>
</sect2><task id="ghsgy" arch="x86"><title>How to Initiate a Fast Reboot of a Directly
Mounted Root Disk or Root Dataset</title><indexterm><primary>x86: fast reboot</primary><secondary>how to initiate on a directly mounted disk</secondary>
</indexterm><indexterm><primary>initiate a fast reboot</primary><secondary>on a directly mounted disk or dataset</secondary>
</indexterm><tasksummary><para>You can use Fast Reboot to directly mount a root (<filename>/</filename>)
disk or root dataset, then reboot to it:</para>
</tasksummary><procedure><step><para>Become superuser or assume an equivalent role.</para>
</step><step><para>Mount the root (<filename>/</filename>) disk.</para><para>For
example:</para><screen># <userinput>mount /dev/dsk/c1d0s0 /mnt</userinput></screen><stepalternatives><step><para>To mount a root dataset, type:</para><screen># <userinput>zfs mount rpool/<replaceable>dataset</replaceable></userinput></screen>
</step>
</stepalternatives>
</step><step><para>Reboot the mounted disk or mounted dataset.</para><para>For example:</para><screen># <filename>reboot -f -- '/mnt/platform/i86pc/kernel/amd64/unix'</filename></screen>
</step>
</procedure>
</task><sect2 id="ghsfx" arch="x86"><title>Initiating a Fast Reboot to an Alternate
Boot Environment</title><indexterm><primary>fast reboot</primary><secondary>how to initiate to an alternate boot environment</secondary>
</indexterm><indexterm><primary>initiate a fast reboot</primary><secondary>to an alternate boot environment</secondary>
</indexterm><indexterm><primary>x86: Fast Reboot</primary><secondary>using the <command>reboot</command> <option>e</option> command to initiate</secondary>
</indexterm><indexterm><primary>fast reboot</primary><secondary>using the <command>reboot</command> <option>e</option> command to initiate</secondary>
</indexterm><para>You can optionally use the <command>reboot</command> command with the <option>f</option> and <option>e</option> options to specify an alternate BE.</para><screen># <userinput>reboot -f -e <replaceable>alternate-be-name</replaceable></userinput></screen><note><para>The <option>e</option> option has dependencies on Solaris Live
upgrade packages, in particular the <command>lumount</command> and <command>luumount</command> commands. Because Solaris Live Upgrade is not supported in the
OpenSolaris release, you cannot use this option to specify an alternate BE.
Instead, use the <option>f</option> option by itself to directly specifying
the alternate dataset. See <olink targetptr="ghsqy" remap="internal">Initiating a Fast Reboot
to an Alternate Boot Environment in the OpenSolaris 2008.11 OS</olink>.</para>
</note><example id="ghsnr" arch="x86"><title>Using Fast Reboot to Reboot to an Alternate
Boot Environment</title><para>This example shows how to fast reboot to an alternate BE by using the <command>reboot</command> command with the <option>f</option> and the<option>e</option> options.
Note that in this example, the <command>bootadm list&hyphen;menu</command> command
is used to display a list of the bootable environments that are available
on a system. A fast reboot of the <literal>s3</literal> BE is then initiated.</para><screen># <userinput>bootadm list-menu</userinput>
The location for the active GRUB menu is: /boot/grub/menu.lst
default 0
timeout 10
0 Solaris Express Community Edition snv_82 X86
1 Solaris xVM
2 Solaris failsafe
3 s0
4 s0 Solaris xVM
5 s0 failsafe
6 s4
7 s4 Solaris xVM
8 s4 failsafe
9 s3
10 s3 Solaris xVM
11 s3 failsafe

# <userinput>reboot -f -e s3</userinput>

reboot: Halting 1 zone.
Oct 21 15:16:51 tonyspizza reboot: initiated by ... on /dev/console
reboot: Completing system halt.
Oct 21 15:16:57 tonyspizza syslogd: going down on signal 15
Fast reboot.
syncing file systems... done
SunOS Release 5.11 Version snv_99 64-bit
Copyright 1983-2008 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
DEBUG enabled
Configuring devices.
Hostname: tonyspizza
NIS domain name is lab.sfbay.sun.com
Loading smf(5) service descriptions: 2/2
/dev/rdsk/c1d0s7 is clean
Reading ZFS config: done.</screen>
</example>
</sect2><sect2 id="ghsqy" arch="x86"><title>Initiating a Fast Reboot to an Alternate
Boot Environment in the OpenSolaris 2008.11 OS</title><indexterm><primary>x86: fast reboot</primary><secondary>how to initiate to an alternate boot environment</secondary><tertiary>OpenSolaris OS</tertiary>
</indexterm><indexterm><primary>initiate a fast reboot</primary><secondary>to an alternate boot environment</secondary><tertiary>OpenSolaris OS</tertiary>
</indexterm><indexterm><primary>Fast Reboot</primary><secondary><command>reboot</command> <option>f</option> command</secondary>
</indexterm><para>The <option>e</option> option of the <command>reboot</command> command
is not supported in the OpenSolaris 2008.11 release. To fast reboot to an
alternate BE in this release, use the <command>reboot</command> <option>f</option> command,
directly specifying which dataset to boot. The following examples show how
to fast reboot to an alternate BE by using this method.</para><para>For example to fast reboot to the <literal>zfsbe1</literal> boot environment,
you would type:</para><screen># <userinput>reboot -f -- 'rpool/zfsbe1'</userinput></screen><para>To fast reboot to the <literal>zfsbe3</literal> boot environment, in
64-bit mode, with the kernel debugger enabled, you would type:</para><screen># <userinput>reboot -f -- 'rpool/zfsbe3 /platform/i86pc/kernel/amd64/unix -k'</userinput></screen>
</sect2><sect2 id="ghspj" arch="x86"><title>Facilitating a Fast Reboot by Using the <command>uadmin</command> Command</title><para>To facilitate the use of the new <option>f</option> option of the <command>reboot</command> command, the <literal>AD_FASTREBOOT</literal> function has
been added to the current function list for the <command>uadmin</command> command.
 This function is recognized by commands that utilize these function numbers.</para><para>For example, to reset the system using the current boot arguments by
using the fast reboot path, you would type:</para><screen># <userinput>uadmin 2 8</userinput></screen><caution><para>Using the <command>uadmin</command> command to fast reboot
a system does not update the boot archive or the <filename>menu.lst</filename> file.</para>
</caution><para>For more information about this function, see the <olink targetdoc="group-refman" targetptr="uadmin-1m" remap="external"><citerefentry><refentrytitle>uadmin</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> man page.</para>
</sect2><sect2 id="ghshm" arch="x86"><title>Making Fast Reboot the Default Behavior
of the <command>reboot</command> Command</title><indexterm><primary>Fast Reboot on x86 platform</primary><secondary>how to change default behavior of <command>reboot</command> command</secondary>
</indexterm><indexterm><primary>default behavior for <command>reboot</command> command</primary><secondary>changing</secondary><tertiary>Fast Reboot</tertiary>
</indexterm><indexterm><primary><command>reboot</command> command</primary><secondary>adding the <filename>/etc/fastreboot</filename> file</secondary><tertiary>Fast Reboot</tertiary>
</indexterm><para>To make a fast reboot the default behavior on your system, create a <filename>fastreboot</filename> file in the <filename>/etc</filename> directory.</para><screen># <userinput>touch /etc/fastreboot</userinput></screen><para>The addition of the <filename>fastreboot</filename> file on the system
changes the default behavior of the <command>reboot</command> command, thereby
eliminating the need to use the <option>f</option> option to initiate a fast
reboot.</para><para>To revert to the original behavior of the <command>reboot</command> command,
remove the file.</para><screen># <userinput>rm /etc/fastreboot</userinput></screen><para>Note that removing this file does not remove fast reboot capability
from the system.</para>
</sect2><sect2 id="ghsex" arch="x86"><title>Troubleshooting Conditions That Might
Prevent Fast Reboot From Working</title><indexterm><primary>troubleshooting Fast Reboot feature</primary>
</indexterm><indexterm><primary>x86: Fast Reboot</primary><secondary>troubleshooting conditions that prevent a fast reboot</secondary>
</indexterm><itemizedlist><para>The following are possible conditions under which the Fast Reboot feature
might not work:</para><listitem><para>Driver does not implement the <literal>quiesce</literal> function</para><para> If you attempt a fast reboot of a system with an unsupported
driver, a message similar to the following is displayed:</para><programlisting>Sep 18 13:19:12 too-cool genunix: WARNING: nvidia has no quiesce()
reboot: not all drivers have implemented quiesce(9E)</programlisting><para>If the graphics drivers are the only drivers that do not support the <literal>quiesce</literal> function, you can attempt to force a fast reboot by running
the following commands:</para><screen># <userinput>echo "force_fastreboot/W 1" | mdb -kw</userinput>
# <userinput>echo "set force_fastreboot = 1" &gt;&gt; /etc/system</userinput></screen><para>If the driver for the Network Interface Card (NIC) does not implement
the <literal>quiesce</literal> function, you can try to unplumb the interface
first, then attempt a fast reboot of the system.</para><screen># <userinput>ifconfig your-nic-interface unplumb</userinput>
# <userinput>reboot -f</userinput></screen>
</listitem><listitem><para>Insufficient memory</para><para>If there is not enough memory
on the system, below 1G (0x40000000) for building the page tables, or not
enough free memory to load the new kernel and the boot archive, the fast reboot
attempt fails with the following messages, then falls back to a regular reboot.</para><screen>Fastboot: Couldn't allocate size below PA 1G to do fast reboot
Fastboot: Couldn't allocate size below PA 64G to do fast reboot</screen>
</listitem><listitem><para>Unsupported environment</para><para>Fast reboot functionality
is not currently supported in the following environments:</para><itemizedlist><listitem><para>Solaris xVM dom0 domains</para>
</listitem><listitem><para>Solaris xVM PV domU domains</para>
</listitem><listitem><para>Non&hyphen;global zones</para>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</sect2>
</sect1><sect1 id="fvzok"><title>Booting an x86 Based System from the Network</title><indexterm><primary>GRUB based network boot</primary>
</indexterm><indexterm><primary>network boot</primary><secondary>with GRUB</secondary>
</indexterm><indexterm><primary>booting from the network with GRUB</primary>
</indexterm><indexterm><primary><literal>PXEClient</literal></primary><secondary>GRUB based network boot</secondary>
</indexterm><indexterm><primary><literal>GRUBClient</literal></primary><secondary>GRUB based network boot</secondary>
</indexterm><para>This section describes the requirements and warnings for performing
a GRUB based boot from the network.</para><para>Any system can boot from the network, if a boot server is available.
You might need to boot a stand-alone system from the network for recovery
purposes if the system cannot boot from the local disk. You can boot a Solaris
OS x86 based system directly from a network that supports the PXE network
boot protocol.</para><note><para>The PXE network boot is available only for devices that implement
the Intel Preboot Execution Environment specification.</para>
</note><para>The default network boot strategy  that is used for a GRUB based PXE
network boot is DHCP. For non-PXE devices, you can use either the DHCP or
the RARP boot strategy. The strategy that you use depends on which type of
boot server is available on your network. If no PXE or DHCP server is available,
you can load GRUB from a diskette, a CD-ROM, or a local disk.</para><para>To perform a GRUB based network boot, a DHCP server that is configured
for PXE clients is required. A boot server that provides <command>tftp</command> service
is also required. The DHCP server supplies the information that the client
needs to configure its network interface.</para><itemizedlist><para>The DHCP server must be able to respond to the DHCP classes, <literal>PXEClient</literal> and <literal>GRUBClient</literal> with the following information:</para><listitem><para>IP address of the file server</para>
</listitem><listitem><para>Name of the boot file (<command>pxegrub</command>)</para>
</listitem>
</itemizedlist><orderedlist><para>The sequence for performing a PXE network boot of the Solaris OS is
as follows:</para><listitem><para>The BIOS is configured to boot from a network interface.</para>
</listitem><listitem><para>The BIOS sends a DHCP request.</para>
</listitem><listitem><para>The DHCP server replies with the server address and the name
of the boot file.</para>
</listitem><listitem><para>The BIOS downloads <command>pxegrub</command> by using <command>tftp</command> and executes <command>pxegrub</command>.</para>
</listitem><listitem><para>The system downloads a GRUB menu file by using <command>tftp</command>.</para><para>This file displays the boot menu entries that are available.</para>
</listitem><listitem><para>After you select a menu entry, the system begins to load the
Solaris OS.</para>
</listitem>
</orderedlist><para><indexterm><primary>DHCP</primary><secondary>configuring a GRUB based PXE boot</secondary></indexterm><indexterm><primary>booting from the network with GRUB</primary><secondary>DHCP configuration</secondary></indexterm>See <olink targetdoc="sysadv3" targetptr="ipconfig-79" remap="external"><citetitle remap="section">How to Set Up a Network Configuration Server</citetitle> in <citetitle remap="book">System Administration Guide: IP Services</citetitle></olink> for more information.</para><para>Running the <command>add_install_client</command> command creates the <filename>/tftpboot_01</filename><replaceable>ethernet-address</replaceable> file. This
file is linked to <command>pxegrub</command> and the<filename>/tftpboot/menu.lst.01</filename><replaceable>ethernet-address</replaceable> file. The <filename>/tftpboot/menu.lst.01</filename><replaceable>ethernet-address</replaceable> file is the GRUB menu
file. If this file does not exist, then <command>pxegrub</command> reverts
to using DHCP Option 150, if this option is specified, or the <filename>/tftpboot/boot/grub/menu.lst</filename> file. Typically, a single system is set up to serve both functions.
In this instance, the <command>add_install_client</command> command sets up
the <filename>/tftpboot</filename> file with the correct <filename>pxegrub</filename> menu
file and the Solaris files. DHCP service is handled separately by using the <command>add_install_client</command> command. The setup only needs to be completed
once per client. See <olink targetptr="fwfdk" remap="internal">About DHCP Macros</olink> and <olink targetptr="fvzpk" remap="internal">How to Perform a GRUB Based Boot From the Network</olink> for
more information.</para><sect2 id="fwfdk" arch="x86"><title>About DHCP Macros</title><indexterm><primary>macros</primary><secondary>DHCP</secondary>
</indexterm><indexterm><primary>DHCP macros</primary><secondary>using in GRUB</secondary>
</indexterm><indexterm><primary>GRUB based booting</primary><secondary>about DHCP macros</secondary>
</indexterm><indexterm><primary>configuring DHCP</primary><secondary>booting from the network with GRUB</secondary>
</indexterm><para>When you add clients with the <command>add_install_client</command> <option>d</option> script on the install server, the script reports DHCP configuration
information to standard output. You can use this information when you create
the options and macros that are needed to pass network installation information
to clients. </para><para>To install DHCP clients with a DHCP server over the network, you must
create DHCP options. This information is needed to install the Solaris OS. </para><itemizedlist><para>When a client sends a DHCP request, the server must have the following
client information:</para><listitem><para>Client's ID, which is typically the Ethernet address</para>
</listitem><listitem><para>Class of the client request</para>
</listitem><listitem><para>Subnet the client resides on</para>
</listitem>
</itemizedlist><para>The Solaris DHCP server forms a response. This response is based on
the following <emphasis>macros</emphasis>, which matches the client request:<indexterm><primary>class macro</primary><secondary>configuring DHCP</secondary></indexterm></para><variablelist><varlistentry><term><emphasis role="strong">class macro</emphasis></term><listitem><para>The class macro is based on a <emphasis>class string</emphasis> that
is contained in the DHCP request. On x86 based systems, the BIOS already makes
a DHCP request with the class <literal>PXEClient:Arch:00000:UNDI:002001</literal>.
If a macro by this name is defined in the DHCP server configuration, then
the macro content is sent to the x86 based clients.</para>
</listitem>
</varlistentry><varlistentry><term><emphasis role="strong">network macro</emphasis></term><listitem><para><indexterm><primary>network macro</primary><secondary>configuring DHCP</secondary></indexterm>The network macro is named by the IP address of
the subnet that the client resides on. If the macro <literal>129.146.87.0</literal> is
defined on the DHPC server, the macro content is sent to all clients on that
subnet. The macro content is sent, regardless of the class of the request.
If an option is defined in both the class macro and the network macro, the
network macro takes precedence.</para>
</listitem>
</varlistentry><varlistentry><term><emphasis role="strong">IP macro</emphasis></term><listitem><para><indexterm><primary>IP macro</primary><secondary>configuring DHCP</secondary></indexterm>The IP macro is named by an IP address. This macro
is rarely used</para>
</listitem>
</varlistentry><varlistentry><term><emphasis role="strong">client macro</emphasis></term><listitem><para><indexterm><primary>client macro</primary><secondary>configuring DHCP</secondary></indexterm>The client macro is named by the client type (01
for Ethernet) and the mac address of the client, in uppercase letters. For
a client with the Ethernet address <literal>0:0:39:fc:f2:ef</literal>, the
corresponding macro name is <literal>01000039FCEF</literal>. Note the absence
of colons in the client macro.</para>
</listitem>
</varlistentry>
</variablelist><para>For example, for a client on the subnet <literal>192.168.100.0</literal>,
with the Ethernet address <literal>0:0:39:fc:f2:ef</literal>, making a DHCP
request of class <literal>PXEClient</literal>, the DHCP server has the following
matching macro:</para><screen>PXEClient
	BootSrvA:  192.168.100.0
	BootFile:  pxegrub
  129.146.87.0
	Router:    129.146.87.1
	NISdmain:  sunsoft.eng.sun.com
  01000039FCEF
	BootFile:  01000039FCEF
The actual DHCP response will be
	BootSrvA:  192.168.100.0
	BootFile:  01000039FCEF
	Router:    129.146.87.1
	NISdmain:  sunsoft.eng.sun.com</screen><para>Note that the <filename>BootFile</filename> in the client macro overrides
the <filename>BootFile</filename> in the class macro. </para><para>For more detailed information, see <olink targetdoc="solinstallnet" targetptr="dhcp-admin-38" remap="external"><citetitle remap="section">Preconfiguring System Configuration Information With the DHCP Service (Tasks)</citetitle> in <citetitle remap="book">Solaris Express Installation Guide: Network-Based Installations</citetitle></olink>.</para>
</sect2><task id="fvzpk" arch="x86"><title>How to Perform a GRUB Based Boot From the
Network</title><tasksummary><para>To perform a GRUB based network boot a DHCP server that is configured
for PXE clients is required.  A boot server that provides <command>tftp</command> service
is also required. The DHCP server must be able respond to the DHCP classes, <literal>PXEClient</literal> and <literal>GRUBClient</literal> to obtain the IP address
of the file server and the boot file (<command>pxegrub</command>). By default,
the menu file is <filename>/tftpboot/menu.lst.01<replaceable>ethernet-address</replaceable></filename>.
If this file does not exist, then <command>pxegrub</command> reverts to DHCP
Option 150, if this option is specified, or the <filename>/tftpboot/boot/grub/menu.lst</filename> file.</para><para>If you are booting the system from the Solaris Software 1 CD or DVD,
the system boots automatically.</para>
</tasksummary><taskprerequisites><itemizedlist><para>Before performing a network boot on an x86 based system with GRUB, do
the following:</para><listitem><para>Run the appropriate commands on the installation server to
enable the system to boot from the network.</para>
</listitem><listitem><para>Add the client system as an install client.</para>
</listitem>
</itemizedlist><para>See <olink targetdoc="solinstallnet" targetptr="netinstalloverview-28995" remap="external">Chapter 4, <citetitle remap="chapter">Installing From the Network (Overview),</citetitle> in <citetitle remap="book">Solaris Express Installation Guide: Network-Based Installations</citetitle></olink> for
more information.</para>
</taskprerequisites><procedure><step><para>On the DHCP server, create a client macro for the DHCP service
with the following two options:</para><itemizedlist><listitem><para><literal>BootSrvA</literal>:  <replaceable>svr-addr</replaceable></para>
</listitem><listitem><para><literal>BootFile</literal>:  <replaceable>client-macro</replaceable></para><para>Note that you must have superuser privileges on the DHCP server to run
the <command>dhtadm</command> command.</para><para>where <replaceable>svr-addr</replaceable> is the IP address of the server,
and <replaceable>client-macro</replaceable> is named by the client's Ethernet
type (01) and the mac address, in uppercase letters. This number is also the
name of the file that is used in the <filename>/tftpboot</filename> directory
on the installation server.</para><note><para>The notation for the <replaceable>client-macro</replaceable> should
not contain any colons.</para>
</note><para>You can create the client macro from the DHCP GUI or from command-line
interface.</para><para>To create the client macro from the command-line, type:</para><screen># <userinput>dhtadm -[MA] -m <replaceable>client macro</replaceable> -d
":BootFile=<replaceable>client-macro</replaceable>:BootSrvA=<replaceable>svr-addr:</replaceable>"</userinput></screen>
</listitem>
</itemizedlist>
</step><step id="fvzqv"><para>Reboot the system.</para>
</step><step><para>Instruct the BIOS to boot from the network.</para><itemizedlist><listitem><para>If your system uses a specific keystroke sequence to boot
from the network, type the keystrokes when the BIOS screen is displayed.</para>
</listitem><listitem><para>If you need to manually modify the BIOS settings to boot from
the network, type the keystroke sequence to access the BIOS setup utility.
Then, modify the boot priority to boot from the network.</para>
</listitem>
</itemizedlist>
</step><step><para>When the GRUB menu is displayed, select the network installation
image that you want to install.</para>
</step>
</procedure>
</task>
</sect1>
</chapter><?Pub *0000162232 0?>