Pular para o conteúdo
systemd v261 chega com suporte a LUO, melhorias TPM e novo subsistema IMDS

systemd v261 chega com suporte a LUO, melhorias TPM e novo subsistema IMDS

Descubra as novidades da versão 261 do systemd: integração LUO/Kexec, atualizações TPM, IMDS, mudanças em systemd‑nspawn e remoções de recursos legados.

A versão v261 do systemd foi publicada em 19 de junho e traz um conjunto significativo de mudanças, incluindo suporte a Live Update Orchestration (LUO), aprimoramentos no subsistema TPM, novo módulo IMDS para ambientes em nuvem e diversas remoções de funcionalidades obsoletas.

Anúncios de remoções futuras e mudanças incompatíveis

  • systemd‑logind deixará de suportar o diretório /run/boot-loader-entries/ nas próximas versões, mantendo apenas a integração completa com a especificação UAPI.1 de boot loader.
  • A API experimental systemd‑sysupdated via D‑Bus será removida; clientes deverão usar o backend systemd‑sysupdate por Varlink, com a ferramenta updatectl sendo reescrita.

Alterações de compatibilidade e remoções de recursos

  • systemd‑nspawn: a opção --user= foi renomeada para --uid=. O antigo formato ainda funciona, mas gera aviso. A flag --user sem argumento agora ativa o escopo do gerenciador de serviços de usuário.
  • Campos de configuração da interface Varlink io.systemd.Unit foram convertidos de strings para enums, aumentando a segurança de tipos. Exemplos de enumerações alteradas: ExecInputType, ProtectHome, CGroupController, entre outros.
  • Medições de TPM agora incluem registros de hardware CC (por exemplo, Intel TDX RTMRs), alterando valores esperados nos ambientes de atestação.
  • Novo parâmetro --restrict-address-families= em systemd‑nspawn permite limitar famílias de endereços de socket dentro do contêiner. Futuras versões tornarão o padrão restrito a AF_INET, AF_INET6 e AF_UNIX.
  • Introduzido o serviço systemd-pcrosseparator.service para medir um separador adicional nos PCRs 0‑7, 9, 12‑14, protegendo medições de firmware em sistemas sem separador de firmware tradicional.
  • udev: suporte ao banco de dados versão 0 foi removido, encerrando upgrades ao vivo de versões anteriores à v247.
  • systemd‑networkd ganha backend sd‑dhcp‑relay; diversas diretivas antigas de DHCPServer foram descontinuadas e substituídas por novas opções em [Network] e [DHCPRelay].
  • Requisitos de musl aumentados de 1.2.5 para 1.2.6.
  • libsystemd não garante mais link automático com libm; projetos que dependem desse comportamento devem linkar explicitamente.

Mudanças no gerenciador de sistema e serviços

  • PID 1 agora suporta LUO/Kexec Handover, preservando FD Stores entre kexecs. Unidades podem criar sessões LUO próprias via kernel e devem definir FileDescriptorStorePreserve=yes para habilitar.
  • Gerenciadores de sessão de usuário também podem preservar FD Stores usando o socket de notificação, permitindo que unidades de usuário mantenham memfds após reinicializações de sessão ou kexec.
  • Nova propriedade ReloadCount nas interfaces D‑Bus e Varlink indica quantas vezes o daemon foi recarregado com sucesso.
  • Configuração CPUSetPartition= permite definir o tipo de partição de cgroup cpuset (root, isolated, member) para serviços.
  • RestrictFileSystemAccess= usa BPF LSM para limitar execução a binários em sistemas de arquivos verificados por dm‑verity.
  • Métodos Varlink adicionados:
    • io.systemd.Unit.StartTransient() – inicia unidades transitórias.
    • io.systemd.Manager – novos comandos de desligamento (PowerOff(), Reboot(), SoftReboot(), Halt(), Kexec()).
    • ListUnitsByNames() – consulta múltiplas unidades em uma única chamada.
    • Interface io.systemd.Job – expõe informações de jobs pendentes/ativos e permite cancelamento.
  • Configurações globais EventLoopRateLimitIntervalSec e EventLoopRateLimitBurst afinam o limitador de loop de eventos do PID 1.
  • Novas diretivas por unidade CPUPressureWatch=, CPUPressureThresholdSec=, IOPressureWatch=, IOPressureThresholdSec= fornecem notificações de pressão de CPU/IO.
  • MinimumUptimeSec= (padrão 15 s) impede desligamentos muito rápidos, inserindo atraso ao final do processo de shutdown.
  • FileDescriptorStorePreserve= aceita a opção on-success, preservando o store apenas se a unidade terminar com sucesso.
  • ConditionFraction= permite escalonar a ativação de unidades em uma fração especificada de máquinas, usando hash do Machine ID + tag.
  • ConditionMachineTag= habilita condições baseadas em tags definidas em /etc/machine-info.

Novo subsistema IMDS (Instance Metadata Service)

  • Base de dados de hardware inclui hwdb.d/40-imds.hwdb, reconhecendo provedores de nuvem como AWS, Azure, GCE, Hetzner, Oracle Cloud, Scaleway, Tencent, Alibaba ECS e Vultr.
  • Serviço systemd-imdsd fornece API Varlink local para acessar IMDS, com interface de baixo nível e abstrações de alto nível que mapeiam chaves específicas de cada provedor.
  • systemd-imds atua como cliente, importando campos IMDS para credenciais do sistema, medindo os dados antes da importação.
  • Opcionalmente, o acesso de rede ao IMDS pode ser “locked” por padrão, reforçando segurança; a opção de build -Dimds-network= permite alterar esse comportamento.

Atualizações no subsistema TPM

  • Condição ConditionSecurity=measured-os verifica se o sistema foi iniciado com boot medido (medição via systemd‑stub ou mecanismo equivalente).
  • Serviço systemd-tpm2-swtpm.service permite executar o software TPM da IBM (swtpm) como fallback em máquinas sem TPM físico, ativado via kernel parameter systemd.tpm2_software_fallback=.
  • systemd-boot e systemd-stub passam a medir SMBIOS Types 1, 2 e 11 no PCR 1.
  • systemd-tpm2-setup.service agora aceita prioridade ao alocar NvPCRs, garantindo que os índices mais críticos sejam preservados.

Alterações em systemd‑tmpfiles e systemd‑sysusers

  • Arquivo tmpfiles.d/root.conf define permissões de / como 0555, útil em sistemas com root filesystem inicialmente vazio.
  • Nova opção --inline permite especificar diretivas tmpfiles.d diretamente na linha de comando.
  • Diretivas k/K foram adicionadas ao systemd-tmpfiles para definir capacidades de arquivos.

Mudanças em systemd‑sysext e systemd‑confext

  • Serviços de initrd systemd-sysext-sysroot.service e systemd-confext-sysroot foram incluídos, facilitando a gestão de extensões de sistema e configuração durante a fase de initrd.

Impacto para administradores e desenvolvedores

A versão 261 reforça a segurança (medições TPM, BPF LSM), amplia a flexibilidade em ambientes de nuvem (IMDS) e aprimora a capacidade de manutenção de estado entre reinicializações (LUO, FD Store). Contudo, as remoções de APIs legadas e a necessidade de ajustes em scripts que utilizavam opções depreciadas (ex.: systemd-nspawn --user=) exigem atenção antes da atualização.

Para detalhes completos, consulte o release notes oficial do systemd v261.

Via github.com. Você pode conferir o post original em inglês:

systemd v261

Por · Última atualização: