Suspend-to-ram
Mit dem ACPI S3 Modus kann der Rechner in den Suspend-to-RAM (STR) versetzt werden.
Dabei wird der Arbeitsspeicher als einziger mit Strom versorgt. Alles andere wird ausgeschaltet.
Messungen mit einem Stromverbrauchsmessgerät haben bei meinem VDR ergeben, dass dieser im STR genauso viel Strom verbraucht wie wenn ich ihn per herunterfahren ausschalte.
PM-Utils
Für den Suspend- oder Hibernate-Modus sind die PM-Utils bei Ubuntu zuständig. Die Softwarepakete sind von vornherein bei Ubuntu installiert.
Dirverse Kernelmodule verhindern ein sauberes suspend oder hibernate. Diese müssen vorher entladen werden.
Dies können die PM-Utils von Haus aus, man muss nur wissen welche Module das sind.
Bei mir sind es nur die DVB-Kernelmodule. Es können aber noch einige andere sein. Eine kleine Auflisten dieser findet man
bei Ubuntu-Wiki.
In der Datei 00sleep_module werden diese Module angegeben.
vi /etc/pm/config.d/00sleep_module
Inhalt:
SUSPEND_MODULES="dvb_usb_dw2102 dvb_usb"
Damit PM-Utils diese Datei auch benutzen kann, machen wir diese ausführbar.
chmod a+x /etc/pm/config.d/00sleep_module
Die Kernelmodule können aber nicht entladen werden solang der VDR läuft, dafür muss dieser vorher beendet werden.
Da ich den Suspend-Modus über die vdrpoweroff.sh erreiche, wird ja vorher der VDR beendet, danach wird normalerweise ein shutdown -r now
ausgeführt. Diese Zeile habe ich ausgetauscht.
vi /usr/local/bin/vdrpoweroff.sh
Diese Zeile
sudo /sbin/shutdown -P now
einkommentieren und diese Zeile neu hinzufügen.
sudo /usr/sbin/pm-suspend
Damit der vdruser dies per sudo ausführen kann, müssen wir dies noch in der sudoers Datei angeben.
visudo
Inhalt in der letzten „VDR-Sektion“ mit einem vorangestelltem Komma hinzufügen (einfach schauen wie die anderen Zeilen aussehen:
/usr/sbin/pm-suspend
Nun können wir den VDR in den Suspend-Modus bringen. Wenn er aufwacht per BIOS-Alarm oder per Fernbedienung, dann startet dieser um ein Vielfaches schneller und lädt zum Schluss auch die Kernelmodule die er vor dem Suspend entladen hat.
Da der Suspend-Modus bekanntlich den Arbeitsspeicher mit Strom versorgt, wird der Inhalt nicht geleert und die Programme die vor dem Suspend offen waren, werden genauso nach dem Einschalten wieder angezeigt. Wir habe den VDR aber per vdrpoweroff.sh beendet.
Nun müssen wir diesen wieder scharten. Das können die PM-Utils auch.
Ich starte hier die komplette Desktopoberfläche neu, da es hier am einfachsten ist den VDR hier mit zu starten.
Dafür legen wir die Datei 10_VDR an.
vi /etc/pm/sleep.d/10_vdr
Inhalt:
#!/bin/bash #[ -f /proc/acpi/ibm/led ] || exit 0 case "$1" in hibernate|suspend) { service gdm stop ; } 2>/dev/null { service lirc stop ; } 2>/dev/null ;; thaw|resume) { service lirc start ; } 2>/dev/null { service gdm start ; } 2>/dev/null ;; *) ;; esac exit $?
Auch diese Datei machen wir ausführbar.
chmod a+x /etc/pm/sleep.d/10_vdr