Hibernasi dengan file Swap menggunakan uswusp
Meskipun dimungkinkan untuk melakukan hibernate untuk menukar file dan itu seharusnya bekerja dengan systemd hibernate dengan mengatur parameter kernel. Namun, saya tidak dapat melanjutkannya, alih-alih beralih menggunakan uswsusp (menangguhkan perangkat lunak userspace) . Berikut adalah langkah-langkah yang saya gunakan di Ubuntu 17.04 / 17.10.
Buat File Swap
Perintah untuk membuat file swap 4GiB yang diformat, dipasang dan ditambahkan ke /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
Verifikasi Partisi File Swap
sudo findmnt -no SOURCE,UUID -T /swapfile
> /dev/sda1 11cc33ee-1234-abcd-1234-ddeeff112233
Instal Penangguhan Perangkat Lunak Userspace (uswsusp)
sudo apt install uswsusp
Konfigurasikan uswsusp
Untuk membuat /etc/uswsusp.conf
dan membuat ulang initramfs
:
sudo dpkg-reconfigure -pmedium uswsusp
Yes
untuk ' Lanjutkan tanpa ruang swap yang valid? ' (Wizard belum menyetel file swap.)
- Pilih partisi tempat file swap berada, referensi silang dengan detail dari
findmnt
atas. ( Catatan: bukan file swap itu sendiri )
Catatan: Setiap perubahan yang dilakukan secara manual /etc/uswsusp.conf
akan membutuhkan pembuatan ulang initramfs
setelahnya dengan perintah ini:
sudo update-initramfs -u
Uji menggunakan hibernasi
sudo s2disk
Seharusnya ada snapshot
pesan di layar saat hibernasi dan lanjutkan.
Gunakan s2disk dengan systemd hibernate
Secara default systemd akan menggunakan perintah hibernate miliknya sendiri, jadi gantilah dengan perintah uswusp dengan mengganti systemd-hibernate.service
:
sudo systemctl edit systemd-hibernate.service
Di editor teks yang terbuka masukkan teks berikut (ExecStart kosong diperlukan). Kemudian simpan dan keluar:
[Service]
ExecStart=
ExecStart=/usr/sbin/s2disk
ExecStartPost=/bin/run-parts -a post /lib/systemd/system-sleep
Ini akan membuat /etc/systemd/system/systemd-hibernate.service.d/override.conf
file dengan menimpa detail.
Test systemd hibernate:
systemctl hibernate
Catatan: Untuk memeriksa apakah systemd override.conf
telah dibuat, dimuat dan tidak ada kesalahan, jalankan:
systemctl status systemd-hibernate.service
Referensi:
ExceStart=run-parts -a post /lib/systemd/system-sleep
menjadiExceStartPost=run-parts -a post /lib/systemd/system-sleep