Home / LinuxUser / 2004 / 11 / Software Suspend

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Im Tiefschlaf

Software Suspend

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.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...