¿Cómo hago Ubuntu "prueba de pérdida de energía"?

18

Me gusta ejecutar un sistema desatendido para el uso diario de 'quiosco'.

Sin embargo, el sistema puede apagarse en cualquier momento sin que alguien realice un apagado adecuado antes. Por defecto, no se espera que Ubuntu se apague por pérdida de energía. Después de reiniciar después de una pérdida de energía, se puede ejecutar fsck para verificar el sistema de archivos, y fsck puede indicarle al sistema que se reinicie una vez que haya finalizado. Entonces, incluso si no hay datos de configuración dañados, es posible que la máquina no arranque bien después de una pérdida de energía. Así que probé algunas soluciones alternativas:

  1. cambie la prioridad de fsck del montaje raíz a 0(último campo en fstabla entrada raíz) que impide la ejecución fsckdespués de cada pérdida de energía. Sin embargo, el sistema puede arrancar con raíz de solo lectura, lo cual no es esperado por muchos servicios y da como resultado una solicitud de inicio de sesión de consola en lugar del inicio de sesión gráfico.

  2. Reemplazar errrors=remount-ropor errors=continue. Esto da la mala sensación de que un sistema de archivos incosistente puede producir una mayor pérdida de datos. Sin embargo, con fsckhabilitado nuevamente, debería aumentar la capacidad de arranque del sistema después de una pérdida de energía. Entonces dejé caer 1).

  3. Vuelva a configurar grub2 para usar un tiempo de espera de opción predeterminado normal después de un inicio fallido. Para eso, he agregado GRUB_RECORDFAIL_TIMEOUT=0a /etc/default/grub.

Sin embargo, es difícil saber si estos hacks hacen que el sistema sea a prueba de pérdida de energía. ¿Algunas ideas? ¿Alguien más puede hacer?

Dronus
fuente
1
Realmente no entiendo lo que estás tratando de lograr. ¿Qué quiere decir con "prueba de pérdida de potencia"? ¿Puedes aclararlo un poco?
André Stannek
Se agregó una introducción aclaratoria. Me gusta un sistema que vuelve a levantarse rápido de forma habitual sin interacción de mantenimiento después de una pérdida de energía.
dronus

Respuestas:

16

Para la aplicación de kiosco, el problema se resuelve utilizando una partición raíz de solo lectura. Además, los cambios que los usuarios realizan o guardan se deshacen en el próximo reinicio.

Para proporcionar una raíz de escritura para la mayoría de las necesidades de las aplicaciones, overlayfs se puede utilizar para superponer la partición de solo lectura con un ram tempfs de escritura.

Hay un script que ayuda a crear dicha configuración en la parte inferior de https://help.ubuntu.com/community/aufsRootFileSystemOnUsbFlash . El script contiene las instrucciones para configurar esto:

  • coloque el archivo en / etc / initramfs-tools / scripts / init-bottom / root-ro
  • sudo chmod 0755 root-ro
  • sudo update-initramfs -u

Sugiero añadir GRUB_RECORDFAIL_TIMEOUT=0a /etc/default/gruby correr sudo update-grubdemasiado, de lo contrario el menú de inicio puede aparecer sin tiempo de espera.

Después de eso, reinicia. Luego, la máquina se inicia en modo de solo lectura, que se puede verificar mount. Cualquier cambio aplicado se desvanecerá en el próximo reinicio. Para realizar cambios, instalar software y actualizaciones, etc. solo necesita ingresar al menú de GRUB, presionar epara cambiar las líneas de comando de inicio y agregar disable-root-ro=truea la línea que comienza con el núcleo. Presione F10 para continuar el arranque. Luego puede usar mountpara confirmar que la raíz está montada en escritura como de costumbre. Realice los cambios y reinicie, el sistema vuelve a ser de solo lectura.

Dronus
fuente
+1 porque un sistema de archivos raíz de solo lectura fue lo primero que me vino a la mente también.
Nathan Osman
Esto en realidad funciona bastante bien. Sin embargo, después de cualquier montaje de lectura / escritura, el sistema debe reiniciarse limpiamente nuevamente para verificar que todo esté limpio. Cosas como GRUB a prueba de fallos, un navegador que muestra que no estaba bien cerrado o fsck, de lo contrario, se conservaría demasiado para siempre. Si eso sucede, uno tiene que reiniciar la lectura / escritura en otro momento y apagarlo nuevamente limpiamente.
Dronus
9

Algunas veces después de un reinicio sucio (por ejemplo, presionar el botón de pérdida de energía o reinicio o incluso un kernel panic), el sistema no se iniciará pidiéndole que presione "y" para que un fsck repare la partición.

Si desea evitar esto, edite / etc / default / rcS y cambie:

FSCKFIX=no

A:

FSCKFIX=yes

Esto asegurará que esta reparación se ejecute automáticamente sin preguntarle.

La desventaja puede ser que puede perder datos y es posible que desee sacar el disco duro y clonarlo primero si hay algo crítico en él que no esté respaldado.

Por ejemplo, si su controlador de disco duro tiene una falla y fsck identificó falsamente la partición como rota e intenta repararla, eso puede conducir a la pérdida de datos que de otra manera se podría evitar. Nunca he experimentado esto yo mismo y he tratado con cerca de mil servidores en los últimos 7 años más o menos, pero aún así es algo a tener en cuenta.

Roman Gaufman
fuente
7

A partir de hoy, por un quiosco solución también se puede instalar el paquete de sólo lectura overlayrootpor

sudo apt-get install overlayroot

que proporcionará fácilmente una solución completa como la de la respuesta aprobada. También permite el comando beneficioso

sudo overlay-chroot

que iniciará sesión en un shell con el antiguo disco base de solo lectura montado /. Entonces es posible realizar cambios en el sistema protegido como uno y, por ejemplo, utilizar apt-getpara instalar paquetes en el disco de solo lectura anterior. Sin embargo, después de salir del shell, se recomienda reiniciar, ya que los archivos sobrescritos temporalmente en la RAM pueden ocultar los recién instalados.

Dronus
fuente