System Administration Guide: Basic Administration
Previous Next

Booting From a ZFS Root File System on an x86 Based System

To support booting a ZFS root file system on the x86 platform, a new GRUB keyword, $ZFS-BOOTFS, 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 -B 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 menu.lst file, as well as the GRUB boot menu, contains this information by default.

How to Display a List of the Available ZFS Boot Environments on an x86 Based System

  1. Become superuser or assume an equivalent role.
  2. To display a list of available BEs on the system, type the following command:
    # lustatus

    Note that the lustatus command can also be used on SPARC based systems.


    Note - If the following error is displayed when you run the lustatus 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 lustatus output, a new BE must be first created on the system.

    # lustatus
    ERROR: No boot environments are configured on this system
    ERROR: cannot determine list of all boot environment names

    For more information about using Solaris Live Upgrade to migrate a UFS root file system to a ZFS root file system, see Migrating a UFS Root File System to a ZFS Root File System (Solaris Live Upgrade) in Solaris ZFS Administration Guide.

Example 12-12 Displaying a List of Available ZFS Bootable Datasets by Using the lustatus Command

In this example, the output of the lustatus command shows the status of three ZFS bootable datasets. The default boot environment is be1 and therefore cannot be deleted.

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

If the BE has been created and is bootable, a “yes” appears in the Is Complete column. If a BE has been created, but is not yet activated, a 'no” appears in this column. To activate a BE, use the luactivate command. Run the lustatus command afterwards to verify that the BE was successfully activated.

For more information see the lustatus(1M) and the luactivate(1M)man pages.

How to Boot From a ZFS Root File System on an x86 Based System

This procedure describes how to boot from a ZFS root file system on an x86 system that supports a ZFS boot loader.

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 -B $ZFS-BOOTFS boot argument by default, so the system boots from ZFS without requiring any additional boot arguments.

  1. Reboot the system.
    # reboot

    If the system displays the Press any key to reboot prompt, press any key to reboot the system.

    You can also use the Reset button at this prompt. If the system is shut down, turn the system on with the power switch.

    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:

    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.
  2. When the GRUB menu is displayed, press Enter to boot the default OS instance.

    If you do not choose an entry within 10 seconds, the system automatically boots to run level 3.

  3. To boot another BE, use the arrow keys to highlight the specified boot entry.
  4. Type b to boot this entry or e to edit the entry.

    If you type e to edit the entry, the default menu for booting a system with a ZFS root would appear as follows:

    findroot (BE_be10,0,a)
    kernel$ /platform/i86pc/kernel/$ISADIR/unix -B $ZFS-BOOTFS
    module$ /platform/i86pc/$ISADIR/boot-archive

    For more information about GRUB menu entries at boot time, seex86: How to Modify Boot Behavior by Editing the GRUB Menu at Boot Time.

Example 12-13 x86: Activating a New Boot Environment on an x86 Based System

This example shows the steps that are followed to activate a boot environment, be10, on a system. Note that the lustatus command is run first, to determine which BEs on the system are active and which BEs require activation.

# lustatus
Boot Environment           Is       Active Active    Can    Copy
Name                      Complete Now    On Reboot Delete Status
-----------------------------------------------------------------
be1                        yes      yes    yes       no     
be10                       yes      no     no        yes



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

Setting failsafe console to <ttyb>
Generating boot-sign for ABE <be10>
Generating partition and slice information for ABE <be10>
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.
***************************************************************
,,,


# reboot
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:
# lustatus
Boot Environment           Is       Active Active    Can    Copy
Name                      Complete Now    On Reboot Delete Status
-----------------------------------------------------------------
be1                        yes      yes    yes       no     
be10                       yes      yes    yes       no
# 
Previous Next