Sono state apportate modifiche alle impostazioni predefinite rispetto al precedente LTS (16.04). Nel mio caso l'ibernazione non ha funzionato fino a quando non ho fatto diversi passaggi, tra cui aumentare la dimensione del file di scambio, accenderlo, assicurarsi che le politiche lo consentissero, ecc.
Questa potrebbe essere la mia risposta più lunga su StackExchange, quindi ho cercato di rendere descrittive le intestazioni .
Stivali perché non c'era letargo
Sarebbe prudente dare un'occhiata ai tuoi registri ( dmesg
potrebbe aiutare) e vedere se c'è qualcosa. Ci sono ragioni per cui, nonostante tu dica al sistema di andare in letargo, in realtà non lo farà, o invece sospenderà su RAM (sospensione).
Dare un'occhiata kern.log
e syslog
cercare eventuali messaggi relativi all'ibernazione non farebbe male. Le sezioni che iniziano con "problema" possono aiutarti con problemi specifici.
Scambia file o scambia partizione
Uno dei cambiamenti cruciali è che ora NON AVETE una partizione di swap, ma avete un FILE di swap.
Il file di scambio potrebbe non funzionare per la tua miscela di hardware / driver / sistema operativo e ibernazione.
Ibernazione disattivata
Le politiche possono anche disattivare o impedire l'ibernazione.
Gergo
Sospendi su RAM: la RAM mantiene i dati, il computer va a dormire più velocemente, consuma più energia quando viene sospeso, si sveglia più velocemente. Alcuni chiamano questo sonno.
Sospendi su disco - alias ibernazione. La RAM viene salvata per scambiare (partizione o file), il computer va a dormire più lentamente, consuma meno energia durante il letargo, si sveglia più lentamente.
Prerequisiti: hai abbastanza spazio?
Per andare in letargo, è necessario (semplificazione qui) salvare l'intera RAM sul disco rigido. Quindi, è necessario riservare spazio sufficiente per farlo. Se non lo fai, questo fallirà e non andrai in letargo.
free -m
ti dirà quanta memoria hai, usa e quanto è nel tuo swap.
df -h
ti dirà quanto spazio su disco hai su ogni punto di montaggio e quanto viene utilizzato, libero, ecc. Questo è importante poiché potresti voler specificare in seguito dove si troverà il tuo file di scambio, o quale partizione "tagliare" avere abbastanza spazio per il tuo scambio.
cat fstab
dovrebbe darti informazioni se hai una partizione o un file di scambio. Secondo Ubuntu Hibernation, le FAQ swapfile
potrebbero non funzionare sempre con alcune combinazioni di hardware / driver.
Se non hai abbastanza spazio, segui le FAQ di scambio di Ubuntu . Ti dice come aumentare il file di scambio, aggiungerne un altro, controllare se è usato ecc. Con comandi e spiegazioni. Risorsa davvero bella.
Non ho abbastanza spazio per adattarmi alla mia RAM!
I documenti del kernel dicono:
/ sys / power / image_size controlla la dimensione dell'immagine creata dal meccanismo di sospensione su disco. Può essere scritta una stringa che rappresenta un numero intero non negativo che verrà utilizzato come limite superiore della dimensione dell'immagine, in byte. Il meccanismo di sospensione su disco farà del suo meglio per garantire che la dimensione dell'immagine non superi tale numero. Tuttavia, se ciò risulta impossibile, proverà comunque a sospendere utilizzando l'immagine più piccola possibile. In particolare, se "0" è scritto in questo file, l'immagine di sospensione sarà il più piccola possibile. La lettura di questo file visualizzerà il limite di dimensione dell'immagine corrente, che è impostato su 2/5 della RAM disponibile per impostazione predefinita.
Quindi, prova a modificare la dimensione dell'immagine. Come - fai un'altra domanda per favore.
Prerequisiti: il kernel supporta la sospensione su disco?
Il kernel supporta tutto ciò che è elencato /sys/power/state
, quindi:
cat /sys/power/state
Ammessi (a mia conoscenza) Record ci sono: mem
, standby
, freeze
, disk
. Spiegazione:
mem
- ha diversi significati, quale esattamente sul tuo sistema lo scoprirai tramite cat /sys/power/mem_sleep
. Io ho:s2idle [deep]
standby
- Sospensione all'accensione (se supportata)
freeze
- Suspend To Idle (STI)
disk
- Suspend to Disk (STD), ibernazione . Questo - tu vuoi.
Quindi dobbiamo controllare cat /sys/power/disk
. Se ce l'hai, disabled
immergiti nel BIOS alla ricerca di Secure Boot: questa è l'unica idea che posso offrire e l'unica cosa che so può interferire e disattivare l'ibernazione. Mentre conosco solo SecureBoot, potrebbero esserci altre interferenze, quindi dare un'occhiata al BIOS è una buona idea anche se non si dispone di alcun "avvio sicuro".
Leggendo qui:
- Documenti del kernel
- Debian Wiki in letargo
TBH, anche se il tuo kernel NON supporta l'ibernazione, puoi provarlo in un altro modo, scorrere fino alla sezioneInterfaces
.
Leggi questo - avvertimenti e problemi - nessun BTRFS
Senza un ordine particolare:
- Non tutti i chipset funzioneranno (non ho fonti che posso citare qui, quindi diciamo che questo è sentito dire)
- VAIO ha dei problemi, presumibilmente c'è una bandiera per contrastarli
- SecureBoot viene spesso citato come interferente o disattiva l'ibernazione
- Wake-on-LAN consuma energia anche con l'ibernazione
- Il numero di moduli (in particolare la grafica) può essere inizializzato PRIMA che il sistema riprenda correttamente dal letargo - questa è di solito la causa dello schermo nero quando si riprende . Guarda ArchLinux Wiki per suggerimenti su come eseguire il debug dei problemi. Suggerirei anche le FAQ di Ubuntu su problemi di ibernazione. Navigare attraverso i bug di Launchpad può anche dare risultati. IIRC, c'è un parametro del kernel che specifica in secondi un ritardo prima di riprendere.
- L'autorizzazione alla procedura di ibernazione differisce per le diverse versioni di Polkit
Non utilizzare BTRFS e ibernazione: il risultato saranno dati danneggiati.
Voglio ibernare - scambiare la partizione
Ci sono casi in cui le persone rinunciano al file di scambio e tornano alla partizione di scambio. Dopotutto, ha funzionato su LTS precedente. Non ho provato, quindi non offrirà puntatori.
Voglio andare in letargo - con il file di scambio
- Assicurati di avere abbastanza spazio lì. Le FAQ di scambio di Ubuntu ti dicono quanto ti serve, anche i comandi dall'alto lo fanno. Se hai bisogno di maggiori informazioni qui, fai un'altra domanda per favore, poiché questo è un argomento lungo.
- Aumenta il file di scambio o creane uno nuovo di dimensioni sufficientemente buone (preferibilmente, sono d'accordo con @muru ) e
/etc/fstab
passa a quello nuovo. Il riavvio per vedere il cambiamento è preso bene (archiviare il backup del in fstab
modo da poter facilmente ripristinare per ogni evenienza.
- Punta il tuo kernel su questo con i parametri appropriati, in modo che sappia da dove riprendere.
- Aggiorna / riconfigura il tuo caricatore di avvio e riavvia.
Parametri del kernel? ! spaventoso
Leggi attentamente e decidi se desideri farlo, ma è solo un modo per configurare il tuo kernel. Potrebbe essere più semplice ibernare tramite systemd
e uswsusp
(vedere Interfacce , di seguito). Può darsi che tu, come me, alla fine deciderai che la sospensione su RAM è sufficiente e che non vuoi avere 32 GB su un file di scambio (non così eccezionale per le persone con un SSD nei loro laptop, per esempio). Ma!
- ibernazione nel file di scambio richiede
resume=
di sapere da quale partizione si trova il file di scambio e resume_offset=
di sapere da dove iniziare il ripristino del file di scambio.
- ibernazione alla partizione richiede
resume=
di puntare alla partizione di swap.
- la risoluzione dei problemi dello schermo nero potrebbe richiedere
resumedelay=
.
Documenti del kernel sul ritardare la ripresa dall'ibernazione:
resumedelay = [HIBERNATION] Ritardo (in secondi) per mettere in pausa prima di tentare di leggere i file di ripresa
Parametri richiesti per file di scambio e ibernazione :
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
Per lo resume=
scegliere lo stesso stile root
dell'elemento fstab
. Quindi, /dev/sdaX
o UUID
o LVM. Per ibernazione in un file: fornire una partizione in cui è possibile trovare il file.
Lettura:
- https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt
- https://wiki.archlinux.org/index.php/Kernel_parameters
Problema: intestazione di scambio non trovata
Il file di scambio deve essere formattato correttamente. Se i tuoi registri ti dicono questo, o stai tentando di ibernare in un file o il tuo parametro resume non è corretto.
Passare alla partizione o correggere il file o modificare l'interfaccia utilizzata per l'ibernazione.
Vedi: /unix/43508/debian-hibernate-problem-pm-swap-header-not-found
mkswap
viene utilizzato per formattare il file, leggi di più qui
Problema! Ibernazione non consentita!
Test: pm-hibernate
(se il pacchetto pm-utils è installato) o systemctl hibernate
avvisa che non sei autorizzato. Impostazione predefinita in Ubuntu da IIRC 12.04.
Soluzione / e: dipende dalla versione di Polkit, dalla versione e dal sapore di Ubuntu ... Vedi questa domanda . Inoltre, ArchWiki su Polkit può aiutare.
Per Mint, consultare: https://forums.linuxmint.com/viewtopic.php?t=259912
Problema! Ibernazione disabilitata da qualcosa nel BIOS!
Test: cat /sys/power/disk
ha disabled
. I registri mostrano "Impossibile ibernare il sistema tramite logind: verbo di sospensione non supportato".
Soluzione: cerca nel BIOS e trova la cosa problematica. Spegnilo.
Soluzione 2: provare un'altra interfaccia di ibernazione.
Vedi: Come attivare l'ibernazione in 16.04.1? (systemd) .
interfacce
- swsusp - interfaccia del kernel di basso livello. Vedi Prerequisiti - kernel per quali file. La scrittura diretta su file può causare la sospensione (su RAM, su disco e ibrida). Secondo SwapFAQ problematico con il letargo al file.
- uswsusp - ArchWiki e Debian Wiki e la bella domanda di AskUbuntu con un commento su come usarlo .
- systemd - ArchWiki su di esso
- pm-utils - AFAIK che è una raccolta di script originari di Debian - Accolgo volentieri altre informazioni da solo.
Commenti finali
Per me è stata una questione di quasi due giorni di lavoro per compilarlo. Spero che questo ti aiuterà (e altri) a risolvere il problema più velocemente. Ci sono ancora punti che mi sono persi, ma sono le 2 del mattino e non ho voglia di scrivere più ora. Sono ovviamente aperto ai suggerimenti di chiunque per renderlo migliore, quindi commenta. Risponderò una volta che dormo, lavoro ecc. :-)
Non sono certo che il letargo su disco sia fantastico. Sono andato a dormire alla fine. Ma per me il problema era avere un file da 32 GB solo per poter fare il letargo, dato che di solito evito affatto di scambiare. Il mio file di scambio iniziale era di 2 GB ed era quasi vuoto. YMMV. Tuttavia, buona fortuna! E inizia con i registri!