Using Fast Reboot on the x86 Platform (Task Map)
x86: Fast Reboot Implementation
The following are key components of the Fast Reboot implementation:
Two new options for the reboot command
- -f
Initiates the fast reboot process, when used with the reboot command.
- -e
Reboots the system to an alternate BE, when used in conjunction with the rebootcommand and the -f option.
Note - The -e 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 x86: Initiating a Fast Reboot to an Alternate Boot Environment in the OpenSolaris 2008.11 OS.
New quiesce Function
The drivers' implementation of this function enables the driver to quiesce a device, so that at completion of the function, the driver no longer generates interrupts or access memory.
See the quiesce(9E) and dev_ops(9S) man pages.
New uadmin Function
Fast Reboot also includes support for a new uadmin function, AD_FASTREBOOT. This function resets the system, enabling the reboot command to bypass both the BIOS and boot loader phases.
For more information, see the uadmin(2)man page.
The following procedures and examples describe how to use the fast reboot capability
on an x86 based system. For overview information, see the section, x86: Introducing Fast Reboot.
x86: How to Initiate a Fast Reboot of the System
This procedure describes how to use the reboot command with -f option to
initiate a fast reboot of an x86 based system.
- Become superuser or assume an equivalent role.
- Initiate a fast reboot of the system:
Note - 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.
Example 12-14 x86: Using Fast Reboot to Reboot a 64-Bit Kernel
# reboot -f -- '/platform/i86pc/kernel/amd64/unix'
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.
Example 12-15 x86: Using Fast Reboot Without Additional Boot Arguments
This example fast reboots a system using the boot arguments that were used
for the previous boot.
# reboot -f
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.
x86: Initiating a Fast Reboot to a Specific UFS Boot Disk or a ZFS Root Pool
You can specify an alternate UFS boot disk in any of the
following ways:
# reboot -f -- '/dev/dsk/c0t0s3'
# reboot -f -- '/dev/dsk/c0t0s3 -k'
# reboot -f -- '/dev/dsk/c0t0s3
# /platform/i86pc/mykernel/amd64/unix -k'
You can specify a ZFS root dataset in any of the following
ways:
# reboot -f -- 'rpool/zfsbe1'
# reboot -f -- 'rpool/zfsbe2 -k'
# reboot -f -- 'rpool/zfsbe3 /platform/i86pc/mykernel/amd64/unix -k'
Note - When rebooting to a different root (/) disk or root dataset by using
a mount point or a boot environment, be aware that no transient menu
entry is added to the menu.lst file.
x86: How to Initiate a Fast Reboot of a Directly Mounted Root Disk or Root Dataset
You can use Fast Reboot to directly mount a root (/) disk or
root dataset, then reboot to it:
- Become superuser or assume an equivalent role.
- Mount the root (/) disk.
For example:
# mount /dev/dsk/c1d0s0 /mnt
- Reboot the mounted disk or mounted dataset.
For example:
# reboot -f -- '/mnt/platform/i86pc/kernel/amd64/unix'
x86: Initiating a Fast Reboot to an Alternate Boot Environment
You can optionally use the reboot command with the -f and -e
options to specify an alternate BE.
# reboot -f -e alternate-be-name
Note - The -e option has dependencies on Solaris Live upgrade packages, in particular the
lumount and luumount 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 -f option by itself to directly specifying the alternate dataset. See
x86: Initiating a Fast Reboot to an Alternate Boot Environment in the OpenSolaris 2008.11 OS.
Example 12-16 x86: Using Fast Reboot to Reboot to an Alternate Boot Environment
This example shows how to fast reboot to an alternate BE by
using the reboot command with the -f and the-e options. Note that in
this example, the bootadm list‐menu command is used to display a list of the
bootable environments that are available on a system. A fast reboot of the
s3 BE is then initiated.
# bootadm list-menu
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
# reboot -f -e s3
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.
x86: Initiating a Fast Reboot to an Alternate Boot Environment in the OpenSolaris 2008.11 OS
The -e option of the reboot command is not supported in the OpenSolaris
2008.11 release. To fast reboot to an alternate BE in this release, use
the reboot -f command, directly specifying which dataset to boot. The following examples
show how to fast reboot to an alternate BE by using this method.
For example to fast reboot to the zfsbe1 boot environment, you would type:
# reboot -f -- 'rpool/zfsbe1'
To fast reboot to the zfsbe3 boot environment, in 64-bit mode, with the
kernel debugger enabled, you would type:
# reboot -f -- 'rpool/zfsbe3 /platform/i86pc/kernel/amd64/unix -k'
x86: Facilitating a Fast Reboot by Using the uadmin Command
To facilitate the use of the new -f option of the reboot
command, the AD_FASTREBOOT function has been added to the current function list for
the uadmin command. This function is recognized by commands that utilize these
function numbers.
For example, to reset the system using the current boot arguments by using
the fast reboot path, you would type:
# uadmin 2 8
Caution - Using the uadmin command to fast reboot a system does not update the
boot archive or the menu.lst file.
For more information about this function, see the uadmin(1M) man page.
x86: Making Fast Reboot the Default Behavior of the reboot Command
To make a fast reboot the default behavior on your system, create
a fastreboot file in the /etc directory.
# touch /etc/fastreboot
The addition of the fastreboot file on the system changes the default behavior
of the reboot command, thereby eliminating the need to use the -f option
to initiate a fast reboot.
To revert to the original behavior of the reboot command, remove the file.
# rm /etc/fastreboot
Note that removing this file does not remove fast reboot capability from the
system.
x86: Troubleshooting Conditions That Might Prevent Fast Reboot From Working
The following are possible conditions under which the Fast Reboot feature might not
work:
Driver does not implement the quiesce function
If you attempt a fast reboot of a system with an unsupported driver, a message similar to the following is displayed:
Sep 18 13:19:12 too-cool genunix: WARNING: nvidia has no quiesce()
reboot: not all drivers have implemented quiesce(9E)
If the graphics drivers are the only drivers that do not support the quiesce function, you can attempt to force a fast reboot by running the following commands:
# echo "force_fastreboot/W 1" | mdb -kw
# echo "set force_fastreboot = 1" >> /etc/system
If the driver for the Network Interface Card (NIC) does not implement the quiesce function, you can try to unplumb the interface first, then attempt a fast reboot of the system.
# ifconfig your-nic-interface unplumb
# reboot -f
Insufficient memory
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.
Fastboot: Couldn't allocate size below PA 1G to do fast reboot
Fastboot: Couldn't allocate size below PA 64G to do fast reboot
Unsupported environment
Fast reboot functionality is not currently supported in the following environments: