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
enable
pilihan untuksystemctl
symlink dari/etc/systemd/system/
ke/lib/systemd/system/
. Anda tidak boleh menyalin secara langsung ke/etc/systemd/system/
sudo s2disk
hanya logSaving snapshot
, daripada mematikan layar, hang selama ~ 5 menit dan kemudian dimatikan komputer. Namun setelah saya nyalakan, boot secara normal seperti tidak ada hibernasi.sudo findmnt -no SOURCE,UUID -T /mnt/4GiB.swap
harus diubah menjadisudo findmnt -no SOURCE,UUID -T /swapfile
Inilah yang saya lakukan untuk membuatnya bekerja dengan Ubuntu 18.04.
Jadikan Anda
/swapfile
memiliki setidaknya ukuran RAM AndaPerhatikan UUID partisi yang berisi
/swapfile
:Konfigurasikan ulang paket
uswsusp
untuk menggunakan swapfile dengan benar:Edit layanan hibernasi SystemD menggunakan
sudo systemctl edit systemd-hibernate.service
dan isi dengan konten berikut:Perhatikan resume resume Anda
/swapfile
:Konfigurasikan Grub untuk melanjutkan dari swapfile dengan mengedit
/etc/default/grub
dan memodifikasi baris berikut:Perbarui Grub:
Buat yang berikut ini
/etc/initramfs-tools/conf.d/resume
:Perbarui initramfs:
Sekarang Anda dapat berhibernasi dengan
sudo systemctl hibernate
.Anda juga dapat membuat skrip tersebut:
Jadi Anda bisa tidur dengan
gotosleep
atau berhibernasi dengangotohibernation
.Anda harus dapat mengeksekusi
sudo s2both
,sudo s2ram
dansudo systemctl hibernate
tanpa harus memasukkan kata sandi Anda agar skrip sebelumnya berfungsi.Anda dapat melakukannya misalnya dengan membuat
powerdev
grup, menambahkan pengguna Anda saat ini ke dalamnya, dan mengkonfigurasi konfigurasi sudoers berikut (edit dengansudo visudo -f /etc/sudoers.d/powerdev
):Dokumentasi yang digunakan:
sumber
Saya telah memberikan bacaan cepat ke tutorial dan, jika saya mengerti dengan benar, Anda hanya perlu menentukan
resume
opsi untuk baris perintah Linux. Dengan Grub2 sangat sederhana, dan perubahan Anda akan selalu dipertahankan. Anda perlu mengedit/etc/default/grub
file, khususnya baris ini:Setelah itu, jalankan
sudo update-grub
agar perubahan diterapkan.Mengubah
GRUB_CMDLINE_LINUX
tidak akan memengaruhi instalasi Linux lain yang Anda miliki (karena/etc/grub.d/30_os-prober
tidak menggunakan variabel ini).Tentang masalah yang Anda alami: apakah partisi swapfile dienkripsi? Jika demikian, hibernasi tidak akan berfungsi. Jika tidak, maka output dari
filefrag -v /swapfile
dapat membantu.sumber
/etc/default/grub
Anda harus menjalankanupdate-grub
.