hibernate - save your computer's state to disk, and then switch it off
The hibernate script (or "suspend script") is used to invoke the Linux kernel's Hibernation functionality.
When you hibernate your machine, the contents of your computer's memory will be saved to disc, and your computer will switch off. When you switch it back on again, it will resume exactly as it was when you hibernated. This script is designed for TuxOnIce, which is not yet included in the main kernel tree and must be downloaded from the TuxOnIce web site at http://www.tuxonice.net/, but can also utilise the vanilla kernel interfaces for swsusp or pmdisk (through /proc/acpi/sleep or /sys/power/state). Instructions on setting up the kernel can also be found on that web site.
The hibernate script takes care of the user-space side of the suspend, including unloading and reloading drivers which don't suspend properly, setting the system clock after resuming, taking down and bringing up network interfaces and various other hacks that may be required on some hardware. By default, all it does is restore the system clock after suspending; see hibernate.conf(5) for information on configuring the rest of its functionality.
If the hibernate script is invoked with a name of the form hibernate-foo then it will use the configuration file /etc/hibernate/foo.conf instead of the default.
The hibernate script accepts the following command-line options:
- -h, --help
- Shows this help screen.
- Shows the Hibernate Script version.
- -f, --force
- Ignore errors and suspend anyway.
- -k, --kill
- Kill processes if needed, in order to suspend.
- -v<n>, --verbosity=<n>
- Change verbosity level (0 = errors only, 3 = verbose, 4 = debug)
- -F<file>, --config-file=<file>
- Use the given configuration file instead of the default ()
- Don't actually do anything.
- -g, --restore-grub
- Restores the grub menu to normal (use if a resume was not completed successfully) and exits the script. A suspend is not performed.
- --lock-console-as <username>
- Uses vlock to lock the entire system after resuming, requirng you to enter the password for the given user to unlock it. This overrides any username given in the configuration file. (Requires vlock)
- -n, --no-suspend
- Disables actually suspending the system. This is useful for testing the hibernate script itself.
- -r[0|1], --reboot[=<0|1>] (requires UseTuxOnIce on)
- If 0 is specified, disables rebooting after writing the image, regardless of the Reboot option in the configuration file. If 1 or omitted, will force a reboot after writing the image.
- --bug-report (requires UseTuxOnIce on)
- Gathers a bunch of information about your machine and writes it to standard output. Please attach this information along with any bug reports to the TuxOnIce mailing list.
The exit codes returned by the hibernate script are currently as follows:
- Hibernation was completed successfully.
- Hibernation was aborted due to errors from some part of the script. (eg, modules not unloading, devices or filesystems in use).
- Hibernate script was aborted by user with Ctrl+C. (This does not mean the suspend was aborted by a user by pressing Escape).
- Hibernation was aborted by a kernel problem (hibernate.log and dmesg should indicate why), or the user aborted the suspend with the Escape key.
- Contains options which influence the hibernate script's behaviour. See hibernate.conf(5) for more information.
- These directories contains "scriptlets" that provide functionality when suspending and resuming. See the SCRIPTLET-API file included with the distribution (which can be found in /usr/share/doc/hibernate on Debian systems) for information on how these work.
If you have problems with the hibernate script or TuxOnIce, the best place to ask is on the mailing list - email@example.com. You will need to subscribe to post. See http://www.tuxonice.net/lists for details.
If the suspend process itself crashes (while "Writing caches", "Reading caches", or "Copying original kernel back", etc), then the problem lies with TuxOnIce itself. See the FAQ at http://www.tuxonice.net/ for help on debugging.
This script was written by Bernard Blackham, with contributions from:
- Carsten Rietzschel (modules, bootsplash and grub scriptlets. many ideas and bugfixes)
- Cameron Patrick (many bugfixes and ideas, man page and Debian packaging)
|May 2012||Linux Hibernation|