Fast Reboot Documentation
This page includes documentation that describes the Fast Reboot feature, how it works, and how to use it. On this page, you will find overview information, implementation details, user-based tasks, examples, troubleshooting advice, and links to other helpful documentation.
What Is Fast Reboot?
The Fast Reboot feature 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. The ability to fast reboot a system drastically reduces down time and improves efficiency.
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. You can fast reboot a system to the default GRUB boot entry, or you can fast reboot to another installed boot environment (BE) by specifying it from the command line. For more information, see the task section below.
Fast Reboot is currently not available on the SPARC platform.
Build 100: Fast Reboot Introduced
Starting with this build, the following modifications were made to support the Fast Reboot feature:
- The reboot command was modified to include two new options, -f and -e.
The -f option initiates a fast reboot of the system when used with the reboot command.
The -e option, when used in conjunction with the -f option initiates a fast reboot to an alternate boot environment (BE).
If you are running an OpenSolaris release that supports fast reboot functionality, you cannot use the -e option to fast reboot to an alternate BE. See "Performing a Fast Reboot to an Alternate BE in the OpenSolaris Release." for alternate instructions.
- Implementation of the quiesce Function
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, quiesce.On supported drivers, this implementation quiesces 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.
Not all device drivers implement the quiesce function. For troubleshooting information, see "Troubleshooting Conditions That Might Prevent Fast Reboot From Working."
.
- New uadmin Function
The new uadmin function, AD_FASTREBOOT, supports fast rebooting an x86 based system. This function works by resetting the system and enabling the reboot command to bypass the BIOS and the boot loader phases.
The uadmin 2 8 command has limited functionality. If the command is used to facilitate a fast reboot of the system, neither the boot archive, nor the menu.lst file are updated. For this reason, the reboot -f command is the preferred method for initiating a fast reboot.
Build 112: Fast Reboot and Panic Fast Reboot Become the Default Operating Mode
Starting with this build, Fast Reboot becomes the default operating mode. In addition, a new Panic Fast Reboot capability was introduced. The Panic Fast Reboot behavior is also the default operating mode on the x86 platform.
All of the new features that were introduced in build 100 are now enabled by default, without the need to use the -f flag to the reboot command,
Configuring Fast Reboot Properties
Starting with build 112, Fast Reboot is under the control of the Service Management Facility (SMF). A new boot-config service, svc:/system/boot-config:default, was introduced,
The boot-config service has the following two properties:
- fastreboot_default
If you want to disable the default behavior of this property, use the svccfg command, as shown here:
# svccfg -s "system/boot-config:default" setprop config/fastreboot_default=false # svccfg refresh svc:/system/boot-config:default
- fastreboot_onpanic
This property is also set to true, which means if the system panics, it will fast reboot automatically, bypassing the BIOS.
To disable this property, you would type
# svccfg -s "system/boot-config:default" setprop config/fastreboot_onpanic=false # svccfg refresh svc:/system/boot-config:default
Disabling one property has no effect on the default behavior of the other property.
Other Key Feature Enhancements Introduced in Build 112
Two other key feature enhancements that integrated in build 112 include the capability for fast rebooting a system to the nth GRUB entry, as well as the ability to fast reboot a system to a newly-activated boot environment (BE).
For example, to fast reboot a system to the nth entry, first use the bootadm list-menu command to list all of the available BEs on the system:
# bootadm list-menu the location for the active GRUB menu is: /rpool/boot/grub/menu.lst default 0 timeout 10 0 snv_111 1 snv_111 Solaris xVM 2 snv_111 failsafe 3 zfsbe2 4 zfsbe2 Solaris xVM 5 zfsbe2 failsafe
Then, to reboot a specific GRUB boot entry, use the reboot n command, where n is the number of the BE that you want to boot.
For example, to fast reboot the system to zfsbe2, you would type:
# reboot 3
To fast reboot a newly-activated BE, first activate the BE, then reboot to it, as shown in the following example:
# beactivate opensolaris-4 # reboot
Using Fast Reboot
The following are examples of some of the ways in which you can fast reboot an x86 based system.
Rebooting the Default OS Entry
Use either of the following commands to fast reboot the default OS entry that is listed in the GRUB menu.lst file:
# reboot
# init 6
You can fast reboot an x86 based system immediately after setting the new default entry with either the luactivate or beactivate command.
Rebooting to the nth Entry in the GRUB menu.lst File
To reboot to an OS that is not the default entry in the menu.lst file, specify the boot entry number with the reboot command.
For example:
# reboot 4
To determine what boot entry number to use, first run the bootadm list-menu command. The output of the command displays all of the installed OS on system, each with a corresponding boot entry number.
Rebooting Through the BIOS
Rebooting a system through the BIOS can be helpful in certain situations, such as when you are performing a network installation.
To reboot a system through the BIOS, use the -p option with the reboot command, as shown here:
# reboot -p
Performing a Fast Reboot to an Alternate BE in the OpenSolaris Release
Because the -e option of the reboot command is not currently supported in the OpenSolaris release, the command syntax for fast rebooting to an alternate BE in the OpenSolaris release is slightly different than if you are running a Nevada build on your x86 based system.
If you are running a supported OpenSolaris release (2008.11 or 2009.06), to fast reboot a system to the zfsbe1 boot environment, you would type:
$ reboot -- 'rpool/zfsbe1'
To fast reboot to the zfsbe3 boot environment, in 64-bit mode, with the kernel debugger enabled, you would type:
$ reboot -- 'rpool/zfsbe3 /platform/i86pc/kernel/amd64/unix -k'
More Examples of Fast Reboot features That Were Introduced in Build 100 (Phase I)
The following examples demonstrate the various ways you can use the Fast Reboot capability. All of these features were introduced in build 100. However, note that starting with build 112, you can omit the -f when using the reboot command to initiate a fast reboot.
- Perform a fast reboot to an alternate BE name zfsbe2.
# reboot -e zfsbe2
Or,fast reboot to a dataset named rpool/zfsbe1.
# reboot -- 'rpool/zfsbe1'
- Perform a fast reboot to an alternate ZFS root dataset.
# reboot -- 'rpool/ROOT/zfsroot2'
- Perform a fast reboot to a specific UFS boot disk or a ZFS root pool.
# reboot -- '/dev/dsk/c0t0d0s3'
- Perform a fast reboot to a new 64-bit kernel.
# reboot -- '/platform/i86pc/sherry-kernel/amd64/unix -k'
- Perform a fast reboot of a mounted disk or a mounted dataset.
# reboot -- '/mnt/platform/i86pc/sherry-kernel/amd64/unix -k'
- Fast reboot a system in single-user mode, with the kernel debugger enabled.
# reboot -- '-ks'
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 this command.The function is recognized by commands that utilize these function numbers.
For example, to reset the system with the current boot arguments by using the fast reboot path, you would type:
# uadmin 2 8
Note that using the uadmin command to fast reboot a system does not update the boot archive or the menu.lst file.
Forcing a Fast Reboot of the System
If there are drivers on the system that do not support the quiesce function, you can attempt to unload the drivers by using the modunload command. If the driver does not unload, and you know that the device that it manages does not initiate DMA or generate interrupts, you can patch force_fastreboot to 1 in the /etc/system file, as shown in this example:
# echo "set force_fastreboot=1" >> /etc/system # echo "force_fastreboot/W" | mdb -kw
Debugging Early Panics That Occur
Because the boot-config service has dependencies on the multiuser milestone, developers who need to debug early panics can patch a global variable, fastreboot_onpanic in the /etc/system file, as follows:
# echo "set fastreboot_onpanic=1" >> /etc/system # echo "fastreboot_onpanic/W" | mdb -kw
Troubleshooting Conditions That Might Prevent Fast Reboot From Working
Conditions that might prevent the system from fast rebooting include the following:
- GRUB menu cannot be processed
- 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 might be 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_fast reboot = 1" >> /etc/system
For example:
# ifconfig your-nic-interface unplumb# reboot
- System is among those platforms that are "Blacklisted"
- System cannot allocate enough 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
The following environments do not support Fast Reboot:
Solaris xVM dom0 domains
Solaris xVM PV domU domains
Non-global zones