Por que o particionamento A/B?
Em sistemas incorporados, as atualizações com falha podem bloquear os dispositivos. Um layout A/B resolve esse problema mantendo dois sistemas de arquivos raiz:
- Slot A - rootfs ativo
- Slot B - rootfs de espera para a próxima atualização
Quando uma atualização é bem-sucedida, o carregador de inicialização muda para o novo slot. Se a inicialização falhar, ele volta para a última versão válida conhecida.
Essa abordagem pressupõe que o slot A e o slot B tenham o mesmo tamanho de partição, o que às vezes pode ser complicado em sistemas incorporados, quando os recursos são limitados.
Outra abordagem é criar partições para um sistema de recuperação pequeno e uma partição maior para o sistema em execução normal.
Exemplo de layout de partição
| Partição | Tipo de partição | Finalidade |
|---|---|---|
| p1 | FAT32 | /boot_A (kernel, cmdline, bootloader) |
| p2 | ext4 | rootfs A |
| p3 | FAT32 | /boot_B (kernel, cmdline, bootloader para o sistema de recuperação) |
| p4 | ext4 | rootfs_B |
| p5 | ext4 | dados / configuração |
Exemplo prático
Essa configuração é demonstrada em dois rpi-image-genprojetos de exemplo:
- https://github.com/interelectronix/rpi-image-gen-projects/blob/main/deb12-cm5-rescue/README.md
- https://github.com/interelectronix/rpi-image-gen-projects/blob/main/deb12-cm5-ix-base/README.md
A primeira cria o sistema de recuperação e a segunda combina o sistema de recuperação com outro sistema em execução, ajustando os rótulos das partições em cmdline.txt e fstab.
Atualização do gerenciamento
O senhor pode montar a partição inativa do sistema manualmente para atualizar configurações, aplicativos ou componentes do sistema.
Para sistemas de produção, as atualizações geralmente são gerenciadas por meio do SWUpdateque automatiza esse processo com segurança.
Integração com SWUpdate
SWUpdate oferece suporte nativo a estratégias de atualização de rootfs duplos (A/B).
As partições e a lógica de atualização são definidas diretamente no arquivo sw-description arquivo.
Essa abordagem garante atualizações atômicas do sistema com segurança de reversão incorporada - um recurso essencial para dispositivos sem cabeça ou remotos, em que a recuperação manual não é viável.
Artigos desta série
- Building a Production-Ready Linux for Raspberry Pi Compute Module 5
- Do sistema operacional de estoque à plataforma de produção
- Customizing Raspberry Pi OS with rpi-image-gen
- Robustez do sistema - Projetando um layout de sistema de arquivos raiz A/B
- Provisioning — Automating First Boot with rpi-sb-provisioner
- OTA and Lifecycle — Software Updates with SWUpdate
Fontes
- rpi-image-gen: https://github.com/raspberrypi/rpi-image-gen
- rpi-sb-provisioner: https://github.com/raspberrypi/rpi-sb-provisioner
- SWUpdate: https://github.com/sbabic/swupdate
- swugenerator: https://github.com/sbabic/swugenerator