GNU/Linux >> Linux Esercitazione >  >> Debian

Come abilitare l'ibernazione su Ubuntu (quando si utilizza un file di paging)

Questo articolo spiega come utilizzare systemd per abilitare l'ibernazione sulle versioni più recenti di Ubuntu quando si utilizza un file di paging (che è stato standard per Ubuntu almeno dalla versione 18.04).

La batteria del mio laptop si scarica abbastanza rapidamente mentre dorme. Ho provato alcune soluzioni / soluzioni alternative come questa qui (tranne me il problema non era che il laptop ha perso metà della sua potenza durante la notte, ma tutto in poche ore), ma senza successo. Quindi ho deciso di abilitare l'opzione Sospendi su disco e usarla al posto dell'opzione Sospensione standard su RAM poiché utilizza meno energia in modo che la batteria del laptop non si scarichi quando non è in uso, anche se ci vuole un po' più di tempo per riattivarsi dal letargo che dal sonno. È così che si fa.

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

È anche importante notare che l'ibernazione è disabilitata in Ubuntu poiché causerà problemi su alcuni computer e quindi potrebbe non funzionare per tutti. È stato un po' una chiacchierata sulla rivisitazione dell'ibernazione su Ubuntu con la versione 20.10, ma è rimasta disabilitata per impostazione predefinita.

requisiti

Vale la pena ricordare Dovresti avere un file di paging grande almeno quanto la memoria del computer (L'ibernazione può o non può avere esito positivo se il tuo computer ha un file di paging inferiore alla memoria del sistema). Questo articolo spiega come passare da una partizione di scambio a un file di scambio:puoi anche utilizzare queste istruzioni per creare un file di scambio più grande.

Inoltre, se hai crittografato in modo speciale il tuo scambio, queste istruzioni non funzioneranno . Poiché lo scambio del mio laptop non è crittografato, non posso tentare di farlo con uno scambio crittografato, quindi le istruzioni seguenti si applicano solo ai file di scambio non crittografati. Tuttavia, dovresti sapere che se disponi già di un file system radice crittografato, tutti i file in esso contenuti, incluso il file di paging, verranno crittografati e le seguenti istruzioni funzioneranno in questo caso.

Per scoprire la dimensione dello swap del tuo computer e se sta usando un file di swap o una partizione (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 sta utilizzando un file di paging (e il suo percorso è /swapfile ), e la sua dimensione è 8388604 Kilobyte (8,3 GB).

Per impostazione predefinita, Ubuntu utilizza un file di paging per un po' di tempo (almeno a partire da Ubuntu 18.04), quindi le istruzioni seguenti presuppongono che tu lo stia utilizzando. Se stai usando una partizione di swap, nelle seguenti istruzioni usa l'UUID della partizione di swap invece dell'UUID della partizione su cui si trova il file di swap e non aggiungere un offset del file di swap (resume_offset parametri) 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 paging)

1. Determina l'UUID della partizione su cui si trova il file di scambio.

Dobbiamo aggiungerlo al file GRUB e al file di ripristino di initramfs.

Per scoprire l'UUID della partizione in cui si trova il file di paging, puoi utilizzare il seguente comando:

findmnt -no UUID -T /swapfile

(/swapfile è il percorso del file di scambio e può 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 l'offset del file di paging.

Successivamente dobbiamo scoprire l'offset del file di paging. Come l'UUID, dobbiamo aggiungerlo al file GRUB e al file di ripristino di initramfs.

Questo può essere fatto eseguendo il seguente comando:

sudo filefrag -v /swapfile

Nell'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 tastierino numerico.

Nel mio caso, ad esempio, 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 è il file di paging 4974592 (Questo è il primo blocco numerico del psysical_offset pilastro).

3. Modifica il /etc/default/grub File da avviare con i parametri del kernel “resume” e “resume offset”.

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

Apri quel /etc/default/grub File con un editor di testo come root, ad es. con il seguente comando lo apriamo con l'editor di testo a riga di comando di Nano:

sudo nano /etc/default/grub

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

Per salvare il file e uscire da Nano, premi Ctrl + o , quindi Enter , quindi Ctrl + x .

Esempio. Ecco come è fatto GRUB_CMDLINE_LINUX_DEFAULT la linea appare così 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 lo hai già) /etc/initramfs-tools/conf.d/resume con l'UUID di scambio e l'offset di ripristino.

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

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

Se hai una riga in questo file 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, premi Ctrl +o , quindi Enter , quindi Ctrl + x .

Esempio con il contenuto del /etc/initramfs-tools/conf.d/resume File dal mio laptop:

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

6. Aggiorna initramfs.

Ora devi rigenerare initramfs con questo comando:

sudo update-initramfs -c -k all

7. Riavvia il computer.

Dopo aver riavviato il computer, utilizza il seguente comando per mettere il computer in modalità di sospensione:

sudo systemctl hibernate

Per ora, dovrai fornire la tua password per andare a dormire e non c'è alcuna opzione di menu per mettere il tuo computer in modalità di sospensione, quindi dovrai fare tutto questo dalla riga di comando. Per mettere il tuo sistema in stato di stop senza inserire una password (e per avere un'opzione per ibernare il computer nell'opzione di alimentazione del desktop (ad esempio in un'applet sul pannello di controllo)), segui i 2 passaggi successivi.

Per riprendere dall'ibernazione, premi il pulsante di accensione sul tuo computer.

Se viene visualizzato un messaggio di errore quando si esegue questo comando che dice che il sistema non può essere ibernato tramite logind:Spazio di scambio insufficiente per l'ibernazione, potresti aver trascurato la nota all'inizio dell'articolo in cui menziono che è meglio avere un file di paging grande almeno quanto la memoria del tuo computer. Questo articolo spiega come passare da una partizione di scambio a un file di scambio:puoi anche utilizzare queste istruzioni per creare un file di scambio più grande.

Puoi verificare la presenza di errori relativi al servizio systemd Hibernate:

systemctl status systemd-hibernate.service

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

Per mettere il tuo computer in stato di stop, dovrai inserire la tua password per impostazione predefinita. 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.

Il comando seguente apre /etc/polkit-1/localauthority/50-local.d/com.ubuntu.desktop.pkla come root usando l'editor della riga di comando di 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 , quindi Enter , quindi Ctrl + x ).

In alcuni ambienti desktop, riceverai quindi (e dopo aver effettuato il logout/login di nuovo) le opzioni di alimentazione ibernazione e sospensione ibrida. Ecco un esempio con le opzioni di alimentazione Xfce dopo aver seguito questo passaggio:

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

che va su AskUbuntu

9. Opzionale. Aggiungi una voce di menu per le applicazioni di ibernazione o usa un pulsante di ibernazione per la shell GNOME.

Se stai utilizzando GNOME Shell, puoi utilizzare un'estensione che aggiunge un'opzione per mettere il tuo computer in modalità di sospensione nel menu di alimentazione del sistema nella barra in alto, chiamato pulsante Sospensione.

Ecco il menu Spegnimento / Disconnessione della shell GNOME con questa estensione abilitata:

Se non stai usando GNOME Shell, ma il tuo ambiente desktop non mostra un'opzione di ibernazione, o non vuoi usare l'estensione GNOME Shell menzionata sopra, puoi creare una voce nel menu dell'applicazione creando un file chiamato ibernazione. desktop in ~/.local/share/applications/ , per esempio. apri l'editor di testo della riga di comando Nano con questo file:

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

E in quel 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 puoi andare al menu dell'applicazione sul desktop e fare clic sul Hibernate Icona per mettere il tuo sistema in stato di stop. Affinché funzioni, devi seguire il passaggio 9 facoltativo dall'alto per andare a dormire senza inserire la password.

Dovrei anche chiarire cosa dire dell'opzione Hybrid Sleep . Oltre a Sospensione/Sospensione (Sospensione su RAM) e Ibernazione (Sospensione su disco), esiste anche l'opzione Sospensione ibrida (detta anche Sospensione ibrida), che mette il computer in modalità di ibernazione e poi va in ibernazione dopo un certo periodo di tempo . Puoi impostare il tempo di sospensione ibrido tra Sospensione e Ibernazione (insieme ad altre opzioni) utilizzando il /etc/systemd/sleep.conf File e quindi riavviare il sistema. Puoi trovare maggiori informazioni su questo nel Wiki di Arch.

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


Debian
  1. Come aggiungere un file di scambio su Ubuntu

  2. Ubuntu 20.04 – Come abilitare Hwe?

  3. Come aumentare le dimensioni dello scambio su Ubuntu Linux

  4. Come abilitare la registrazione error-log.txt utilizzando il file .htaccess?

  5. Come posso copiare un file su FTP usando Ubuntu Linux?

Come abilitare gli aggiornamenti di sicurezza automatici non presidiati su Ubuntu

Come eliminare un file in Ubuntu

Come pianificare attività su Ubuntu 20.04 utilizzando Crontab

Come creare un file in Ubuntu Linux usando comando e GUI

Come installare il file Deb su Ubuntu usando Gdebi

Come aggiungere un file di scambio su Ubuntu 20.04