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