Hibernate and suspend work well with the default settings, but hardly seems to be necessary when openSuSE can have Firefox running from cold-start/boot in thirty-two seconds (Lubuntu/Ubuntu in less than twenty seconds). Recovering from hibernation from a swap parition on the internal IDE takes about thirty seconds, which is the same as Windows 7. Resuming from hibernation from a swap partition on the SSD requires fifteen seconds (to reach the screensave/screenlock screen, another few seconds to enter the password). Recovering from a swap file (not partition) on the SSD takes openSuSE about twenty-five seconds, not much of an improvement.
Lots of work is required to get openSuSE to boot from a swap-file (rather than partition) on the SSD.
Instructions on how to create a swapfile is included in openSuSE's own help documentation, under the `Partition' section -- Reference -- Advanced Disk Setup. The openSuSE web-page pm-utils is also helpful. My existing swap partition could be disabled through the Partition tool, so that the swap partition is not mounted as a swap partition during boot. The UUID of the partition containing the swap file, and the swap file `offset' needs to be added to the kernel boot parameters. In my case...
The UUID of the partition containing the swapfile can be found by `ls -l /dev/disk/by-uuid'.
The swap offset can be found by the command `swap-offset /home/myswapfile'.
The default hibernation program (uswsusp, the user-space version of swsusp) does not work with swap files, and so needs to be changed. I notice that some versions of uswsusp do work with swap files, so this change may not be required in future.
Create a file `/etc/pm/config.d/config'
# kernel The built-in kernel suspend/resume support.
# Use this if nothing else is supported on your system.
# uswsusp If your system has support for the userspace
# suspend programs (s2ram/s2disk/s2both), then use this.
# tuxonice If your system has support for tuxonice, use this.
# The system defaults to kernel if this is commented out. (!!not true?? - uswsusp appears to be the default for openSuSE 11.3)
resume offset = 3581952
I notice that /etc/suspend.conf contains the intriguing option `thread=', but it doesn't improve resume from hibernation time by much (still about twenty-five seconds).