SDB:S2ram

Aller à : navigation, rechercher
Acroread.png Cet article est à relire !

Cette page demande à être relue pour correction. Si vous pouvez y participer, merci de le faire en accord avec le Guide stylistique openSUSE.
Si vous cherchez quelque chose à faire, regardez les autres Pages à relire.

s2ram - Faire que la mise en veille sur RAM fonctionne aisément

Le but du programme s2ram est de faire que la mise en veille en RAM fonctionne sur le maximum de machines 'sans rien faire'

Important

Le paquetage s'appelle suspend ou uswsusp et est installé en standard avec la plupart des distributions.

Si votre version de s2ram n'a pas toutes les options décrites dans ce document, essayez d'obtenir une nouvelle version, e.g. depuis http://suspend.sf.net ou ici.

Les options -m and -v ont été ajoutées assez récemment.

Arrière-plan

La mise en veille sur RAM fonctionne déjà sur de nombreuses machines - ce qui signifie que les machines redémarrent et reprennent le travail, que le clavier fonctionne et le disque dur toujours accessible - mais pour avoir la vidéo en ordre et le rétro-éclairage, il faut utiliser plus ou moins de "sales trucs". Il y a plusieurs contournements pour cela:

  • passer acpi_sleep=s3_bios au noyau
  • passer acpi_sleep=s3_mode au noyau
  • passer les deux précédents (acpi_sleep=s3_bios,s3_mode) au noyau
  • POSTer la carte vidéo depuis l'espace utilisateur userspace après reprise en utilisant vbetool
  • noter le mode vidéo avant mise en veille et remettre le même à la reprise en utilisant vbetool
  • sauvegarder l'état VBE avant mise en veille et le restaurer à la reprise en utilisant vbetool
  • sauvegarder l'espace de configuration PCI avant mise en veille et le restaurer après reprise

Depuis le noyau 2.6.16, le paramètre acpi_sleep peut être modifié pendant le fonctionnement (sans réamorçage) dans /proc/sys/kernel/acpi_video_flags, avec "1" pour s3_bios, "2" pour s3_mode et "3" pour les deux. plus d' information sur ces choses figure dans les sources du noyau (normalement installées dans /usr/src/linux) dans le fichier Documentation/power/video.txt.

Il y a des machines qui ne reprennent pas quand on utilise une console 'framebuffer'. Les modèles récents Dell et HP tombent très souvent dans cette catégorie.
On peut désactiver le 'framebuffer' dans la configuration de l'amorçage en passant "vga=0" au noyau. La configuration pour grub est souvent mise dans /boot/grub/menu.lst.
Si votre machine fonctionne seulement sans 'framebuffer', svp dites-le nous dans votre rapport.

Si aucune des méthodes ci-dessus ne semble fonctionner, il est important d'examiner si la machine est complètement plantée à la reprise ou si c'est seulement la vidéo qui ne repart pas correctement. Un bon moyen de le savoir est de démarrer avec un système minimal (init=/bin/bash), de lancer s2ram -f, et après reprise, quand l'écran est toujours éteint, de regarder si la touche "verrouillage majuscule" ("Caps Lock") fonctionne toujours (on devrait voir une réaction au niveau du voyant Caps Lock du clavier). Si ça marche, c'est plutôt un problème d'initialisation vidéo. Si ça ne marche pas c'est plutôt un problème de BIOS ou un bogue dans le noyau Linux.

Pourquoi s2ram?

  • l'usage de vbetool pour sauver l'état VBE n'est pas simple: il faut décharger (dump) l'état de la carte dans un fichier temporaire, avant mise en veille, et le restaurer à partir de cela après reprise. On peut évidement mettre cela dans un script, mais avoir tout dans un programme est plus simple.
  • il faut savoir si sa machine nécessite des contournements et lesquels. s2ram contient une base de données des machines connues pour fonctionner et les contournements dont elles ont besoin, aussi si la machine est supportée, la mise en veille est aussi simple que d'appeler "s2ram".

Bien, assez parlé! démarrons!

Où l'obtenir?

s2ram fait partie du projet suspend hébergé par sourceforge et des paquetages pour plusieurs distributions sont disponibles.

Comment l'utiliser?

L'installer, puis juste appeler s2ram. Si votre machine est dans la liste blanche, elle devrait se mettre en veille sur RAM. Attention cependant, certains pilotes 'cassés' doivent être déchargés avant suspension et rechargés après reprise. Si vous voulez seulement savoir si votre machine est connue et quels contournements (s'il y en a) seront utilisés, alors faites s2ram -n.

S2ram est intégré dans les dernières construcutions de powersaved: si le paquetage suspend est installé, powersaved regarde avant démarrage (grâce à s2ram -n) si la machine est capable de mise en veille RAM et selon le résultat active ou désactive le "bouton mise en veille (suspend button)".

Ma machine n'est pas dans la liste blanche, que puis-je faire?

Il faut trouver quel(s) contournement(s) est (sont) nécessaire(s) pour cette (s'il y en a), puis nous communiquer ce résultat, avec la sortie de s2ram -i.

Les contournements peuvent être activés depuis la ligne de commande de s2ram::

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

Options:
    -h, --help:       ce texte.
    -n, --test:       teste si la machine est dans la database.
                      retourne 0 si elle est connue et supportée
    -i, --identify:   affiche une chaîne qui identifie la machine.
    -f, --force:      force mise en veille, même sur machine inconnue.

les options suivantes sont seulement disponibles avec  --force:
    -s, --vbe_save:   sauve l'état VBE avant mise en veille et restaure après reprise.
    -p, --vbe_post:   VBE POST la carte graphique après reprise
    -m, --vbe_mode:   note le mode VBE mode avant suspension et le remet après reprise
    -r, --radeontool: éteint le rétro-éclairage sur les radeons avant suspension.
    -a, --acpi_sleep: met le paramètre acpi_sleep avant suspension
                      1=s3_bios, 2=s3_mode, 3=both
    -v, --pci_save:   sauve l'espace de configuration PCI pour la carte VGA .

Les options sont le plus souvent auto-explicatives. Noter qu'il faut utiliser l'option -f option pour toutes les machines inconnues, puis ajouter les bons contournements. L'option -a demande un argument numerique supplémentaire de 1 à 3, précisant s3_bios, s3_mode or both.

La meilleure manière d'investiguer une machine inconnue est probablement d'amorcer avec init=/bin/bash à l'invite d'amorçage dans un environment minimal, puis faire:

 # mount /proc
 # mount /sys
 # s2ram -f
 si le premier essai réussit, tout est bien. Nous envoyer la sortie de  s2ram -i (voir #Comment contacter les auteurs de s2ram?). Si ce n'est pas le cas, essayer les variations suivantes:
  • 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

Si rien de tout cela ne marche, recommencer mais ajouter la balise "-v".

Note: mélanger l'option "-a" et les options vbetool ("-p", "-m", "-s") est normalement une mesure de dernier recours, habituellement cela n'a pas de sens. Une exception à cette règle semble aapraître avec les derniers ThinkPads 64bits, qui souvent marchent seulement avec "-a 1 -m" en mode 64bits (x86_64).

L'un de ceux-ci peut par chance rendre votre machine à la vie (et allumer le rétro éclairage) Quand vous avez trouvé ce qui marche, nous envoyer cette information accompagné de la sortie de s2ram -i. Si vous trouvez plusieurs combinaisons qui marchent (e.g. "s2ram -f -a 3" et "s2ram -f -p -m" fonctionnent toutes deux sur la machine), la méthode interne au noyau ("-a") devrait être privilégiée sur celle de l'espace utilisateur ("-p", "-m" and "-s").

Quand on a trouvé une combinaison qui marche, il faut vérifier qu'elle fonctionne dans les deux cas avant de communiquer la réussite aux développeurs de s2ram:

  • quand on lance s2ram depuis la console
  • quand on lance s2ram depuis X lui-même

Il est normal que le contenu de la console texte ait disparu après avoir utilisé "-p" et "-m", sur la framebuffer console on peut y remédier en permutant les consoles une fois. Bien que ce pourrait être mieux avec "-s", c'est encore l'option "-m" qu'on préférera si elle fonctionne.

Notez qu'il faut vraiment essayer depuis une console texte en mode minimal. Les Rapports que cela marche dans ce cas sont beaucoup plus utiles que ceux effectués seulement depuis X. De plus vous n'aurez aps d'effets de bors nuisbles comme l'extinction immédiate après la reprise du fait des démons de gestion de l'énergie.

Tout fonctionne à merveille, mais le rétro-éclairage de ma machine reste pendant la mise en veille

Si votre machine a une carte graphique Radeon graphics et que la lumière ne s'éteint pas pendant la mise en veille, essayez d'ajouter la balise "-r" à votre combinaision de balise. On sait que ça aide les ThinkPads des séries '30 (T30, X31, R32,... ). Si votre machine n'a pas de puce graphique Radeon, alors cette option n'a aucun sens.

Ma machine est dans la liste blanche mais ça ne marche pas, que faire?

Il y a quelques correspondances étendues dans la liste blanche, et il est possible qu'elles correspondent à des machines diiférentes de celles qui ont été testées. La procédure est la même que Ma machine n'est pas dans la liste blanche: trouver les options nécessaires pour cette machine particulière et envoyer l'information accompagnée de la sortie de s2ram -i, ainsi la liste blanche pourra être mise à jour en accord.

Comment contacter les auteurs de s2ram?

Envoyer un mail à la mailinglist suspend-devel mailinglist à suspend-devel@lists.sourceforge.net. Si pour une raison quelconque ça n'aboutit pas, on peut m'envoyer directement un mail à, seife @ suse.de, mais la mailinglist donne normalement des réponses plus rapides et il y a plus de monde avec des compétences.

Tester sans rien installer

Sitsofe Wheeler a trouvé que beuacoup de machines peuvent être testées sans rien installer, juste en utilisant le openSUSE 10.2 Live DVD.

Mise à jour des paquetages pour plusieurs distributions

SUSE / openSUSE

Les dernières mises à jour sont dans le projet Stefan Seyfried's Buildservice à http://software.opensuse.org/download/home:/seife ou directement dans openSUSE Factory. Le paquetage s'appelle "suspend". Pour le dernier paquetage, vous aurez besoin d'installer le paquetage libx86 fourni au même endroit.

Debian

Tim Dijkstra maintient les paquetages debian (appelés uswsusp) à http://packages.debian.org/unstable/admin/uswsusp

Autres

Si vous avez connaissance de paquetages pour d'autres distributions, svp mettez à jour cet Article ou dites-le moisur la suspend-devel mailinglist, que je puisse faire la mise à jour.

Intégration dans d'autres projets

openSUSE 10.2 / pm-utils

openSUSE 10.2 utilise pm-utils comme cadre de mise en veille, les variables de configuration expliquées ici peuvent être utilisées pour fournir les options de s2ram.

Powersave

s2ram est integraté dans la dernière version de powersaved, il y a quelques variables de configuration qui vous permettent de sélectionner le contournement si votre machine n'est pas dans la lsite blanche. Leur explication est ici.

SUSE 10.1

SUSE 10.1 utilise powersaved, aussi les variables de configuration sont décrites ici pour spécifier les contournements.

Liens utiles

Ce ne sont que des "Trucs et astuces" que j'ai trouvés en essayant d'obtenir la mise en veille sur des machines. Utiliser avec précaution ;-)

Intel Graphics Chipsets

Les machines avec puces Intel graphique marchent souvent avec "s2ram -f -a3", même en utilisant vesafb framebuffer. si "s2ram -f -a3" ne fonctionne pas (par exemple sur machines Dell), souvent "s2ram -f -p -m" marche bien.

Les pilotes Xorg Intel semblent avoir des problèmes avec "-s" (VBE_SAVE), aussi "-m" (VBE_MODE) doit être utilisé si c'est possible pour eux. Voir https://bugzilla.novell.com/show_bug.cgi?id=229603 . D'une manière générale, VBE_MODE est préférable à VBE_SAVE.

ATI Graphics Chipsets

Récemment beaucoup de machines rencontrées avec des puces graphiques ATI Radéon ne fonctionnent pas avec un framebuffer (habituellement elles plantent au sein du BIOS, la touche capslock ne fonctionne même pas après essai de reprise). Souvent ça marche avec "vga=0" et "s2ram -f -p -m" ou "s2ram -f -p -s".

NVidia Graphics Chipsets

Après quelques étapes spécifiques, une machine avec une carte NVidia devrait marcher avec "s2ram -f". Voir les instructions détaillées ici: NVidia Suspend HOWTO.

Problèmes avec APIC

J'ai vu des machines récemment qui avaient besoin de désactiver l' APIC sur la ligne de commande du noyau par "noapic", sinon elles ne reprennent pas ou ont un comportement étrange après reprise (interruptions d'horloge ne fonctionnant plus etc.), aussi voilà quelque chose à tester. Cela ne devrait plus se produire avec des noyaux récents, openSUSE 10.2 n'en a déjà plus besoin.

La machine s'éteint immédiatement après la reprise!

s2ram est avant tout un outil système de "bas niveau". Pour l'utiliser dans des environnements "real production", il faut l'incorporer dans le démarrage de la gestion d'énergie (power management setup), e.g. dans les scripts acpid (ils peuvent déclencher la mise en veille par l'appui du bouton de mise en veille par exemple). Si vous utilisez une distribution qui utilise powersave, lisez la page Powersave_s2ram.

Cela devrait être résolu depuis au moins le noyau 2.6.20, les contournements ne devraient plus être nécessaires.

Tenez bon!

Parfois, obtenir le fonctionnement de la mise en veille sur RAM n'est pas aussi direct qu'on l'aimerait. Pour avoir un exemple de ce que certains ont dû faire, lisez le rapport suivant sur Bugzilla. Winfried is my hero :-) De même il est important de déterminer si la machine reprend d'un mise en veille sur RAM en laissant "seulement" l'écran éteint ou si elle plante complètement. Voir l'article ACPI_Suspend_debugging où figurent des instructions pour le déterminer.