S2ram

Ga naar: navigatie, zoeken

s2ram - slaapstand naar RAM meteen werkend krijgen

Het doel van het programma s2ram is om slaapstand naar RAM op zoveel mogelijk computers werkend te krijgen zonder dat daarvoor aanvullende configuratie nodig is.

Belangrijk

Als uw versie van s2ram niet alle opties kent die in dit document worden beschreven, probeer dan een nieuwere versie, bijv. van http://suspend.sf.net

SUSE-pakketten zijn te vinden op http://software.opensuse.org/download/home:/seife/

De opties -m en -v zijn vrij recent toegevoegd.

Achtergrond

Slaapstand naar RAM werkt momenteel al op veel computers - wat betekent dat de computer ontwaakt en verder gaat met draaien, het toetsenbord werkt en de harde schijf toegankelijk is - maar om het beeld werkend te krijgen en de achtergrondverlichting weer aan te zetten zijn vaak enkele trucs nodig.

Er zijn enkele manieren om dit op te lossen:

  • acpi_sleep=s3_bios doorgeven aan de kernel
  • acpi_sleep=s3_mode doorgeven aan de kernel
  • beide (acpi_sleep=s3_bios,s3_mode) doorgeven aan de kernel
  • de videokaart na het hervatten uit userspace te POSTen met behulp van vbetool
  • het videomodusgetal voor de slaapstand ophalen en na het hervatten dezelfde videomodus terugzetten met vbetool
  • de VBE-status voor de slaapstand opslaan en terugzetten na het hervatten met behulp van vbetool
  • de PCI-configuratieruimte van de VGA-kaart voor de slaapstand opslaan en terugzetten na het hervatten.

Vanaf kernel 2.6.16 kan de parameter acpi_sleep worden gebruikt tijdens het draaien van de computer (geen herstart nodig) in /proc/sys/kernel/acpi_video_flags, met "1" voor s3_bios, "2" voor s3_mode en "3" voor beide. Meer informatie over deze oplossingen kan worden gevonden in de kernel-source (meestal geïnstalleerd in /usr/src/linux) in het bestand Documentation/power/video.txt.

Er zijn computers waarbij hervatten mislukt als er een framebuffer-console wordt gebruikt. Recente Dell- en HP-modellen vallen bijvoorbeeld erg vaak in deze categorie.
U kunt de framebuffer uitzetten in uw bootloaderconfiguratie door de optie "vga=0" door te geven aan de kernel. De configuratie voor grub vindt u standaard in /boot/grub/menu.lst.
Uiteraard kunt u de optie ook toevoegen vanuit de bootloaderconfiguratie in YaST. Als uw computer alleen zonder framebuffer werkt, meldt dit a.u.b. in uw rapport.

Als geen van de beschreven methodes werken, dan is het belangrijk om te controleren of de computer volledig is vastgelopen tijdens het hervatten of dat alleen het beeld niet werkt. Een goede manier om dat te controleren is door een minimaal systeem te starten (init=/bin/bash als optie meegeven in het bootloadermenu), dan s2ram -f uit te voeren, en na het hervatten, als het beeld nog steeds uit is, controleer of de Caps Lock-toets het nog doet (het LED van Caps Lock moet dan reageren op het indrukken van de toets). Zo ja, dan is het zeer waarschijnlijk alleen een probleem met het initialiseren van het beeld. Als er geen reactie is, dan is het mogelijk een probleem met uw BIOS of een fout in de Linux-kernel.

Waarom s2ram?

  • het gebruik van vbetool voor het opslaan van de VBE-status is niet eenvoudig, u dient voor de slaapstand de staat van de videokaart te dumpen in een tijdelijk bestand en na het hervatten weer terug te zetten. Dit kan uiteraard worden gedaan met een wrapper-script, maar om het in één programma te stoppen is nog eenvoudiger.
  • u dient te weten of u bepaalde problemen op uw computer moet omzeilen, en welke dat dan zijn. s2ram bevat een database met bekende werkende computers en de omzeilingen die ze nodig hebben. Dus als uw systeem wordt ondersteund is het activeren van de slaapstand net zo eenvoudig als het aanroepen van "s2ram".

OK, genoeg gepraat! Laten we beginnen!

Waar kan ik het vandaan halen?

s2ram is onderdeel van het project suspend, gehost bij sourceforge. Er is een pakket voor SUSE 10.1 beschikbaar.

Hoe gebruik ik het?

Installeer het en roep gewoon s2ram aan. Als u computer op de whitelist staat, dan schakelt deze naar slaapstand naar RAM. Wees wel voorzichtig, sommige stuurprogramma's dienen eerst te worden uitgeladen voor de slaapstand en weer geladen na het hervatten. Als u wilt weten of uw computer bekend is en welke omzeilingen (indien van toepassing) gebruikt zullen worden, type s2ram -n.

S2ram is ook geïntegreerd in de nieuwste builds van powersaved: als het pakket suspend is geïnstalleerd controleert powersaved voor het opstarten (met s2ram -n) of de computer in staat is om slaapstand naar RAM te gebruiken. Afhankelijk van het resultaat wordt dan de slaapknop actief of inactief gemaakt.

Mijn computer staat niet op de whitelist. Wat kan ik doen?

Zoek uit welke omzeiling nodig is voor uw computer (indien van toepassing) en geef deze informatie aan ons door, samen met s2ram -i.

De omzeilingen kunnen worden geactiveerd vanaf de s2ram-commandoregel:

seife@susi:~> s2ram -h
Usage: s2ram [-nhi] [-fspmrav]

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.
    -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.

De opties leggen zichzelf uit. Onthoud dat u optie -f moet gebruiken op alle onbekende computers, en dan de geschikte omzeilingen moet toevoegen. Optie -a heeft een aanvullend getal tussen de 1 en 3 nodig, die S3_bios, S3_mode of beide specificeert.

De beste manier om een onbekende computer te onderzoeken is om de optie init=/bin/bash in te voeren bij de opstartprompt, om zo op te starten in een minimale omgeving. Voer daarna deze commando's uit:...

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

als de eerste poging al lukt, dan is alles goed. Stuur ons de uitvoer van s2ram -i. Als de poging mislukt, probeer dan de volgende variaties:

  • s2ram -f -a 1
  • s2ram -f -a 2
  • s2ram -f -a 3
  • 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

Alg geen van deze combinaties werkt, probeer het opnieuw met de optie "-v" toegevoegd.

Opmerking: het mixen van de "-a" opties en de vbetool-opties ("-p", "-m", "-s") is alleen een laatste redmiddel. Normaliter is het niet zinvol ze te mixen.

Een van bovenstaande commmando's krijgt hopelijk uw computer weer tot leven (en de achtergrondverlichting van uw laptopscherm weer aan). Als u eenmaal een werkende combinatie hebt gevonden, stuur ons die informatie samen met de uitvoer van s2ram -i. Als u verschillende combinaties die werken hebt gevonden (bijv. "s2ram -f -a 3" en "s2ram -f -p -m" werken beide op uw computer), de in-kernel-methode ("-a") heeft de voorkeur boven de userspace-methode ("-p", "-m" en "-s").

Als u een werkende combinatie hebt gevonden, controleer dan of die in beide gevallen werkt voordat u uw succes aan de ontwikkelaars van s2ram rapporteert:

  • als u s2ram vanuit een console aanroept
  • als u s2ram vanuit X zelf aanroept

Het is normaal dat de inhoud van het tekstconsole verdwenen is na het gebruik van "-p" en "-m". Op een framebufferconsole kunt u dit oplossen door eenmalig van console te veranderen. Alhoewel dit mogelijk beter werkt met "-s", heeft toch "-m" de voorkeur als die werkt.

Onthoud dat u dit echt moet proberen vanuit een minimale tekstmodus. Rapporten over dat het in zo'n minimale configuratie werkt zijn veel bruikbaarder dan wanneer er alleen vanuit X is getest. Kijk ook of u geen bijwerkingen merkt zoals het onmiddellijk afsluiten van de computer na het hervatten vanuit draaiende energiebeheer-daemons.

Alles werkt, maar de achtergrondverlichting van mijn computer blijft aan tijdens slaapstand

Als uw computer een Radeon-videokaart heeft en het licht gaat niet uit tijdens de slaapstand, probeer de optie "-r" in uw combinatie van opties. Dit helpt op ThinkPads van de '30-serie (T30, X31, R32,... ). Als uw computer geen Radeon-chip heeft, dan is deze optie niet van toepassing.

Mijn computer staat op de whitelist, maar werkt niet. Wat kan ik doen?

Op de whitelist worden vergelijkbare computers gegroepeerd met jokertekens, en het is mogelijk dat er computers tussen staan die anders zijn dan de oorspronkelijke geteste versies. De te volgen procedure is ongeveer hetzelfde als wanneer uw computer niet op de whitelist staat: probeer uit te vinden welke opties op uw computer nodig zijn en stuur deze informatie samen met de uitvoer van s2ram -i naar ons op, zodat we de whitelist hierop kunnen aanpassen.

Hoe neem ik contact op met de auteurs van s2ram?

Stuur een Engelstalige e-mail naar de mailinglist "suspend-devel" op suspend-devel@lists.sourceforge.net. Als dit om een of andere reden niet lukt, dan kunt u me ook rechtstreeks in het Engels mailen; seife @ suse.de. Maar de mailinglist geeft vaak sneller antwoord en van personen met meer kennis van zaken.

Integratie in andere projecten

openSUSE 10.2 / pm-utils

openSUSE 10.2 maakt gebruik van pm-utils als slaapstand-raamwerk, dus de configuratievariabelen die hier worden uitgelegd kunnen worden gebruikt om s2ram van opties te voorzien.

Powersave

s2ram is geïntegreerd in de nieuwste versie van powersaved. Er zijn enkele configuratievariabelen beschikbaar waarmee u een omzeiling kunt selecteren als uw computer nog niet in de whitelist staat. Ze worden hier uitgelegd.

SUSE 10.1

SUSE 10.1 gebruikt powersaved. Dus de configuratieopties die hier worden uitgelegd kunnen worden gebruikt om omzeilingen te specificeren.

Bruikbare tips

Dit zijn enkele tips en trucs die ik heb gevonden tijdens het proberen om computers in de slaapstand naar RAM te krijgen. Gebruik ze met zorg ;-)

Grafische chipsets

Intel

Computers met de Intel-chipsets werken vaak met "s2ram -f -a3", zelfs als u de vesafb-framebuffer gebruikt.

ATI

De laatste tijd merkte ik dat veel computers met ATI Radeon-chipsets niet werkten met welke framebuffer dan ook (meestal bleven ze in de BIOS hangen, zelfs capslock werkte niet tijdens de poging tot hervatten). Vaak werkten ze wel goed met "vga=0" en "s2ram -f -p -m" of "s2ram -f -p -s".

NVidia

Na enkele speciale stappen zou een computer met nVidia-kaart moeten werken met "s2ram -f". Zie de gedetailleerde instructies in de NVidia Slaapstand-Howto.

APIC-problemen

Ik heb de laatste tijd veel computers gezien waarbij APIC op de kernelcommandoregel moest worden uitgezet met "noapic". Anders wilden ze niet hervatten of vertoonden ze vreemd gedrag na het hervatten (timer interrupts werkten niet meer, etc.). Dus dit is iets om uit te proberen. Dit zou met recente kernels niet meer noodzakelijk hoeven te zijn, openSUSE 10.2 heeft dit inmiddels al niet meer nodig.

De computer sluit zichzelf onmiddellijk af na het hervatten!

s2ram is in principe een "low level" systeemprogramma. Om het in productie-omgevingen te gebruiken dient u het te laten samenwerken met uw energiebeheerconfiguratie, dus in uw acpid-scripts (ze kunnen bijvoorbeeld de slaapstand activeren als u op de slaapstandknop drukt). Als u een distributie gebruikt die powersave gebruikt, lees dan het artikel Powersave_s2ram.

Geef niet op!

Soms is het werkend krijgen van slaapstand naar RAM niet zo eenvoudig als we allemaal zouden willen. Als u een voorbeeld wilt lezen van wat sommige mensen allemaal moeten doormaken, lees dan dit rapport bij Bugzilla. Winfried is mijn held :-) Het is ook belangrijk om te weten of de computer uit de slaapstand naar RAM komt maar "alleen" het beeldscherm uitgeschakeld laat of dat ze compleet vast is gelopen. Zie het artikel Fouten in ACPI-slaapstand oplossen voor instructies over hoe u dat kunt achterhalen.