Des modifications ont été apportées aux paramètres par défaut par rapport au LTS précédent (16.04). Dans mon cas, l'hibernation n'a pas fonctionné jusqu'à ce que j'aie effectué plusieurs étapes, dont l'augmentation de la taille du fichier d'échange, l'activation, la vérification des stratégies, etc.
Cela peut facilement être ma réponse la plus longue sur StackExchange entier, j'ai donc essayé de rendre les en-têtes descriptifs .
Bottes car il n'y avait pas d'hibernation
Il serait prudent de jeter un œil à vos journaux (cela dmesg
pourrait aider) et de voir s'il y a quelque chose. Il y a des raisons pour lesquelles malgré le fait que vous ayez dit au système d'hiberner, il ne le fera pas, ou il suspendra à la place (RAM).
Regarder kern.log
et syslog
rechercher des messages liés à l'hibernation ne ferait pas aussi mal. Les sections commençant par «problème» peuvent vous aider avec des problèmes spécifiques.
Fichier d'échange ou partition d'échange
L'un des changements cruciaux est que maintenant vous N'AVEZ PAS de partition de swap, mais vous avez un fichier de swap.
Le fichier d'échange peut ne pas fonctionner pour votre mélange matériel / pilotes / système d'exploitation et hibernation.
Hibernation désactivée
Les stratégies peuvent également désactiver ou interdire l'hibernation.
Jargon
Suspendre à la RAM - La RAM conserve les données, l'ordinateur s'endort plus rapidement, utilise plus d'énergie lorsqu'il est suspendu, se réveille plus rapidement. Certains appellent cela le sommeil.
Suspendre sur le disque - alias hibernation. La RAM est enregistrée pour permuter (partition ou fichier), l'ordinateur se met en veille plus lentement, utilise moins d'énergie en hibernation, se réveille plus lentement.
Prérequis - avez-vous suffisamment d'espace?
Pour hiberner, vous devez (simplification ici) enregistrer l'intégralité de votre RAM sur votre disque dur. Vous devez donc réserver suffisamment d'espace pour le faire. Sinon, cela échouera et vous n'hibernerez pas.
free -m
vous dira combien de mémoire vous avez, utilisez et combien il y a dans votre swap.
df -h
vous indiquera la quantité d'espace disque dont vous disposez sur chaque point de montage et la quantité utilisée, gratuite, etc. assez d'espace pour votre échange.
cat fstab
devrait vous donner des informations si vous avez une partition ou un fichier d'échange. Selon Ubuntu Hibernation, la FAQ swapfile
peut ne pas toujours fonctionner avec certaines combinaisons de matériel / pilotes.
Si vous n'avez pas assez d'espace, suivez la FAQ sur le swap Ubuntu . Il vous indique comment augmenter le fichier d'échange, en ajouter un autre, vérifier s'il est utilisé, etc. Avec des commandes et des explications. Ressource vraiment sympa.
Je n'ai pas assez d'espace pour installer ma RAM!
Les documents du noyau disent:
/ sys / power / image_size contrôle la taille de l'image créée par le mécanisme de suspension sur disque. Il peut être écrit une chaîne représentant un entier non négatif qui sera utilisé comme limite supérieure de la taille de l'image, en octets. Le mécanisme de suspension sur disque fera de son mieux pour garantir que la taille de l'image ne dépasse pas ce nombre. Cependant, si cela s'avère impossible, il essaiera quand même de suspendre en utilisant la plus petite image possible. En particulier, si "0" est écrit dans ce fichier, l'image suspendue sera aussi petite que possible. La lecture de ce fichier affichera la taille limite d'image actuelle, qui est définie par défaut sur 2/5 de la RAM disponible.
Alors, essayez de modifier la taille de votre image. Comment - posez une autre question s'il vous plaît.
Prérequis - votre noyau prend-il en charge la suspension sur disque?
Le noyau prend en charge tout ce qui est répertorié /sys/power/state
, donc:
cat /sys/power/state
Admis (à ma connaissance) les entrées y sont: mem
, standby
, freeze
, disk
. Explication:
mem
- a plusieurs significations, laquelle exactement sur votre système vous découvrirez via cat /sys/power/mem_sleep
. J'ai:s2idle [deep]
standby
- Suspension à la mise sous tension (si prise en charge)
freeze
- Suspendre au ralenti (STI)
disk
- Suspension sur disque (STD), hibernation . Ça - tu veux.
Ensuite, nous devons vérifier cat /sys/power/disk
. Si vous y êtes, disabled
plongez dans votre BIOS à la recherche d'un démarrage sécurisé - c'est la seule idée que je puisse vous proposer et la seule chose que je sache peut interférer et désactiver l'hibernation. Bien que je ne connaisse que SecureBoot, il peut y avoir d'autres interférences, donc jeter un œil à votre BIOS est une bonne idée même si vous n'avez pas de "démarrage sécurisé".
Lire ici:
- Documents sur le noyau
- Wiki Debian sur l'hibernation
TBH, même si votre noyau ne prend PAS en charge l'hibernation, vous pouvez l'essayer d'une autre manière, faites défiler jusqu'à la sectionInterfaces
.
Lisez ceci - avertissements et problèmes - pas de BTRFS
Dans aucun ordre particulier:
- Tous les chipsets ne fonctionneront pas (je n'ai pas de sources que je peux citer ici, alors disons que c'est du ouï-dire)
- VAIO a des problèmes, soi-disant il y a un drapeau pour les contrer
- SecureBoot est souvent cité comme interférant ou désactivant l'hibernation
- Wake-on-LAN consomme de l'énergie même en veille prolongée
- Le nombre de modules (graphiques en particulier) peut être initialisé AVANT que votre système ne quitte correctement l'hibernation - c'est généralement la cause de l'écran noir lors de la reprise . Consultez le wiki ArchLinux pour obtenir des conseils sur la façon de déboguer les problèmes. Je suggérerais également la FAQ Ubuntu sur les problèmes de mise en veille prolongée. La navigation dans les bogues du Launchpad peut également donner des résultats. IIRC, il y a un paramètre de noyau spécifiant en quelques secondes un délai avant de reprendre.
- L'autorisation de mise en veille prolongée diffère selon les différentes versions de Polkit
N'utilisez pas BTRFS et hibernez: des données corrompues seront le résultat.
Je veux hiberner - échanger la partition
Il y a des cas où les gens renoncent au fichier d'échange et retournent à la partition d'échange. Après tout, cela a fonctionné sur les LTS précédents. Je n'ai pas essayé, donc je n'offrirai pas de pointeurs.
Je veux hiberner - avec un fichier d'échange
- Assurez-vous d'avoir suffisamment d'espace là-bas. La FAQ sur le swap Ubuntu vous indique de combien vous avez besoin, les commandes ci-dessus le font également. Si vous avez besoin de plus d'informations ici, posez une autre question s'il vous plaît, car c'est un long sujet.
- Augmentez le fichier d'échange ou créez-en un nouveau avec une taille suffisante (de préférence, je suis d'accord avec @muru ) et changez-le
/etc/fstab
en un nouveau. Redémarrez pour voir le changement est bien pris (stocker la sauvegarde du fstab
afin que vous puissiez facilement revenir en arrière au cas où.
- Dirigez votre noyau vers cela avec les paramètres appropriés, afin qu'il sache d'où reprendre.
- Mettez à jour / reconfigurez votre chargeur de démarrage et redémarrez.
Paramètres du noyau? Effrayant!
Lisez attentivement et décidez si vous souhaitez le faire, mais ce n'est qu'un moyen de configurer votre noyau. Il peut être plus facile d'hiberner via systemd
et uswsusp
(voir Interfaces ci-dessous). Il se peut que vous - comme moi - décidiez finalement que la suspension vers la RAM est suffisante et que vous ne voulez pas avoir 32 Go sur un fichier d'échange (pas si bien pour les gens avec un SSD dans leurs ordinateurs portables, par exemple). Mais!
- hibernate to swap file nécessite
resume=
de savoir sur quelle partition se trouve votre fichier swap et resume_offset=
de savoir à partir de quel fichier swap commencer la reprise.
- hibernate to partition nécessite
resume=
de pointer pour échanger la partition.
- la résolution des problèmes d' écran noir pourrait bien nécessiter
resumedelay=
.
Documents du noyau sur le retard de la reprise de l'hibernation:
resumedelay = [HIBERNATION] Délai (en secondes) de pause avant d'essayer de lire les fichiers de reprise
Paramètres requis pour le fichier d'échange et l'hibernation :
resume = [SWSUSP]
Specify the partition device for software suspend
Format:
{/dev/<dev> | PARTUUID=<uuid> | <int>:<int> | <hex>}
resume_offset = [SWSUSP]
Specify the offset from the beginning of the partition
given by "resume=" at which the swap header is located,
in <PAGE_SIZE> units (needed only for swap files).
See Documentation/power/swsusp-and-swap-files.txt
Pour le, resume=
choisissez le même style que l' root
élément dans fstab
. Donc, ou /dev/sdaX
ou UUID
ou LVM. Pour hiberner dans un fichier - fournissez une partition où votre fichier peut être trouvé.
En train de lire:
- https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt
- https://wiki.archlinux.org/index.php/Kernel_parameters
Problème - en-tête de swap introuvable
Le fichier d'échange doit être formaté correctement. Si vos journaux vous le disent, vous essayez d'hiberner dans un fichier ou votre paramètre de reprise n'est pas correct.
Basculez pour partitionner ou corriger le fichier ou modifier l'interface utilisée pour l'hibernation.
Voir: /unix/43508/debian-hibernate-problem-pm-swap-header-not-found
mkswap
est utilisé pour formater le fichier, en savoir plus ici
Problème! Hibernation non autorisée!
Testez: pm-hibernate
(si le package pm-utils est installé) ou systemctl hibernate
dites-vous que vous n'êtes pas autorisé. Paramètre par défaut dans Ubuntu depuis IIRC 12.04.
Solution (s): dépend de votre version de Polkit, de votre version d'Ubuntu et de votre saveur ... Voir cette question . De plus, ArchWiki sur Polkit peut vous aider.
Pour Mint, voir: https://forums.linuxmint.com/viewtopic.php?t=259912
Problème! Hibernation désactivée par quelque chose dans le BIOS!
Test: cat /sys/power/disk
a disabled
. Les journaux affichent "Échec d'hibernation du système via logind: le verbe Sleep n'est pas pris en charge".
Solution: recherchez votre BIOS et trouvez la chose problématique. Éteignez-le.
Solution 2: essayez une autre interface de mise en veille prolongée.
Voir: Comment activer l'hibernation dans 16.04.1? (systemd) .
Interfaces
- swsusp - interface de noyau de bas niveau. Voir Prérequis - noyau pour quels fichiers. L'écriture directe dans des fichiers peut entraîner une suspension (vers la RAM, le disque et l'hybride). Selon SwapFAQ problématique avec l'hibernation au fichier.
- uswsusp - ArchWiki et Wiki Debian et belle question AskUbuntu avec une explication comment l'utiliser .
- systemd - ArchWiki dessus
- pm-utils - AFAIK qui est une collection de scripts originaires de Debian - je serais ravi d'accueillir moi-même plus d'informations.
Remarques de clôture
Pour moi, il a fallu presque deux jours de travail pour le compiler. J'espère que cela vous aidera (ainsi que d'autres) à résoudre votre problème plus rapidement. Il y a encore des points que j'ai ratés mais il est 2h du matin et je n'ai plus envie d'écrire plus maintenant. Je suis bien sûr ouvert aux conseils de quiconque pour améliorer les choses, alors commentez. Je répondrai une fois que je dors, travaille etc. :-)
Je ne suis pas certain que l'hibernation sur le disque soit géniale. J'ai fini par dormir. Mais pour moi, le problème était d'avoir un fichier de 32 Go juste pour pouvoir faire l'hibernation, car j'évite généralement d'échanger du tout. Mon fichier d'échange initial était à 2 Go et il était principalement vide. YMMV. Et bonne chance! Et commencez par les journaux!