Suspend to RAM

aus openSUSE, der freien Wissensdatenbank

(Weitergeleitet von S2ram)

Inhaltsverzeichnis

s2ram - Suspend to RAM direkt zum Laufen kriegen


Das Ziel der s2ram-Binärdatei ist es, das Suspendieren in den Arbeitsspeicher auf so vielen Geräten wie möglich, ohne weiteres Zutun direkt nach der Installation zu ermöglichen.


Wichtig


Das Paket wird suspend oder uswsusp genannt und wird standardmäßig von den meisten Distributionen installiert.

Falls die von Ihnen bisher verwendete Version von s2ram nicht alle Optionen bietet, die in diesem Dokument beschrieben werden, schauen Sie nach, ob eine neuere Version auf http://suspend.sf.net oder hier erhältlich ist.

Die -m und -v Optionen sind noch nicht so lange enthalten.


Hintergrund


Suspend to RAM funktioniert bereits auf vielen Geräten - soll heißen, die Maschine wacht wieder auf und setzt ihre Operationen fort, die Tastatur arbeitet und es kann immer noch auf die Festplatte zugegriffen werden - aber um die Videoausgabe wieder ans Laufen zu kriegen oder die Hintergrundbeleuchtung des Bildschirms zu aktivieren, bedarf es noch des einen oder anderen "schmutzigen Tricks". Es gibt verschiedene provisorische Lösungen dafür:

  • acpi_sleep=s3_bios an den Kernel übergeben
  • acpi_sleep=s3_mode an den Kernel übergeben
  • Beide obigen Werte (acpi_sleep=s3_bios,s3_mode) an den Kernel übergeben
  • POSTen der Grafikkarte nach dem Aufwachen vom Anwenderraum (userspace) aus mit Hilfe von vbetool
  • Auslesen der Videomodusnummer bevor suspendiert wird und zurückschreiben des selben Videomodus nach dem Aufwachen mit Hilfe von vbetool
  • Speichern des VBE-Status vor dem Suspendieren und wiederherstellen des selbigen nach dem Aufwachen mit Hilfe von vbetool
  • Speichern des PCI-Konfigurationsraums der VGA-Karte vor dem Suspendieren und wiederherstellen des selbigen nach dem Aufwachen

Seit Kernel 2.6.16 kann der acpi_sleep-Parameter zur Laufzeit (kein Neustart nötig) in /proc/sys/kernel/acpi_video_flags mit "1" für s3_bios, "2" für s3_mode und "3" für beides gesetzt werden. Weitere Informationen zu diesen Hacks können in den Kernelquellen (für gewöhnlich in /usr/src/linux installiert) in der Datei Documentation/power/video.txt gefunden werden.

Es gibt Geräte, die bei Verwendung einer framebuffer-Konsole nicht wieder aufwachen. Recht häufig fallen bspw. aktuelle Geräte von Dell und HP in diese Kategorie.
Sie können den framebuffer in ihrer Bootloader-Konfiguration deaktivieren, indem Sie "vga=0" an den Kernel übergeben. Die Konfiguration für GRUB finden Sie in der Regel unter /boot/grub/menu.lst.
Wenn Ihre Maschine nur ohne framebuffer läuft, dann teilen Sie uns das doch bitte in ihrem Bericht mit.

Falls keine der hier beschriebenen Methoden zu funktionieren scheint, ist es wichtig, zu überprüfen, ob das Gerät nach der Aufwachen komplett tot ist oder nur die Videoausgabe nicht richtig aufgeweckt wurde. Ein guter Weg das herauszufinden ist, mit einem Minimalsystem zu starten (init=/bin/bash an der Boot-Eingabe eintragen), s2ram -f auszuführen und nach dem Aufwecken, wenn der Bildschirm immer noch aus ist, zu überprüfen, ob die "Feststelltaste" (die, die große Buchstaben fest einstellt) noch funktioniert (Sie sollten eine Reaktion der entsprechenden LED auf ihrer Tastatur sehen können). Falls sie funktioniert, ist es höchstwahrscheinlich ein Problem mit der Initialisierung der Videoausgabe. Sollte sie nicht funktionieren, ist es höchstwahrscheinlich ein BIOS-Problem oder ein Fehler im Kernel.


Warum s2ram?


  • Die Verwendung von vbetool um den VBE-Status zu sichern ist nicht einfach: Sie müssen den Status der Grafikkarte auslesen und in einer temporären Datei speicher, bevor Sie das System in den Schlaf schicken und ihn von dort nach dem Aufwachen wiederherstellen. Dies könnte natürlich auch von einem Wrapper-Skript erledigt werden, es aber von einer Binärdatei ausführen zu lassen ist wesentlich schneller.
  • Sie müssen wissen, ob ihre Maschine eine Umgehungslösung benötigt und wenn ja, welche. s2ram enthält eine Datenbank von Systemen von denen bekannt ist, dass es auf ihnen funktioniert und welche Umgehungslösungen diese eventuell benötigen. Wenn ihre Maschine also unterstützt wird, ist es ein Einfaches, sie in den wohlverdienten Schlaf zu schicken und ohne Zicken aufzuwecken.


Genug der Worte! Lassen Sie uns beginnen!


Woher kann ich es bekommen?

s2ram ist Teil des Suspend-Projekts und wird auf sourceforge beherbergt. Pakete sind für verschiedene Distributionen vorhanden.

Wie benutzt man es?

Installieren Sie es und rufen Sie dann einfach s2ram auf. Wenn sich ihre Maschine in der Weißliste befindet, sollte sie nun in den Arbeitsspeicher suspendiert werden. Seien Sie vorsichtig, einige fehlerhafte Treiber müssen eventuell vor dem Schlafen Legen erst entladen werden und nach dem Aufwecken erneut geladen werden. Wenn Sie wissen möchten, ob ihr System bekannt ist und welche Umgehungslösungen (wenn überhaupt) verwendet werden, rufen Sie s2ram -n auf.

Darüber hinaus ist s2ram in die neuesten Ausgaben von powersaved integriert: Falls das suspend-Paket installiert ist, überprüft powersaved vor dem Starten (mit s2ram -n) ob ihre Maschine in der Lage ist, einen Suspend to RAM durchzuführen; abhängig davon werden die Suspend-Schaltflächen aktiviert oder deaktiviert.

Zumindest für Benutzer von openSUSE 10.3 bis 11.0 mit [[NVIDIA|nvidia Grafikchips}} empfiehlt es sich, vor dem Probieren von Optionen den proprietären Grafiktreiber von NVIDIA zu installieren. Danach ist das Setzen der nachfolgenden Optionen möglicherweise nicht mehr notwendig.

Meine Maschine ist nicht in der Weißliste, was kann ich machen?

Versuchen Sie herauszufinden, welche Umgehungslösung von ihrer Maschine benötigt wird (wenn überhaupt) und teilen Sie uns dann ihre Erfahrung zusammen mit der Ausgabe von s2ram -i mit.

Die Umgehungslösungen können von der Kommandozeile aus mit s2ram als root aktiviert werden:

sonne@erde:~> s2ram -h
Usage: s2ram [-nhi] [-fspmra]

Options:
    -h, --help:       this text.
    -n, --test:       test if the machine is in the database.
                      returns 0 if known and supported
    -i, --identify:   prints a string that identifies the machine.
    --nofbsuspend     do not suspend the framebuffer (debugging only!).
    -f, --force:      force suspending, even on unknown machines.

the following options are only available with --force:
    -s, --vbe_save:   save VBE state before suspending and restore after resume.
    -p, --vbe_post:   VBE POST the graphics card after resume
    -m, --vbe_mode:   get VBE mode before suspend and set it after resume
    -r, --radeontool: turn off the backlight on radeons before suspending.
    -a, --acpi_sleep: set the acpi_sleep parameter before suspend
                      1=s3_bios, 2=s3_mode, 3=both
    -v, --pci_save:   save the PCI config space for the VGA card.

Die Optionen sollten sich größtenteils selbst erklären. Beachten Sie, dass Sie auf allen unbekannten Maschinen die Option -f benutzen müssen, fügen Sie dann noch die passenden Optionen hinzu. Die Option -a benötigt noch ein zusätzliches numerisches Argument von 1 bis 3, welches s3_bios, s3_mode oder beides vorgibt.

Der beste Weg, eine unbekannte Maschine zu untersuchen ist wahrscheinlich, mit init=/bin/bash an der Boot-Eingabe des Bootloaders in eine minimale Umgebung zu starten und dann folgendes auszuführen:

 # mount /proc
 # mount /sys
 # s2ram -f

Falls der erste Versuch schon funktioniert ist alles fein. Senden Sie uns die Ausgabe von s2ram -i. Falls es noch nicht geklappt hat, probieren Sie die folgenden Variationen:

  • s2ram -f -a 3
  • s2ram -f -a 2
  • s2ram -f -a 1
  • s2ram -f -p -m
  • s2ram -f -p -s
  • s2ram -f -m
  • s2ram -f -s
  • s2ram -f -p
  • s2ram -f -a 1 -m
  • s2ram -f -a 1 -s

Falls keine der obigen Kombinationen funktioniert, versuchen Sie es erneut und fügen Sie dabei den Schalter "-v" hinzu.

Hinweis: Das Vermischen der "-a"-Optionen mit den vbetool-Optionen ("-p", "-m", "-s") ist normalerweise nur dann sinnvoll, wenn alles andere nicht hingehauen hat. Es scheint eine Ausnahme von dieser Regel zu geben die auf die neuesten 64bit ThinkPads zutrifft, bei denen es im 64bit-Modus (x86_64) häufig nur mit "-a 1 -m" funktioniert (x86_64).

Eine der obigen Kombinationen sollte ihre Maschine hoffentlich wieder zum Leben erwecken (und die Hintergrundbeleuchtung des Bildschirms aktivieren). Sobald Sie eine funktionierende Kombination gefunden haben, senden Sie uns doch bitte diese Information zusammen mit der Ausgabe von s2ram -i. Wenn Sie verschiedene funktionstüchtige Kombinationen herausfinden (bspw. "s2ram -f -a 3" und "s2ram -f -p -m" funktionieren beide auf ihrem System), sollte die Kernel-eigene Methode ("-a") der aus dem Nutzerraum (userspace) ("-p", "-m" and "-s") vorgezogen werden.

Wenn Sie eine Kombination finden die funktioniert, prüfen Sie bitte, ob diese auch in beiden Fällen funktioniert, bevor Sie sie an die s2ram-Entwickler senden:

  • das Auslösen von s2ram von der Konsole
  • das Auslösen von s2ram aus X11 heraus

Es ist normal, dass der Inhalt der Textkonsole nach der Bneutzung von "-p" und "-m" verschwindet. Auf der framebuffer-Konsole kann dies einfach gelöst werden, indem Sie die Konsole einmal wechseln. Obwohl es mit "-s" besser funktionieren könnte, sollte "-m" die bevorzugte Option sein wenn es funktioniert.

Beachten Sie, dass Sie das hier wirklich erstmal in einer minimalen Textkonsole versuchen sollten. Berichte dass es dort funktioniert sind viel hilfreicher als solche, die nur aus X heraus erstellt wurden. Der Vorgang wird vor allem nicht von Seiteneffekten laufender Energieverwaltungsdämonen beeinflusst.

Alles funktioniert, allerdings bleibt die Hintergrundbeleuchtung meiner Anzeige während der Suspendierung an

Falls in ihrem Gerät eine Radeon Grafikkarte verbaut ist und die Beleuchtung während der Suspendierung nicht ausgeschaltet wird, versuchen Sie, den Schalter "-r" zu ihrer Schalterkombination hinzuzufügen. Von dieser Methode ist bekannt, dass sie bei ThinkPads der 30er-Serie (T30, X31, R32,... ) hilft. Falls in ihrem Gerät kein Radeon-Chip verbaut ist, ergibt diese Optionen keinen Sinn.

Meine Maschine ist in der Weißliste aber es funktioniert nicht, was kann ich machen?

In der Weißliste befinden sich einige Platzhalter und es kann sein, dass diese auf Maschinen zutreffen, die anders sind als die original getesteten. Die Prozedur ist die gleiche wie die, wenn ihre Maschine sich nicht in der Weißliste befindet: Finden Sie heraus, welche Optionen bei ihrer Maschine funktionieren und senden Sie uns ihre Erkenntnisse zusammen mit der Ausgabe von s2ram -i zu, so dass wir die Weißliste dementsprechend aktualisieren können.


Wie erreiche ich die Autoren von s2ram?


Senden Sie eine E-Mail an die suspend-devel-Mailing-Liste auf suspend-devel@lists.sourceforge.net. Falls das aus irgendwelchen Gründen nicht klappt, erstellen Sie bitte eine Fehlerbericht auf https://bugzilla.novell.com/ , auch wenn Sie nicht openSUSE verwenden (reichen Sie einfach einen Fehlerbericht gegen das höchst bezifferte openSUSE-Produkt in der Komponente "Mobile Devices" ein). Falls Sie mir direkt an seife @ suse.de schreiben kann es gut passieren, dass ihre E-Mail in der Flut der Nachrichten untergeht. Über die Mailing-Liste und Bugzilla ist die Reaktion meist schneller und dort finden sich auch mehr erfahrene Personen.

Wichtig: Wir können weder ihre Gedanken lesen, noch wissen wir, was Sie so ausprobiert haben, sagen Sie uns also bitte,

  • welche Optionen Sie an s2ram übergeben haben, damit es funktioniert.
  • dass Sie es sowohl unter X11 als auch im Textmodus probiert haben (Strg+Alt+F1 oder der hier beschriebene minimale Modus).
  • ob es irgendeiner speziellen Konfiguration bedurfte, damit es funktionierte, und welche das eventuell war.
  • die Ausgabe von s2ram -n


Testen ohne etwas zu installieren


Sitsofe Wheeler hat herausgefunden, dass viele Geräte auch getestet werden können, ohne etwas zu installieren, einfach durch die Nutzung der openSUSE 10.2 Live DVD.


Aktuelle Pakete für verschiedene Distributionen


SUSE / openSUSE

Die von openSUSE ausgelieferte Version von suspend erfährt über die Online-Aktualisierung von YaST lediglich Erneuerungen bei Sicherheitsproblemen oder schwerwiegenden Fehlern. Wenn Sie einen größeren Versionssprung vornehmen wollen, stehen für die von Ihnen verwendete Ausgabe der Distribution neue Pakete im home:seife-Depot des Build Service von openSUSE zur Verfügung. Weitere Informationen erhalten Sie im Artikel Zusätzliche Paketquellen.


Debian

Tim Dijkstra betreut die Debian-Pakete (dort uswsusp genannt) unter http://packages.debian.org/unstable/admin/uswsusp

Gentoo

Ein Gentoo-Paket, namens suspend, ist in portage verfügbar. Informationen zur Installation von Paketen unter Gentoo finden Sie im Gentoo Linux-Handbuch.

Andere

Wenn Sie aktuelle Pakete für andere Distributionen kennen, aktualisieren Sie bitten diesen Artikel oder schreiben Sie eine Nachricht an die suspend-devel-Mailing-Liste.


Integration in andere Projekte


openSUSE 10.2+ / pm-utils

openSUSE 10.2 und neuer sowie viele andere aktuelle Distributionen benutzen pm-utils als Suspendierungsrahmenwerk, wodurch die hier aufgeführten Konfigurationsoptionen genutzt werden können, um s2ram-Optionen vorzugeben.

Powersave

s2ram ist in die neuesten Versionen von powersaved integriert. Es gibt dort einige Konfigurationsvariablen, welche die Umgehungen/Workarounds setzen können, wenn ihr Gerät noch nicht in der Weißliste ist. Sie werden hier erklärt.

SUSE 10.1

SUSE Linux 10.1 verwendet powersaved dessen Konfigurationsvariablen hier erklärt werden, um die Umgehungsvariablen anzugeben.


Nützliche Hinweise


Dies sind einfach ein paar "Tips und Tricks" die die Autoren von s2ram herausgefunden haben, um Geräte in den Arbeitsspeicher schlafen zu legen. Mit Vorsicht benutzen.. ;-)

Intel Graphikchipsätze

Geräte mit Grafikchipsätzen von Intel funktionieren oft mit "s2ram -f -a3", auch wenn der vesafb framebuffer verwendet wird. Falls "s2ram -f -a3" nicht funktioniert (bspw. auf Dell-Geräten), funktioniert "s2ram -f -p -m" oft genauso gut.

Neuere Xorg-Treiber von Intel scheinen ein Problem mit "-s" (VBE_SAVE) zu haben, weshalb stattdessen soweit möglich "-m" (VBE_MODE) in solchen Fällen genutzt werden sollte. Lesen Sie auch https://bugzilla.novell.com/show_bug.cgi?id=229603 . Kurz gesagt sollte VBE_MODE VBE_SAVE vorgezogen werden.

ATI Graphikchipsätze

In letzter Zeit tauchten viele Geräte mit Radeon-Chipsätzen von AMD/ATI auf, die mit keinem einzigen Framebuffer mit s2ram zusammengearbeitet haben (für gewöhnlich bleiben sie im BIOS hängen, wodurch nicht mal die Feststelltaste nach dem Aufwecken funktioniert hat). Sie funktionierten oft gut mit "vga=0" und "s2ram -f -p -m" oder "s2ram -f -p -s".

Bei Aufwachproblemen mit s2ram und dem fglrx-Treiber 8.32.xx aktualisieren Sie diesen bitte auf Version 8.34.xx oder höher.

--Squealer 13:29, 22. Februar 2007 (UTC)

NVidia Graphikchipsätze

Nach ein paar speziellen Schritten sollte ein Gerät mit NVidia-Karte mit "s2ram -f" laufen. Lesen Sie dazu die detaillierten Anweisungen.

APIC-Probleme

In letzter Zeit sind viele Geräte aufgefallen, die eine Deaktivierung des APIC benötigen, was auf der Kernelkommandozeile (beim Bootloader) mit "noapic" erledigt werden kann, da sie ansonsten nicht wieder aufwachen oder sich nach dem Aufwachen seltsam verhalten (timer interrupts funktionieren nicht mehr, usw.).

Das Gerät fährt direkt nach dem Aufwachen wieder runter!

s2ram ist vordringlich ein "low level"-Systemwerkzeug. Um es in "echten Produktionsumgebungen" einzusetzen sollten Sie es in zusammen mit ihrer Energieverwaltung einsetzen, bspw. in ihren acpid-Skripten (sie können eine Suspendierung bspw. beim Druck auf die Schlaftaste auslösen). Wenn Sie eine Distribution verwenden, die powersaved einsetzt, lesen Sie bitte die Powersaved/s2ram-Seite.

Dieses Verhalten sollte mit Kernel 2.6.20 behoben sein, weshalb Umgehungslösungen ab dieser Version nicht mehr nötig sind.

Halten Sie durch!

Ab und zu ist die Einrichtung von Suspend to RAM nicht so einfach wie wir es alle gerne hätten. Wenn Sie mal gerne ein Beispiel darüber lesen möchten, was Menschen so alles auf sich genommen haben, dann lesen Sie den folgenden Bugzilla-Eintrag . Winfried ist unser Held :-) Es ist außerdem wichtig zu wissen, ob das Gerät korrekt aufwacht, jedoch "lediglich" der Bildschirm aus bleibt, oder ob es komplett hängen bleibt. Lesen Sie auch den Artikel Fehlersuche in ACPI Suspend um weitere Informationen zu erhalten, wie Sie das herausfinden können.