Kernel patchen

Auf der Heft-CD finden Sie den Patch der Version 2.0.0.105 für Kernel 2.6.8.1 in der Datei software-suspend-2.0.0.105-for-2.6.8.1.tar.bz2. Auch Version 2.0.0.109 liegt im selben Verzeichnis, aber in unseren Tests erwies sich 2.0.0.105 als weniger problematisch. Auf Grund der hohen Entwicklungsgeschwindigkeit kann sich ein Blick nach neuen Versionen auf die Download-Seite lohnen. Auch ältere Patches sind hier noch zu finden.

Zudem finden Sie dort das Paket Hibernate, das Konfigurationsdateien sowie das Skript hibernate, das den Schlafzustand auslöst, enthält. Installieren Sie es als root mit rpm -Uvh hibernate-0.98-1.i386.rpm, unter Debian verwenden Sie dpkg -i hibernate_0.98-1_all.deb.

Die aktuellen Kernel-Quellen der Version 2.6.8.1 liegen auf der Heft-CD im Pfad LinuxUser/kernel-2.6.8.1. Wechseln Sie als root ins Verzeichnis /usr/src/ und entpacken Sie zunächst den Kernel mit tar xjf linux-2.6.8.1.tar.bz2. Dann folgt der swsusp2-Patch mit tar xjf software-suspend-2.0.0.105.tar.bz2.

Nun erweitern Sie den Original-Kernel um den Patch. Wechseln Sie ins Verzeichnis /usr/src/linux-2.6.8.1/ und geben Sie den Befehl ../software-suspend-2.0.0.105-for-2.6.8.1/apply ein. Das Skript bietet die Möglichkeit, einige Extras zu verwenden. Diese benötigen Sie meist nicht, so dass Sie die verneinende Voreinstellung mit [Enter] beibehalten. Läuft alles nach Plan, erhalten Sie folgende Ausgabe:

/usr/src/linux-2.6.8.1 # ../software-suspend-2.0.0.105-for-2.6.8.1/apply
Apply KDB patches (for serious debugging capabilities) [yN]?
Apply Bootsplash patches (includes bootsplash.org patch) [yN]?
Apply Win4Lin support patches [yN]?
Applying 20-software-suspend-linux-2.6.8.1-rev1-whole …
Applying 21-software-suspend-linux-2.6.8.1-rev2-incremental …
Applying 21-software-suspend-linux-2.6.8.1-rev3-incremental …
Applying 30-software-suspend-core-2.0.0.104-whole …
Applying 31-software-suspend-core-2.0.0.105-incremental …
All happy!

Als nächstes konfigurieren Sie Ihren neuen Kernel. Um von der aktuell verwendeten Einstellungen auszugehen, kopieren Sie die Konfigurationsdatei des aktuell verwendeten Kernels ins neue Kernel-Verzeichnis mit cp /boot/config-X /usr/src/linux-2.6.8.1/.config. Dabei ersetzen Sie das X durch den Namen Ihrer Kernel-Version.

Anschließend passen Sie die Konfiguration Ihren Wünschen an. Haben Sie das Paket ncurses-devel bzw. ncurses-dev installiert, bringt Sie das Kommando make menuconfig in die textmenügeführte Konfigurationsoberfläche. Mit den Pfeiltasten und [Enter] navigieren Sie durch die einzelnen Punkte. Wählen Sie den Menüpunkt Power management options (ACPI, APM) aus und deaktivieren Sie dort die Einträge Software Suspend (EXPERIMENTAL) und Suspend-to-Disk Support mit der Taste [n]; sie stehen für die beiden anderen Software-Suspend-Systeme.

Darunter finden Sie das Menü Software Suspend 2. Mit [y] aktivieren Sie hier die Punkte Software Suspend 2, Swap Writer, LZF image compression, Text mode console support und Compile in debugging output. Die letzte Option ermöglicht ausführlichere Debugging-Ausgaben (Kasten 1), das hilft bei der Fehlersuche. Möchten Sie keine weiteren Änderungen vornehmen, verlassen Sie durch dreimaliges [Alt+e] die Kernelkonfiguration.

Abbildung 2: Die Kernel-Konfiguration für Software Suspend 2.

Den konfigurierten Kernel kompilieren Sie nun mit dem Aufruf make bzImage && make modules modules_install. Je nach Prozessorgeschwindigkeit und Konfiguration dauert dies bis zu einigen Stunden. Den neuen Kernel kopieren Sie danach ins /boot/-Verzeichnis: cp arch/i386/boot/bzImage /boot/vmlinuz-suspend2.

Mit mkinitrd erstellen Sie eine zum neuen Kernel passende Initial Ramdisk, es sei denn Sie haben alle zum Lesen des Wurzeldateisystems benötigten Treiber fest in den Kernel kompiliert.

Um den neuen Kernel zu starten, fügen Sie dem Boot-Loader einen neuen Eintrag hinzu, im Falle von Grub tragen Sie folgende Zeilen in die Datei /boot/grub/menu.lst ein, dabei passen Sie die Partitionen Ihrem System an:

title           SuSE Linux - Software Suspend 2.0.0.105
kernel          (hd0,1)/boot/vmlinuz-suspend2 root=/dev/hda2 vga=791 resume2=swap:/dev/hda6
initrd          (hd0,1)/boot/initrd-suspend2

Unser Beispiel verwendet die Partition /dev/hda2 als Wurzeldateisystem. In der Grub-Sprache heißt sie hd0,1: hd0 steht für die erste Festplatte, also hda, und die 1 hinter dem Komma für die zweite Partition, also hda2. Als Swap-Partition verwenden wir hier /dev/hda6. Den Namen des Menüeintrags haben wir an die Suse-Konventionen angelehnt, hier steht Ihnen in der title-Zeile die Wahl frei. Damit finden Sie beim nächsten Neustart den Eintrag SuSE Linux - Software Suspend 2.0.0.105 in Ihrem Boot-Menü, mit dem Sie den neuen Kernel booten.

Konfiguration des Hibernate-Scripts

Damit Software Suspend 2 richtig funktioniert, werfen Sie einen Blick in die Konfigurationsdatei des Hibernate-Skripts unter /etc/hibernate/hibernate.conf. Die Voreinstellung stimmt in den meisten Fällen, folgende Zeilen sollten Sie aber hinzufügen:

RestartServices hotplug
StopServices alsasound
StartServices aumix
LeaveXBeforeSuspend yes

Die Zeile RestartServices hotplug bewirkt, dass das Hibernate-Skript vor dem Suspend den Hotplug-Service stoppt und nach dem Resume wieder startet; damit funktionieren auch USB-Maus und -Tastatur anschliessend wieder problemlos. Die beiden folgenden Zeilen stoppen das Sound-System vor dem Suspend und stellen die Lautstärkeeinstellungen nach dem Resume wider her. LeaveXBeforeSuspend schließlich veranlasst das System, vor dem Suspend auf eine Textkonsole und anschließend wieder in den Grafikmodus zu wechseln. Unsere Tests zeigten andernfalls zahlreiche Probleme mit der Fensterdarstellung und der Tastatur.

Nach diesen Vorarbeiten bereiten Sie das System nun auf den ersten Test vor: Wechseln Sie in den Single-User-Modus mit init 1. Zum Einleiten des Suspend-Modus dient der Befehl hibernate. Funktioniert alles wie gewünscht, finden Sie das System nach dem Resume wieder im selben Zustand wieder wie zuvor. Danach starten Sie hibernate wie bei den anderen Suspend-Systemen beschrieben zunächst im Multi-User-Modus ohne grafische Oberfläche und anschließend mit ihr.

Abbildung 3: Der Start von Software Suspend 2.

Kasten 1: Troubleshooting – wenn Software Suspend nicht funktioniert

Verschiedene Probleme können das Funktionieren von Software Suspend behindern, die meisten hängen nicht vom verwendeten System ab.

Bricht der Suspend-Vorgang ab oder bleibt gar das System stehen, überprüfen Sie, wenn nötig nach einem Neustart, mit Hilfe des Befehls free, ob auf Ihrer Swap-Partition genügend Platz frei ist:

simon@thinkpad:~$ free
             total       used       free     shared    buffers     cached
Mem:        386660     304692      81968          0       4316     171636
-/+ buffers/cache:     128740     257920
Swap:       975200        128     975072

Hier zeigt die letzte Zeile, dass auf der Swap-Partition noch etwa 975 MByte freier Platz zur Verfügung steht. Liegt das Problem nicht im mangelnden Speicherplatz, überprüfen Sie in den Boot-Parametern, ob Sie unter resume die richtige Partition eingetragen haben.

Nach einem fehlgeschlagenen Resume-Versuch, kann das System die Swap-Partition möglicherweise nicht mehr initalisieren; dann taucht sie in der free-Liste nicht auf. Um Ihre Swap-Partition erneut zu formatieren und zu reaktivieren verwenden Sie die Befehle mkswap /dev/hdaX und anschließend swapon /dev/hdaX.

Eine andere Fehlerquelle können Hardware-nahe Kernel-Module darstellen. Um sie ausfindig zu machen, wechseln Sie mit init 1 in den Single-User-Modus. Lassen Sie sich mit lsmod alle geladenen Module anzeigen und entfernen Sie mit modprobe -r möglichst viele davon. Insbesondere die Sound-, USB- und AGP-Module bereiten des Öfteren Probleme.

Hinweise auf die Fehlerquelle erkennen Sie häufig auch an der Ausgabe des Befehls dmesg nach einem erfolglosen Suspend-Versuch.

Bleibt Software Suspend 2 hängen, wenn die Fortschrittsanzeige (Abbildung 3) bereits auf dem Bildschirm zu sehen ist, bricht die [Esc]-Taste den Vorgang oft noch erfolgreich ab und bringt Sie zurück ins laufende System. Lässt sich an der Ausgabe von dmesg kein Fehler erkennen, aktivieren Sie die eingebauten Debugging-Funktionen:

thinkpad:~# cd /proc/software_suspend
thinkpad:/proc/software_suspend# echo 3 > default_console_level
thinkpad:/proc/software_suspend# echo 1 > log_everything
thinkpad:/proc/software_suspend# echo 7 > debug_sections
thinkpad:/proc/software_suspend# echo 1 > pause_between_steps

Anschließend starten Sie den Suspend-Vorgang erneut mit

sync && echo 1 > /proc/software_suspend/activate

Nun erhalten Sie eine ausführliche Bildschirmausgabe, jeden Schritt bestätigen Sie mit der Leertaste. Mit der individuellen Fehlermeldung gewappnet, suchen Sie auf der swsusp2-Homepage [2] unter den häufig gestellten Fragen (FAQ), im Wiki, den Archiven der Mailing-Listen und der restlichen Dokumentation nach Lösungswegen.

Funktioniert Software Suspend zwar im Single-User-Modus, aber nicht in dem Runlevel, den Sie gewöhnlich verwenden, verschuldet dies häufig ein bestimmter Dienst. Um den Missetäter zu erkennen, stoppen Sie vor einem Suspend-Versuch zunächst einen verdächtigen Dienst z. B. mit /etc/init.d/alsa stop. Hilft der erste Test nichts, stoppen Sie weitere Dienste einzeln und starten Sie jeweils wieder den Suspend-Modus, bis Sie wissen, wer das Missgelingen zu verantworten hatte.

Lässt sich kein Dienst finden, der das Software Suspend verhindert, liegt es stattdessen möglicherweise an einem Kernel-Modul. Lassen Sie sich mit lsmod alle geladenen Module anzeigen und entfernen Sie als root mit rmmod Modulname eines nach dem anderen.

Wenn eine bestimmte Hardware, beispielsweise Sound-Karte oder USB-Geräte nach dem Aufwachen nicht mehr funktioniert, stoppen Sie es manuell schon vor dem Suspend: Stoppen Sie als root den zuständigen Dienst und entladen Sie das dazugehörige Kernel-Modul. Nach dem Aufwachen starten Sie den gewünschten Dienst oder laden das Modul mit modprobe wieder in den Speicher. Lässt sich ein Modul nach dem Aufwachen nicht mehr laden, führt es in manchen Fällen zum Erfolg, es statt als Modul fest in den Kernel einzukompilieren.

Bei Software Suspend 2 hilft manchmal ein Umstieg auf eine ältere Version, da sich das Projekt noch im Entwicklungsstadium befindet. Insbesondere ab Version 2.0.0.93 hat es größere Änderungen gegenüber den Vorgängern gegeben. Zwar funktionieren seitdem einige Laptops zuverlässiger, aber möglicherweise kommt eine ältere Version mit Ihrer Hardware besser zurecht.

Bleiben Ihre Probleme trotz aller Lösungsversuche bestehen, haben Sie vielleicht mit einer der anderen Software-Suspend-Implementierungen oder mit einer Anfrage an die passende Mailing-Liste mehr Erfolg.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Tiefgefroren
    Mit TuxOnIce frieren Sie produktive Sitzungen mit mehreren Anwendungen und geöffneten Dokumenten zuverlässig ein und können sie beim nächsten Rechnerstart im Handumdrehen wieder fortsetzen.
  • Suspend mit APM und ACPI
    Vor allem Laptop-Nutzer kennen das Problem: Um Strom zu sparen, wollen sie den Rechner nicht durchgehend laufen lassen, ihn aber auch nicht ständig ab- und wieder einschalten.
  • Entwickler diskutieren Suspend-Erweiterung für Kernel
    Die Kernel Entwickler diskutieren derzeit darüber, wie sie Linux-Systeme öfter in den Suspend-Schlaf schicken und auch einzelne Geräte in Energiesparmodus versetzen können.
  • Kernel-Updates helfen beim Aufwachen

    Mit Updates der stabilen Linux-Kernel auf 3.0.15 und 3.1.7 soll ein Fehler im Zusammenhang mit dem Suspend-Modus behoben sein.
  • Auf den Zahn gefühlt
    Solange alles funktioniert, sind die genauen Details der Hard- und Software oft nebensächlich. Bei der Analyse von Problemen und der Treibersuche erweisen sich Systeminformationen jedoch als wertvolle Helfer.
Kommentare

Infos zur Publikation

LU 11/2017: Server für Daheim

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 3 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...