The Red Hat specific script I think depends on using runlevel 4 for
"suspend" mode, and runlevel 5 for normal operation. You would need to use
"init 4" to put your computer to sleep.... not perfect but works.
Attached is the script that was posted to the acpi-devel list.
----- Original Message -----
From: "Michael Ableyev" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Saturday, July 20, 2002 5:42 PM
Subject: Re: [luau] pcmcia network cards and apm
> Nope, Slackware doesn't have runlevels. But perhaps I was asking the wrong
question.
> Do you know how to run a script when coming back from suspend?
>
#!/bin/bash
#
# ACPI Suspend by <[EMAIL PROTECTED]>
# Based on rc.sysinit and rc.halt from Red Hat Linux 7.3
#
# chkconfig: 4 00 00
# description: Prepare the system for suspended mode using ACPI
# Source functions
.. /etc/init.d/functions
if [ -f /etc/sysconfig/clock ]; then
. /etc/sysconfig/clock
fi
revive() {
# Set the system clock.
ARC=0
SRM=0
UTC=0
if [ -f /etc/sysconfig/clock ]; then
# convert old style clock config to new values
if [ "${CLOCKMODE}" = "GMT" ]; then
UTC=true
elif [ "${CLOCKMODE}" = "ARC" ]; then
ARC=true
fi
fi
CLOCKDEF=""
CLOCKFLAGS="$CLOCKFLAGS --hctosys"
case "$UTC" in
yes|true)
CLOCKFLAGS="$CLOCKFLAGS --utc";
CLOCKDEF="$CLOCKDEF (utc)";
;;
no|false)
CLOCKFLAGS="$CLOCKFLAGS --localtime";
CLOCKDEF="$CLOCKDEF (localtime)";
;;
esac
case "$ARC" in
yes|true)
CLOCKFLAGS="$CLOCKFLAGS --arc";
CLOCKDEF="$CLOCKDEF (arc)";
;;
esac
case "$SRM" in
yes|true)
CLOCKFLAGS="$CLOCKFLAGS --srm";
CLOCKDEF="$CLOCKDEF (srm)";
;;
esac
/sbin/hwclock $CLOCKFLAGS
action $"Setting clock $CLOCKDEF: `date`" date
# Initialize USB controller and HID devices
usb=0
if ! grep -iq "nousb" /proc/cmdline 2>/dev/null && ! grep -q "usb"
/proc/devices 2>/dev/null ; then
action $"Reinitializing USB: " true
aliases=`/sbin/modprobe -c | awk '/^alias usb-controller/ { print $3 }'`
if [ -n "$aliases" -a "$aliases" != "off" ] ; then
modprobe usbcore
action $"Mounting USB filesystem: " mount -t usbdevfs usbdevfs
/proc/bus/usb
for alias in $aliases ; do
[ "$alias" != "off" ] && action $"Initializing USB controller
($alias): " modprobe $alias
done
[ $? -eq 0 -a -n "$aliases" ] && usb=1
fi
fi
if ! grep -iq "nousb" /proc/cmdline 2>/dev/null && grep -q "usb"
/proc/devices 2>/dev/null ; then
usb=1
fi
needusbstorage=
if [ $usb = "1" ]; then
sleep 5
mouseoutput=`cat /proc/bus/usb/devices 2>/dev/null|grep -E
"^I.*Cls=03..*Prot=02"`
kbdoutput=`cat /proc/bus/usb/devices 2>/dev/null|grep -E
"^I.*Cls=03.*Prot=01"`
needusbstorage=`cat /proc/bus/usb/devices 2>/dev/null|grep -e
"^I.*Cls=08"`
if [ -n "$kbdoutput" ] || [ -n "$mouseoutput" ]; then
action $"Initializing USB HID interface: " modprobe hid 2> /dev/null
fi
if [ -n "$kbdoutput" ]; then
action $"Initializing USB keyboard: " modprobe keybdev
fi
if [ -n "$mouseoutput" ]; then
action $"Initializing USB mouse: " modprobe mousedev
fi
fi
# Enter (potentially) /proc/bus/usb into mtab.
#[ -d /proc/bus/usb ] && mount -f -t usbdevfs usbdevfs /proc/bus/usb
# Load usb storage here, to match most other things
if [ -n "$needusbstorage" ]; then
modprobe usb-storage >/dev/null 2>&1
fi
}
snooze() {
# Sync the system clock.
ARC=0
SRM=0
UTC=0
if [ -f /etc/sysconfig/clock ]; then
# convert old style clock config to new values
if [ "${CLOCKMODE}" = "GMT" ]; then
UTC=true
elif [ "${CLOCKMODE}" = "ARC" ]; then
ARC=true
fi
fi
CLOCKDEF=""
CLOCKFLAGS="$CLOCKFLAGS --systohc"
case "$UTC" in
yes|true)
CLOCKFLAGS="$CLOCKFLAGS -u";
CLOCKDEF="$CLOCKDEF (utc)";
;;
no|false)
CLOCKFLAGS="$CLOCKFLAGS --localtime";
CLOCKDEF="$CLOCKDEF (localtime)";
;;
esac
case "$ARC" in
yes|true)
CLOCKFLAGS="$CLOCKFLAGS -A";
CLOCKDEF="$CLOCKDEF (arc)";
;;
esac
case "$SRM" in
yes|true)
CLOCKFLAGS="$CLOCKFLAGS -S";
CLOCKDEF="$CLOCKDEF (srm)";
;;
esac
action $"Syncing hardware clock to system time" /sbin/hwclock $CLOCKFLAGS
[ -d /proc/bus/pccard ] && \
action $"Unloading PCMCIA modules" /sbin/modprobe -r pcmcia_core
if [ -d /proc/bus/usb ] ; then
umount /proc/bus/usb
mods=`cat /proc/modules | sed -e '/(unused)/d' -e '/^[^ ]*usb/!d' -e
's/^\([^ ]*usb[^ ]*\) .*\[\([^]]*\)\]/\1 \2/'`
action $"Unloading USB modules: " \
/sbin/modprobe -r $mods
grep usb /proc/modules
fi
if [ -f /sleep ] ; then
action $"Suspending system" true
cat /sleep >/proc/acpi/sleep
else
action $"Sleep state not specified (/sleep)" false
fi
revive
[ -n "$PREVLEVEL" ] && \
action $"Restoring initial runlevel" /sbin/init $PREVLEVEL
}
case "$1" in
start|snooze)
snooze
;;
stop|revive)
echo $"I'm awake already!"
;;
*)
echo $"Usage: $prog {start|snooze|stop|revive}"
exit 1
esac
exit 0