Ruhezustand mit Swap-Datei mit uswusp
Obwohl es möglich ist, in den Ruhezustand zu wechseln, um die Datei auszutauschen, funktioniert es angeblich mit dem Ruhezustand von systemd, indem Kernelparameter festgelegt werden. Ich konnte es jedoch nicht wieder aufnehmen und wechselte stattdessen zu uswsusp (Userspace-Software suspend) . Hier sind die Schritte, die ich unter Ubuntu 17.04 / 17.10 ausgeführt habe.
Erstellen Sie die Auslagerungsdatei
Die Befehle zum Erstellen einer formatierten 4GiB-Auslagerungsdatei, eingehängt und hinzugefügt zu /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
Überprüfen Sie die Swap-Dateipartition
sudo findmnt -no SOURCE,UUID -T /swapfile
> /dev/sda1 11cc33ee-1234-abcd-1234-ddeeff112233
Userspace Software Suspend installieren (uswsusp)
sudo apt install uswsusp
Konfigurieren Sie uswsusp
So erstellen /etc/uswsusp.conf
und neu erstellen Sie initramfs
:
sudo dpkg-reconfigure -pmedium uswsusp
Yes
zu " ohne gültigen Swap - Bereich weiter? ' (Der Assistent hat die Auslagerungsdatei noch nicht festgelegt.)
- Wählen Sie die Partition aus , auf der sich die Auslagerungsdatei befindet, und verweisen Sie auf die Details von
findmnt
oben. ( Hinweis: nicht die Swap-Datei selbst )
Hinweis: Alle Änderungen, die manuell vorgenommen /etc/uswsusp.conf
werden, müssen initramfs
anschließend mit dem folgenden Befehl neu erstellt werden:
sudo update-initramfs -u
Testen Sie den Ruhezustand von uswusp
sudo s2disk
Im snapshot
Ruhezustand und im Wiederaufnahmemodus sollten Meldungen auf dem Bildschirm angezeigt werden.
Verwenden Sie s2disk mit dem Ruhezustand systemd
Standardmäßig verwendet systemd seine eigenen Ruhezustandsbefehle. Ersetzen Sie diese also durch die uswusp-Befehle, indem Sie Folgendes überschreiben systemd-hibernate.service
:
sudo systemctl edit systemd-hibernate.service
Geben Sie im sich öffnenden Texteditor den folgenden Text ein (das Leerzeichen ExecStart ist erforderlich). Dann speichern und beenden:
[Service]
ExecStart=
ExecStart=/usr/sbin/s2disk
ExecStartPost=/bin/run-parts -a post /lib/systemd/system-sleep
Dadurch wird eine /etc/systemd/system/systemd-hibernate.service.d/override.conf
Datei mit Überschreibungsdetails erstellt.
Test systemd Ruhezustand:
systemctl hibernate
Hinweis: Um zu überprüfen, ob das System override.conf
erstellt, geladen und fehlerfrei ist, führen Sie Folgendes aus:
systemctl status systemd-hibernate.service
Verweise:
ExceStart=run-parts -a post /lib/systemd/system-sleep
seinExceStartPost=run-parts -a post /lib/systemd/system-sleep
enable
Möglichkeit vonsystemctl
symbolischen Links von/etc/systemd/system/
bis/lib/systemd/system/
. Sie sollten niemals um/etc/systemd/system/
sudo s2disk
nur ProtokolleSaving snapshot
, als das Display ausgeschaltet, hängt für ~ 5 Minuten und dann fährt es den Computer herunter. Nachdem ich es eingeschaltet habe, bootet es normalerweise, als ob es keinen Winterschlaf gegeben hätte.sudo findmnt -no SOURCE,UUID -T /mnt/4GiB.swap
sollte geändert werdensudo findmnt -no SOURCE,UUID -T /swapfile
Hier ist, was ich getan habe, damit es mit Ubuntu 18.04 funktioniert.
Stellen Sie sicher, dass Sie
/swapfile
mindestens die Größe Ihres Arbeitsspeichers habenNotieren Sie sich die UUID der Partition, die Folgendes enthält
/swapfile
:Konfigurieren Sie das Paket
uswsusp
neu, um die Auslagerungsdatei korrekt zu verwenden:Bearbeiten Sie den SystemD-Ruhezustand mit
sudo systemctl edit systemd-hibernate.service
und füllen Sie ihn mit folgendem Inhalt:Beachten Sie den Lebenslauf-Offset Ihres
/swapfile
:Konfigurieren Sie Grub für die Fortsetzung aus der Auslagerungsdatei, indem Sie
/etc/default/grub
die folgende Zeile bearbeiten und ändern:Update Grub:
Erstellen Sie Folgendes
/etc/initramfs-tools/conf.d/resume
:Aktualisiere initramfs:
Jetzt können Sie mit überwintern
sudo systemctl hibernate
.Man kann auch diese Skripte erstellen:
So können Sie mit schlafen
gotosleep
oder mit überwinterngotohibernation
.Sie müssen nicht ausführen, um
sudo s2both
,sudo s2ram
undsudo systemctl hibernate
ohne Ihr Passwort für die vorherigen Skripte Arbeit einzugeben.Sie können dies zum Beispiel tun, indem Sie eine
powerdev
Gruppe erstellen , Ihren aktuellen Benutzer hinzufügen und die folgende sudoers-Konfiguration konfigurieren (mit bearbeitensudo visudo -f /etc/sudoers.d/powerdev
):Dokumentation verwendet:
quelle
Ich habe das Tutorial kurz gelesen und wenn ich es richtig verstanden habe, müssen Sie nur die
resume
Optionen in der Linux-Befehlszeile angeben . Mit Grub2 ist das ganz einfach und Ihre Änderungen bleiben immer erhalten. Sie müssen die/etc/default/grub
Datei bearbeiten , insbesondere diese Zeile:Führen Sie anschließend
sudo update-grub
den Befehl aus, damit die Änderungen wirksam werden.Änderungen wirken
GRUB_CMDLINE_LINUX
sich nicht auf andere Linux-Installationen aus (da/etc/grub.d/30_os-prober
diese Variable nicht verwendet wird).Was das Problem betrifft, das Sie haben: Ist die Partition der Auslagerungsdatei verschlüsselt? In diesem Fall funktioniert der Ruhezustand nicht. Wenn nicht, kann die Ausgabe von
filefrag -v /swapfile
hilfreich sein.quelle
/etc/default/grub
musst du rennenupdate-grub
.