You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

99 lines
2.9 KiB

#!/bin/sh
# prepare parameters for ToI
. /lib/dracut-lib.sh
info "TuxOnIce premodule started"
# first check if ToI support is available
if [ ! -d /sys/power/tuxonice ]; then
info "Kernel has no tuxonice support, aborting"
return 0
else
info "Kernel has tuxonice support, continuing"
fi
if getarg noresume2; then
warn "noresume2 was specified, aborting"
return 0
fi
# prepare UserUI
info "Setting up UserUI"
UI="/sbin/tuxoniceui"
UIOPTS=""
if [ -e "/sys/class/graphics/fb0/state" -a -e "/etc/splash/tuxonice/" ]; then
UIOPTS="$UIOPTS -f"
fi
SYSFS_TUI_UI=/sys/power/tuxonice/user_interface
PROGRAM_PATH=${SYSFS_TUI_UI}/program
ENABLED_PATH=${SYSFS_TUI_UI}/enabled
if [ -e "$UI" ] && [ -e "$PROGRAM_PATH" ] && [ -e "$ENABLED_PATH" ]; then
info "Using $UI with $UIOPTS"
echo "$UI $UIOPTS" >$PROGRAM_PATH
echo 1 >$ENABLED_PATH
else
if [ -e "$ENABLED_PATH" ]; then
echo 0 >$ENABLED_PATH
fi
fi
# install udev rule for resume parameter
if resume=$(getarg resume=) && ! getarg noresume2; then
resume="${resume#file:}"
resume="${resume#swap:}"
resume="${resume%:*}"
else
unset resume
fi
info "Installing udev rule for resume parameter"
case "$resume" in
LABEL=*) \
resume="$(echo $resume | sed 's,/,\\x2f,g')"
{
echo "SUBSYSTEM==\"block\", ACTION==\"add|change\", ENV{ID_FS_LABEL}==\"${resume#LABEL=}\", " \
" RUN+=\"/sbin/tuxonice-resumecheck.sh '/dev/%k' 'resume'\"";
} >> /etc/udev/rules.d/99-tuxonice.rules
;;
UUID=*) \
{
echo "SUBSYSTEM==\"block\", ACTION==\"add|change\", ENV{ID_FS_UUID}==\"${resume#UUID=}\", " \
" RUN+=\"/sbin/tuxonice-resumecheck.sh '/dev/%k' 'resume'\"";
} >> /etc/udev/rules.d/99-tuxonice.rules
;;
PARTUUID=*) \
{
echo "SUBSYSTEM==\"block\", ACTION==\"add|change\", ENV{ID_PART_ENTRY_UUID}==\"${resume#PARTUUID=}\", " \
" RUN+=\"/sbin/tuxonice-resumecheck.sh '/dev/%k' 'resume'\"";
} >> /etc/udev/rules.d/99-tuxonice.rules
;;
*) \
{
echo "SUBSYSTEM==\"block\", ACTION==\"add|change\", SYMLINK==\"${resume#/dev/}\", " \
" RUN+=\"/sbin/tuxonice-resumecheck.sh '/dev/%k' 'resume'\"";
} >> /etc/udev/rules.d/99-tuxonice.rules
{
echo "SUBSYSTEM==\"block\", ACTION==\"add|change\", KERNEL==\"${resume#/dev/}\", " \
" RUN+=\"/sbin/tuxonice-resumecheck.sh '/dev/%k' 'resume'\"";
} >> /etc/udev/rules.d/99-tuxonice.rules
;;
esac
# install udev rule for resuming
info "Installing udev rule for ToI resume"
{
echo "SUBSYSTEM==\"block\", ACTION==\"add|change\", ENV{ID_FS_TYPE}==\"suspend|swsuspend|swsupend\", " \
" RUN+=\"/sbin/tuxonice-resumecheck.sh '/dev/%k' 'suspend'\"";
} >> /etc/udev/rules.d/99-tuxonice.rules
# install udev rule to add swapdevice as hibernation target
info "Installing udev rule for ToI swap detection"
{
echo "SUBSYSTEM==\"block\", ACTION==\"add|change\", ENV{ID_FS_TYPE}==\"swap\", " \
" RUN+=\"/sbin/tuxonice-resumecheck.sh '/dev/%k' 'swap'\"";
} >> /etc/udev/rules.d/99-tuxonice.rules