Este me parece un problema muy genérico. Tengo un sistema integrado que ejecuta Linux desde una raíz de sólo lectura. Hay un demonio de actualización que instala nuevas imágenes de software cuando están disponibles sobrescribiendo particiones enteras. Mi pregunta es: ¿Cuál es el mejor enfoque para hacer esto desde un sistema en ejecución?
- dd la partición actualizada
/dev/sdX
, ¿cuál es la raíz montada actualmente (de solo lectura)? - mueva la raíz actual usando
pivot_root
a tmpfs como se discutióaquí? - ¿Usar 2 particiones raíz y alternar la "activa" después de cada actualización?
Las desventajas de 2 y 3 son que necesito mucha RAM (para 2) o espacio en disco (para 3). ¿Existe una forma segura de sobrescribir la partición raíz de solo lectura desde un sistema en ejecución y reiniciar en el sistema actualizado?
Respuesta1
Entonces, lo que hice fue seguir el enfoque 1. y me encontré con muchos problemas donde el sistema ya no era estable debido a un problema del sistema de archivos. Supongo que sobrescribir una partición montada no es una buena idea (aunque no es una gran sorpresa). Para solucionar este problema, probé la segunda idea (pivot_root) que funciona pero tiene algunas desventajas. Una es: debe detener la mayoría de los procesos en ejecución y/o reiniciar lo antes posible después de que se complete la actualización. Finalmente, probé la tercera idea y el único inconveniente es el "desperdicio" de espacio en disco. Todo lo demás funciona bastante bien.