GNU/Linux >> Tutoriels Linux >  >> Debian

Comment activer l'hibernation sur Ubuntu (lors de l'utilisation d'un fichier d'échange)

Cet article explique comment utiliser systemd pour activer l'hibernation sur les nouvelles versions d'Ubuntu lors de l'utilisation d'un fichier d'échange (qui est standard pour Ubuntu depuis au moins la version 18.04).

La batterie de mon ordinateur portable se décharge assez rapidement pendant qu'il dort. J'ai essayé des solutions / solutions de contournement comme celle-ci ici (sauf pour moi, le problème n'était pas que l'ordinateur portable perdait la moitié de sa puissance du jour au lendemain, mais tout en quelques heures), mais en vain. J'ai donc décidé d'activer l'option Suspend to Disk et de l'utiliser au lieu de l'option standard Suspend to RAM car elle consomme moins d'énergie afin que la batterie de l'ordinateur portable ne se vide pas lorsqu'elle n'est pas utilisée, même si cela prend un peu plus de temps pour se réveiller de l'hibernation que du sommeil. C'est comme ça.

Les instructions ci-dessous peuvent fonctionner sur d'autres distributions Linux, mais je n'ai testé cela que sur Ubuntu (cela devrait fonctionner de la même manière sur toutes les distributions Linux basées sur Debian et Ubuntu, y compris Pop! _OS, etc.). Sur les distributions Linux non Debian, vous devrez peut-être utiliser différentes commandes pour mettre à jour GRUB 2 (étape 4) et actualiser initramfs (étape 6) car il s'agit de commandes spécifiques à Debian.

Il est également important de noter que l'hibernation est désactivée dans Ubuntu car cela causera des problèmes sur certains ordinateurs et peut donc ne pas fonctionner pour tous. C'était un peu bavard de revoir l'hibernation sur Ubuntu avec la version 20.10, mais elle est restée désactivée par défaut.

exigences

Cela vaut la peine de mentionner Vous devriez avoir un fichier d'échange qui est au moins aussi grand que la mémoire de l'ordinateur (L'hibernation peut ou non réussir si votre ordinateur dispose d'un fichier d'échange dont la taille est inférieure à la mémoire du système). Cet article explique comment passer d'une partition d'échange à un fichier d'échange. Vous pouvez également utiliser ces instructions pour créer un fichier d'échange plus volumineux.

De plus, si vous avez spécialement chiffré votre swap, ces instructions ne fonctionneront pas . Étant donné que l'échange de mon ordinateur portable n'est pas crypté, je ne peux pas tenter cela avec un échange crypté, donc les instructions ci-dessous ne s'appliquent qu'aux fichiers d'échange non cryptés. Cependant, vous devez savoir que si vous disposez déjà d'un système de fichiers racine chiffré, tous les fichiers qu'il contient, y compris le fichier d'échange, seront également chiffrés, et les instructions suivantes fonctionneront dans ce cas.

Pour connaître la taille du swap de votre ordinateur et s'il utilise un fichier ou une partition d'échange (vous devrez le savoir plus tard), vous pouvez utiliser cette commande :

cat /proc/swaps

Voici un exemple avec la sortie de mon ordinateur portable :

$ cat /proc/swaps
Filename	Type	Size		Used		Priority
/swapfile	file	8388604		3213700		-2

Comme vous pouvez le voir ci-dessous Type il est écrit file , donc mon ordinateur utilise un fichier d'échange (et son chemin est /swapfile ), et sa taille est 8388604 Kilo-octets (8,3 Go).

Par défaut, Ubuntu utilise un fichier d'échange pendant un certain temps (au moins à partir d'Ubuntu 18.04), donc les instructions ci-dessous supposent que vous l'utilisez. Si vous utilisez une partition d'échange, dans les instructions suivantes, utilisez l'UUID de la partition d'échange au lieu de l'UUID de la partition sur laquelle se trouve le fichier d'échange et n'ajoutez pas de décalage de fichier d'échange (resume_offset Paramètres) partout. Ce sont les différences entre l'hibernation avec une partition d'échange et un fichier d'échange.

Cela pourrait également vous intéresser :3 outils pour afficher les informations sur la batterie d'un ordinateur portable Linux à partir de la ligne de commande

Comment activer l'hibernation sur Ubuntu (lors de l'utilisation d'un fichier d'échange)

1. Déterminez l'UUID de la partition sur laquelle se trouve le fichier d'échange.

Nous devons ajouter ceci au fichier GRUB et au fichier de reprise initramfs.

Pour connaître l'UUID de la partition où se trouve votre fichier d'échange, vous pouvez utiliser la commande suivante :

findmnt -no UUID -T /swapfile

(/swapfile est le chemin d'accès au fichier d'échange et peut être différent sur votre ordinateur ; Utilisez le chemin exact renvoyé par le cat /proc/swaps Commande).

Exemple de mon ordinateur (avec sortie) :

$ findmnt -no UUID -T /swapfile

4a59c6a7-ca54-4e24-a362-3eac83bfe226

2. Découvrez le décalage du fichier d'échange.

Ensuite, nous devons trouver le décalage du fichier d'échange. Comme l'UUID, nous devons l'ajouter au fichier GRUB et au fichier de reprise initramfs.

Cela peut être fait en exécutant la commande suivante :

sudo filefrag -v /swapfile

Dans la sortie de cette commande, le premier bloc de nombres de la colonne "physical_offset" est le décalage du fichier d'échange, dont vous aurez besoin plus tard. Copiez uniquement les chiffres et non les points qui suivent le pavé numérique.

Dans mon cas, par exemple, c'est la sortie du sudo filefrag -v /swapfile Commande :

$ sudo filefrag -v /swapfile
Filesystem type is: ef53
File size of /swapfile is 8589934592 (2097152 blocks of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..    6143:    4974592..   4980735:   6144:
   1:     6144..    8191:    4982784..   4984831:   2048:    4980736:
   2:     8192..   10239:    4988928..   4990975:   2048:    4984832:
   3:    10240..   12287:    4997120..   4999167:   2048:    4990976:
........................................

Dans cet exemple, le décalage est le fichier d'échange 4974592 (Ceci est le premier bloc de chiffres du psysical_offset Pilier).

3. Modifier le /etc/default/grub Fichier à démarrer avec les paramètres du noyau "resume" et "resume offset".

Il est très important de vous assurer que vos modifications apportées à ce fichier sont correctes, sinon votre ordinateur risque de ne pas démarrer !

Ouvrez ce /etc/default/grub Fichier avec un éditeur de texte en tant que root, par ex. avec la commande suivante, nous l'ouvrons avec l'éditeur de texte en ligne de commande Nano :

sudo nano /etc/default/grub

Dans ce fichier à la fin du GRUB_CMDLINE_LINUX_DEFAULT Ligne, avant la fin " , ajoutez ce qui suit :resume=UUID=UUID_FROM_STEP_1 resume_offset=SWAP_OFFSET_FROM_STEP_2 . Remplacez les valeurs par l'UUID que vous avez obtenu à l'étape 1 et le décalage de reprise d'échange que vous avez obtenu à l'étape 2.

Pour enregistrer le fichier et quitter Nano, appuyez sur Ctrl + o , puis Enter , puis Ctrl + x .

Exemple. C'est comme ça que ça se passe GRUB_CMDLINE_LINUX_DEFAULT La ligne ressemble à ceci sur mon ordinateur après avoir ajouté l'UUID d'échange et l'offset d'échange :

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=4a59c6a7-ca54-4e24-a362-3eac83bfe226 resume_offset=4974592"

4. Mettez à jour la configuration GRUB.

Pour mettre à niveau GRUB 2 sur les distributions Linux basées sur Debian, il vous suffit d'exécuter la commande suivante :

sudo update-grub

5. Créez (ou modifiez si vous en avez déjà) /etc/initramfs-tools/conf.d/resume avec l'UUID d'échange et le décalage de reprise.

Ensuite, nous devons éditer le fichier (ou le créer s'il n'existe pas). /etc/initramfs-tools/conf.d/resume Fichier avec un éditeur de texte en tant que root. Utilisez la commande suivante pour ouvrir ce fichier avec l'éditeur de ligne de commande Nano :

sudo nano /etc/initramfs-tools/conf.d/resume

Si vous avez une ligne dans ce fichier qui commence par "RESUME", modifiez cette ligne, ou s'il n'y a pas une telle ligne (ou le fichier est complètement vide), ajoutez la ligne pour qu'elle ressemble à ceci :

RESUME=UUID=UUID_FROM_STEP_1 resume_offset=SWAP_OFFSET_FROM_STEP_2

Pour enregistrer le fichier et quitter Nano, appuyez sur Ctrl +o , puis Enter , puis Ctrl + x .

Exemple avec le contenu du /etc/initramfs-tools/conf.d/resume Fichier depuis mon ordinateur portable :

RESUME=UUID=4a59c6a7-ca54-4e24-a362-3eac83bfe226 resume_offset=4974592

6. Actualiser initramfs.

Vous devez maintenant régénérer initramfs avec cette commande :

sudo update-initramfs -c -k all

7. Redémarrez votre ordinateur.

Après avoir redémarré votre ordinateur, utilisez la commande suivante pour mettre votre ordinateur en veille :

sudo systemctl hibernate

Pour l'instant, vous devrez fournir votre mot de passe pour vous mettre en veille et il n'y a pas d'option de menu pour mettre votre ordinateur en veille, vous devrez donc faire tout cela à partir de la ligne de commande. Pour mettre votre système en veille sans entrer de mot de passe (et avoir la possibilité de mettre l'ordinateur en veille prolongée dans l'option d'alimentation de votre bureau (par exemple, dans une applet du panneau de configuration)), consultez les 2 étapes suivantes.

Pour sortir de l'hibernation, appuyez sur le bouton d'alimentation de votre ordinateur.

Si vous obtenez un message d'erreur lorsque vous exécutez cette commande indiquant que le système n'a pas pu être mis en hibernation via logind :Pas assez d'espace d'échange pour hiberner, alors vous avez peut-être oublié la note au début de l'article où je mentionne qu'il est préférable de disposer d'un fichier d'échange au moins aussi volumineux que la mémoire de votre ordinateur. Cet article explique comment passer d'une partition d'échange à un fichier d'échange. Vous pouvez également utiliser ces instructions pour créer un fichier d'échange plus volumineux.

Vous pouvez vérifier les erreurs liées au service systemd Hibernate en :

systemctl status systemd-hibernate.service

8. Optionnel. Autoriser l'hibernation sans entrer de mot de passe (requis pour l'étape suivante). Dans certains environnements de bureau, cela réactive les options de menu d'alimentation "Hibernate" et "Hybrid Sleep".

Afin de mettre votre ordinateur en veille, vous devrez entrer votre mot de passe par défaut. Pour autoriser l'hibernation sans mot de passe, créez / ouvrez /etc/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla avec un éditeur de texte en root.

La commande suivante ouvre /etc/polkit-1/localauthority/50-local.d/com.ubuntu.desktop.pkla en tant que root à l'aide de l'éditeur de ligne de commande nano :

sudo nano /etc/polkit-1/localauthority/50-local.d/com.ubuntu.desktop.pkla

Dans ce fichier, collez ce qui suit :

[Enable hibernate in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes
[Enable hibernate in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
ResultActive=yes

Enregistrez maintenant le fichier et quittez Nano (appuyez sur Ctrl + o , puis Enter , puis Ctrl + x ).

Dans certains environnements de bureau, vous recevrez alors (et après vous être déconnecté/reconnecté) les options d'alimentation hibernation et veille hybride. Voici un exemple avec les options d'alimentation Xfce après avoir suivi cette étape :

Cependant, cela ne fonctionne pas sur certains environnements de bureau qui utilisent Ubuntu, tels que :B. avec le shell GNOME. Dans ce cas, nous avons besoin d'une étape supplémentaire (voir ci-dessous).

qui passe par AskUbuntu

9. Optionnel. Ajoutez un élément de menu pour les applications d'hibernation ou utilisez un bouton d'hibernation pour le shell GNOME.

Si vous utilisez le shell GNOME, vous pouvez utiliser une extension qui ajoute une option pour mettre votre ordinateur en veille dans le menu d'alimentation du système sur la barre supérieure, appelée bouton Veille.

Voici le menu Power Off / Logout GNOME Shell avec cette extension activée :

Si vous n'utilisez pas le shell GNOME, mais que votre environnement de bureau n'affiche pas d'option d'alimentation en veille prolongée, ou si vous ne souhaitez pas utiliser l'extension GNOME Shell mentionnée ci-dessus, vous pouvez créer une entrée dans le menu de votre application en créant un fichier appelé hibernate. bureau en ~/.local/share/applications/ , par exemple. ouvrez l'éditeur de texte en ligne de commande Nano avec ce fichier :

nano ~/.local/share/applications/hibernate.desktop

Et dans ce fichier, ajoutez ce qui suit :

[Desktop Entry]
Type=Application
Name=Hibernate desktop
GenericName=Hibernate desktop
Comment=Enter hibernation
NoDisplay=false
Icon=drive-multidisk
Exec=systemctl hibernate
Terminal=true
Categories=System;Utility;Settings;

Vous pouvez maintenant aller dans le menu de l'application sur votre bureau et cliquer sur le Hibernate Icône pour mettre votre système en veille. Pour que cela fonctionne, vous devez suivre l'étape facultative 9 ci-dessus pour vous endormir sans entrer le mot de passe.

Je devrais également clarifier ce qu'il en est de l'option Hybrid Sleep . En plus de Sleep / Suspend (Suspend to RAM) et Hibernate (Suspend to Disk), il existe également l'option Hybrid Sleep (également appelée Hybrid Suspend), qui met votre ordinateur en hibernation puis entre en hibernation après un certain laps de temps. . Vous pouvez définir le temps de veille hybride entre la suspension et l'hibernation (ainsi que d'autres options) en utilisant le /etc/systemd/sleep.conf Fichier puis redémarrez votre système. Vous pouvez en savoir plus à ce sujet dans Arch Wiki.

Vous pourriez aimer ceci :Comment activer le décodage vidéo accéléré par le matériel dans les navigateurs Google Chrome, Brave, Vivaldi et Opera sur Debian, Ubuntu ou Linux Mint


Debian
  1. Comment ajouter un fichier d'échange sur Ubuntu

  2. Comment augmenter la taille d'échange sur Ubuntu Linux

  3. Comment activer la journalisation error-log.txt à l'aide du fichier .htaccess ?

  4. Comment installer g ++ sur Ubuntu

  5. Comment copier un fichier via FTP en utilisant Ubuntu Linux ?

Comment activer les mises à jour de sécurité automatiques sans surveillance sur Ubuntu

Comment supprimer un fichier dans Ubuntu

Comment planifier des tâches sur Ubuntu 20.04 à l'aide de Crontab

Comment créer un fichier dans Ubuntu Linux à l'aide de la commande et de l'interface graphique

Comment installer le fichier Deb sur Ubuntu à l'aide de Gdebi

Comment ajouter un fichier d'échange sur Ubuntu 20.04