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--usersem argumento agora ativa o escopo do gerenciador de serviços de usuário. - Campos de configuração da interface Varlink
io.systemd.Unitforam 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=yespara 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çãoon-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
--inlinepermite especificar diretivastmpfiles.ddiretamente na linha de comando. - Diretivas
k/Kforam 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.