Connect with us

Linux

Come abilitare l’ibernazione su Ubuntu (quando si utilizza un file di scambio)


Ibernare Linux

Questo articolo spiega come abilitare l’ibernazione utilizzando systemd nelle versioni recenti di Ubuntu quando si utilizza un file di scambio (che è l’impostazione predefinita per Ubuntu almeno dalla versione 18.04).

La batteria del mio laptop si scarica abbastanza velocemente mentre dorme. Ho provato alcune soluzioni / soluzioni alternative, come questa (tranne che per me il problema non era che il laptop perdeva metà della sua energia durante la notte, ma tutto in poche ore), ma senza risultati. Quindi ho deciso di abilitare l’opzione di ibernazione (sospendi su disco) e usarla al posto dell’opzione di sospensione predefinita (sospendi su RAM), perché consuma meno energia, quindi la batteria del laptop non si scarica mentre non è in uso, anche se impiega un po’ più tempo per svegliarsi dal letargo che dal sonno. Quindi ecco come farlo.

Le istruzioni seguenti potrebbero funzionare su altre distribuzioni Linux, ma l’ho testato solo su Ubuntu (dovrebbe funzionare esattamente allo stesso modo su qualsiasi distribuzione Linux basata su Debian e Ubuntu, incluso Pop!_OS, ecc.). Sulle distribuzioni Linux non basate su Debian potrebbe essere necessario utilizzare comandi diversi per aggiornare GRUB 2 (passaggio 4) e rigenerare initramfs (passaggio 6) poiché si tratta di comandi specifici di Debian.

È anche importante notare che l’ibernazione in Ubuntu è disabilitata perché ci sono problemi con alcuni computer, quindi potrebbe non funzionare per tutti. Si è parlato un po’ di rivisitare l’ibernazione su Ubuntu con la versione 20.10, ma è rimasto disabilitato per impostazione predefinita.

Prerequisiti

Vale la pena notare che ti consigliamo di avere un file di scambio grande almeno quanto la RAM del computer (l’ibernazione può o non può avere successo se il tuo computer ha un file di scambio più piccolo della RAM di sistema). Questo articolo spiega come passare da una partizione di scambio a un file di scambio: puoi anche usare queste istruzioni per creare un file di scambio più grande.

Inoltre, queste istruzioni non funzioneranno se hai crittografato in modo specifico il tuo swap. Poiché lo scambio del mio laptop non è crittografato, non sono in grado di provarlo con uno scambio crittografato, quindi le istruzioni seguenti riguardano solo i file di scambio non crittografati. Ma dovresti sapere che se hai già un filesystem root crittografato, anche tutti i file su di esso, incluso il file di scambio, saranno crittografati e le istruzioni di seguito funzioneranno in tal caso.

Per scoprire la dimensione dello swap del tuo computer e se utilizza un file o una partizione di swap (dovrai saperlo in seguito), puoi usare questo comando:

cat /proc/swaps

Ecco un esempio con l’output dal mio laptop:

$ cat /proc/swaps
Filename	Type	Size		Used		Priority
/swapfile	file	8388604		3213700		-2

Come puoi vedere, sotto Type dice file, quindi il mio computer utilizza un file di scambio (e il suo percorso è /swapfile), e la sua dimensione è 8388604 kilobyte (8,3 GB).

Per impostazione predefinita, Ubuntu utilizza un file di scambio per un po’ di tempo (almeno a partire da Ubuntu 18.04), quindi le istruzioni seguenti presumeranno che sia quello che stai usando. Nel caso in cui utilizzi una partizione di swap, usa l’UUID della partizione di swap invece dell’UUID della partizione su cui si trova il file di swap nelle istruzioni seguenti e non aggiungere un offset del file di swap (resume_offset parametro) ovunque. Queste sono le differenze tra l’ibernazione con una partizione di swap e un file di swap.

Potrebbe interessarti anche: 3 strumenti per visualizzare le informazioni sulla batteria del laptop Linux dalla riga di comando

Come abilitare l’ibernazione su Ubuntu (quando si utilizza un file di scambio)

1. Trovare l’UUID della partizione su cui risiede il file di scambio.

Dovremo aggiungerlo al file GRUB e al file di ripresa initramfs.

Per scoprire l’UUID della partizione su cui si trova il file di scambio, puoi utilizzare il seguente comando:

findmnt -no UUID -T /swapfile

(/swapfile è il percorso del file di scambio e potrebbe essere diverso sul tuo computer; usa il percorso esatto restituito da cat /proc/swaps comando).

Esempio dal mio computer (con output):

$ findmnt -no UUID -T /swapfile

4a59c6a7-ca54-4e24-a362-3eac83bfe226

2. Scopri e l’offset del file di scambio.

Successivamente, avremo bisogno di scoprire l’offset del file di scambio. Come l’UUID, dovremo aggiungerlo al file GRUB e al file di ripristino initramfs.

Questo può essere fatto eseguendo il seguente comando:

sudo filefrag -v /swapfile

Dall’output di questo comando, il primo blocco di numeri dalla colonna “physical_offset” è l’offset del file di scambio di cui avrai bisogno in seguito. Copia solo i numeri e non i punti che seguono il blocco numerico.

Ad esempio, nel mio caso, questo è l’output di sudo filefrag -v /swapfile comando:

$ sudo filefrag -v /swapfile
Filesystem type is: ef53
File size of /swapfile is 8589934592 (2097152 blocks of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..    6143:    4974592..   4980735:   6144:            
   1:     6144..    8191:    4982784..   4984831:   2048:    4980736:
   2:     8192..   10239:    4988928..   4990975:   2048:    4984832:
   3:    10240..   12287:    4997120..   4999167:   2048:    4990976:
........................................

In questo esempio, l’offset del file di scambio è 4974592 (questo è il primo blocco di numeri dal psysical_offset colonna).

3. Modificare il /etc/default/grub file per eseguire l’avvio con i parametri di ripristino e ripristino del kernel offset.

È molto importante assicurarsi che le modifiche apportate a questo file siano corrette, altrimenti il ​​computer potrebbe non avviarsi!

Apri il /etc/default/grub file con un editor di testo come root, ad esempio utilizzando il comando seguente lo apriremo utilizzando l’editor di testo della riga di comando Nano:

sudo nano /etc/default/grub

In questo file, alla fine del GRUB_CMDLINE_LINUX_DEFAULT linea, prima della fine ", aggiungere quanto segue: resume=UUID=UUID_FROM_STEP_1 resume_offset=SWAP_OFFSET_FROM_STEP_2. Sostituisci i valori con l’UUID che hai nel passaggio 1 e l’offset di ripristino dello scambio che hai nel passaggio 2.

Per salvare il file e uscire da Nano, premere Ctrl + o, poi Enter, poi Ctrl + x.

Esempio. Ecco come GRUB_CMDLINE_LINUX_DEFAULT la linea appare sul mio computer dopo aver aggiunto l’UUID di scambio e l’offset di scambio:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=4a59c6a7-ca54-4e24-a362-3eac83bfe226 resume_offset=4974592"

4. Aggiorna la configurazione di GRUB.

Per aggiornare GRUB 2 su distribuzioni Linux basate su Debian, tutto ciò che devi fare è eseguire il seguente comando:

sudo update-grub

5. Crea (o modifica se esiste già) /etc/initramfs-tools/conf.d/resume con l’UUID di scambio e riprendere l’offset.

Successivamente, dobbiamo modificare (o creare se non esiste) il /etc/initramfs-tools/conf.d/resume file con un editor di testo come root. Usa il comando seguente per aprire questo file con l’editor della riga di comando Nano:

sudo nano /etc/initramfs-tools/conf.d/resume

In questo file, se hai una riga che inizia con “RESUME”, modifica quella riga o se non esiste tale riga (o il file è completamente vuoto), aggiungi la riga in modo che assomigli a questa:

RESUME=UUID=UUID_FROM_STEP_1 resume_offset=SWAP_OFFSET_FROM_STEP_2

Per salvare il file e uscire da Nano, premere Ctrl +o, poi Enter, poi Ctrl + x.

Esempio con il contenuto di /etc/initramfs-tools/conf.d/resume file dal mio portatile:

RESUME=UUID=4a59c6a7-ca54-4e24-a362-3eac83bfe226 resume_offset=4974592

6. Rigenerare initramfs.

Ora devi rigenerare initramfs usando questo comando:

sudo update-initramfs -c -k all

7. Riavvia il computer.

Dopo il riavvio, ibernare il computer utilizzando il seguente comando:

sudo systemctl hibernate

Per ora, devi fornire la tua password per poter ibernare, e non c’è alcuna opzione di menu per ibernare il tuo computer, quindi devi fare tutto ciò dalla riga di comando. Per poter ibernare il sistema senza inserire una password (e per avere un’opzione per ibernare il computer nell’opzione di alimentazione del desktop (ad es. in un’applet sul pannello)), vedere i prossimi 2 passaggi.

Per riprendere dall’ibernazione, premere il pulsante di accensione sul computer.

Se ricevi un errore durante l’esecuzione di questo comando, dicendo “Impossibile ibernare il sistema tramite logind: spazio di scambio insufficiente per l’ibernazione”, potresti aver perso l’avviso nella parte superiore dell’articolo in cui menziono che è meglio avere un swap file grande almeno quanto la RAM del tuo computer. Questo articolo spiega come passare da una partizione di scambio a un file di scambio: puoi anche usare queste istruzioni per creare un file di scambio più grande.

È possibile verificare la presenza di errori relativi al servizio di ibernazione systemd utilizzando:

systemctl status systemd-hibernate.service

8. Facoltativo. Consenti l’ibernazione senza inserire una password (necessaria per il passaggio successivo). In alcuni ambienti desktop, questo riattiva le opzioni del menu di alimentazione Sospensione e Sospensione ibrida.

Per impostazione predefinita, per ibernare il tuo computer, dovrai inserire la tua password. Per consentire l’ibernazione senza password, crea / apri /etc/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla con un editor di testo come root.

Usando il comando qui sotto si aprirà /etc/polkit-1/localauthority/50-local.d/com.ubuntu.desktop.pkla come root usando l’editor della riga di comando Nano:

sudo nano /etc/polkit-1/localauthority/50-local.d/com.ubuntu.desktop.pkla

In questo file, incolla quanto segue:

[Enable hibernate in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

[Enable hibernate in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
ResultActive=yes

Ora salva il file ed esci da Nano (premi Ctrl + o, poi Enter, poi Ctrl + x).

In alcuni ambienti desktop, dopo aver eseguito questa operazione (e dopo un logout/re-login) otterrai le opzioni di alimentazione Hibernate e Hybrid Sleep. Ecco un esempio con le opzioni di alimentazione di Xfce dopo aver seguito questo passaggio:

Tuttavia, questo non funziona su alcuni ambienti desktop che utilizzano Ubuntu, come con GNOME Shell. In tal caso, avremo bisogno di un passaggio aggiuntivo (vedi sotto).

questo è tramite AskUbuntu

9. Facoltativo. Aggiungi una voce del menu delle applicazioni di ibernazione o usa un pulsante di stato di ibernazione per GNOME Shell.

Se usi GNOME Shell, puoi usare un’estensione che aggiunge un’opzione per ibernare il tuo computer nel menu di alimentazione del sistema dalla barra in alto, chiamata Hibernate Status Button.

Ecco il menu Spegni / Disconnetti GNOME Shell con questa estensione abilitata:

Menu di ibernazione GNOME Shell

Se non usi GNOME Shell, ma il tuo ambiente desktop non mostra un’opzione di alimentazione Hibernate, o non vuoi usare l’estensione GNOME Shell sopra menzionata, puoi creare una voce nel menu delle applicazioni creando un file chiamato hibernate.desktop in ~/.local/share/applications/, ad esempio apri l’editor di testo della riga di comando Nano con questo file:

nano ~/.local/share/applications/hibernate.desktop

E in questo file aggiungi quanto segue:

[Desktop Entry]
Type=Application
Name=Hibernate desktop
GenericName=Hibernate desktop
Comment=Enter hibernation
NoDisplay=false
Icon=drive-multidisk
Exec=systemctl hibernate
Terminal=true
Categories=System;Utility;Settings;

Ora sarai in grado di andare nel menu delle applicazioni del tuo desktop e fare clic su Hibernate icona per ibernare il sistema. Affinché ciò funzioni, è necessario seguire il passaggio facoltativo 9 dall’alto per poter ibernare senza inserire la password.

Dovrei anche chiarire cosa c’è con l’opzione Hybrid Sleep. Oltre alla sospensione/sospensione (sospensione su RAM) e ibernazione (sospensione su disco), c’è anche l’opzione di sospensione ibrida (chiamata anche sospensione ibrida) che inizia mettendo il computer in sospensione, quindi passa alla sospensione dopo un determinato periodo di tempo. È possibile impostare il tempo di sospensione ibrida tra sospensione e ibernazione (insieme ad altre opzioni) modificando il /etc/systemd/sleep.conf file, quindi riavviare il sistema. Per ulteriori informazioni su questo, vedere Arch Wiki.

Potrebbe interessarti: Come abilitare la decodifica video con accelerazione hardware nei browser Google Chrome, Brave, Vivaldi e Opera su Debian, Ubuntu o Linux Mint


Ti e piaciuto questo articolo?
Supporta il mio lavoro, facendo una donazione!

Click to comment

Leave a Reply

Esegui l'accesso per Commentare.

Di tendenza

Close Popup
Questo sito utilizza i cookie per migliorare servizi ed esperienza dei lettori. Se decidi di continuare la navigazione senza blocchi premi su Accetto, oppure continua tranquillamente la navigazione, nessun dato sulla tua navigazione verrà raccolto.
Close Popup
Privacy Settings saved!
Impostazioni

Quando visiti un sito Web, esso può archiviare o recuperare informazioni sul tuo browser, principalmente sotto forma di cookies. Controlla qui i tuoi servizi di cookie personali.

Questi cookie sono necessari per il funzionamento del sito Web e non possono essere disattivati nei nostri sistemi.

Cookie tecnici
Per utilizzare questo sito web usiamo i seguenti cookie tecnici necessari:
  • wordpress_test_cookie
  • wordpress_logged_in_
  • wordpress_sec
  • swpm_session

Google Adsense
Usiamo la pubblicità di Google solo per mantenere attivi i nostro sito. Con ip anonimizzati.

Rifiuta tutti i Servizi
Save
Accetta tutti i Servizi