<?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(8)?><chapter id="hboverview-25463"><?Pub Tag atict:info tracking="off" 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>Shutting Down and Booting a System (Overview)</title><highlights><para>This chapter provides an overview of booting a system. The Solaris boot
design, boot processes, and various methods of booting a system in the Solaris
OS are described.</para><itemizedlist><para>This is a list of the information in this chapter.</para><listitem><para><olink targetptr="ggjcp" remap="internal">Fundamentals of the Solaris Boot
Design</olink></para>
</listitem><listitem><para><olink targetptr="ggefi" remap="internal">Understanding the New Solaris SPARC
Boot Architecture</olink></para>
</listitem><listitem><para><olink targetptr="getpo" remap="internal">Implementation of the Boot Archives
on Solaris SPARC</olink></para>
</listitem><listitem><para><olink targetptr="fvbsc" remap="internal">Administering the GRUB Bootloader</olink></para>
</listitem><listitem><para><olink targetptr="ghsbc" remap="internal">Introducing Fast Reboot</olink></para>
</listitem><listitem><para><olink targetptr="ggqhp" remap="internal">Booting From a ZFS Root File System</olink></para>
</listitem>
</itemizedlist><para>For instructions on booting a Solaris system, see <olink targetptr="hbsparcboot-79782" remap="internal">Chapter&nbsp;12, Booting a Solaris System (Tasks)</olink></para><para>For what's new in shutting down and booting a system, see <olink targetptr="etmjx" remap="internal">What's New in Shutting Down and Booting a System</olink>.</para><para>For overview information and instructions on administering boot loaders
and modifying Solaris boot behavior, see <olink targetptr="grubtasks-1" remap="internal">Chapter&nbsp;11,
Modifying Solaris Boot Behavior (Tasks)</olink>.</para><para>For information about managing boot services through the Service Management
Facility (SMF), see <olink targetptr="fddwo" remap="internal">SMF and Booting</olink>.</para>
</highlights><sect1 id="ggjcp"><title>Fundamentals of the Solaris Boot Design</title><itemizedlist><para>The Solaris boot design, for both the SPARC and x86 platforms, includes
the following characteristics:</para><listitem><para><emphasis role="strong">Use of a boot archive</emphasis></para><para>The boot archive is a ramdisk image that contains all of the files that
are required for booting a system. When you install the Solaris OS, two boot
archives are created, one primary archive and one failsafe archive. For more
information, see <olink targetptr="getpo" remap="internal">Implementation of the Boot Archives
on Solaris SPARC</olink>.</para><para>The <command>bootadm</command> command has also been modified for use
on the SPARC platform. This command functions the same way that it does on
the Solaris x86 platform. The <command>bootadm</command> command handles the
details of archive update and verification automatically. During an installation
or system upgrade, the <command>bootadm</command> command creates the initial
boot archive. During the process of a normal system shutdown, the shutdown
process checks the boot archive contents against the root file system. If
there are any inconsistencies, the system rebuilds the boot archive to ensure
that on reboot, the boot archive and root (<filename>/)</filename> file system
are synchronized. You can also use the <command>bootadm</command> command
to manually update the boot archives. See <olink targetptr="gglaj" remap="internal">Using the
bootadm Command to Manage the Boot Archives</olink>.</para><note><para>Some options of the <command>bootadm</command> command cannot
be used on SPARC based systems.</para>
</note><para>For more information, see the <olink targetdoc="group-refman" targetptr="bootadm-1m" remap="external"><citerefentry><refentrytitle>bootadm</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> and <olink targetdoc="group-refman" targetptr="boot-1m" remap="external"><citerefentry><refentrytitle>boot</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> man pages.</para>
</listitem><listitem><para><emphasis role="strong">Use of a ramdisk image as the root
file system during installation and failsafe operations</emphasis></para><para>This
process is now the same on the Solaris SPARC and Solaris x86 platforms. The
ramdisk image is derived from the boot archive and is then transferred to
the system from the boot device.</para><note><para>On the SPARC platform, the <trademark>OpenBoot</trademark> PROM
continues to be used to access the boot device and to transfer the boot archive
to the system's memory. Conversely, on the x86 platform, the system is initially
controlled by the BIOS. The BIOS is used to initiate a transfer of the boot
archive from a network device or to run a boot loader. In the Solaris OS,
the x86 boot loader that is used to transfer the boot archive from disk is
GRUB. See <olink targetptr="hbsysboot-1" remap="internal">Boot Processes</olink>.</para>
</note><para>In the case of a software installation, the ramdisk image is the root
file system that is used for the entire installation process. Using the ramdisk
image for this purpose eliminates the need to boot the system from removable
media.  The ramdisk file system type can be either a High Sierra File System
(HSFS) or UFS.</para>
</listitem>
</itemizedlist>
</sect1><sect1 id="ggefi"><title>Understanding the New Solaris SPARC Boot Architecture</title><para>The boot processes on the Solaris SPARC platform have been redesigned
and improved to increase commonality with the Solaris x86 boot experience.
The new Solaris SPARC boot design enables the addition of new features, for
example new file system types, without necessitating any changes to multiple
portions of the boot chain. Changes also include the implementation of boot
phase independence.</para><itemizedlist><para>Highlights of these improvements include:</para><listitem><para>Commonality in boot processes on the Solaris SPARC and x86
platforms</para>
</listitem><listitem><para>Commonality in the network boot experience</para>
</listitem><listitem><para>Boot architecture flexibility that enables booting a system
from different file system types more easily</para>
</listitem>
</itemizedlist><para>The following four boot phases are now independent of each other:</para><orderedlist><listitem><para><emphasis role="strong">Open Boot PROM (OBP) phase</emphasis></para><para>The OBP phase of the boot process on the Solaris SPARC platform is unchanged.</para><para>For disk devices, the firmware driver usually uses the OBP label package's <emphasis>load</emphasis> method, which parses the VTOC label at the beginning of the
disk to locate the specified partition. Sectors 1-15 of the partition are
then read into the system's memory. This area is commonly called the boot
block and usually contains a file system reader.</para>
</listitem><listitem><para><emphasis role="strong">Booter phase</emphasis></para><para>During
this phase the boot archive is read and executed.  Note that this is the only
phase of the boot process that requires knowledge of the boot file system
format. In some instances, the boot archive might also be the installation
miniroot. Protocols that are used for the transfer of the boot loader and
the boot archive include local disk access, NFS, and HTTP.</para>
</listitem><listitem><para><emphasis role="strong">Ramdisk phase</emphasis></para><para>The
ramdisk is a boot archive that is comprised of kernel modules or an installation
miniroot.</para><para>The Solaris SPARC boot archive is identical to a Solaris x86 boot archive.
The boot archive file system format is private. Therefore, knowledge of the
file system type that is used during a system boot, for example an HSFS or
a UFS file system, is not required by the booter or the kernel. The ramdisk
extracts the kernel image from the boot archive and then executes it.  To
minimize the size of the ramdisk, in particular, the installation miniroot
that resides in the system's memory, the contents of  the miniroot are compressed.
This compression is performed on a per-file level and is implemented within
the individual file system. The <filename>/usr/sbin/fiocompress</filename> utility
is then used to compress the file and mark the file as compressed.</para><note><para>This utility has a private interface to the file compression file
system, <filename>dcfs</filename>.</para>
</note>
</listitem><listitem><para><emphasis role="strong">Kernel phase</emphasis></para><para>The
kernel phase is the final stage of the boot process. During this phase, the
Solaris OS is initialized and a minimal root file system is mounted on the
ramdisk that was constructed from the boot archive.  If the boot archive is
the installation miniroot, the OS continues executing the installation process.
Otherwise, the ramdisk contains a set of kernel files and drivers that is
sufficient to mount the root file system on the specified root device.</para><para>The kernel then extracts the remainder of the primary modules from the
boot archive, initializes itself, mounts the real root  file system, then
discards the boot archive.</para>
</listitem>
</orderedlist><sect2 id="ggvtp"><title>Packing and Unpacking the Miniroot</title><para>The ramdisk-based miniroot is packed and unpacked by the <command>root_archive</command> command. Note that only SPARC based systems that support the new
boot architecture have the ability to pack and unpack a compressed version
of the miniroot. </para><caution><para>The
Solaris Express version of the <command>root_archive</command> tool is not
compatible with the Solaris 10 version of the tool. Therefore,
ramdisk manipulation should only be performed on a system that is running
the same Solaris release as the archives.</para>
</caution><para>For more information
about packing and unpacking the miniroot, see the <olink targetdoc="group-refman" targetptr="root-archive-1m" remap="external"><citerefentry><refentrytitle>root_archive</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> man page.</para>
</sect2><sect2 id="ggjkv"><title>Software Installation and Upgrades</title><para>To install or upgrade the Solaris OS, you need to boot the miniroot
from either CD/DVD or from the network. In both instances, the miniroot's
root file system is the ramdisk. This process enables you to eject the Solaris
boot CD without having to reboot the system. Note that the boot archive contains
the entire miniroot. The construction of the installation CD has been modified
to use an HSFS boot block. The miniroot is then packed into a single UFS file
that is loaded as the ramdisk. Note that the miniroot is used for all OS installation
types.</para>
</sect2><sect2 id="ggvts"><title>Installation Memory Requirements</title><para>If
you are running a Solaris Express Community release or an OpenSolaris release,
the minimum memory requirements to install a system is 512 Mbytes of memory.</para><para>For the Solaris
10 release, the minimum memory requirements to install
a system have been increased from 256 Mbytes of memory to minimum
of 384 Mbytes of memory. This amount of memory enables a text-based installation <emphasis>only</emphasis>.  To run the installation GUI program requires a minimum of
768 Mbytes of memory.</para>
</sect2><sect2 id="ggjhr"><title>Changes to the Network Boot Server Setup Process</title><para>The network boot server setup process has been modified. The boot server
now serves a bootstrap program, as well as the ramdisk, which is downloaded
and booted as a single miniroot for all installations, whether booting from
CD/DVD or performing a network installation by using NFS or HTTP. The administration
of a network boot server for a network boot over both NFS or the <command>wanboot</command> program (HTTP) remains the same. However, the internal implementation
of the network boot process has been modified as follows:</para><orderedlist><listitem><para>The boot server transfers a bootstrap in the form of a boot
archive to the target system.</para>
</listitem><listitem><para>The target system unpacks the boot archive in a ramdisk.</para>
</listitem><listitem><para>The boot archive is then mounted as the initial read-only
root device.</para>
</listitem>
</orderedlist><para>For more information about booting a SPARC based system, see <olink targetptr="hbsparcboot-69" remap="internal">Booting a SPARC Based System (Task Map)</olink>.</para>
</sect2><sect2 id="gglyj"><title>Support for Booting Multiple Solaris Kernels</title><para>On SPARC based systems, when you type <command>boot</command> at the <literal>ok</literal> prompt, the default boot device is automatically selected. An
alternate boot device can be specified by changing the <literal>boot-device</literal> NVRAM
variable. You can also specify an alternate boot device or alternate kernel
(boot file) from the command line at boot time. See <olink targetptr="ggmuk" remap="internal">How
to Boot a Solaris Kernel Other Than the Default Kernel</olink>.</para>
</sect2>
</sect1><sect1 id="getpo"><title>Implementation of the Boot Archives on Solaris SPARC</title><indexterm><primary>archive</primary><secondary>Solaris failsafe and primary</secondary><tertiary>description</tertiary>
</indexterm><indexterm><primary>normal archive in GRUB</primary><secondary>boot archive</secondary><tertiary>reference</tertiary>
</indexterm><indexterm><primary>Solaris boot archives</primary><secondary>failsafe and normal</secondary><tertiary>reference</tertiary>
</indexterm><indexterm><primary>failsafe archive</primary><secondary>GRUB reference</secondary><tertiary>description</tertiary>
</indexterm><indexterm><primary>boot archives</primary><secondary>types of</secondary>
</indexterm><para>The Solaris boot archives, previously only available on the x86 platform,
are now an integral part of the Solaris SPARC boot architecture.</para><para>The <command>bootadm</command> command has been modified for use on
the Solaris SPARC platform. This command functions the same as it does on
the Solaris x86 platform. The <command>bootadm</command> command handles the
details of archive update and verification. On the x86 platform the <command>bootadm</command> command updates the GRUB menu during an installation or system
upgrade. You can also use the <command>bootadm</command> command to manually
manage the boot archives.</para><para>The boot archive service is managed by the Service Management Facility
(SMF). The service instance for the boot archive is <filename>svc:/system/boot-archive:default</filename>. To enable, disable, or refresh this service use the <command>svcadm</command> command.
For information about managing services by using SMF, see <olink targetptr="hbrunlevels-25516" remap="internal">Chapter&nbsp;16, Managing Services (Overview)</olink>.</para><itemizedlist><para>On supported Solaris releases, for both SPARC and x86 based systems,
there are two kinds of boot archives:</para><listitem><para>Primary boot archive</para>
</listitem><listitem><para>Failsafe boot archive</para>
</listitem>
</itemizedlist><note><para>On
x86 based systems, when you install the Solaris OS, two primary boot archives
are created, one 32-bit boot archive and one 64-bit boot archive.</para>
</note><para>The files that are included in the Solaris SPARC boot archives are located
in  the <filename>/platform</filename> directory.</para><itemizedlist><para>The contents of the <filename>/platform</filename> directory is divided
into two groups of files:</para><listitem><para>Files that are required for a <literal>sun4u</literal> boot
archive</para>
</listitem><listitem><para>Files that are required for <literal>sun4v</literal> boot
archive</para>
</listitem>
</itemizedlist><para>For information about managing the boot archives, see <olink targetptr="gglbi" remap="internal">Managing the Solaris Boot Archives (Task Map)</olink>.</para>
</sect1><sect1 id="fvbsc" arch="x86"><title>Administering the GRUB Bootloader</title><indexterm><primary>GRUB-based booting</primary><secondary>reference</secondary>
</indexterm><indexterm><primary>booting with GRUB, reference</primary>
</indexterm><indexterm><primary>reference</primary><secondary>administering GRUB</secondary>
</indexterm><indexterm><primary>administering GRUB</primary><secondary>reference</secondary>
</indexterm><para>The open source GRand Unified Bootloader (GRUB) is the default boot
loader on x86 based systems. GRUB is responsible for loading a boot archive
into the system's memory. A boot archive is a collection of critical files
that is needed during system startup before the root file system is mounted.
The boot archive is the interface that is used to boot the Solaris OS. You
can find more information about GRUB at <ulink url="http://www.gnu.org/software/grub/grub.html" type="url"></ulink>. See
also the <olink targetdoc="refman" targetptr="grub-5" remap="external"><citerefentry><refentrytitle>grub</refentrytitle><manvolnum>5</manvolnum></citerefentry></olink> man
page.</para><sect2 id="fvbse"><title>How GRUB Based Booting Works</title><para>After an x86 based system is powered on, the Basic Input/Output System
(BIOS) initializes the CPU, the memory, and the platform hardware. When the
initialization phase has completed, the BIOS loads the boot loader from the
configured boot device and then transfers control of the system to the boot
loader. The <emphasis>boot loader</emphasis> is the first software program
that runs after you turn on a system. This program starts the boot process.</para><para>GRUB implements a menu interface that includes boot options that are
predefined in a configuration file called the <filename>menu.lst</filename> file.
GRUB also has a command-line interface that is accessible from the GUI menu
interface that can be used to perform various boot functions, including modifying
default boot behavior. In the Solaris OS, the GRUB implementation is compliant
with the Multiboot Specification, which is described in detail at <ulink url="http://www.gnu.org/software/grub/grub.html" type="url"></ulink>.</para><para>Because the Solaris kernel is fully compliant with the Multiboot Specification,
you can boot x86 based systems by using GRUB. With GRUB, you can boot various
operating systems that are installed on a single x86 based system. For example,
you can individually boot the Solaris OS, Linux, or Windows by selecting the
boot entry in the GRUB menu at boot time or by configuring the <filename>menu.lst</filename> file to boot a specific OS by default.</para><para>Because GRUB is intuitive about file systems and kernel executable formats,
you can load an operating system without recording the physical position of
the kernel on the disk. With GRUB-based booting, the kernel is loaded by specifying
its file name, and the drive and the partition where the kernel resides. For
more information see <olink targetptr="fvbsh" remap="internal">Naming Conventions That Are
Used for Configuring GRUB</olink>.</para><para>For step-by-step instructions on booting a system with GRUB, see <olink targetptr="hbx86boot-68676" remap="internal">Booting an x86 Based System by Using GRUB (Task
Map)</olink>.</para><itemizedlist><para>See also the following man pages:</para><listitem><para><olink targetdoc="group-refman" targetptr="boot-1m" remap="external"><citerefentry><refentrytitle>boot</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink></para>
</listitem><listitem><para><olink targetdoc="refman" targetptr="bootadm-1m" remap="external"><citerefentry><refentrytitle>bootadm</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink></para>
</listitem><listitem><para><olink targetdoc="refman" targetptr="grub-5" remap="external"><citerefentry><refentrytitle>grub</refentrytitle><manvolnum>5</manvolnum></citerefentry></olink></para>
</listitem><listitem><para><olink targetdoc="refman" targetptr="installgrub-1m" remap="external"><citerefentry><refentrytitle>installgrub</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink></para>
</listitem>
</itemizedlist>
</sect2><sect2 id="ggvuc"><title>GRUB Support for New <command>findroot</command> Command</title><para>GRUB support for a new <command>findroot</command> command has been
implemented in this Solaris release. The <command>findroot</command> command,
which functions similarly to the <command>root</command> command that was
previously used by GRUB, has enhanced capabilities for discovering a targeted
disk, regardless of the boot device.  The <command>findroot</command> command
also supports booting from a ZFS root file system.</para><para>The most common format for the <filename>menu.lst</filename> entry for
this command is:</para><screen>findroot (rootfs0,0,a)
kernel$ /platform/i86pc/kernel/$ISADIR/unix
module$ /platform/i86pc/$ISADIR/boot_archive</screen><para>For more information, see <olink targetptr="ggumt" remap="internal">Implementation of
the findroot Command</olink>.</para><para>For GRUB reference information, see <olink targetptr="hbsysboot-76719" remap="internal">Chapter&nbsp;15,
GRUB Based Booting (Reference)</olink>.</para>
</sect2>
</sect1><sect1 id="ghsbc" arch="x86"><title>Introducing Fast Reboot</title><para>This feature is available, starting with build 100 of the Solaris Express
Community Edition release, and in the OpenSolaris 2008.11 OS.</para><para>Fast Reboot implements an in-kernel boot loader that loads the kernel
into memory, then switches to that kernel, thus enabling the reboot process
to occur within seconds. With Fast Reboot, you can reboot to a new kernel
without experiencing the long delays that can be imposed by the BIOS and boot
loader. The ability to fast reboot a system drastically reduces down time
and improves efficiency.</para><note><para>Fast Reboot is currently not available on the SPARC platform.</para>
</note><para>The following sections provide a general overview of the Fast Reboot
feature. For task related information, see <olink targetptr="ghsut" remap="internal">Using
Fast Reboot on the x86 Platform (Task Map)</olink>.</para><sect2 id="ghshu"><title>Modifications to the <command>reboot</command> Command
to Support Fast Reboot</title><indexterm><primary><command>reboot</command> command</primary><secondary><option>f</option> and <option>e</option> options described</secondary>
</indexterm><indexterm><primary>Fast Reboot</primary><secondary>modifications to the <command>reboot</command> command</secondary>
</indexterm><para>To support Fast Reboot, the <command>reboot</command> command has been
modified to include two new options:</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>Initiates a fast reboot to an alternate boot environment (BE),
when used in conjunction with the <option>f</option> option,</para><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 initiating
a fast reboot 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>
</varlistentry>
</variablelist><para>For more information, see the <olink targetdoc="group-refman" targetptr="reboot-1m" remap="external"><citerefentry><refentrytitle>reboot</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> man page.</para>
</sect2><sect2 id="ghsef"><title>Implementation of the <literal>quiesce</literal> Function</title><indexterm><primary><literal>quiesce</literal> function</primary><secondary>Fast Reboot implementation</secondary>
</indexterm><indexterm><primary>Fast Reboot</primary><secondary><literal>quiesce</literal> function</secondary>
</indexterm><indexterm><primary>device drivers</primary><secondary><literal>quiesce</literal> function</secondary>
</indexterm><para>The system's capability to bypass the firmware when booting a new OS
image has dependencies on device drivers' implementation of a new device operation
entry point, <command>quiesce</command>.  On supported drivers, this implementation <command>quiesces</command> a device, so that at completion of the function, the driver
no longer generates interrupts or access memory.  This implementation also
resets the device to a hardware state, from which the device can be correctly
configured by the driver's attach routine, without a power cycle of the system
or being configured by the firmware. For more information about this functionality,
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><note><para>Not all device drivers implement the <literal>quiesce</literal> function.
For troubleshooting instructions, see <olink targetptr="ghsex" remap="internal">Troubleshooting
Conditions That Might Prevent Fast Reboot From Working</olink>.</para>
</note>
</sect2><sect2 id="ghsfh"><title>New <command>uadmin</command> Function</title><indexterm><primary><command>uadmin</command> function</primary><secondary>Fast Reboot implementation</secondary>
</indexterm><indexterm><primary>Fast Reboot</primary><secondary><command>uadmin</command> command changes</secondary>
</indexterm><para>Other changes that support Fast Reboot on the x86 platform include the
new <command>uadmin</command> function, <literal>AD_FASTREBOOT</literal>.
 This function resets the system, enabling the <command>reboot</command> command
to bypass the BIOS and the boot loader phases.</para><note><para>The <command>uadmin 2 8</command> command has limited functionality.
If the command is used to facilitate a fast reboot of the system, neither
the boot archive, nor the <filename>menu.lst</filename> file are updated.
For this reason, the <command>reboot</command> <option>f</option> command
is the preferred method for initiating a fast reboot.</para>
</note><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>
</sect2>
</sect1><sect1 id="ggqhp"><title>Booting From a ZFS Root File System</title><para>Support for booting a system from a ZFS root file system has been added
to the Solaris OS. The Solaris installation software also includes support
for system upgrades and patching of systems with ZFS roots. Booting, system
operations, and installation procedures have been modified to support this
change. Changes to booting include the implementation of boot loaders the
SPARC boot architecture to increase commonality with the Solaris x86 boot
architecture. This implementation is described in the following sections.</para><para>For more information about ZFS, including a complete list of terms,
see <olink targetdoc="group-sa" targetptr="ftyue" remap="external"><citetitle remap="section">ZFS Terminology</citetitle> in <citetitle remap="book">Solaris ZFS Administration Guide</citetitle></olink>.</para><sect2 id="ggwiv"><title>Solaris Installation Requirements for ZFS</title><itemizedlist><para>Before performing a new installation of the Solaris software or using
Solaris Live Upgrade to migrate a UFS root file system to a ZFS root file
system, make sure the following requirements are met:</para><listitem><para><emphasis role="strong">Solaris release information:</emphasis></para><para>The ability to install and boot from a ZFS root file system is available
in the Solaris 10 11/06 release. To perform a Solaris Live Upgrade operation
to migrate to a ZFS root file system, you must have installed or upgraded
to the Solaris 10 11/06 release.</para>
</listitem><listitem><para><emphasis role="strong">ZFS storage pool space requirements:</emphasis></para><para>The minimum amount of available pool space that is required for a bootable
ZFS root file system is larger than for a bootable UFS root file system because
swap and dump devices are not shared in a ZFS root environment.</para><para>If you select a ZFS root file system during an initial software installation,
or if you use Solaris Live Upgrade to migrate from a UFS root file system
to a ZFS root file system, a swap area is created on a ZFS volume in the ZFS
root pool. The default swap area is sized at 1/2 the size of physical memory,
but no more than 2 Gbytes. A ZFS volume is also created for the dump device.
The dump device is sized at 1/2 the size of physical memory, but no more than
2 Gbytes. Currently, the swap area and the dump device must reside on separate
ZFS volumes.</para><para>For more information, see <olink targetdoc="group-sa" targetptr="ggrln" remap="external"><citetitle remap="section">ZFS Support for Swap and Dump Devices</citetitle> in <citetitle remap="book">Solaris ZFS Administration Guide</citetitle></olink>.</para>
</listitem>
</itemizedlist>
</sect2><sect2 id="ggqcx"><title>How Booting From a ZFS Root File System Works</title><para>Booting from a ZFS root file system works differently than booting from
a UFS file system. Because ZFS applies several new concepts for installation
and booting, some basic administrative practices for booting a system have
changed. The most significant difference between booting from a ZFS root file
system and booting from a UFS root file system is that with ZFS a device identifier
does <emphasis>not</emphasis> uniquely identify a root file system, and thus
a BE.  With ZFS, a device identifier uniquely identifies a <emphasis>storage
pool</emphasis>. A storage pool can contain multiple bootable datasets (root
file systems). Therefore, in addition to specifying a boot device, a root
file system within the pool that was identified by the boot device must also
be specified.</para><para>On an x86 based system, if the boot device that is identified by GRUB
contains a ZFS storage pool, the <filename>menu.lst</filename> file that is
used to create the GRUB menu is located in the dataset at the root of that
pool's dataset hierachy.  This dataset has the same name as the pool.  There
is one such dataset in each pool.</para><para>A <emphasis>default bootable dataset</emphasis> is the bootable dataset
for the pool that is mounted at boot time and is defined by the root pool's <literal>bootfs</literal> property. When a device in a root pool is booted, the dataset
that is specified by this property is then mounted as the root file system.</para><para>The new <literal>bootfs</literal> pool property is a mechanism that
is used by the system to specify the default bootable dataset for a given
pool. When a device in a root pool is booted, the dataset that is mounted
by default as the root file system is the one that is identified by the <literal>bootfs</literal> pool property.<indexterm><primary><literal>bootfs</literal> pool property</primary></indexterm></para><para>On a SPARC based system, the default <literal>bootfs</literal> pool
property is overridden by using the new <option>Z</option> <replaceable>dataset</replaceable> option
of the <command>boot</command> command.</para><para>On an x86 based system, the default <literal>bootfs</literal> pool property
is overridden by selecting an alternate boot environment in the
GRUB menu at boot time.</para>
</sect2><sect2 id="ggyxv" arch="sparc"><title>Boot Options That Support Booting From
a ZFS Root File System</title><indexterm><primary>SPARC boot options</primary><secondary>booting from a ZFS root file system</secondary>
</indexterm><indexterm><primary>booting from a ZFS root file system</primary><secondary>SPARC boot options</secondary>
</indexterm><indexterm><primary><option>L</option> option</primary><secondary>ZFS boot options</secondary><tertiary>displaying available BEs</tertiary>
</indexterm><indexterm><primary><option>Z</option> option</primary><secondary>ZFS boot options</secondary>
</indexterm><indexterm><primary>displaying a list of available BEs</primary><secondary>booting a ZFS root</secondary><tertiary>boot <option>L</option> option</tertiary>
</indexterm><itemizedlist><para>On the SPARC platform, the following two boot options are new:</para><listitem><para>The <option>L </option> option, which is used to print a list
of all the available BEs on a system.</para><screen>ok <userinput>boot -L</userinput></screen><note><para>The <option>L</option> option is run from the <literal>ok</literal> prompt.
This option only presents the list of available BEs on the system. To boot
the system, use the<option> Z</option> boot option.</para>
</note>
</listitem><listitem><para>The <option>Z</option> option of the <command>boot</command> command
enables you to specify a bootable dataset other than the default dataset that
is specified by the <literal>bootfs</literal> pool property.</para><screen>ok <userinput>boot -Z <replaceable>dataset</replaceable></userinput></screen>
</listitem>
</itemizedlist><para>The list of BEs that are displayed when you use the <option>L</option> option
on a device that has a ZFS boot loader reflect the <filename>menu.lst</filename> entries
that are available on that particular system.  Along with the list of available
BEs, instructions for selecting a BE and using the <option>Z</option> option
to boot the system are also provided.  The dataset specified by the <literal>bootfs</literal> value for the menu item is used for all subsequent files that are
read by the booter, for example, the boot archive and various configuration
files that are located in the <filename>/etc</filename> directory. This dataset
is then mounted as the root file system.</para><para>For step-by-step instructions, see <olink targetptr="ggqhf" remap="internal">Booting
From a ZFS Root File System on a SPARC Based System</olink>.</para>
</sect2><sect2 id="ghcqu" arch="x86"><title>Boot Options That Support Booting From
a ZFS Root File System</title><indexterm><primary>x86 boot options</primary><secondary>booting from a ZFS root file system</secondary>
</indexterm><indexterm><primary>booting from a ZFS root file system</primary><secondary>x86 boot options</secondary>
</indexterm><indexterm><primary><literal>$ZFS-BOOTFS</literal></primary><secondary>ZFS boot options</secondary>
</indexterm><para>On the x86 platform, a new GRUB keyword, <literal>$ZFS-BOOTFS</literal> has
been introduced. When booting an x86 based system, if the root file system
that corresponds with the GRUB menu entry is a ZFS dataset, the GRUB menu
entry contains the <option>B</option> option with the <literal>$ZFS-BOOTFS</literal> token
by default. If you install or upgrade your system with a Solaris release that
supports a ZFS boot loader, the GRUB <filename>menu.lst</filename> file is
updated with this information automatically. The default bootable dataset
is identified by the <literal>bootfs</literal> property.</para><para>On x86 based systems that are running a Solaris release that supports
a ZFS boot loader, this information is included in the GRUB menu.</para><para>The following is an example of a default <filename>menu.lst</filename> file
for a GRUB implementation that supports a ZFS boot loader:</para><screen>title Solaris 11 s10x_90 X86
findroot (pool_rpool,0,a)
kernel$ /platform/i86pc/kernel/$ISADIR/unix -B $ZFS-BOOTFS
module$ /platform/i86pc/$ISADIR/boot_archive

title Solaris 11 failsafe
findroot (pool_rpool,0,a)
kernel /boot/platform/i86pc/kernel/unix -s -B console=ttyb
module /boot/x86.miniroot-safe</screen><para>This example shows a <filename>menu.lst</filename> file
that has been manually edited to include an alternate bootable dataset entry:</para><screen>title Solaris-alternate-dataset
bootfs myrootpool/bootenv-alt
kernel$ /platform/i86pc/kernel/$ISADIR/unix -B $ZFS-BOOTFS
module$ /platform/i86pc/$ISADIR/boot_archive</screen><para>For step-by-step instructions on booting a system from ZFS, see <olink targetptr="ggqaa" remap="internal">Booting From a ZFS Root File System on an x86 Based System</olink>.</para>
</sect2>
</sect1>
</chapter><?Pub *0000040723 0?>