Skip to main content

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.

swupdate com sistema de resgate

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

Um layout típico Raspberry Pi Compute Module 5 (CM5) típico pode ter a seguinte aparência:
PartiçãoTipo de partiçãoFinalidade
p1FAT32/boot_A (kernel, cmdline, bootloader)
p2ext4rootfs A
p3FAT32/boot_B (kernel, cmdline, bootloader para o sistema de recuperação)
p4ext4rootfs_B
p5ext4dados / configuração
O carregador de inicialização pode usar um sinalizador (por exemplo, GPIO17=1 na rpi-eeprom) para determinar se a inicialização deve ser feita a partir da partição de recuperação.

Exemplo prático

Essa configuração é demonstrada em dois rpi-image-genprojetos de exemplo:

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.