Mise en veille prolongée avec fichier d'échange à l'aide de uswusp
Bien qu'il soit possible d'hiberner pour permuter le fichier et cela fonctionne censément avec systemd hibernate en définissant les paramètres du noyau. Cependant, je n'ai pas pu le faire reprendre, alors je suis passé à l'utilisation de uswsusp (suspension du logiciel de l'espace utilisateur) . Voici les étapes que j'ai utilisées sur Ubuntu 17.04 / 17.10.
Créer le fichier d'échange
Les commandes pour créer un fichier d'échange 4GiB formaté, monté et ajouté à /etc/fstab
:
sudo fallocate -l 4g /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab
Vérifier la partition de fichier d'échange
sudo findmnt -no SOURCE,UUID -T /swapfile
> /dev/sda1 11cc33ee-1234-abcd-1234-ddeeff112233
Installer la suspension du logiciel de l' espace utilisateur (uswsusp)
sudo apt install uswsusp
Configurer uswsusp
Pour créer /etc/uswsusp.conf
et recréer initramfs
:
sudo dpkg-reconfigure -pmedium uswsusp
Yes
à « Continuer sans espace d'échange valide? ' (L'assistant n'a pas encore défini le fichier d'échange.)
- Sélectionnez la partition sur laquelle réside le fichier d'échange, référence croisée avec les détails
findmnt
ci-dessus. ( Remarque: pas le fichier d'échange lui-même )
Remarque: Toutes les modifications apportées manuellement /etc/uswsusp.conf
nécessiteront une recréation initramfs
ultérieure avec cette commande:
sudo update-initramfs -u
Test uswusp hibernate
sudo s2disk
Il devrait y avoir des snapshot
messages à l'écran lors de la mise en veille prolongée et de la reprise.
Utiliser s2disk avec systemd hibernate
Par défaut, systemd utilisera ses propres commandes hibernate alors remplacez-les par les commandes uswusp en remplaçant systemd-hibernate.service
:
sudo systemctl edit systemd-hibernate.service
Dans l'éditeur de texte qui s'ouvre, placez le texte suivant (le ExecStart vierge est requis). Ensuite, enregistrez et quittez:
[Service]
ExecStart=
ExecStart=/usr/sbin/s2disk
ExecStartPost=/bin/run-parts -a post /lib/systemd/system-sleep
Cela créera un /etc/systemd/system/systemd-hibernate.service.d/override.conf
fichier avec les détails de remplacement.
Test du système en hibernation:
systemctl hibernate
Remarque: Pour vérifier que le systemd override.conf
a été créé, chargé et qu'il n'y a aucune erreur, exécutez:
systemctl status systemd-hibernate.service
Les références:
ExceStart=run-parts -a post /lib/systemd/system-sleep
casExceStartPost=run-parts -a post /lib/systemd/system-sleep
enable
option dessystemctl
liens symboliques de/etc/systemd/system/
à/lib/systemd/system/
. Vous ne devriez jamais copier directement dans/etc/systemd/system/
sudo s2disk
uniquement les journauxSaving snapshot
, puis éteint l'écran, se bloque pendant environ 5 minutes, puis il arrête l'ordinateur. Cependant, après l'avoir allumé, il démarre normalement comme s'il n'y avait pas d'hibernation.sudo findmnt -no SOURCE,UUID -T /mnt/4GiB.swap
devrait être remplacée parsudo findmnt -no SOURCE,UUID -T /swapfile
Voici ce que j'ai fait pour le faire fonctionner avec Ubuntu 18.04.
Faites en
/swapfile
sorte d'avoir au moins la taille de votre RAMNotez l'UUID de la partition contenant votre
/swapfile
:Reconfigurez le package
uswsusp
afin d'utiliser correctement le fichier d'échange:Modifiez le service SystemD hibernate à l'aide de
sudo systemctl edit systemd-hibernate.service
et remplissez-le avec le contenu suivant:Notez le décalage de reprise de votre
/swapfile
:Configurez Grub pour reprendre à partir du fichier d'échange en modifiant
/etc/default/grub
et en modifiant la ligne suivante:Mettre à jour Grub:
Créez les éléments suivants
/etc/initramfs-tools/conf.d/resume
:Mettre à jour initramfs:
Vous pouvez maintenant hiberner avec
sudo systemctl hibernate
.On peut également créer ces scripts:
Vous pouvez donc dormir avec
gotosleep
ou hiberner avecgotohibernation
.Vous devez être en mesure d'exécuter
sudo s2both
,sudo s2ram
etsudo systemctl hibernate
sans avoir à saisir votre mot de passe pour les scripts précédents au travail.Vous pouvez le faire par exemple en créant un
powerdev
groupe, ajoutez-y votre utilisateur actuel et configurez la configuration sudoers suivante (modifiez-la avecsudo visudo -f /etc/sudoers.d/powerdev
):Documentation utilisée:
la source
J'ai donné une lecture rapide au tutoriel et, si j'ai bien compris, il vous suffit de spécifier les
resume
options de la ligne de commande Linux. Avec Grub2, c'est vraiment simple, et vos modifications seront toujours préservées. Vous devez modifier le/etc/default/grub
fichier, en particulier cette ligne:Après cela, exécutez
sudo update-grub
pour que les modifications prennent effet.La modification
GRUB_CMDLINE_LINUX
n'affectera pas les autres installations Linux que vous avez (car/etc/grub.d/30_os-prober
n'utilise pas cette variable).À propos du problème que vous rencontrez: la partition du fichier d'échange est-elle cryptée? Si c'est le cas, l'hibernation ne fonctionnera pas. Sinon, la sortie de
filefrag -v /swapfile
peut être utile.la source
/etc/default/grub
vous devez courirupdate-grub
.