Ceci est une ancienne révision du document !
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.
Problèmes connus
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 :
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.
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 :
'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"
'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
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)
Une autre solution est de lister en terminal le module utilisé par le wifi
lsmod
par exemple r8712u 142855 0
- créer le fichier /etc/pm/config.d/load et y saisir le code suivant (adapter le nom du pilote en fonction du vôtre) :
SUSPEND_MODULES=r8712u
Sauver et fermer, puis 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 :
# 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
#!/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
(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 + CG Nvidia GeForce Ge6400 | Oui | Oui (Unity 13.10) en réactivant le script d'hibernation, puis en désactivant le module wifi (ipw2200) suivant la méthode "La connexion réseau ne se réactive pas en sortie de veille ou d'hibernation–> Autre possibilité" | 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 |
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
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 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
Marque | Jeux de puces (Modèle) | module | Veille | Hibernation | Utilisateur(s) |
---|---|---|---|---|---|
Intel | ipw3945 abg | ipw3945 | Oui | Oui | Id2ndR |
Marvell | 88E8056 PCI-E Gigabit | sky2 | Oui | Oui | Id2ndR |