slackware-current/source/ap/pm-utils
Patrick J Volkerding b76270bf9e Slackware 13.1
Wed May 19 08:58:23 UTC 2010
Slackware 13.1 x86_64 stable is released!
Lots of thanks are due -- see the RELEASE_NOTES and the rest of the
ChangeLog for credits.  The ISOs are on their way to replication,
a 6 CD-ROM 32-bit set and a dual-sided 32-bit/64-bit x86/x86_64 DVD.
We are taking pre-orders now at store.slackware.com, and offering
a discount if you sign up for a subscription.  Consider picking up
a copy to help support the project.  Thanks again to the Slackware
community for testing, contributing, and generally holding us to a
high level of quality.  :-)
Enjoy!
2018-05-31 22:43:05 +02:00
..
pm-utils.SlackBuild Slackware 13.1 2018-05-31 22:43:05 +02:00
pm-utils.url Slackware 13.0 2018-05-31 22:41:17 +02:00
README.SLACKWARE Slackware 13.1 2018-05-31 22:43:05 +02:00
slack-desc Slackware 13.0 2018-05-31 22:41:17 +02:00

README.SLACKWARE
20100319 - rworkman@slackware.com

===============================================================================
PLEASE READ THIS ENTIRE FILE BEFORE REPORTING PROBLEMS OR ASKING FOR HELP!
===============================================================================

One of these routines should tell you whether any of the operations
are supported by your current kernel/userspace at all:

  for i in hibernate suspend suspend-hybrid ; do
    pm-is-supported --$i \
      && echo "$i is supported" \
      || echo "$i is not supported" ;
  done

  *OR*

  cat /sys/power/state

Assuming they are supported, running "pm-suspend" as root should do a suspend
to ram, and "pm-hibernate" should suspend to disk. Note that you must have a 
swap partition (or file, but partition is easier) which is large enough 
(2x ram is good here) and the relevant initrd lines and such for this to work. 
If you're not familiar with all of that, don't test pm-hibernate.
I don't have hardware which supports suspend-hybrid, so I have no idea if/how
it works at all.

Here's the short version of using suspend to disk:

Stanza in /etc/lilo.conf should look something like this:
  image = /boot/vmlinuz-generic-smp-2.6.33.1-smp
    initrd = /boot/initrd.gz
    append = "resume=/dev/sda2"
    root = /dev/sda1
    label = genericsmp.s
    read-only

/etc/mkinitrd.conf should look something like this:
  MODULE_LIST="jfs"
  ROOTDEV="/dev/sda1"
  ROOTFS="jfs"
  RESUMEDEV="/dev/sda2"

mkinitrd command invocation would be this:
  mkinitrd -c -k 2.6.33.1-smp -F

All of the above assumes at least a cursory understanding of what those
commands and parameters do. If it's not clear, don't attempt it on a
system that you can't easily reinstall without concern.

==============================================================================

Once you confirm that a suspend and resume cycle works as expected, you might
automate the process with some acpi magic, but a better option is to use the 
power manager daemon included with your choice of desktop environment (both 
kde and xfce have one).

==============================================================================

/* TODO: these links are now dead.  That's mostly okay, because the vast 
   majority of the hardware out there these days doesn't require any quirks
   at all any more.  Hopefully you won't be in the minority :-) */

If it doesn't work by default for you, consider having a look at
  http://people.freedesktop.org/~hughsient/quirk/quirk-suspend-index.html
for some debugging hints.  Pay particular attention to this page:
  http://people.freedesktop.org/~hughsient/quirk/quirk-suspend-try.html

If you are able to get your machine to suspend/resume correctly by passing
additional quirks on the command line, then I would like to know about it so
that upstream hal-info can get the correct information to use.  Please email
the make/model and other relevant information about your machine along with
the full output of "lshal" and "lspci" attached, and what extra quirks you
needed to add for successful suspend/resume to rworkman@slackware.com

==============================================================================

If you need the system to do certain operations before going to sleep and
then undo them (or perhaps do something new) when waking back up, pm-utils
supports something called "hooks."  The hooks installed by packages (not only
pm-utils itself) should be in /usr/lib(64)/pm-utils/sleep.d/, while any hooks 
installed by the local system administrator (e.g. things that are only an
issue on that one machine) should be in /etc/pm/sleep.d/.

Looking at some of the existing hooks should give you a decent idea of their
capabilities; as a head start, the functions used in the hooks are declared 
in /usr/lib(64)/pm-utils/functions, which is inherited elsewhere by 
/usr/lib(64)/pm-utils/pm-functions.  Note that an error exit code on any hook
will cause the sleep operation to fail, so if you don't care whether your
hook executes successfully, be sure to return an exit code of 0 (success) if
you don't want the suspend operation to fail.  Some other exit codes are 
also available; none of these will cause the suspend to fail:
  $NA (not applicable), $NX (hook not executable), and $DX (hook disabled)

One way to contribute to pm-utils indirectly is by writing and sending any
needed hooks scripts to upstream projects; as an example, the hook that 
ships with wicd was contributed by me.  Ideally, the pm-utils package should
have a very minimum number of hooks shipped with it, as they should ship with
the package to which the hook pertains; for example, the grub package would
ship its own hook.

==============================================================================

KNOWN ISSUES

/* TODO: remove?  I've gotten *zero* mails about either of these since
         we've been shipping pm-utils */

****  If you encounter either of these, mail rworkman@slackware.com ****

If your alsa drivers don't correctly save and restore state across a sleep /
resume cycle (due to a buggy driver), then you will need to add the drivers
to a custom file named /etc/pm/config.d/defaults (create the file if it does
not exist already) in a variable named "SUSPEND_MODULES" - see the file at
/usr/lib(64)/pm-utils/defaults for proper format.

The /usr/lib(64)/pm-utils/sleep.d/90clock does not run by default.  It added
over a second to suspend, and the vast majority of hardware does not need it 
to keep the clocks in sync.  If you need this hook, you can set the 
NEED_CLOCK_SYNC environment variable in a custom /etc/pm/config.d/defaults 
file. 

==============================================================================