Se realizan cambios en la configuración predeterminada en comparación con LTS anterior (16.04). En mi caso, la hibernación no funcionó hasta que hice varios pasos, entre ellos, aumentar el tamaño del archivo de intercambio, encenderlo, asegurarme de que las políticas lo permitieran, etc.
Esta puede ser fácilmente mi respuesta más larga en StackExchange completo, así que intenté hacer que los encabezados sean descriptivos .
Botas ya que no hubo hibernación
Sería prudente echar un vistazo a sus registros ( dmesg
podría ayudar) y ver si hay algo allí. Hay razones por las cuales, a pesar de decirle al sistema que hiberne, en realidad no lo hará, o en su lugar se suspenderá a la RAM (suspensión).
Echar un vistazo kern.log
y syslog
buscar cualquier mensaje relacionado con la hibernación no estaría tan mal. Las secciones que comienzan con "problema" pueden ayudarlo con problemas específicos.
Intercambio de archivo o partición de intercambio
Uno de los cambios cruciales es que ahora NO TIENE una partición de intercambio, pero tiene un ARCHIVO de intercambio.
Es posible que el archivo de intercambio no funcione para su combinación de hardware / controladores / sistema operativo e hibernación.
Hibernación apagada
Las políticas también pueden desactivar o no permitir la hibernación.
Jerga
Suspender a RAM: la RAM mantiene los datos, la computadora se duerme más rápido, usa más energía cuando se suspende, se despierta más rápido. Algunos lo llaman sueño.
Suspender al disco, también conocido como hibernación. La RAM se guarda para intercambiar (partición o archivo), la computadora se va a dormir más lentamente, usa menos energía mientras hiberna, se despierta más lentamente.
Requisitos previos: ¿tiene suficiente espacio?
Para hibernar, debe (simplificar aquí) guardar toda la RAM en su disco duro. Por lo tanto, debe reservar suficiente espacio para hacerlo. Si no lo hace, esto fallará y no hibernará.
free -m
le dirá cuánta memoria tiene, usa y cuánta hay en su intercambio.
df -h
le dirá cuánto espacio en disco tiene en cada punto de montaje y cuánto se usa, libre, etc. Esto es importante ya que es posible que luego desee especificar dónde se ubicará su archivo de intercambio o qué partición "recortar" para tener suficiente espacio para su intercambio.
cat fstab
debería proporcionarle información si tiene una partición o archivo de intercambio. De acuerdo con Ubuntu Hibernation, las preguntas frecuentes swapfile
pueden no funcionar siempre con algunas combinaciones de hardware / controladores.
Si no tiene suficiente espacio, siga las preguntas frecuentes de intercambio de Ubuntu . Le indica cómo aumentar el archivo de intercambio, agregar otro, verificar si se usa, etc. Con comandos y explicaciones. Muy buen recurso.
¡No tengo suficiente espacio para mi RAM!
Los documentos del kernel dicen:
/ sys / power / image_size controla el tamaño de la imagen creada por el mecanismo de suspensión en disco. Se puede escribir una cadena que represente un número entero no negativo que se utilizará como límite superior del tamaño de la imagen, en bytes. El mecanismo de suspensión en disco hará todo lo posible para garantizar que el tamaño de la imagen no supere ese número. Sin embargo, si esto resulta imposible, intentará suspender de todos modos utilizando la imagen más pequeña posible. En particular, si se escribe "0" en este archivo, la imagen suspendida será lo más pequeña posible. La lectura de este archivo mostrará el límite de tamaño de imagen actual, que se establece en 2/5 de RAM disponible de forma predeterminada.
Por lo tanto, intente ajustar el tamaño de su imagen. Cómo, haz otra pregunta por favor.
Prerrequisitos: ¿admite su núcleo la suspensión al disco?
Kernel admite todo lo que aparece en la lista /sys/power/state
, así que:
cat /sys/power/state
Animales (que yo sepa) las categorías allí incluyen: mem
, standby
, freeze
, disk
. Explicación:
mem
- tiene varios significados, cuál exactamente en su sistema lo encontrará cat /sys/power/mem_sleep
. Yo tengo:s2idle [deep]
standby
- Suspensión de encendido (si es compatible)
freeze
- Suspender a inactivo (ITS)
disk
- Suspender a disco (STD), hibernación . Esto, tú quieres.
Entonces tenemos que verificar cat /sys/power/disk
. Si tiene allí disabled
, sumérjase en su BIOS en busca de un arranque seguro; esa es la única idea que puedo ofrecer y lo único que sé puede interferir y apagar la hibernación. Si bien solo conozco SecureBoot, puede haber otras interferencias, por lo que echar un vistazo a su BIOS es una buena idea incluso si no tiene ningún "arranque seguro".
Leyendo aquí:
- Documentos del kernel
- Debian Wiki sobre hibernación
TBH, incluso si su núcleo NO es compatible con la hibernación, puede intentarlo de otra manera, desplácese hacia abajo hasta la secciónInterfaces
.
Lea esto - advertencias y problemas - no BTRFS
En ningún orden particular:
- No todos los conjuntos de chips funcionarán (no tengo fuentes que pueda citar aquí, así que digamos que esto es un rumor)
- VAIO tiene problemas, supuestamente hay una bandera para contrarrestarlos
- SecureBoot a menudo se cita como interferencia o desactivación de la hibernación
- Wake-on-LAN consume energía incluso con hibernación
- El número de módulos (especialmente los gráficos) se puede inicializar ANTES de que su sistema se reanude correctamente desde la hibernación; esta suele ser la causa de la pantalla en negro cuando se reanuda . Mire ArchLinux Wiki para obtener consejos sobre cómo depurar problemas. También sugeriría las preguntas frecuentes de Ubuntu sobre problemas de hibernación. Navegar a través de errores de Launchpad también puede producir resultados. IIRC, hay un parámetro del kernel que especifica en segundos un retraso antes de reanudar.
- Permitir el procedimiento de hibernación difiere para diferentes versiones de Polkit
No use BTRFS ni hiberne: el resultado será datos corruptos.
Quiero hibernar - intercambiar partición
Hay casos en que las personas renuncian al archivo de intercambio y vuelven a la partición de intercambio. Después de todo, funcionó en LTS anteriores. No lo intenté, así que no ofreceré punteros.
Quiero hibernar - con archivo de intercambio
- Asegúrate de tener suficiente espacio allí. Las preguntas frecuentes de intercambio de Ubuntu le indican cuánto necesita, los comandos de arriba también lo hacen. Si necesita más información aquí, haga otra pregunta por favor, ya que este es un tema largo.
- Aumente el archivo de intercambio o cree uno nuevo con un tamaño suficientemente bueno (de preferencia, estoy de acuerdo con @muru ) y cambie
/etc/fstab
a uno nuevo. Reinicie para ver que el cambio se ha llevado bien (guarde una copia de seguridad fstab
para que pueda revertirlo fácilmente por si acaso).
- Apunte su núcleo hacia esto con los parámetros apropiados, para que sepa de dónde reanudar.
- Actualice / reconfigure su gestor de arranque y reinicie.
Parámetros del kernel? ¡De miedo!
Lea atentamente y decida si desea hacerlo, pero es solo una forma de configurar su núcleo. Puede ser más fácil hibernar a través de systemd
y uswsusp
(ver Interfaces , más abajo). Puede ser que usted, como yo, finalmente decida que suspender a RAM es suficiente y que no desea tener 32 GB en un archivo de intercambio (por ejemplo, no tan bueno para las personas con un SSD en sus computadoras portátiles). ¡Pero!
- hibernar para intercambiar archivos requiere
resume=
saber en qué partición está su archivo de intercambio y resume_offset=
saber desde dónde comenzar a reanudar el archivo de intercambio.
- hibernar a la partición requiere
resume=
apuntar a la partición de intercambio.
- la resolución de problemas de pantalla en negro puede requerir
resumedelay=
.
Documentos del kernel sobre retrasar la reanudación de la hibernación:
resumedelay = [HIBERNATION] Retraso (en segundos) para pausar antes de intentar leer los archivos de currículum
Parámetros necesarios para el archivo de intercambio y la hibernación :
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
Para resume=
elegir el mismo estilo que root
tiene el elemento fstab
. Entonces, o /dev/sdaX
o UUID
o LVM. Para hibernar a un archivo: proporcione una partición donde pueda encontrar su archivo.
Leyendo:
- https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt
- https://wiki.archlinux.org/index.php/Kernel_parameters
Problema: no se encontró el encabezado de intercambio
El archivo de intercambio debe formatearse correctamente. Si sus registros le dicen esto, está intentando hibernar a un archivo o su parámetro de reanudar no es correcto.
Cambie a la partición o arregle el archivo o cambie la interfaz utilizada para la hibernación.
Ver: /unix/43508/debian-hibernate-problem-pm-swap-header-not-found
mkswap
se usa para formatear archivos, lea más sobre esto aquí
¡Problema! ¡Hibernación no permitida!
Prueba: pm-hibernate
(si el paquete pm-utils está instalado) o systemctl hibernate
decirle que no está permitido. Configuración predeterminada en Ubuntu desde IIRC 12.04.
Solución (es): depende de su versión de Polkit, su versión de Ubuntu y su sabor ... Vea esta pregunta . Además, ArchWiki en Polkit puede ayudar.
Para Mint, consulte: https://forums.linuxmint.com/viewtopic.php?t=259912
¡Problema! ¡Hibernación deshabilitada por algo en BIOS!
Prueba: cat /sys/power/disk
tiene disabled
. Los registros muestran "Error al hibernar el sistema a través de logind: el verbo de suspensión no es compatible".
Solución: busque en su BIOS y encuentre la cosa problemática. Apágalo.
Solución 2: intente con otra interfaz de hibernación.
Ver: ¿Cómo activar la hibernación en 16.04.1? (systemd) .
Interfaces
- swsusp: interfaz de kernel de bajo nivel. Consulte Requisitos previos: kernel para los archivos. Escribir en archivos directamente puede provocar la suspensión (en RAM, en disco e híbrido). Según SwapFAQ problemático con la hibernación al archivo.
- uswsusp - ArchWiki y Debian Wiki y una buena pregunta de AskUbuntu con un artículo sobre cómo usarlo .
- systemd - ArchWiki en él
- pm-utils - AFAIK que es una colección de scripts originalmente de Debian - Estaré encantado de recibir más información.
Palabras de clausura
Para mí fue una cuestión de casi dos días de trabajo compilar eso. Esperemos que esto te ayude (y a otros) a resolver tu problema más rápido. Todavía faltan puntos, pero son las 2 AM y no tengo ganas de escribir más ahora. Por supuesto, estoy abierto a los consejos de cualquiera para mejorar esto, así que comenta. Contestaré una vez que duerma, trabajo, etc. :-)
No estoy seguro de que hibernar en el disco sea tan genial. Fui con dormir al final. Pero para mí el problema era tener un archivo de 32 GB solo para poder hibernar, ya que generalmente evito el intercambio. Mi archivo de intercambio inicial era de 2GB y estaba casi vacío. YMMV. Sin embargo, ¡buena suerte! ¡Y comience con los registros!