Es gibt mehrere Möglichkeiten, die Arbeit am Computer zu unterbrechen – den Rechner herunterzufahren und wieder neu zu starten dauerst am längsten. Zudem stellen die Sitzungsverwaltungen von KDE und Gnome den vor dem Herunterfahren gegebenen Zustand nicht immer lückenlos wieder her: So manche Anwendung öffnet ein leeres Fenster anstatt das vorher geladene Dokument.
Oft zum Einsatz kommt indes der Ruhezustand. Linux fährt die Komponenten wie Grafikkarte, Prozessor und Festplatte so weit wie möglich in einen Energiesparmodus oder schaltet sie komplett aus. Auf Strom ist der Computer jedoch weiterhin angewiesen, da sonst der Inhalt des nicht flüchtigen Speichers verloren geht. Daher leert sich in diesem Modus ein Notebook-Akku leert zwar langsam, aber stetig. Eine stationärer PC wiederum lässt sich nicht komplett vom Stromnetz trennen, woraus ein – mitunter recht hoher – Standby-Verbrauch resultiert. Den Standby-Modus stellt Linux her, indem es das BIOS via ACPI anweist, in den Zustand S3 zu wechseln. Bei Problemen mit der ACPI-Implementation des BIOS funktioniert der Ruhezustand eventuell nicht zuverlässig.
Als Alternative dazu bietet der Standard-Kernel zwei weitere Varianten an, um den Computer in Tiefschlaf zu versetzen. Dabei sichert Linux den Speicherinhalt in eine ausreichend dimensionierte Swap-Partition. Dann stellt der Kernel entweder via ACPI den (weitestgehend) stromlosen Zustand S4 her oder schaltet das System ohne ACPI komplett ab (S5). Beim nächsten Neustart lädt der Boot-Kernel den Speicherinhalt zurück und übergibt dem damit gerade geladenen alten Kernel wieder die Kontrolle. Die "Software Suspend" genannte Implementation erledigt alle Aufgaben komplett im Kernel, während "Userspace Software Suspend" für das Speichern des Images auf ein Userspace-Programm zurückgreift und somit eine Initial RAM-Disk erfordert.
Doch neben diesen beiden Möglichkeiten existiert noch eine weitere, um den Kernel in Tiefschlaf zu versetzen: TuxOnIce [1].
Der dritte Mann
Wozu noch eine dritte Variante, wo doch alle gängigen Distributionen mindestens eine der beschriebenen Suspend-Spielarten out of the box unterstützen?
Der ausgereifte Kernel-Patch TuxOnIce, federführend vom Australier Nigel Cunningham entwickelt, arbeitet sehr schnell, lässt sich flexibel konfigurieren und bietet weitaus mehr Funktionen als die Standard-Verfahren [2]. TuxOnIce komprimiert standardmäßig den Speicherinhalt mit Hilfe des schnellem LZF-Verfahrens oder – seit der neuesten Version 3.0.1 – mit dem im Kernel enthaltenen LZO. Zudem schreibt TuxOnIce wahlweise auf mehrere Swap-Partitionen gleichzeitig oder in eine Datei und speichert fast den gesamten Speicherinhalt inklusive der Caches. So ist der Computer nach dem Aufwachen sofort mit voller Geschwindigkeit einsatzfähig.
TuxOnIce ersetzt den Software-Suspend-Mechanismus im Kernel wahlweise komplett und integriert sich so in die Tiefschlaf-Mechanismen der Desktop-Umgebung. Alternativ steuert das fein konfigurierbare Skript hibernate.sh das Einschlafen und Aufwachen. Wer möchte, installiert sich die obendrein ein User-Interface mit Fortschrittsanzeige, das es erlaubt, einen laufenden Tiefschlaf-Vorgang mit [Esc] abzubrechen. Davon gibt es eine Text-Variante sowie grafische Usplash- [3] und Fbsplash-Versionen [4].
Streit um TuxOnIce
TuxOnIce wickelt den kompletten Tiefschlaf-Prozess im Kernel ab. Der Patch-Autor Nigel Cunningham argumentiert, nur so lasse sich die Funktion zuverlässig implementieren. Dagegen gaben Rafael Wysocki, Pavel Machek und andere etablierte Kernel-Entwickler lange Zeit der Userspace-Variante den Vorzug und weigerten sich beharrlich, TuxOnIce zu integrieren.
Nach einem erneuten Versuch Cunninghams, TuxOnIce in den Standard-Kernel zu bekommen [11], zeichnet sich seit Anfang Mai 2009 ein Wandel ab: Zwar lehnen Machek und Wysocki es weiterhin ab, den gesamten Patch auf einmal aufzunehmen. Es besteht aber mittlerweile eine gewisse Bereitschaft, inkrementelle Verbesserungen an der Kernel-Implementation zu akzeptieren und auf die Userspace-Variante zu verzichten.
Möchten Sie TuxOnIce einsetzen, dann brauchen Sie dazu einen angepassten Kernel. Für Ubuntu und Fedora gibt es dazu bereits fertige Kernel-Pakete.
Installation unter Fedora
Für Fedora bietet das Repository Atrpms perfekt integrierte Pakete [5]. Um es einzubinden, erzeugen Sie die Datei /etc/yum.repos.d/atrpms.repo mit dem Inhalt aus Listing 1. Anschließend führen Sie yum install kernel-tuxonice pm-utils-tuxonice aus.
# /etc/yum.repos.d/atrpms.repo [atrpms] name=Fedora Core $releasever - $basearch - ATrpms baseurl=http://dl.atrpms.net/f$releasever-$basearch/atrpms/stable gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms gpgcheck=1
Nun ermitteln Sie mittels swapon -s die Swap-Partition und fügen den entsprechenden Device-Namen in der Datei /boot/grub/menu.lst in der kernel-Zeile für den TuxOnIce-Kernel als Option resume=/dev/Swap-Device
hinzu. Für die grafische Fortschrittsanzeige fügen Sie noch die Option vga=0x317 ein – weitere Modi listet fb/vesafb.txt aus der Kernel-Dokumentation.
Jetzt starten Sie neu und prüfen anschließend mit cat /sys/power/tuxonice/resume, ob der TuxOnIce-Kernel läuft und die richtige Resume-Partition eingestellt ist. Zeigt cat /sys/power/tuxonice/replace_swsusp eine 1 ersetzt TuxOnIce das originale Software-Suspend komplett.
Für einen ersten Einschlaf-Versuch melden Sie sich von der grafischen Oberfläche ab, wechseln mit [Strg]+[Alt]+[F2] auf eine Konsole, melden sich dort als Root an und führen sync; echo disk > /sys/power/state aus. Klappt alles, probieren Sie den Suspend von der grafischen Oberfläche aus. Wählen Sie unter KDE beispielsweise Ruhezustand (auf Festplatte) aus dem Kickoff-Menü. In anderen Oberflächen sind Bezeichnungen wie Tiefschlaf oder Hibernate gängig.



