Tempo fa vi pubblicai una piccola guida su come riattivare l’ibernazione su Ubuntu e derivate. Ai tempi, la guida (per quella specifica situazione), bastava. Ma oggi, con la mia Ubuntu MATE 18.04, le cose si sono fatte molto complicate. Sarà perché ho una situazione particolare con le partizioni, sarà che Ubuntu ha deciso sempre di più di abbandonare l’idea dell’ibernazione a causa di hardware poco compatibile, ma sarà che io senza ibernazione non ci posso stare. C’ho sbattuto la testa 2 giorni (1 e mezzo, ok), ma mettendo insieme roba da vari forum ed un pizzico di cervello, sono arrivato alla soluzione. Vi condivido i dettagli. Nel frattempo vi lascio questa guida (che se avete una vecchia versione di Ubuntu e derivate, dovrebbe ancora andare bene):
NOTA: Nella guida utilizzerò più volte il comando sudoedit. Questo comando aprirà l’editor di testo di nome nano. Per quanto ottimo, questo editor è noioso da utilizzare, in quanto si salva con CTRL+O, poi si da Enter per scegliere il nome del file e poi si chiude con CTRL+X (che non è una cosa così immediata da capire per un novizio). Di conseguenza, potete tranquillamente sostituire sudoedit con sudo pluma, sudo gedit o l’editor di testo che preferite, l’importante è che abbia pieno accesso al ROOT con sudo.
La mia situazione: partizioni, Hard Disk, ecc.
Ogni computer con Linux che non ha disponibile l’ibernazione (o la ha ma non funziona) è un caso a sé, nel senso che ovviamente le cause possono essere multiple. Cercherò di chiarirvi le idee il più possibile ma, prima di farlo, devo ovviamente spiegarvi com’è combinata la mia di situazione, che partizioni ho, quante ne ho e via dicendo. Il mio PC ha:
- Dal BIOS, Secure Boot disattivato (fondamentale per attivare l’ibernazione);
- Linux con due partizioni, su EXT4 (80-90GB) Ubuntu MATE 18.04 LTS, SWAP (20GB)(ai tempi avevo letto che doveva essere almeno uguale alla quantità di RAM che si ha, così ho abbondato. Balle. Fatela da 5-10 e state apposto, tranne se fate editing video e CAD a palla ed ibernate, lì la situazione cambia). Ora, EXT4 è su un SSD (sdb5) e la SWAP su un Hard Disk Meccanico (sda2). Mi serviva spazio su SSD quindi ho creato la swap sull’HDD interno.
- Kernel Linux 4.20 aggiornato tramite questo tool (anche sullo “stock” l’ibernazione non andava);
- nessuna particolare modifica software relativa a dischi ecc.
- nessun hardware particolarmente introvabile/speciale, anzi.
Cosa ho provato
E’ importante capire anche quali passaggi/prove ho eseguito prima di testare il tutto per tutto, evitandovi magari di seguire una lunga guida senza necessità.
Tra i primi risultati online trovate il classico “prova con il comando…” e “prova con questo comando”. Si. Ho provato sia sudo hibernate, sia sudo systemctl hibernate, sia sudo pm-hibernate (che ormai è stato deprecato da anni). Nulla, schermata nera, il PC si spegneva, all’avvio partiva…un avvio normale, senza salvare nulla ed avvisandomi con “Si è verificato un problema, vuoi segnalare questo assoreta?”.
Poi ho provato comandi misti, aggiunte varie, le classiche modifiche al file /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla che non hanno cambiato una mazza (così da sole com’erano). Ho spulciato infiniti forum, fino a mettere insieme tante piccole parti che…hanno risolto il problema. Almeno, nel mio caso. Per logica, potrete semplicemente seguire la mia guida andando ad esclusione, fino a far funzionare l’ibernazione anche a voi.
Cos’ha funzionato
Alla fine, per attivare l’ibernazione su Ubuntu, ho seguito questi passaggi (NOTA: Non sono perfettamente sicuro che ogni singolo passaggio sia obbligatorio, tuttavia non vi consiglierò comandi che so che vi incasinerebbero il PC):
- Aprite un terminale e date sudo install hibernate;
- Identificate il nome (sdax, sdbx e via dicendo) della partizione su cui avete sia Ubuntu che la SWAP. Nel mio caso, ripeto, erano rispettivamente sdb5 ed sda2. Per saperlo, avete vari metodi, o date sudo fdisk -l e vi cercate la stringa corrispondente, o aprite il Monitor di sistema e sulla scheda File-System dovreste avere le stringe ben visibili, o date grep swap /etc/fstab che dovrebbe intanto dirvi la posizione della SWAP.
- una volta trovato, date il comando sudo blkid -c /dev/null che vi mostrerà una cosa simile:
- è fondamentale a questo punto trovare la UUID (un altro metodo, molto più specifico, di chiamare un disco)(acronimo di identificativo univoco universale) della SWAP. Quindi, cercate la partizione corrispondente alla vostra SWAP (sda2 nel mio caso) e segnatevi la UUID (copiatevi proprio tutta la stringa segnata in rosso dopo sda2, senza virgolette, vi servirà dopo);
- ora che avete la UUID della SWAP, dovete andare a modificare due file. Questi due file devono avere le UUID identiche e corrispondenti. Date quindi il comando sudoedit /etc/fstab (potete usare anche l’editor di testo, io preferisco usare Pluma o Gedit (sudo pluma /etc/fstab o sudo gedit ecc), molto più comodi di nano che vi si aprirà con sudoedit) e avrete una situazione simile:
- nella parte che ho evidenziato in rosso, dovreste avere (invece dell’UUID), sdx o sdbx o comunque qualcos’altro che non è la UUID. Bene, eliminatela ed incollateci la vostra UUID, così come vedete nell’immagine. Salvate e chiudete. Ora date il comando sudoedit /etc/default/grub (al solito, utilizzate un editor di testo, è meglio). Si aprirà la seguente:
- nel vostro caso, la parte in rosso sarà GRUB_CMDLINE_LINUX=”” (quindi vuoto). Così come ho fatto io, all’interno delle virgolette metteteci resume=UUID=il vostro UUID della swap. Salvate e chiudete;
- date il comando sudoedit /etc/initramfs-tools/conf.d/resume ed incollateci dentro resume=UUID=il vostro UUID della swap. Salvate e chiudete;
- date ora il comando sudoedit /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla (in questo caso siete obbligati ad usare sudoedit) ed incollateci dentro tutto il seguente contenuto (il file dovrebbe essere vuoto):
[Re-enable hibernate by default in upower] Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes [Re-enable hibernate by default in logind] Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate$
ResultActive=yes [Enable hibernate to be run via cron] Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multip$
ResultAny=yes
e salvate con CTRL+O, poi date Enter, e per finire CTRL+X per chiudere il file;
- ora date il comando sudo update-initramfs -c -k all. Una volta finito, date il comando sudo update-grub.
Fatto! A questo punto, riavviate e, ad avvio terminato, dovreste avere la voce Iberna nel menù in alto a destra. Se non l’avete, create un lanciatore con il comando dell’ibernazione. Potete dare direttamente sudo systemctl hibernate per vedere se funziona. Dovrebbe andare 😀