GNU/Linux >> Tutoriales Linux >  >> Debian

Cómo habilitar la hibernación en Ubuntu (al usar un archivo de paginación)

Este artículo explica cómo usar systemd para habilitar la hibernación en versiones más nuevas de Ubuntu cuando se usa un archivo de paginación (que ha sido estándar para Ubuntu desde al menos la versión 18.04).

La batería de mi computadora portátil se agota bastante rápido mientras duerme. Probé algunas soluciones / soluciones alternativas como esta aquí (excepto para mí, el problema no fue que la computadora portátil perdió la mitad de su energía durante la noche, sino todo en solo unas pocas horas), pero fue en vano. Así que decidí habilitar la opción Suspender en disco y usarla en lugar de la opción Suspender en RAM estándar, ya que usa menos energía para que la batería de la computadora portátil no se agote cuando no esté en uso, incluso si toma un poco más de tiempo para despertar despierta de la hibernación que del sueño. Así es como se hace.

Las instrucciones a continuación pueden funcionar en otras distribuciones de Linux, pero solo probé esto en Ubuntu (debería funcionar de la misma manera en todas las distribuciones de Linux basadas en Debian y Ubuntu, incluido Pop! _OS, etc.). En distribuciones de Linux que no sean Debian, es posible que deba usar diferentes comandos para actualizar GRUB 2 (paso 4) y actualizar initramfs (paso 6), ya que estos son comandos específicos de Debian.

También es importante tener en cuenta que la hibernación está deshabilitada en Ubuntu, ya que causará problemas en algunas computadoras y, por lo tanto, es posible que no funcione para todas. Fue un poco un Chatter acerca de volver a visitar la hibernación en Ubuntu con la versión 20.10, pero permaneció deshabilitada de manera predeterminada.

requisitos

Eso vale la pena mencionar Debe tener un archivo de paginación que sea al menos tan grande como la memoria de la computadora (La hibernación puede o no tener éxito si su computadora tiene un archivo de paginación que es menor que la memoria del sistema). Este artículo explica cómo cambiar de una partición de intercambio a un archivo de intercambio; también puede usar estas instrucciones para crear un archivo de intercambio más grande.

Además, si ha encriptado especialmente su intercambio, estas instrucciones no funcionarán . Dado que el intercambio de mi computadora portátil no está encriptado, no puedo intentarlo con un intercambio encriptado, por lo que las instrucciones a continuación solo se aplican a los archivos de intercambio no encriptados. Sin embargo, debe saber que si ya tiene un sistema de archivos raíz encriptado, todos los archivos que contiene, incluido el archivo de paginación, también estarán encriptados, y las siguientes instrucciones funcionarán en este caso.

Para averiguar el tamaño del espacio de intercambio de su computadora y si está usando un archivo o partición de intercambio (necesitará saber esto más adelante), puede usar este comando:

cat /proc/swaps

Aquí hay un ejemplo con la salida de mi computadora portátil:

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

Como puede ver a continuación Type dice file , por lo que mi computadora está usando un archivo de paginación (y su ruta es /swapfile ), y su tamaño es 8388604 Kilobytes (8,3 GB).

De forma predeterminada, Ubuntu usa un archivo de paginación durante algún tiempo (al menos a partir de Ubuntu 18.04), por lo que las instrucciones a continuación asumen que lo está usando. Si está usando una partición de intercambio, en las siguientes instrucciones use el UUID de la partición de intercambio en lugar del UUID de la partición en la que se encuentra el archivo de intercambio y no agregue un desplazamiento de archivo de intercambio (resume_offset Parámetros) en todas partes. Estas son las diferencias entre la hibernación con una partición de intercambio y un archivo de intercambio.

También te puede interesar:3 herramientas para ver información de la batería de una laptop Linux desde la línea de comandos

Cómo habilitar la hibernación en Ubuntu (al usar un archivo de paginación)

1. Determine el UUID de la partición en la que se encuentra el archivo de intercambio.

Necesitamos agregar esto al archivo GRUB y al archivo de resumen de initramfs.

Para averiguar el UUID de la partición donde se encuentra su archivo de paginación, puede usar el siguiente comando:

findmnt -no UUID -T /swapfile

(/swapfile es la ruta al archivo de intercambio y puede ser diferente en su computadora; Use la ruta exacta que se devuelve desde el cat /proc/swaps Comando).

Ejemplo de mi computadora (con salida):

$ findmnt -no UUID -T /swapfile

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

2. Averigüe el desplazamiento del archivo de paginación.

A continuación, debemos averiguar el desplazamiento del archivo de paginación. Al igual que el UUID, debemos agregarlo al archivo GRUB y al archivo de resumen de initramfs.

Esto se puede hacer ejecutando el siguiente comando:

sudo filefrag -v /swapfile

En la salida de este comando, el primer bloque de números de la columna "desplazamiento_físico" es el desplazamiento del archivo de intercambio, que necesitará más adelante. Copie solo los números y no los puntos que siguen al teclado numérico.

En mi caso, por ejemplo, esta es la salida del 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:
........................................

En este ejemplo, el desplazamiento es el archivo de paginación 4974592 (Este es el primer bloque de números del psysical_offset Pilar).

3. Edite el /etc/default/grub Archivo para arrancar con los parámetros del kernel “resume” y “resume offset”.

¡Es muy importante asegurarse de que las ediciones de este archivo sean correctas o es posible que su computadora no se inicie!

Abre ese /etc/default/grub Archivo con un editor de texto como raíz, p. con el siguiente comando lo abrimos con el editor de texto de línea de comando Nano:

sudo nano /etc/default/grub

En este archivo al final del GRUB_CMDLINE_LINUX_DEFAULT Línea, antes del final " , agregue lo siguiente:resume=UUID=UUID_FROM_STEP_1 resume_offset=SWAP_OFFSET_FROM_STEP_2 . Reemplace los valores con el UUID que obtuvo en el paso 1 y el desplazamiento de reanudación de intercambio que obtuvo en el paso 2.

Para guardar el archivo y salir de Nano, presiona Ctrl + o , luego Enter y luego Ctrl + x .

Ejemplo. Así es como se hace GRUB_CMDLINE_LINUX_DEFAULT la línea se ve así en mi computadora después de agregar el UUID de intercambio y el desplazamiento de intercambio:

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

4. Actualice la configuración de GRUB.

Para actualizar GRUB 2 en distribuciones de Linux basadas en Debian, todo lo que necesita hacer es ejecutar el siguiente comando:

sudo update-grub

5. Crea (o edita si ya lo tienes) /etc/initramfs-tools/conf.d/resume con el UUID de intercambio y el desplazamiento de reanudación.

A continuación, debemos editar el archivo (o crearlo si no existe). /etc/initramfs-tools/conf.d/resume Archivo con un editor de texto como raíz. Utilice el siguiente comando para abrir este archivo con el editor de línea de comandos de Nano:

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

Si tiene una línea en este archivo que comienza con "REANUDAR", edite esa línea, o si no existe tal línea (o el archivo está completamente en blanco), agregue la línea para que se vea así:

RESUME=UUID=UUID_FROM_STEP_1 resume_offset=SWAP_OFFSET_FROM_STEP_2

Para guardar el archivo y salir de Nano, presiona Ctrl +o , luego Enter y luego Ctrl + x .

Ejemplo con el contenido del /etc/initramfs-tools/conf.d/resume Archivo desde mi portátil:

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

6. Actualizar initramfs.

Ahora necesita regenerar initramfs con este comando:

sudo update-initramfs -c -k all

7. Reinicie su computadora.

Después de reiniciar su computadora, use el siguiente comando para poner su computadora en suspensión:

sudo systemctl hibernate

Por ahora, deberá proporcionar su contraseña para ir a dormir y no hay una opción de menú para poner su computadora en modo de suspensión, por lo que tendrá que hacer todo esto desde la línea de comandos. Para poner su sistema en suspensión sin ingresar una contraseña (y tener una opción para hibernar la computadora en la opción de energía de su escritorio (por ejemplo, en un subprograma en el panel de control)), consulte los siguientes 2 pasos.

Para reanudar la hibernación, presione el botón de encendido de su computadora.

Si recibe un mensaje de error cuando ejecuta este comando que dice que el sistema no se pudo hibernar mediante el inicio de sesión:No hay suficiente espacio de intercambio para hibernar, es posible que haya pasado por alto la nota al principio del artículo donde menciono que es mejor tener un archivo de paginación que sea al menos tan grande como la memoria de su computadora. Este artículo explica cómo cambiar de una partición de intercambio a un archivo de intercambio; también puede usar estas instrucciones para crear un archivo de intercambio más grande.

Puede buscar errores relacionados con el servicio systemd Hibernate:

systemctl status systemd-hibernate.service

8. Opcional. Permitir la hibernación sin ingresar una contraseña (requerido para el siguiente paso). En algunos entornos de escritorio, esto reactiva las opciones del menú de energía "Hibernar" y "Hybrid Sleep".

Para poner su computadora en modo de suspensión, deberá ingresar su contraseña de forma predeterminada. Para permitir la hibernación sin contraseña, cree / abra /etc/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla con un editor de texto como root.

El siguiente comando abre /etc/polkit-1/localauthority/50-local.d/com.ubuntu.desktop.pkla como root usando el editor de línea de comando nano:

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

En este archivo, pegue lo siguiente:

[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

Ahora guarda el archivo y sal de Nano (presiona Ctrl + o , luego Enter y luego Ctrl + x ).

En algunos entornos de escritorio, recibirá (y después de cerrar sesión o volver a iniciar sesión) las opciones de energía, hibernación y suspensión híbrida. Aquí hay un ejemplo con las opciones de energía de Xfce después de seguir este paso:

Sin embargo, esto no funciona en algunos entornos de escritorio que usan Ubuntu, como:B. con GNOME Shell. En este caso, necesitamos un paso adicional (ver más abajo).

eso va sobre AskUbuntu

9. Opcional. Agregue un elemento de menú para aplicaciones de hibernación o use un botón de hibernación para GNOME Shell.

Si está usando GNOME Shell, puede usar una extensión que agrega una opción para poner su computadora en modo de suspensión en el menú de encendido del sistema en la barra superior, llamada botón Suspender.

Aquí está el menú Apagar/Cerrar sesión de GNOME Shell con esta extensión habilitada:

Si no está usando GNOME Shell, pero su entorno de escritorio no muestra una opción de encendido de hibernación, o si no quiere usar la extensión de GNOME Shell mencionada anteriormente, puede crear una entrada en el menú de su aplicación creando un archivo llamado hibernate. escritorio en ~/.local/share/applications/ , p.ej. abra el editor de texto de la línea de comandos de Nano con este archivo:

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

Y en ese archivo agregue lo siguiente:

[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;

Ahora puede ir al menú de la aplicación en su escritorio y hacer clic en Hibernate Ícono para poner su sistema a dormir. Para que esto funcione, debe seguir el paso 9 opcional de arriba para ir a dormir sin ingresar la contraseña.

También debo aclarar qué pasa con la opción Hybrid Sleep . Además de Suspender/Suspender (Suspender a RAM) e Hibernar (Suspender a disco), también existe la opción Suspensión híbrida (también llamada Suspensión híbrida), que pone su computadora en hibernación y luego entra en hibernación después de un cierto período de tiempo . Puede configurar el tiempo de suspensión híbrida entre suspensión e hibernación (junto con otras opciones) usando el /etc/systemd/sleep.conf Archivo y luego reinicie su sistema. Puedes encontrar más sobre esto en Arch Wiki.

Es posible que le guste esto:Cómo habilitar la decodificación de video acelerada por hardware en los navegadores Google Chrome, Brave, Vivaldi y Opera en Debian, Ubuntu o Linux Mint


Debian
  1. Cómo agregar un archivo de intercambio en Ubuntu

  2. Cómo aumentar el tamaño de intercambio en Ubuntu Linux

  3. ¿Cómo habilitar el registro de error-log.txt usando el archivo .htaccess?

  4. Cómo instalar g ++ en Ubuntu

  5. ¿Cómo copio un archivo a través de FTP usando Ubuntu Linux?

Cómo habilitar actualizaciones de seguridad automáticas desatendidas en Ubuntu

Cómo eliminar un archivo en Ubuntu

Cómo programar tareas en Ubuntu 20.04 usando Crontab

Cómo crear un archivo en Ubuntu Linux usando comando y GUI

Cómo instalar el archivo Deb en Ubuntu usando Gdebi

Cómo agregar un archivo de intercambio en Ubuntu 20.04