Após três meses de desenvolvimento, está disponível a versão do gerenciador de sistema systemd 261. Principais alterações: preparação para suporte a API para verificação de idade, suporte aos subsistemas Kexec Handover e Live Update Orchestration para reinicialização sem perda de estado, subsistema IMDS (Instance Metadata Service), funcionalidade para proteção da inicialização em sistemas sem TPM físico (Trusted Platform Module), componente systemd-sysinstall com a implementação do instalador.
Entre as mudanças na nova versão:
- Adicionado um novo componente systemd-sysinstall com a implementação de um simples instalador de sistema operacional, que pode ser gerenciado a partir da linha de comando ou através de uma interface de texto interativa. A funcionalidade do systemd-sysinstall é formada a partir de capacidades já existentes do systemd: para configuração de partições de disco, utiliza-se o systemd-repart, para instalação do kernel e geração do menu de inicialização — o comando “bootctl link”, para instalação do carregador systemd-boot — o comando “bootctl install”, para configuração inicial do sistema instalado (por exemplo, seleção de localidade e layout do teclado) — systemd-creds.
- No âmbito da preparação para a implementação dos requisitos da legislação sobre integração no SO, foi adicionado ao banco de dados userdb o campo birthDate com a data de nascimento do usuário. O campo adicionado poderá ser utilizado no portal xdg-desktop-portal em desenvolvimento para distribuições e no serviço AccountsService para fornecer informações sobre a categoria etária do usuário para aplicativos através da interface D-Bus “org.freedesktop.AgeVerification1” ou “org.freedesktop.ParentalControls”. Para definir a idade na ferramenta homectl, foi adicionada a opção “—birth-date”.
- No manipulador PID1, foi adicionando suporte aos subsistemas do kernel Linux LUO (Live Update Orchestration) e KHO (Kexec Handover), permitindo reiniciar e atualizar completamente o kernel sem interromper o funcionamento e sem perder o estado do sistema, dispositivos e processos. O KHO fornece recursos para iniciar um novo kernel a partir de um antigo sem perda de estado do sistema, enquanto o LUO implementa a preservação do estado dos dispositivos e da memória RAM, além de garantir a continuidade das operações relacionadas ao DMA e ao tratamento de interrupções.
No systemd, tanto para unidades do sistema quanto para unidades de usuários, foi implementada a capacidade de salvar descritores de arquivos antes da chamada do kexec e restaurá-los após a reinicialização do kernel através do kexec. Nas unidades também é possível criar sessões LUO personalizadas, que são salvas e restauradas durante a execução do kexec. Para ativar a preservação do estado do armazenamento dos descritores de arquivos, deve-se usar a configuração 'FileDescriptorStorePreserve=yes'.
- Foi implementada a subsistema systemd-imdsd, que fornece uma API baseada em Varlink IPC para que programas locais acessem os serviços IMDS (Instance Metadata Service) oferecidos por diferentes provedores de nuvem. O IMDS permite máquinas virtuais obter informações sobre o ambiente de nuvem, como obter detalhes sobre a configuração de rede, a localização geográfica do nó, o tipo de CPU e o tamanho do armazenamento. O systemd-imdsd oferece tanto uma API de baixo nível para acessar campos individuais quanto uma interface de alto nível para consultas com chaves típicas, correspondentes a chaves específicas de plataformas de nuvem. Para interagir com o systemd-imdsd, foi adicionada a ferramenta systemd-imds, que permite importar campos do IMDS para o sistema local de contas.
Para reconhecer plataformas de nuvem com base nas informações do SMBIOS e determinar a funcionalidade IMDS disponível no nó atual, foi adicionada uma nova base de dados hwdb.d/40-imds.hwdb. O reconhecimento de plataformas de nuvem como Amazon EC2, Microsoft Azure, Google Compute Engine, Hetzner, Oracle Cloud, Scaleway, Tencent Cloud, Alibaba ECS e Vultr foi implementado. Um manipulador systemd-imds-generator está disponível para a substituição automática do serviço para obter dados através do IMDS quando detectada a operação em uma plataforma de nuvem suportada. É possível criar imagens universais que suportam o uso do IMDS ao serem executadas em ambientes de nuvem, mas que também podem operar sem o IMDS.
- No systemd-stub, foi implementada a funcionalidade 'boot secret', que permite formar uma chave baseada em uma variável EFI, armazenada em uma área inacessível para o sistema operacional e inicializada com um valor aleatório. Na initrd, a chave é passada através do arquivo /.extra/boot-secret. Este recurso pode ser necessário para obter uma chave aleatória específica do sistema para a verificação do processo de inicialização ou para criptografia em sistemas sem TPM (Trusted Platform Module) de hardware.
- Adicionado o serviço systemd-tpm2-swtpm.service para iniciar o emulador de chips TPM swtpm (Emulador de TPM de Software), que pode ser utilizado para reverter automaticamente para a implementação de software TPM para inicialização segura em sistemas sem TPM de hardware. O TPM de software funciona no espaço do usuário e não consegue atingir o mesmo nível de proteção que um TPM de hardware, mas em algumas situações seu uso é justificado em comparação ao funcionamento sem TPM. Por exemplo, o TPM de software pode obter a chave de criptografia das partições através da nova funcionalidade "boot secret" e utilizar para armazenar seu estado a partição ESP (Partição de Sistema EFI) no disco. Para ativar automaticamente o TPM de software, foi proposto um parâmetro na linha de comando do kernel systemd.tpm2_software_fallback.
- Foi declarado estável e colocado em /usr/bin/ o componente systemd-sysupdate, destinado a detectar automaticamente, baixar e instalar atualizações utilizando o mecanismo atômico de substituição de partições, arquivos ou diretórios (são utilizados dois partições/arquivos/diretórios independentes, onde um contém o recurso atualmente em funcionamento e o outro recebe a próxima atualização, após a qual as partições/arquivos/diretórios são trocados).
- No systemd-resolved, foi implementada a possibilidade de redefinir ou indicar novos registros DNS através da colocação de arquivos em formato JSON nos diretórios systemd/resolve/static.d/. Ao contrário do /etc/hosts, nos novos arquivos é possível não apenas vincular endereços IP a nomes de hosts, mas também definir registros DNS RR de recurso, diferentes de "A" e "AAAA". Além disso, foram adicionadas no systemd-resolved configurações para o tamanho do cache DNS: ‘DNSCacheSize’, ‘MulticastDNSCacheSize’ e ‘LLMNRCacheSize’.
- Adicionada a utilidade ‘storagectl’ para inspecionar dispositivos de armazenamento e gerenciar a conexão de dispositivos de bloco e sistemas de arquivos.
- Como parte da iniciativa para reduzir dependências, no libsystemd foi implementado o carregamento dinâmico das bibliotecas libgnutls, libmicrohttpd, libcurl, libcrypto, libssl, libfdisk e libcryptsetup
por meio da chamada dlopen() em situações onde suas funções são realmente necessárias. - No systemd-tmpfiles foi adicionado o sinalizador "--inline", permitindo definir diretrizes na linha de comando sem criar arquivos de configuração em tmpfiles.d/ e sem enviar configurações através do STDIN. Um novo tipo de diretiva ‘k/K’ foi adicionado para definir capabilities. Um arquivo de configuração tmpfiles.d/root.conf foi adicionado, que estabelece as permissões de acesso 0555 (-r-xr-xr-x) para o diretório raiz (/) para proteger contra a atribuição de permissões incorretas durante a formação dinâmica do sistema de arquivos raiz.
- No utilitário bootctl, foi assegurado o salvamento de um backup do carregador systemd-boot e a definição de uma versão antiga no UEFI como uma opção de inicialização alternativa.
- No systemd-vmspawn, foi adicionada a suporte para a inicialização direta do kernel sem o uso do firmware UEFI. Foi implementada a opção "--firmware-features" para habilitar ou desabilitar seletivamente recursos individuais do firmware. Adicionada a opção "--console=headless" para iniciar uma máquina virtual sem console e tela. Adicionada a opção "--image-disk-type" para escolher o tipo de armazenamento de bloco aplicado na VM (virtio-blk, virtio-scsi, nvme, scsi-cd). A opção "--coco" (Computação Confidencial) foi adicionada para habilitar o modo de criptografia da memória. máquinas virtuais usando a tecnologia AMD SEV-SNP.
- No systemd-hostnamed e /etc/machine-info, foi adicionada a capacidade de anexar tags arbitrárias ao sistema atual, utilizando o parâmetro "Tags". As tags atribuídas podem então ser usadas para aplicar configurações seletivamente com verificação através da expressão ConditionMachineTag.
- Adicionadas as configurações EventLoopRateLimitIntervalSec e EventLoopRateLimitBurst, que limitam a intensidade do ciclo de processamento de eventos no PID1 para liberar recursos da CPU em caso de loops.
- No gerenciador de serviços, foi implementada a configuração MinimumUptimeSec para definir um tempo mínimo de operação do sistema (15 segundos por padrão). Se a finalização ou reinicialização for iniciada antes que esse tempo expire, uma pausa correspondente é adicionada na fase de finalização.
- Para units, foram implementadas novas configurações CPUSetPartition para definir o tipo de partição cpuset no cgroup ("root", "isolated", "member"), RestrictFileSystemAccess para permitir a execução apenas de arquivos executáveis, verificados por assinatura digital por meio de dm-verity, e CPUPressureWatch/CPUPressureThresholdSec/IOPressureWatch/IOPressureThresholdSec para receber notificações sobre alta carga de CPU e entrada/saída.
- A lista de métricas fornecidas pela utilidade systemd-report foi ampliada. Por exemplo, foram adicionadas informações sobre o tamanho da memória física e núcleos de CPU ativos, dados sobre o conteúdo dos campos SMBIOS e /etc/machine-info, informações sobre suporte para o modo de Computação Confidencial e informações sobre o fabricante dos chips TPM2.
- No systemd-oomd foi implementada a capacidade de definir regras para filtrar processos em caso de falta de memória no sistema. As regras podem ser definidas no diretório /etc/systemd/oomd/rules.d/ ou em unidades de serviço através da diretiva OOMRule.
- No systemd-socket-proxy foi adicionado suporte ao protocolo 'PROXY', correspondente à primeira versão do protocolo 'haproxy'.
- No systemd-networkd foi implementado um novo backend sd-dhcp-relay para relay DHCP. As configurações na seção '[DHCPServer]' — BindToInterface, RelayTarget, RelayAgentCircuitId e RelayAgentRemoteId foram declaradas obsoletas e devem ser substituídas pelo parâmetro DHCPRelay na seção '[Network]' e uma série de novas configurações na seção [DHCPRelay] e no arquivo networkd.conf. Foi adicionada a comando 'networkctl dhcp-lease INTERFACE' para salvar um dump com informações sobre o vínculo de endereços IP (DHCP lease).
- Na ferramenta systemd-nspawn foi adicionada a opção '--restrict-address-families', e no arquivo .nspawn a configuração RestrictAddressFamilies para limitar as famílias de endereços de sockets usadas no contêiner. Em lançamentos futuros, apenas as famílias AF_INET, AF_INET6 e AF_UNIX serão permitidas por padrão.
- O suporte ao antigo formato de banco de dados udev (versão 0.x) foi encerrado. A atualização em tempo real de versões do systemd até a versão 247 não é mais suportada.
- Ao compilar com a biblioteca C musl, agora é necessário pelo menos a versão musl 1.2.6.
Além disso, é importante mencionar o lançamento do projeto liberated-systemd 261, que desenvolve um fork do systemd livre de código que pode ser usado para rastrear usuários. A versão proposta inclui a remoção de código que adicionava um campo birthDate no userdb para registrar a data de nascimento do usuário, e na ferramenta homectl foi adicionada a opção '--birth-date' para definir a idade.
Fonte: opennet.ru
