Ada perubahan yang dilakukan pada pengaturan default jika dibandingkan dengan LTS sebelumnya (16.04). Dalam kasus saya hibernasi tidak berfungsi sampai saya melakukan beberapa langkah, di antaranya meningkatkan ukuran file swap, menyalakannya, memastikan kebijakan mengizinkannya, dll.
Ini mungkin dengan mudah jawaban saya yang paling panjang di seluruh StackExchange jadi saya mencoba membuat header deskriptif .
Boot karena tidak ada hibernasi
Akan lebih bijaksana untuk melihat log Anda ( dmesg
mungkin membantu) dan melihat apakah ada sesuatu di sana. Ada alasan ketika meskipun Anda memberitahu sistem untuk hibernasi, sebenarnya tidak, atau malah akan menangguhkan-ke-RAM (tidur).
Melihat kern.log
dan syslog
mencari pesan terkait hibernasi juga tidak ada salahnya. Bagian yang dimulai dengan "masalah" dapat membantu Anda dengan masalah tertentu.
Tukar file atau tukar partisi
Salah satu perubahan penting adalah bahwa sekarang Anda TIDAK MEMILIKI partisi swap, tetapi Anda memiliki FILE swap.
File swap mungkin tidak berfungsi untuk perpaduan perangkat keras / driver / OS dan hibernasi.
Hibernasi dimatikan
Kebijakan juga dapat mematikan atau melarang hibernasi.
Jargon
Suspend to RAM - RAM membuat data, komputer tidur lebih cepat, menggunakan lebih banyak energi saat ditangguhkan, bangun lebih cepat. Ada yang menyebut tidur ini.
Tangguhkan ke disk - alias hibernasi. RAM disimpan untuk ditukar (partisi atau file), komputer menjadi lebih lambat, menggunakan lebih sedikit energi saat hibernasi, bangun lebih lambat.
Prasyarat - apakah Anda memiliki cukup ruang?
Untuk hibernasi, Anda perlu (penyederhanaan di sini) menyimpan seluruh RAM Anda ke hard drive Anda. Jadi, Anda perlu menyisihkan cukup ruang untuk melakukannya. Jika tidak, ini akan gagal dan Anda tidak akan hibernasi.
free -m
akan memberi tahu Anda berapa banyak memori yang Anda miliki, gunakan, dan berapa banyak yang ada di swap Anda.
df -h
akan memberi tahu Anda berapa banyak ruang disk yang Anda miliki di setiap titik pemasangan dan berapa banyak yang digunakan, gratis, dll. Ini penting karena Anda mungkin ingin nanti menentukan di mana file swap Anda akan ditempatkan, atau partisi mana yang harus "trim" untuk memiliki cukup ruang untuk swap Anda.
cat fstab
harus memberi Anda informasi jika Anda memiliki partisi atau file swap. Menurut Ubuntu Hibernation, FAQ swapfile
mungkin tidak selalu berfungsi dengan beberapa kombinasi perangkat keras / driver.
Jika Anda tidak memiliki cukup ruang, ikuti FAQ swap Ubuntu . Ini memberi tahu Anda cara menambah file swap, menambahkan yang lain, memeriksa apakah itu digunakan dll. Dengan perintah dan penjelasan. Sumber daya yang sangat bagus.
Saya tidak punya cukup ruang untuk memuat RAM saya!
Dokumen kernel mengatakan:
/ sys / power / image_size mengontrol ukuran gambar yang dibuat oleh mekanisme disk-ke-disk. Dapat ditulis string yang mewakili integer non-negatif yang akan digunakan sebagai batas atas ukuran gambar, dalam byte. Mekanisme suspend-to-disk akan melakukan yang terbaik untuk memastikan ukuran gambar tidak akan melebihi angka itu. Namun, jika ini ternyata tidak mungkin, ia akan tetap mencoba untuk menunda menggunakan gambar sekecil mungkin. Khususnya, jika "0" ditulis ke file ini, gambar yang ditangguhkan akan sekecil mungkin. Membaca dari file ini akan menampilkan batas ukuran gambar saat ini, yang diatur ke 2/5 dari RAM yang tersedia secara default.
Jadi, coba atur ukuran gambar Anda. Bagaimana - tolong ajukan pertanyaan lain.
Prasyarat - apakah kernel Anda mendukung suspend-to-disk?
Kernel mendukung apa pun yang terdaftar /sys/power/state
, jadi:
cat /sys/power/state
Diizinkan (untuk pengetahuan saya) entri ada meliputi: mem
, standby
, freeze
, disk
. Penjelasan:
mem
- memiliki beberapa arti, yang mana tepatnya pada sistem Anda Anda akan tahu melalui cat /sys/power/mem_sleep
. Saya sudah:s2idle [deep]
standby
- Power-On Suspend (jika didukung)
freeze
- Suspend To Idle (IMS)
disk
- Suspend To Disk (STD), hibernasi . Ini - kamu mau.
Maka kita perlu memeriksa cat /sys/power/disk
. Jika Anda telah ada di sana disabled
kemudian menyelam di BIOS Anda mencari Boot Aman - itu satu-satunya ide yang bisa saya tawarkan dan satu-satunya hal yang saya tahu dapat mengganggu dan mematikan hibernasi. Meskipun saya hanya tahu tentang SecureBoot, mungkin ada gangguan lain, jadi melihat BIOS Anda adalah ide yang baik bahkan jika Anda tidak memiliki "boot aman".
Baca di sini:
- Dokumen kernel
- Wiki Debian saat hibernasi
TBH, bahkan jika kernel Anda TIDAK mendukung hibernasi, Anda dapat mencobanya dengan cara lain, gulir ke bawah ke bagianInterfaces
.
Baca ini - peringatan dan masalah - tidak ada BTRFS
Tanpa urutan tertentu:
- Tidak semua chipset akan berfungsi (tidak memiliki sumber yang bisa saya kutip di sini jadi katakanlah ini hanya kabar angin)
- VAIO memiliki masalah, seharusnya ada bendera untuk melawan mereka
- SecureBoot sering disebut mengganggu atau mematikan hibernasi
- Wake-on-LAN mengkonsumsi daya bahkan dengan hibernasi
- Jumlah modul (terutama grafis) dapat diinisialisasi sebelum sistem Anda melanjutkan dengan benar dari hibernasi - ini biasanya menjadi penyebab layar hitam saat melanjutkan . Lihatlah ArchLinux Wiki untuk kiat tentang cara men-debug masalah. Saya juga menyarankan FAQ Ubuntu tentang masalah hibernasi. Menjelajahi bug Launchpad juga dapat memberikan hasil. IIRC, ada parameter kernel yang menetapkan penundaan dalam hitungan detik sebelum dilanjutkan.
- Mengizinkan prosedur hibernasi berbeda untuk versi Polkit yang berbeda
Jangan gunakan BTRFS dan hibernasi: data yang rusak akan menjadi hasilnya.
Saya ingin hibernate - swap partisi
Ada kasus, ketika orang meninggalkan file swap dan kembali ke partisi swap. Bagaimanapun, ini bekerja pada LTS sebelumnya. Saya tidak mencoba, jadi tidak akan menawarkan petunjuk.
Saya ingin hibernasi - dengan file swap
- Pastikan Anda memiliki cukup ruang di sana. FAQ swap Ubuntu memberi tahu Anda berapa banyak yang Anda butuhkan, perintah dari atas juga melakukannya. Jika Anda memerlukan info lebih lanjut di sini, ajukan pertanyaan lain, karena ini adalah topik yang panjang.
- Tambah file swap atau buat yang baru dengan ukuran yang cukup baik (lebih disukai, saya setuju dengan @muru ) dan ubah
/etc/fstab
ke yang baru. Reboot untuk melihat perubahan diambil dengan baik (simpan cadangannya fstab
sehingga Anda dapat dengan mudah mengembalikannya untuk berjaga-jaga.
- Arahkan kernel Anda pada ini dengan params yang sesuai, sehingga ia tahu dari mana harus melanjutkan.
- Perbarui / konfigurasi ulang boot loader Anda dan reboot.
Parameter kernel? Mengerikan!
Baca dengan cermat dan putuskan apakah Anda ingin melakukan itu, tetapi itu hanya cara untuk mengkonfigurasi kernel Anda. Mungkin lebih mudah melakukan hibernasi melalui systemd
dan uswsusp
(lihat Antarmuka , di bawah). Mungkin, bahwa Anda - seperti saya - pada akhirnya akan memutuskan suspend-to-RAM sudah cukup dan Anda tidak ingin memiliki 32GB pada file swap (tidak begitu bagus untuk orang-orang dengan satu SSD di laptop mereka, misalnya). Tapi!
- hibernasi untuk bertukar file
resume=
harus tahu di mana partisi file swap Anda dan resume_offset=
untuk mengetahui di mana file swap untuk mulai melanjutkan dari.
- hibernasi ke partisi
resume=
harus mengarah ke swap partisi.
- menyelesaikan masalah layar hitam mungkin juga diperlukan
resumedelay=
.
Kernel docs tentang menunda melanjutkan dari Hibernasi:
resumedelay = [HIBERNATION] Keterlambatan (dalam detik) untuk berhenti sebelum mencoba membaca file resume
Parameter yang diperlukan untuk swap-file dan hibernasi :
resume = [SWSUSP]
Specify the partition device for software suspend
Format:
{/dev/<dev> | PARTUUID=<uuid> | <int>:<int> | <hex>}
resume_offset = [SWSUSP]
Specify the offset from the beginning of the partition
given by "resume=" at which the swap header is located,
in <PAGE_SIZE> units (needed only for swap files).
See Documentation/power/swsusp-and-swap-files.txt
Untuk resume=
memilih gaya yang sama dengan root
elemen dalam fstab
. Jadi, baik /dev/sdaX
atau UUID
atau LVM. Untuk hibernasi ke file - sediakan partisi tempat file Anda dapat ditemukan.
Bacaan:
- https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt
- https://wiki.archlinux.org/index.php/Kernel_parameters
Masalah - header swap tidak ditemukan
File swap perlu diformat dengan benar. Jika log Anda memberi tahu Anda hal ini, Anda mencoba hibernasi ke file, atau parameter resume Anda tidak benar.
Beralih ke partisi atau perbaiki file atau ubah antarmuka yang digunakan untuk hibernasi.
Lihat: /unix/43508/debian-hibernate-problem-pm-swap-header-not-found
mkswap
digunakan untuk memformat file, baca lebih lanjut di sini
Masalah! Hibernasi tidak diizinkan!
Tes: pm-hibernate
(jika paket pm-utils diinstal) atau systemctl hibernate
memberi tahu Anda bahwa Anda tidak diizinkan. Pengaturan default di Ubuntu sejak IIRC 12.04.
Solusi: tergantung pada versi Polkit Anda, versi dan rasa Ubuntu Anda ... Lihat pertanyaan ini . Juga, ArchWiki di Polkit dapat membantu.
Untuk Mint, lihat: https://forums.linuxmint.com/viewtopic.php?t=259912
Masalah! Hibernasi dinonaktifkan oleh sesuatu di BIOS!
Tes: cat /sys/power/disk
telah disabled
. Log menunjukkan "Gagal hibernasi sistem melalui logind: Kata kerja tidur tidak didukung".
Solusi: cari BIOS Anda dan temukan hal yang bermasalah. Matikan.
Solusi 2: coba antarmuka hibernasi lain.
Lihat: Bagaimana cara mengaktifkan hibernasi di 16.04.1? (systemd) .
Antarmuka
- swsusp - antarmuka kernel level rendah. Lihat Prasyarat - kernel untuk file mana. Menulis ke file secara langsung dapat menyebabkan penangguhan (ke RAM, ke disk dan hibrid). Menurut SwapFAQ bermasalah dengan hibernasi ke file.
- uswsusp - ArchWiki dan Debian Wiki dan bagus pertanyaan AskUbuntu dengan write-up cara menggunakannya .
- systemd - ArchWiki di atasnya
- pm-utils - AFAIK yang merupakan kumpulan skrip yang berasal dari Debian - Saya akan dengan senang hati menerima info lebih lanjut.
Kata penutup
Bagi saya itu adalah masalah hampir dua hari kerja untuk menyusunnya. Semoga ini akan membantu Anda (dan orang lain) memecahkan masalah Anda lebih cepat. Masih ada poin yang saya lewatkan tetapi ini jam 2 pagi dan saya tidak ingin menulis lagi sekarang. Saya tentu saja terbuka untuk petunjuk siapa pun untuk menjadikan ini lebih baik, jadi komentarlah. Saya akan menjawab begitu saya tidur, bekerja dll :-)
Saya tidak yakin berhibernasi ke disk bagus. Saya pergi dengan tidur pada akhirnya. Tetapi bagi saya masalah adalah dengan memiliki file 32GB hanya untuk dapat melakukan hibernasi, karena saya biasanya menghindari bertukar sama sekali. File swap awal saya adalah 2GB dan sebagian besar kosong. YMMV. Meskipun demikian, semoga berhasil! Dan mulailah dengan log!