¿Cuál es el comando del espacio de usuario para salir de la hibernación?

¿Cuál es el comando del espacio de usuario para salir de la hibernación?

Durante mucho tiempo usé

echo disk > /sys/power/state

Para poder hibernar /dev/sda10y estaba usando el initrd de mi distribución Debian para reanudar.

Pero recientemente, cambié a una matriz de incursión.que requieren que use un initramfs completamente personalizado (Tuve que construirlo desde cero porque el intento de modificar el initrd existente no funcionó)para configurar la matriz raid antes de montar la partición raíz.

Hay 2 formas de reanudar: o el kernel puede leer directamente el sistema de archivos de intercambio con el resume=parámetro del kernel(y se reanudará antes de iniciar init) ; o necesita algo de espacio de usuario(por ejemplo, cargar módulos)para poder acceder a la partición de intercambio.

Entonces, ¿cuál es el comando de espacio de usuario para continuar desde /dev/mapper/isw_qfyzrvbsusf_Volume0p9 ?

Respuesta1

La respuesta corta es /sys/power/resume

Respuesta mucho más larga, porque eso por sí solo no servirá de mucho, si es que sirve de algo. La mayoría de las distribuciones recomiendan iniciar una reanudación desde el proceso init/PID 1 (espacio de usuario inicial). Sin embargo, las instrucciones casi invariablemente le informarán que agregue un argumento de línea cmd del kernel a su cargador de arranque con el objetivo de reanudar. La razón de esto es que en casi todos los casos la herramienta de compilación initramfs (dracut/mkinitcpio/initramfs-tools) es activada por ese argumento en la configuración.

Según su ejemplo y distribución, supongo que está utilizando la interfaz del kernel de bajo nivel para suspender (swsusp). Hay otras utilidades que se pueden utilizar para iniciar el proceso de suspensión; Todos ellos son fundamentalmente envoltorios del primer elemento, swusp.

  • deslizar- interfaz del kernel de bajo nivel; La interfaz del espacio de usuario es a través de sysfs.
  • uswswp- contenedor de suspensión de software de espacio de usuario de bajo nivel - proporciona utilidades s2disk, s2ram (no se mantiene activamente)
  • pm-utils- scripts de alto nivel para configurar el proceso
  • suspensión del sistema- en sistemas systemd hay disponible un objetivo de suspensión que iniciará la operación de suspensión a través de la interfaz del kernel.

Reanudar configuración

Un esquema muy simplificado de la secuencia de arranque en Linux usando una imagen initramfs es:

[BIOS] ==> [Cargador de arranque] ==>[Kernel en rootfs temporal - initramfs] ==> [Kernel en rootfs - unidades]

Hay una pequeña ventana al final de la etapa initramfs donde puede realizarse el currículum; después de que el kernel haya iniciado el PID 1 (systemd o init), cargó los controladores para la incursión, pero antes de montar las unidades reales.

Proporcioné un ejemplo de una configuración de currículum típica. Esto supone que la ruta de currículum que proporcionó es una partición de intercambio; y no una partición "normal" que contenga un archivo de intercambio. Un archivo de intercambio requiere configuración adicional. El método systemd es diferente: utiliza una regla udev basada en resume.target que desencadena el proceso de reanudación. Vale la pena investigar si el enfoque más tradicional del gestor de arranque/imagen initramfs no funciona. Esto es un correlato directo de la forma en que lo haría un sistema basado en init; pero es un poco más complicado insertar manualmente su propio script y obtener las interdependencias/timing relativo correcto.

La conclusión es que el momento en el que se activa la reanudación es inmediatamente anterior al momento en que el kernel monta los discos duros "reales". Entonces, si el kernel puede montar el fs completo, también tiene toda la capacidad y la información necesarias para montar sólo la partición de intercambio.

Asegúrese de que su partición de intercambio esté montada mediante fstab; la herramienta dracut initramfs lo busca específicamente y no incluye el módulo de reanudación si la partición de intercambio no está allí.

configurar el gestor de arranque

Suponiendo que está utilizando grub2, debe agregar resume=/dev/mapper/isw_qfyzrvbsusf_Volume0p9al GRUB_CMDLINE_LINUX_DEFAULTcampo /etc/default/grub Actualizar su imagen de grub, generalmente con el comando:sudo grub2-mkconfig -o /boot/grub2/grub.cfg

reconstruir initramfs

Debe reconstruir la imagen de initramfs con la capacidad de reanudar (así como las modificaciones de raid que ya realizó). Debian proporciona herramientas dracut e initramfs para generar initramfs. Debe regenerarse con el módulo de currículum. Con dracut, agregue el argumento de la línea de comando --add resume. Con update-initramfs, agregue la entrada resume=/dev/mapper/isw_qfyzrvbsusf_Volume0p9al archivo de configuración./etc/initramfs-tools/conf.d/resume

Eso debería ser todo; suponiendo que hice algunas suposiciones correctas sobre su configuración.

Editar; Suponiendo que pueda sincronizarlo correctamente, puede repetir el número de dispositivo mayor/menor de la partición de intercambio en /sys/power/resume desde un script de inicio para activar la reanudación. Su imagen initramfs (o initd) debe tener soporte para currículum, o ese elemento sysfs y la capacidad que representa no existirán. Verhttps://bugs.launchpad.net/ubuntu/+source/initramfs-tools/+bug/983805

Respuesta2

El archivo es /sys/power/resume.

Para activar el currículum, el mayor del dispositivo seguido del menor debe escribirse en ese archivo. Entonces el siguiente comando puede lograrlo:

echo `stat -c %t /dev/mapper/isw_*_Volume0p9`\:`stat -c %T /dev/mapper/isw_*_Volume0p9` > /sys/power/resume

información relacionada