Contenu | Rechercher | Menus

Mise en veille / Hibernation

Introduction

La mise en veille et l'hibernation sont deux alternatives à l'arrêt de l'ordinateur.

  • La mise en veille permet d'économiser de l'énergie tout en gardant les applications ouvertes. Le réveil est très rapide. Il s'agit de ce que l'on appelle « suspend to ram » : toutes les informations de travail restent dans la mémoire vive et votre système d'exploitation se met en mode d'économie d'énergie1). Par conséquent, une partie infime de la charge batterie est utilisée.
  • L'hibernation permet de sauvegarder l'état des applications sur le disque dur et ne consomme ensuite plus d'énergie. Le terme associé est « suspend to disk » et correspond à écrire toutes les données présentes dans la mémoire vive sur le disque dur avant d'arrêter complètement l'ordinateur. Au redémarrage, l'opération inverse est effectuée : on lit depuis le disque dur pour repeupler cette dernière. Cependant, cette opération est bien plus longue du fait de la lecture/écriture depuis le disque dur. Son avantage est qu'il n'y a absolument aucune consommation d'énergie en mode hibernation, une fois l'opération effectuée. Ce processus est connu sous Windows sous le nom de « veille prolongée »

Supprimer le mot de passe lors de la sortie du mode veille/hibernation

  • Ouvrir un terminal et taper
gconf-editor
  • Se rendre dans la branche apps > gnome-power-manager > lock
  • Décocher la case hibernate pour désactiver le mot de passe lors de la sortie du mode hibernation.
  • Décocher la case suspend pour désactiver le mot de passe lors de la sortie du mode veille.
  • Décocher la case gnome_keyring_hibernate pour ne pas bloquer le mot de passe du trousseau lors de la sortie du mode veille (par exemple quand on est connecté au wifi).

Contexte lié au précédent et pourtant avec un réglage indépendant : supprimer le mot de passe à la sortie de l'économiseur d'écran.

  • Se rendre dans le menu Système > Préférences > Économiseur d'écran
  • Décocher "Verrouiller l'écran quand l'économiseur d'écran est actif"

Cas de ubuntu 11.10 La branche apps > gnome-power-manager > lock n'existe pas, il faut alors ouvrir un terminal et taper

gsettings set org.gnome.desktop.lockdown disable-lock-screen 'true'

Ou en mode graphique, ouvrir les "Paramètres Système", cliquer sur l'icône "Ecran" et cocher/décocher la partie intitulée "Verrouiller".

Cas de ubuntu 12.04 : En mode graphique, ouvrir les "Paramètres Système" puis cliquer sur l'icône "Luminosité et verrouillage". Mettre "Verrouiller" sur "0" et décocher la partie intitulée "Demander mon mot de passe lors de la sortie de veille".

Hiberner au bout de x secondes après une mise en veille

- La solution la plus simple est d'utiliser la commande pm-suspend-hybrid du paquet pm-utils. Cependant, les outils de gestions de batterie tel gnome-power-manager ne gèrent pas cette commande nativement et le fonctionnement est aléatoire suivant le portable. L'avantage de cette solution est que les données sont sauvegardées si vous êtes à cours de batterie pendant la phase de veille, contrairement au script ci-dessous.

- Une autre façon est d'utiliser votre outil de gestion d’énergie pour mettre en veille et d'utiliser le script_shell ci dessous en parallèle. Ce script utilise la fonction rtcwake ( qui permet de réveiller l'ordinateur au bout de x secondes ) et les outils fournis dans le paquet pm-utils.

Ajouter le fichier /etc/pm/sleepd/0000rtchibernate, ce fichier va être lu par la commande pm-suspend appelé par les outils de gestion de batterie pour la mise en veille et le réveil.

gksudo gedit /etc/pm/sleep.d/0000rtchibernate

Puis copier le script ci-dessous ( modifier la variable autohibernate suivant vos besoin ):

#!/bin/bash
curtime=$(date +%s)
 
# Éditer la variable autohibernate ci-dessous pour indiquer le nombre de seconde avant hibernation
autohibernate=900  # ici 900 secondes avant hibernation 
 
echo "$curtime $1" >>/tmp/autohibernate.log
 
# Mise en veille
if [ "$1" = "suspend" ] 
then
    #enregistrement de l'heure actuelle et ajout d'un compte à rebours avant hibernation
    echo "$curtime" >/var/run/pm-utils/locks/rtchibernate.lock
    rtcwake -m no -s $autohibernate
fi
# Sortie de veille
if [ "$1" = "resume" ]
then
    sustime=$(cat /var/run/pm-utils/locks/rtchibernate.lock)
    rm /var/run/pm-utils/locks/rtchibernate.lock
 
    # Sortie de veille grace au compte à rebours?
    if [ $(($curtime - $sustime)) -ge $autohibernate ]
    then
        # Alors hiberner
        rm /var/run/pm-utils/locks/pm-suspend.lock
        /usr/sbin/pm-hibernate
    else
        # Sinon effacer le compte à rebours
        rtcwake -m no -s 1
    fi
fi

puis le rendre exécutable

sudo chmod +x /etc/pm/sleep.d/0000rtchibernate

À chaque fois qu'une mise en veille est effectuée ( manuellement ou à l'aide de logiciel ), l’ordinateur va se réveiller automatiquement au bout de 15 minutes ( en fonction de la variable autohibernate ) et, s'il n'y a eu aucune activité utilisateur, hiberner.

Si le niveau de la batterie devient critique pendant la veille, vous allez perdre les données non sauvegardées.

Source du script

Problèmes connus

Afin de compléter cette section avec des informations utiles et précises, merci de renseigner votre matériel et votre pseudo (forum et/ou wiki) afin qu'on puisse vous contacter en cas de problème similaire, ou d'ambiguïté dans les informations.

Avant toute chose, au moins pour l'hibernation, si vous rencontrez un problème réessayez après avoir débranché tous les périphériques extérieurs de votre ordinateur (souris USB, jack, clé USB, imprimante, modem (Sagem Fast 800 non compatible)…). Ça ne règle pas les problèmes mais permet de savoir si ça en crée !

Sous Ubuntu 12.04 LTS (« The Precise Pangolin ») et versions ultérieures, l'option d'hibernation est désactivée par défaut pour des raisons de compatibilité avec la diversité de matériel. Launchpad explique ici https://help.ubuntu.com/12.04/ubuntu-help/power-hibernate.html la procédure pour tester l'hibernation sur votre matériel et comment réactiver le bouton/option d'hibernation dans le menu d'extinction, si votre matériel semble le supporter.

Mise en veille

Mise en veille qui ne met pas en veille

Il a été reporté un bogue de mise en veille qui ne met pas en veille: lors du lancement de la mise en veille, le son et le wifi s'éteignent, l'écran devient noir, mais les ventilateurs ne s'arrêtent pas, et le pc, au final, ne se met pas effectivement en veille. La seule solution est un redémarrage après arrêt complet (http://forum.ubuntu-fr.org/viewtopic.php?pid=3527684|http://forum.ubuntu-fr.org/viewtopic.php?id=403764.

La solution pour remédier à ce problème est la désactivation du kernel mode setting (KMS): pour cela, il faut mettre l'option nomodeset au démarrage.

Pour les ordinateurs équipés de Grub 1 : éditer /boot/grub/menu.lst et ajouter nomodeset à la ligne commençant avec # kopt=, puis sudo update-grub

Pour les ordinateurs équipés de Grub 2: éditer /etc/default/grub et ajouter nomodeset à la ligne GRUB_CMDLINE_LINUX, puis sudo update-grub

Note: pour savoir si Grub 1 ou Grub 2 est installé: Grub1 si la commande dpkg-query -s grub répond; Grub2 si la commande dpkg-query -s grub-pc répond

Note 2 : Si après modification ça ne redémarre plus et plus d’invite de session (gnome) alors au (multiboot) Grub, placez-vous sur la ligne de l'Ubuntu qui plante et tapez la touche "e" (mode édition du grub). Retirez le nomodeset puis ctrl+x (pour sauver). Démarrez, si ça démarre ouvrez une console et éditez le fichier grub pour remettre la ligne comme avant:" GRUB_CMDLINE_LINUX="" " et faites un "sudo update-grub" pour enregistrer la modification.

Mise en veille qui ne met pas en veille (2)

La solution précédente ne fonctionne pas systématiquement… Ça peut venir des ports USB qui bloquent la mise en veille ou l’interrompent immédiatement. Il faut dans ce cas désactiver les ports fautifs. Voici un article (en anglais) qui propose une solution qui semble marcher pour beaucoup de configuration (c'est très simple, un script à copier dans un nouveau fichier dont le chemin est indiqué, une ligne de commande, un redémarrage et c'est tout).

Mise en veille qui ne met pas en veille (3)

Virtualbox 4.1 peut aussi poser des problèmes de mise en veille. Détails ici : http://forum.ubuntu-fr.org/viewtopic.php?pid=6022561

Impossible de sortir d'une mise en veille sur RAM

Voici différentes causes possibles du non retour :

  • (Id2ndR) Votre BIOS n'est pas réglé sur le bon mode : il faut utiliser le mode ACPI S3 pour la mise en veille. Certains BIOS utilisent S1 comme réglage par défaut. Plus de détails ici (en anglais).

L'écran reste noir (carte graphique AGP nvidia)

Dans la Section "Device" du fichier /etc/X11/xorg.conf il est impératif de rajouter ces lignes en mode administrateur:

Option      "NvAGP" "1"
Option	    "NoLogo" "true"

L'ordinateur s'allume mais l'écran reste éteint

En attendant une éventuelle correction, utilisez pm-suspend du paquet apt://pm-utils. Selon votre matériel, il est parfois nécessaire d'utiliser une des options listées dans les manpages pour que tout fonctionne correctement.

L'ordinateur s'allume mais l'écran affiche des lignes et couleurs aléatoires, comme si la résolution n'était pas supportée

Sans connaître d'explication logique, ceci peut être résolu en allant dans "Système>Préférences>Apparence>Effets visuels" et en choisissant Aucun.

L'ordinateur s'allume et semble travailler mais l'écran affiche une suite de couleurs unies et il est impossible de reprendre la main

Dans ce cas-là, seul une réinitialisation complète permet de reprendre la main. Il semble que ce problème apparaisse sur les premières générations de processeurs Intel Pentium disposant de l'HyperThreading. Essayez de désactiver cette fonction dans le bios.

L'ordinateur s'allume mais freeze (carte graphique Nvidia)

Chez moi le problème est résolu en utilisant le pilote propriétaire Nvidia plutôt que le pilote libre Nouveau (dommage…).

Hibernation

Impossible de commencer l'hibernation

(Id2ndR) L'hibernation n'a pas commencé : Vérifiez que les processus ont bien voulu s'arrêter. Vous ne devez pas avoir de tâches qui refusent de geler (tasks refusing to freeze en angais) après la commande suivante :

dmesg | grep "Stopping user space processes timed out after 20 seconds"

Écran noir au démarrage après une hibernation

Lors d'un écran noir au démarrage après une hibernation vous pouvez avoir envie d'arrêter l'hibernation. Il est possible d'arrêter simplement l'hibernation en formatant la partition SWAP (qui est peut être endommagée). Il suffit de démarrer en Live CD et de formater la partition SWAP de linux avec GParted et de redémarrer.

Il n'y a plus de son au réveil :

En mode administrateur, éditez le fichier /etc/default/acpi-support et remplacez

HIBERNATE_MODE=shutdown

par

HIBERNATE_MODE=platform

OpenVPN ne redémarre pas :

FIXME 'L'UTILITÉ DE CE QUI SUIT EST À CONFIRMER'

En mode administrateur, éditez le fichier /etc/default/acpi-support et ajoutant à la liste STOP_SERVICES le service openvpn.

STOP_SERVICES="openvpn "

L'écran reste noir (carte graphique AGP nvidia)

Dans la Section "Device" du fichier /etc/X11/xorg.conf il est impératif de rajouter ces lignes :

Option      "NvAGP" "1"
Option	    "NoLogo" "true"

FIXME 'L'UTILITÉ DE CE QUI SUIT EST À CONFIRMER'

Commencez par vérifier que les pilotes de la carte vidéo sont bien installés (tentez le pilote propriétaire non libre). Si ça ne marche toujours pas :

Il faut supprimer le chargement du pilote via agp (dans ce cas):

 lsmod | grep agp

retourne un truc du style :

via_agp 9628 1

agpgart 34888 2 nvidia,via_agp

Éditez le fichier /etc/modprobe.d/blacklist et rajouter a la fin :

blacklist via_agp

Ubuntu démarre sans restaurer l'environnement, ou l'ordinateur reste allumé alors qu'il devrait hiberner (extinction brutale de l'ordi obligatoire)

Vérifiez que votre partition de swap est correctement détectée : allez voir uuid_swap_et_hibernation pour régler ce problème.

Vérifiez que la taille de votre partition swap est suffisante : la même taille que la RAM est a priori suffisante pour l'hibernation, même si certains préconisent par prudence 2 fois plus de swap que de RAM (ex : pour 1Go de RAM, partition swap d'au moins 2 Go ; pour 4Go de RAM, 8Go de swap est inutile et 4 Go suffisent)

Utiliser une méthode alternative

Si l'hibernation ne fonctionne toujours pas, vous pouvez essayer uswsusp ou tuxonice.

Mettre à jour le BIOS de la carte mère

Parfois, cela peut résoudre le problème. Cf doc ici

En dernier recours, compiler le dernier noyau (pour un utilisateur averti)

La connexion réseau ne se réactive pas en sortie de veille ou d'hibernation

Sous environnement Gnome : passer dans gconf-editor la clef /apps/gnome-power-manager/general/network-sleep à true (merci Fabux) et redémarrer l'ordinateur. (clef absente sous Precise 12.04)

Autre possibilité

Merci de vérifier le bon fonctionnement de l'astuce suivante et de signaler vos réussites et échecs à f.x0

Une autre solution est de lister en terminal le module utilisé par le wifi :

lshw -class network

1) - noter le nom du driver wifi utilisé spécifié par la commande lshw -class network.

2) - vérifier que la commande

lsmod

affiche le même nom du driver.

par exemple :

lshw -class network
ATTENTION: ce programme devrait être lancé en tant que super-utilisateur
*-network
       description: Interface réseau sans fil
       driver=r8712u
lsmod
r8712u                142855  0

En tout état de cause c'est bien le nom du module listé par la commande lsmod qu'il faudra insérer dans le fichier /etc/pm/config.d/load

3) - Taper cette commande pour créer (ou modifier) le fichier /etc/pm/config.d/load

echo "SUSPEND_MODULES=r8712u" | sudo tee -a /etc/pm/config.d/load

4) - Rendre le fichier exécutable:

sudo chmod +x /etc/pm/config.d/load

Hibernation après xxx secondes d'inactivité sous Lucid 10.04

Tout d'abord installer sleepd et hibernate.

sudo apt-get install sleepd
sudo apt-get install hibernate

Ensuite il faut modifier le fichier de configuration /etc/default/sleepd :

Le temps d'inactivité est de 600 secondes dans l'exemple ci-dessous.

# This is a configuration file for /etc/init.d/sleepd.
PARAMS=" -u 600 --sleep-command /etc/acpi/hibernate2.sh "

Puis il faut créer un script hibernate2.sh:

#!/bin/bash
sudo hibernate

J'utilisais également cette méthode sous karmic avec le script suivant:

#!/bin/bash
sudo pm hibernate

Changeons les droits d'accès à ce script:

sudo chmod 755 hibernate2.sh

Enfin il faut recharger le deamon sleepd:

sudo /etc/init.d/sleepd restart

Empêcher l'hibernation

Sur certains ordinateurs, l'hibernation peut poser problème : plantage à la mise en hibernation, au redémarrage … C'est notamment le cas sur les machines qui n'ont que très peu ou pas de swap .

Pour remédier à cela, il est possible d'empêcher l'hibernation.

Pour ce faire, ouvrir un terminal et saisir la commandes suivantes :

sudo nano /etc/pm/sleep.d/000_no-hibernation

Dans le nouveau fichier ainsi créer, saisir le code suivant :

#!/bin/sh
# Empêcher l'hibernation
. "$PM_FUNCTIONS"
[ "$1" = "hibernate" ] && inhibit || true

Enregistrer par Ctrl X puis O.

Pour empêcher la mise en veille et l'hibernation, utiliser ce code dans le fichier.2)

Matériel testé

Carte mère / Portable

À classer par jeux de puces en essayant de regrouper les modèles utilisant le même jeux de puce.

(CM= carte mère, P=Portable)

Marque Modèle CM ou P Jeux de puces Veille Hibernation Utilisateur(s)
Acer Veriton 2800 CM Intel 945G + ICH7 Oui (Attention: le bios doit être flashé en version R01-E0: lien) Non testé Ttipi
Gigabyte GA-MA790XT-UD4P CM AMD 790X Oui Oui (des avertissements, mais le réveil semble Ok) okonkole
Lenovo Edge 525 P AMD A8-3500M APU with Radeon™ HD Graphics Non Non Testé Cyrilco
MSI MS-7357 CM Intel G31 Oui (Choisir S3 dans le BIOS) Oui Id2ndR
MSI K8N Neo4-f CM nForce4 Oui Oui jewome_62
Toshiba Satellite (U200) P Intel G945 Oui (mais bogue) Oui Id2ndR
Lenovo 3000 Y310 P Intel GMA X3100 Oui (mais TouchPad HS au retour) Oui
HP Pavilion dv5053ea P ATI Radeon Xpress 200M Oui Oui (voir la conf là, pas de scripts) juju_theseaman
Dell XPS M1710 P Intel core2 T7400 Oui Oui (mais ne s’éteint pas seul) jef
Sony VAIO PCG-7G1M (ou VGN-FS415M) P Intel i915PM/GM + ICH6-M Oui Oui (Unity 13.10) en réactivant le script d'hibernation 89paladins
Sony VAIO FZ11E P Intel 965 PM Oui (Nécessite l'option NvAGP et de taper son mot de passe sur un écran blanc…) Pas encore testé bistory
Sony VAIO VPC EA1S1E P Intel Core i3 (M 330) + M92 (Mobility Radeon HD 4500 Series) Oui Pas testé (ubuntu 10.04 lucid) fnx
Lenovo 3000C200 8922AZG P Intel 945GM Non Non (ou avec gros pb au réveil) chourave
Lenovo R61 (8933-AL2) P Intel 965 Oui (Pb NetworkManager aléatoire : plus de réseau, redémarrage obligatoire dans ce cas) Oui (Avec paramétrage uuid swap, swap=ram) Endymion
Lenovo 3000 N100(0768-FKG) P Intel 945GM Oui Oui justin-brandon
MSI Wind U100-015 ? Intel GMA 945 Oui Oui anonymux
MSI MS-6178 CM Intel i810 Oui Oui Johan
MSI MS-6120 CM Intel i440BX Non Oui (nécessite la dernière version du bios disponible - la 2.0 - et de passer au noyau l'option acpi=force ; idem pour activer l'extinction du PC) Johan
Asus X5DIJ CM Mobile Intel® 45 Express Chipset Oui Oui aurel88
Asus P2L97-DS CM Intel i440LX Non Oui (nécessite la dernière version du bios disponible - la beta 1010.004 fonctionne bien - et de passer au noyau l'option acpi=force ; idem pour activer l'extinction du PC) Johan
Asus P5N-E SLI CM NVIDIA nForce 650i SLI Non Non t0m-s
Asus T-Série CM Nvidia GeForce 8200 Oui, mais pas deux fois de suite ! Oui Jeanmarc05
Asus U53J Série (ASUS U53JC-XX181X ) P NVIDIA GeForce 310M (Mobile Intel HM55 Express) (Intel Core i5-480M) Oui * Oui (*) voir http://thecodecentral.com/2011/01/18/fix-ubuntu-10-10-suspendhibernate-not-working-bug mobuxon
Asus X53U Series P AMD E-350 APU with Radeon™ HD Graphics (dual-core) Oui Oui MinecraftBreizh
Abit KT7A CM VIA KT133A Oui Oui Johan
Hp a247 CM Nforce4 Oui Oui aj94tj
Foxconn /865G7MF-SH CM Intel pentium 4 LGA775 Oui * Oui voir http://forum.ubuntu-fr.org/viewtopic.php?pid=3561362#p3561362 mferrato
Dell Vostro 1320 P Mobile Intel® 45 Express Chipset Non Non ateni
Fujitsu/Siemens Amilo M7405 P Pentium M - video i855GM Oui (avant Karmic ou à partir du noyau 3.3 Oui mais ne marche plus depuis Precise Bybeu

Carte graphique

À classer par marque et jeux de puces en essayant de regrouper les modèles utilisant le même jeux de puces.

Marque Jeux de puces (Modèle) Mobile module Veille Hibernation Utilisateur(s)
ATI R420 (Radeon X800 VE) non fglrx Oui Oui Id2ndR
ATI RC410 [Radeon Xpress 200] non fglrx - non (gutsy) marc31
ATI M92 (Mobility Radeon HD 4500 Series) oui fglrx Oui non installation par défaut (lucid) fnx
Intel G31 (X3100) non intel Oui Oui Id2ndR
Intel G945 oui intel Oui Oui Id2ndR
Intel GMA500 oui psb non (jaunty) non (jaunty) Escé
Nvidia NV43 (GeForce 6400) oui nvidia-304 Oui Oui (Unity 13.10) Id2ndR
Nvidia NV43 (GeForce 6600 GT) non nvidia-glx Oui Oui Id2ndR
Nvidia G72 (GeForce 7300 SE) non nvidia-glx - Oui marc31
Intel GMA945 oui Intel oui oui anonymux
Intel GMA X4500MHD oui Intel non non ateni

Carte réseau

À classer par module.

Marque Jeux de puces (Modèle) module Veille Hibernation Utilisateur(s)
Intel ipw2200 ipw2200 Oui Oui (Unity 13.10) en désactivant le module wifi suivant la méthode "La connexion réseau ne se réactive pas en sortie de veille ou d'hibernation–> Autre possibilité" 89paladins
Intel ipw3945 abg ipw3945 Oui Oui Id2ndR
Marvell 88E8056 PCI-E Gigabit sky2 Oui Oui Id2ndR

Contributeurs : Id2ndR didrocks sfley

1) Mode dans lequel les composants électroniques se mettent dans un état de consommation minimum pour préserver les données, sans être en attente d'écriture/lecture

veille_et_hibernation.txt · Dernière modification: Le 26/03/2014, 16:19 par minecraftbreizh
Le contenu de ce wiki est sous licence : CC BY-SA v3.0