Sice je to už starší post, ale moje řešení by mohlo někomu pomoci. čerpal jsem wiki od Archu (mimochodem velice dobře zpracovaná).
1.Provádění hibernace přes UDEV pravidla, když klesne baterka na určitou úroveň (pro sy:
vytvoříme soubor /etc/udev/rules.d/99-lowbat.rules --->
SUBSYSTEM=="power_supply", ATTR{status}=="Discharging", ATTR{capacity}=="[0-3]", RUN+="/bin/systemctl hibernate"Položka 0-3 znamená, že se bude spouštět hibernace při 0 až 3 % baterie při nezapojeném adaptéru. vyzkoušeno na několika různých HW (HP a Lenovo) a funguje na 100%.
2. Když už jsem se přehraboval na Arch Wiki tak mně tam upoutal návod na suspend-sedation - což je ve stručnosti funkce, kdy NB provede suspend (automaticky, ručně, po zavření víka - to je jedno) tak po určité době přejde NB ze stavu suspend do stavu hibernate (tedy nepotřebuje žádné napájení). Zde je zapotřebí vytvořit script:
vytvoříme soubor /lib/systemd/system-sleep/suspend-sedation.sh s následujícím obsahem:
#!/bin/bash
# Purpose: Auto hibernates after a period of sleep
# create this file /usr/lib/systemd/system-sleep/suspend-sedation.sh
# make permision chmod u+x,g+x,o+x /lib/systemd/system-sleep/suspend-sedation.sh
# Edit the "autohibernate" variable below to set the number of seconds to sleep.
lockfile=/var/run/systemd/rtchibernate.lock
curtime=$(date +%s)
# 30 min
autohibernate=1800
case $1/$2 in
pre/suspend)
# Suspending. Record current time, and set a wake up timer.
echo "Suspending until" `date -d "$autohibernate seconds"`
echo "$curtime" > $lockfile
rtcwake -m no -s $autohibernate
;;
post/suspend)
# Coming out of sleep
sustime=$(cat $lockfile)
echo -n "Back from suspend... "
rm $lockfile
# Did we wake up due to the rtc timer above?
if [ $(($curtime - $sustime)) -ge $autohibernate ]
then
# Then hibernate
echo "hibernate"
/bin/systemctl hibernate
else
echo "wake-up"
# Otherwise cancel the rtc timer and wake up normally.
rtcwake -m disable
fi
;;
esacProměnnou
autohibernate nastavíme počet vteřin po kolika má NB přejít ze stavu suspend do stavu hibernate.
Na závěr se ubezpečíme, že je script spustitelný : sudo chmod u+x,g+x,o+x /lib/systemd/system-sleep/suspend-sedation.sh
Opět vyzkoušeno na různých hardwarech HP a Lenovo a 100% funkční.
Testováno na Debianu Jessie (tedy Systemd) a jeho forcích (LMDE 2 nefunguje zde příkaz /bin/systemctl hibernate).
Pro CentOS 7 a potažmo tedy Fedoru 22 a výše je nutno změnit příkaz /bin/systemctl hibernate na /usr/bin/systemctl hibernate.
3. Ještě nutno změnit parametry v /etc/UPower/UPower.conf následovně :
UsePercentageForPolicy=true (default false)
PercentageLow=10
PercentageCritical=5
PercentageAction=1
Při 10% a 5% baterie dostaneme varování, že bude systém velmi brzo uspán na disk. Při 3% se potom provede hibernace (viz bod č.1). Těsně před samotnou hibernací nedostaneme žádnou notifikaci - podle použitého DE by se musel pozměnit /etc/udev/rules.d/99-lowbat.rules Netušíte někdo jak v Gnome 3.14 a výše poslat ze scriptu notifikaci do notifikačního centra Gnome ? Potom by to už bylo dokonalé.
Snad někomu tento návod pomůže opět více zpříjemnit práci s Linuxem
