Suspend2 for Linux

Suspend 2 is most easily described as the Linux equivalent of Windows’ hibernate functionality. It saves the contents of memory to disk and powers down. When the computer is started up again, it reloads the contents and the user can continue from where they left off. No documents need to be reloaded or applications reopened and the process is much faster than a normal shutdown and start up.

Suspend 2 has a long feature list, including the ability to cancel a suspend by pressing Escape, image compression to save time and space, a versatile plugin architecture, and support for machines with Highmem, preemption and SMP.

The Suspend 2 website (this one) and mailing list provide support for dealing with issues arising. An IRC channel #suspend2 has been created on irc.freenode.net, where people may be able to help you with problems.

Current Versions

Here are the latest patches against 2.6 kernel series. 2.4 patches are currently unavailable due to reports of corruption problems with the most recent 2.4 kernels.

Git Trees:

You can find up-to-the-minute git trees for a variety of kernel versions (recent stable, current git and sometimes current -mm) at kernel.org.

Older patches: Patches against older kernels are available from the SourceForge archives but again be warned that nobody will be likely to help you.

Latest News

17 January 2017: Part of core

Suspend2 has been built into the Linux core. Enterprise clients use it frequently. Even some A2Hosting reviews mention the project.

28 December 2006: What’s coming soon.

2.2.9.1 is taking a little longer than usual because Nigel has been preparing some new features. Support for building suspend2 as modules will make a come back, and there will be a new feature allowing you to resume a different image after suspending, instead of powering down. This might be useful in a lab environment, for example, allowing user sessions to be saved via suspend to disk on log out, with the system restoring an image to return to the login screen afterwards. Naturally, the normal limitations regarding having filesystems mounted in multiple filesystems will apply.

Work has also begun on adding support for suspending and resuming a cluster of computers.

20 December 2006: Git trees restored.

Git trees which were temporarily removed (see next news item) have been restored. The work at fixing the site seems to have been progressing… or maybe not, depending on when in the day you try :).

17 December 2006: Git trees on kernel.org.

Kernel.org servers are currently having great problems with load. While they wait for new hardware, I’m doing my bit to help ease the load by removing all but the branch against Linus’ current tree from the list of publically available trees. If still want access to a particular tree, please let me know and I’ll see what I can organise.

29 November 2006: Nigel’s blog.

Nigel has starting blogging, at least occasionally.

24 November 2006: 2.2.9

The 2.2.9 release is now ready. Among other things, this release contains:

* one important bug fix, which stopped some users from being able to resume.

* modifications to the algorithm we use in deciding to save pages. By default, this new version will only save read-only process (LRU really) pages in the first part of the image. This will result in smaller images, which I expect complaints over :). The behaviour can be changed – see Documentation/power/Suspend2-Changelog.txt for more details.

* Removal of bdev freezing. Recent discussions with the XFS authors have led me to believe this is no longer required. Let’s see how we go. If it is still needed, we’ll see people hitting a BUG_ON(). No filesystem corruption will result.

20 September 2006: 2.2.8

Suspend2, version 2.2.8 is ready for download. This release requires version 1.93 or later of the hibernate script, as we’ve switched from /proc/suspend2 to /sys/power/suspend2. In addition, Suspend2 now contains support for being a drop-in replacement for swsusp. The following are now valid kernel commandlines for configuring Suspend2: resume=/dev/hda1, resume=swap:/dev/hda1, resume=file:/dev/hda1 and resume2=/dev/hda1 (as well as the older variants). Out of the box, Suspend2 is configured for LZF support (if selected at kernel compile time) and no encryption.

2 July 2006: 2.2.7

The 2.2.7 release is now available. This fixes some issues with 2.2.6. The use of the console suspend/resume code caused problems for some users. There is also a fix for a freeze when eating memory.

23 June 2006: 2.2.6

Suspend2, version 2.2.6 is now available, with the main changes in this version being in the area of bug fixes and cleanups. We now have a refrigerator implementation that is much closer to vanilla. Per-workqueue freezing is also gone for the moment. Neither of these changes should affect your ability to suspend. If they do, please report the bug and I’ll seek to fix the issue quickly.

22 April 2006: 2.2.5

2.2.5 is now available. This release contains what I hope to be the last of the fixes after our switchover to using the lowlevel swsusp code. It also has more cleanups resulting from the ongoing preparation of a git tree. It’s not far away.

2 April 2006: 2.2.4

2.2.4 contains a few more fixes after the changeover to using swsusp lowlevel code. The first fixes compilation issues with less usual configurations, and the second addresses an x86_64 specific problem that caused unreliability when resuming.

1 April 2006: 2.2.3

2.2.3 is now available. This is more tweaking and bug fixing after the swsusp changeover, along with a few other cleanups from my continuing work on building a git tree.

28 March 2006: 2.2.2.1

2.2.2.1 is a quick fix. In my rush to backport the changes for a particular person, I missed some changes to Makefiles in the arch specific directories. The simplest solution is to make Suspend2 force support for swsusp, so this version of the patch does that.

28 March 2006: 2.2.2

2.2.2 is now available. This is the first release to use the swsusp lowlevel code. The net effect is a reduction in the size of the Suspend2 patch, but at the cost of greater dependence on Rafael and Pavel not making incompatible changes.

17 March 2006: 2.2.1

2.2.1 includes a slew of cleanups and some bug fixes. Nothing overly exciting, sorry 🙂

24 January 2006: 2.2

I’m pleased to announce the arrival of Suspend2 2.2. There is, as always, still more work to do, but this exclusively in the area of bug fixes (especially improving non-x86 support). I now consider Suspend2 to be feature complete, and will be focussing on preparations for seeking to merge Suspend2 into the vanilla kernel.

8 January 2006: 2.2-rc16.

rc16 is now available. AMD64 support is improved in this edition, and there are further cleanups and misellaneous bug fixes. Nothing exciting. I’m still pushing for 2.2.