Skip to main content

¿Por qué partición A/B?

En los sistemas embebidos, las actualizaciones fallidas pueden brickear los dispositivos. Una disposición A/B resuelve esto manteniendo dos sistemas de archivos raíz:

  • Ranura A - rootfs activo
  • Ranura B - rootfs en espera para la próxima actualización

Cuando una actualización tiene éxito, el gestor de arranque cambia a la nueva ranura. Si el arranque falla, se retrocede a la última versión buena conocida.

Este enfoque presupone, que la ranura A y la ranura B tienen el mismo tamaño de la partición, lo que a veces puede ser complicado en sistemas embebidos, cuando los recursos son limitados.

swupdate con sistema de rescate

Otro enfoque es, crear particiones para un pequeño sistema de rescate y una partición más grande para el sistema de funcionamiento normal.

Ejemplo de disposición de particiones

Un trazado típico Raspberry Pi Compute Module 5 (CM5) podría tener este aspecto:
ParticiónTipoFinalidad
p1FAT32/boot_A (kernel, cmdline, gestor de arranque)
p2ext4rootfs A
p3FAT32/boot_B (kernel, cmdline, gestor de arranque para el sistema de rescate)
p4ext4rootfs_B
p5ext4datos / configuración
El gestor de arranque puede utilizar una bandera (por ejemplo, GPIO17=1 en rpi-eeprom) para determinar si arrancar desde la partición de rescate.

Ejemplo práctico

Esta configuración se demuestra en dos rpi-image-genproyectos de ejemplo:

El primero crea el sistema de rescate y el segundo combina el sistema de rescate con otro sistema en ejecución, ajustando las etiquetas de partición en cmdline.txt y fstab.

Gestión de la actualización

Puede montar manualmente la partición inactiva del sistema para actualizar configuraciones, aplicaciones o componentes del sistema.
Para los sistemas de producción, las actualizaciones suelen gestionarse a través de SWUpdateque automatiza este proceso de forma segura.

Integración con SWUpdate

SWUpdate soporta de forma nativa estrategias de actualización de doble raíz (A/B).
Las particiones y la lógica de actualización se definen directamente en el sw-description archivo.

Este enfoque garantiza actualizaciones atómicas del sistema con seguridad de retroceso incorporada, una característica esencial para los dispositivos sin cabeza o remotos, donde la recuperación manual no es factible.