parent
5bb01b2d36
commit
1cf38168ef
@ -0,0 +1,24 @@
|
||||
#!/bin/bash
|
||||
|
||||
install() {
|
||||
# install userui
|
||||
inst tuxoniceui || true
|
||||
|
||||
# install splash graphics if exists
|
||||
my_inst_dir() {
|
||||
inst_dir $1
|
||||
for i in $1/*; do
|
||||
if [ -d "$i" ]; then
|
||||
my_inst_dir "$i"
|
||||
else
|
||||
inst "$i"
|
||||
fi
|
||||
done
|
||||
}
|
||||
[ -e /etc/splash/tuxonice ] && my_inst_dir /etc/splash/tuxonice
|
||||
[ -e /etc/splash/suspend2 ] && my_inst_dir /etc/splash/suspend2
|
||||
|
||||
inst_hook pre-udev 30 "$moddir/tuxonice-prepare.sh"
|
||||
inst_hook pre-mount 30 "$moddir/tuxonice-lvmfix.sh"
|
||||
inst "$moddir"/tuxonice-resumecheck.sh /sbin/tuxonice-resumecheck.sh
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
#!/bin/sh
|
||||
# fixes an asynchronous problem with lvm/dracut while resuming
|
||||
# for details see https://bugzilla.redhat.com/show_bug.cgi?id=830447
|
||||
|
||||
. /lib/dracut-lib.sh
|
||||
info "TuxOnIce lvmfix started"
|
||||
|
||||
udevadm settle --timeout=30
|
||||
|
||||
info "TuxOnIce udev should be now fully settled"
|
||||
|
||||
return 0
|
||||
|
@ -0,0 +1,99 @@
|
||||
#!/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
|
||||
warn "$UI is not available"
|
||||
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
|
||||
|
@ -0,0 +1,18 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ "$2" = "suspend" ]; then
|
||||
echo "<3>Dracut: found ToI/suspend signature in $1, trying to resume" > /dev/kmsg
|
||||
OLDDEV=$(cat /sys/power/tuxonice/resume)
|
||||
echo "swap:$1" >/sys/power/tuxonice/resume
|
||||
echo 1 >/sys/power/tuxonice/do_resume
|
||||
echo "<3>Dracut: no resume operation occured, restoring old value ($OLDDEV)" >/dev/kmsg
|
||||
echo "$OLDDEV" >/sys/power/tuxonice/resume
|
||||
elif [ "$2" = "swap" ]; then
|
||||
echo "<3>Dracut: found swap signature in $1, using for ToI" > /dev/kmsg
|
||||
CURDEV=$(cat /sys/power/tuxonice/resume)
|
||||
[ -z "$CURDEV" ] && echo "swap:$1" >/sys/power/tuxonice/resume
|
||||
elif [ "$2" = "resume" ]; then
|
||||
echo "<3>Dracut: found resume parameter device in $1, trying to resume" > /dev/kmsg
|
||||
echo 1 >/sys/power/tuxonice/do_resume
|
||||
echo "<3>Dracut: no resume operation occured" >/dev/kmsg
|
||||
fi
|
Loading…
Reference in new issue