web-dev-qa-db-fra.com

Hibernation en 18.04

Hibernation sur mon Ubuntu 18.04 ne fonctionne pas immédiatement (je veux dire Sudo systemctl hibernate). J'ai donc fait plusieurs tentatives pour résoudre ce problème il y a quelque temps et je ne peux malheureusement pas me souvenir de ce que j'ai fait.

Mais maintenant:

Sudo hibernate

met en veille le système avec succès et l’état du système est restauré au prochain démarrage, sauf que l’écran de connexion ne s’affiche pas, ce qui n’est pas correct. Et si plusieurs applications sont en cours d'exécution qu'après cette reprise, le système risque d'être gelé pendant 20 minutes au maximum (je vois les fenêtres des applications, le pointeur de la souris peut être déplacé, mais le système ne répond pas aux clics), mais après cela fonctionne normalement.

Sudo systemctl hibernate

fait quelque chose, arrête le système, mais au prochain démarrage, je vois plusieurs messages efface le noeud orphelin et enfin, un démarrage en mode minimal, comme s'il n'y avait pas eu de veille prolongée.

S'il vous plaît, aidez-moi à clarifier le problème et à activer l'hibernation dans l'interface graphique.

En même temps, suspendre en mémoire et reprendre de la mémoire fonctionne sans problème, , y compris l’écran de connexion lors de la reprise .

La question principale que j'ai est la suivante: Lequel des deux mécanismes hibernate ou systemctl hibernate dois-je utiliser avec 18.04?

Détails

Le système a une partition d'échange

$ lsblk | grep SWAP
└─sda5   8:5    0  16,8G  0 part [SWAP]
$ free -m
              total        used        free      shared  buff/cache   available
Mem:          15894        3386        9945        1311        2561       11848
Swap:         17163        2150       15013

et dans /etc/default/grub il a

GRUB_CMDLINE_LINUX_DEFAULT = "CV de démarrage silencieux =/dev/sda5" GRUB_CMDLINE_LINUX = ""

et

$ cat /sys/power/state
freeze mem disk
$ cat /sys/power/disk
[platform] shutdown reboot suspend test_resume

[RESOLU] :-)

Finalement, j'ai réussi à mettre l'hibernation au travail. Tant que je ne comprends pas bien le sujet, je vais plutôt décrire ce que j'ai fait. Alors

  1. Complètement supprimé pm-utils et swsusp, puis Sudo update-initramfs -c -k all et reboot

Après cette tentative d'hibernation, le démarrage en mode minimal a abouti au lieu de reprendre. Donc alors

  1. Réinstallé systemd puis changé les noms de périphériques en UUID afin de

dans /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT = "CV de démarrage silencieux = UUID = 2c8ec945-6967-4538-93ef-49eb4df6f2a1"

dans /etc/initramfs-tools/conf.d/resume

RESUME = UUID = 2c8ec945-6967-4538-93ef-49eb4df6f2a1

puis

$ Sudo initramfs -c -k all
$ Sudo update-grub
$ reboot

Après cela Sudo systemctl hibernate et CV ont réussi mais sans écran de connexion, donc

  1. Dans Paramètres (interface graphique) pour l'action du bouton d'alimentation, j'ai affecté "Veille prolongée".

Maintenant, lorsque j'appuie sur le bouton d'alimentation, le système passe en veille prolongée, puis est restauré via l'écran de connexion.

Merci beaucoup à toutes les personnes impliquées


PD: Maintenant, j'ai trouvé une solution encore meilleure - utiliser un fichier d'échange

Je l’ai vérifiée sur une nouvelle installation de bureau Ubuntu 18.10 et je suppose qu’elle fonctionne également avec une nouvelle installation de bureau 18.04 car ils utilisent tous deux le fichier swap par défaut, c’est-à-dire qu’ils n’allouent pas swap partition par défaut. Mais le fichier d'échange par défaut est de 2 Go quelle que soit la taille de la mémoire système, il convient donc de l'augmenter.

La description complète est par exemple ici .

6
Sergey K

Il y a deux excellentes réponses aux questions d'hibernation avec un peu plus de détails ici:

Petite forêt ancienne Kami répond à: buntu 18.04 ne peut pas reprendre après une veille prolongée

Réponse de Zanna à: Comment puis-je hiberner sur Ubuntu 16.04?

Je n'utilise pas normalement Hibernate, mais je tentais de l'utiliser récemment tout en recherchant un bogue et je me suis rendu compte que pour pouvoir travailler sur 18.04, vous devez ajouter une ligne à/etc/default/grub afin de lui indiquer où reprendre.

Le 16.04, il n'était pas nécessaire pour moi d'ajouter le paramètre 'resume =' à grub, je pense donc que le changement est intervenu relativement récemment.

Vous ferez probablement mieux d'utiliser l'UUID (identificateur unique universel) et pourrez utiliser le programme 'Disks' pour connaître l'UUID de votre partition de swap et simplement le copier et le coller à partir de là.

Utilisez Sudo nano /etc/default/grub pour ajouter à la ligne

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

afin qu'il ait le paramètre de noyau supplémentaire resume=UUID=theUUIDofyourswappartition entre les guillemets.

La vôtre sera différente, mais dans mon cas, la ligne est la suivante:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=549816d3-0ed8-44fa-a7e4-968db519a141"

(quittez nano en utilisant Ctrl+x, presse y faire les changements et enter accepter le nom du fichier)

Vous devez exécuter Sudo update-grub pour que vos modifications prennent effet, mais lors du prochain redémarrage, vous devriez pouvoir passer en veille prolongée sans problèmes.

Autant que je sache, la fonctionnalité de veille prolongée est de reprendre là où vous l'avez laissée, elle n'est donc pas conçue pour accéder à l'écran de connexion et vous demander votre mot de passe.

Je ne sais pas si vous pouvez le changer pour qu'il vous demande votre mot de passe, mais il pourrait être intéressant de poser une question distincte pour voir si quelqu'un d'autre sait quoi faire.


Fichier d'échange

Si vous avez un fichier d'échange au lieu d'une partition d'échange séparée, vous devez également ajouter le paramètre supplémentaire resume_offset=.

Le Arch Linux Wiki a ne très bonne section à ce sujet mais, fondamentalement, votre fichier d'échange doit se trouver sur la partition principale sur laquelle Ubuntu est installé.

Pour connaître le décalage à mettre dans resume_offset=, vous pouvez ouvrir un terminal et taper

Sudo filefrag -v /swapfile

vous obtiendrez quelque chose qui ressemble à ceci:

ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..   32767:      34816..     67583:  32768:            
   1:    32768..   63487:      67584..     98303:  30720:            
   2:    63488..   96255:     100352..    133119:  32768:      98304:
   3:    96256..  126975:     133120..    163839:  30720:   
etc...

et vous voulez le premier numéro, dans la première ligne qui est sous physical_offset (dans ce cas, 34816)

Ainsi, à titre d'exemple, en utilisant l'UUID et le décalage physique de ma machine avec un fichier d'échange, j'ai modifié la ligne GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" pour qu'elle soit

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=09e601cd-5bac-491a-9115-fda1b2eb4664 resume_offset=34816"

N'oubliez pas d'exécuter Sudo update-grub et de redémarrer, mais après cela, le mode veille prolongée devrait fonctionner correctement.

7
pHeLiOn