Os desenvolvedores do projeto postmarketOS, que desenvolve uma distribuição Linux para dispositivos móveis, anunciaram a criação de uma versão do sistema que pode ser atualizado de forma atômica. A nova edição está sendo desenvolvida com o nome Duranium e se destaca por fornecer o sistema como um todo, sem a separação em pacotes individuais. É importante destacar que essa nova versão está alinhada com a ideia de que um dispositivo deve funcionar sem a necessidade do usuário saber sobre a existência de um terminal ou entender as particularidades do sistema.
O ambiente do sistema na partição /usr é montado em modo somente leitura usando o sistema de arquivos EROFS e é verificado a cada inicialização por meio de uma assinatura digital. A partição /usr tem um tamanho de 5GB. Para garantir a integridade dos dados na partição /usr, é aplicado o dm-verity, e, em caso de detecção de modificações no conteúdo, a inicialização é bloqueada. O hash de verificação é incorporado à imagem unificada UKI (Unified Kernel Image), que combina o manipulador para carregar o kernel a partir do UEFI (UEFI boot stub), a imagem do kernel Linux e o ambiente de sistema initrd, que é usado para a inicialização inicial antes da montagem do sistema de arquivos raiz. A imagem UKI é apresentada como um único arquivo executável no formato PE e é chamada pelo carregador UEFI.
Os outros diretórios, exceto /usr, fazem parte da partição raiz, que é gravável e mantida entre reinicializações e atualizações. O conteúdo da partição raiz deve ser criptografado usando LUKS2, o que aumenta os requisitos de hardware. O sistema de arquivos raiz criptografado é criado durante a primeira inicialização ou após uma redefinição para as configurações de fábrica. Por padrão, é gerada uma chave vazia, permitindo a desbloqueio automático da partição criptografada. No assistente de configuração inicial e no configurador, é oferecido ao usuário a opção de definir uma senha para a descriptografia.
As configurações padrão são armazenadas no sistema de imagem na pasta /usr/share/factory/etc. Durante a primeira inicialização, são criados links simbólicos no diretório /etc para todos os arquivos em /usr/share/factory/etc, exceto para os arquivos passwd, group, shadow, fstab, machine-id e hostname. Se houver a necessidade de alterar as configurações durante o funcionamento, o link simbólico é substituído por uma cópia do arquivo.
As atualizações são instaladas substituindo toda a imagem do sistema. Dois partições raiz idênticas são criadas no dispositivo - ativa e passiva. A nova atualização é instalada na partição passiva, sem afetar o funcionamento da partição ativa. Após a verificação da correção da atualização instalada e do reinício bem-sucedido, as partições são trocadas - a partição com a atualização se torna ativa, enquanto a antiga partição ativa é colocada em modo passivo, aguardando a instalação da próxima atualização. Se houver problemas de inicialização após a atualização, é realizado um retrocesso automático para a versão anterior do sistema.
Essa abordagem simplifica bastante a depuração e o diagnóstico de problemas, pois os desenvolvedores podem reproduzir com precisão o estado em que ocorreu a falha, sem a necessidade de reproduzir a composição do sistema do usuário em nível de pacotes individuais e considerando as combinações existentes das versões dos pacotes. A desvantagem é que os requisitos de hardware são mais altos, o que não permitirá o uso do Duranium em todos os dispositivos suportados pelo postmarketOS.
O conteúdo da imagem do sistema Duranium é formado a partir de uma base de pacotes unificada com o postmarketOS, baseada no Alpine Linux, na biblioteca padrão C Musl e em um conjunto de utilitários BusyBox. Os lançamentos do postmarketOS e do Duranium são quase idênticos em composição, mas diferem nos métodos de entrega do sistema. Componentes do systemd-sysupdate, systemd-repart e systemd-verity-setup são utilizados para a formação, instalação e atualização das imagens do sistema.
Aplicativos adicionais são instalados no formato Flatpak ou utilizando o gerenciador de pacotes Coldbrew. O Coldbrew permite que pacotes sejam instalados dos repositórios do Alpine Linux no diretório pessoal do usuário. Ao serem executados, esses pacotes são isolados através da ferramenta bubblewrap.
Fonte: opennet.ru
