Após três meses de desenvolvimento, o lançamento do gerenciador de sistema systemd 260 está disponível. Mudanças principais: descontinuação do suporte a scripts de serviços no formato System V, o mecanismo ‘mstack’ para compor hierarquias de montagem em múltiplas camadas, a ferramenta systemd-report, suporte à integração do systemd-networkd com o ModemManager, suporte a serviços portáteis personalizados, e o conceito de ‘xaccess’ no systemd-logind e systemd-udevd.
Entre as mudanças na nova versão:
- O suporte a scripts de serviços no formato System V foi descontinuado, e a entrega dos componentes rc-local.service, systemd-sysv-install, systemd-rc-local-generator e systemd-sysv-generator também foi encerrada.
- Implementado o mecanismo ‘mstack’ (Mount Stack), que permite o uso de diretórios com o sufixo ‘.mstack/’ para formar uma hierarquia composta de diretórios, criada por meio de montagens sequenciais e sobreposições de imagens de disco e partes de sistema de arquivos utilizando OverlayFS e ‘mount —bind’. Adicionadas as comandos systemd-mstack, a opção ‘—mstack’ no systemd-nspawn e o parâmetro RootMStack nas unidades, que podem ser usados para montar e desmontar todos os elementos definidos na configuração ‘.mstack’ de uma só vez, por exemplo, para uma recriação rápida da imagem do contêiner ou do ambiente de trabalho do serviço. Cada arquivo ou subdiretório em ‘.mstack/’ define um nível de montagem ou uma camada ‘overlayfs’.
Por exemplo, a seguinte configuração ‘foobar.mstack/’ define um overlayfs com duas camadas em modo somente leitura a partir das imagens de disco base.raw e app.raw (indicadas como links simbólicos), e um diretório ‘rw’ com possibilidade de gravação sobre elas: foobar.mstack/layer@0.raw → ../base.raw foobar.mstack/layer@1.raw → ../app.raw foobar.mstack/rw/
- Implementados os frameworks ‘metrics’ e ‘report’, que podem ser usados pelos componentes do sistema para emitir estatísticas através do Varlink no diretório /run/systemd/report/. Adicionada a ferramenta systemd-report, que gera um relatório compilado, unificando a estatística de todos os componentes e a exibindo no formato JSON. No momento, as métricas são fornecidas apenas pelo gerenciador de serviços e pelo systemd-networkd.
- No systemd-networkd, foi garantida a integração com o ModemManager e adicionada a seção ‘[MobileNetwork]’ com as configurações APN, AllowedAuthenticationMechanisms, User, Password, IPFamily, AllowRoaming, PIN, OperatorId, RouteMetric e UseGateway, permitindo o uso do systemd-networkd para conectar-se a operadoras móveis via modem.
- Foi introduzida a possibilidade de iniciar o systemd-portabled como um serviço de usuário, executado por um usuário não privilegiado. Para selecionar o tipo de serviço, foram adicionados os flags "--user" e "--system" à ferramenta portablectl. Os serviços portáteis representam serviços de sistema formatados como contêineres autossuficientes (fornecidos na forma de uma imagem de sistema, mas tratados como um serviço comum).
- No systemd-logind e systemd-udevd, foi adicionada o suporte à conceito de "xaccess" (Acesso Estendido), permitindo, em uma sessão gráfica, fornecer acesso à GPU para usuários com acesso remoto que não utilizam fisicamente um monitor e dispositivos de entrada no sistema local (semelhante ao acesso uaccess, que abrange usuários que trabalham fisicamente no computador). Para configurar sessões nesse caso, é sugerido através do PAM configurar a variável de ambiente XDG_SESSION_EXTRA_DEVICE_ACCESS.
- Para automatizar a configuração do DeviceTree em imagens UKI (Imagem de Kernel Unificado), foi proposto um conjunto canônico de arquivos com identificadores de hardware em /usr/lib/systemd/boot/hwids/, vinculando os identificadores de dispositivos aos elementos do DeviceTree. Com esse conjunto, a imagem UKI encontra e carrega automaticamente o DTB (Device Tree Blob) necessário durante a inicialização, sem a necessidade de criar imagens específicas para cada dispositivo. Atualmente, arquivos hwid foram gerados para dispositivos ARM64 baseados em chips Snapdragon.
- No /etc/os-release, um novo campo "FANCY_NAME" foi adicionado, distinto de "PRETTY_NAME" pela capacidade de usar glifos Unicode não-ASCII. Quando o campo "FANCY_NAME" está presente, ele será utilizado na saída do systemd, systemd-hostnamed e hostnamectl em vez de "PRETTY_NAME".
- Serviços que fornecem interfaces públicas Varlink foram reunidos em um único diretório /run/varlink/registry/ através de links simbólicos. O comando ‘varlinkctl list-registry’ foi implementado para visualizar a lista desses serviços.
- Nos units, foi implementada a possibilidade de especificar no parâmetro PrivateUsers o valor "managed" para a atribuição automática de intervalos de identificadores de usuários e grupos (UID/GID) através do systemd-nsresourced.
- Nos units, uma configuração RefreshOnReload foi adicionada para atualizar extensões e credenciais durante a reinicialização do unit.
- Nos units, uma configuração BindNetworkInterface foi adicionada para vincular automaticamente todos os sockets criados no unit a uma interface de rede especificada.
- Foram adicionadas as configurações ConditionPathIsSocket e AssertPathIsSocket aos units para alterar o comportamento ou encerrar o unit em caso de os caminhos especificados não serem soquetes.
- Foi adicionada o comando ‘enqueue-marked’ ao systemctl, que invoca o método D-Bus EnqueueMarkedJobs(). O parâmetro ‘—marked’, anteriormente utilizado para esses fins, foi considerado obsoleto.
- Foi adicionada a configuração MemoryTHP aos serviços para gerenciar o uso de grandes páginas de memória (THP — Transparent Huge Pages).
- Foi adicionada ao arquivo .delegate do systemd-resolved o suporte ao parâmetro FirewallMark para definir no stack de rede um marcador de firewall para o tráfego DNS gerado.
- Foi adicionada ao systemd-sysupdate o comando ‘acquire’ para dividir as etapas de carregamento e instalação ou atualização. Foi implementado o suporte para marcar partições como parcialmente carregadas.
- Foi adicionada ao systemd-vmspawn a opção ‘—image-format’ para selecionar o formato (qcow2 ou raw) da imagem de disco.
- Foi implementado no systemd-inhibit o suporte ao formato ‘JSON’ para a opção ‘—list’, permitindo o uso das flags ‘—what’, ‘—who’, ‘—why’ e ‘—mode’ para filtrar a saída.
- Foi adicionada ao systemd-repart o suporte básico para controle de integridade de partições criptografadas, usando dm-integrity.
- Foi adicionada ao utilitário systemd-keyutil o comando ‘extract-certificate’ para extrair o conteúdo de certificados X.509.
- Foi implementado no systemd-sysext e varlinkctl o suporte para autenticação interativa utilizando polkit.
- Foi adicionada uma política polkit que permite chamar systemd-ask-password por um usuário não privilegiado.
- Foi adicionada ao systemd-importd a capacidade de carregar imagens OCI com o comando ‘importctl pull-oci’, que são salvas na forma de imagens para montagem através do ‘mstack’.
- Foi adicionada o suporte para as cores SYSTEMD_COLORS=auto-16, SYSTEMD_COLORS=auto-256, e SYSTEMD_COLORS=auto-24bit.
- Foram disponibilizados executáveis funcionais autônomos do systemd-sysusers e systemd-tmpfiles (anteriormente, versões reduzidas eram compiladas).
- Foi adicionado ao systemd-oomd um ‘prekill hook’ que permite conectar manipuladores que são acionados antes de forçar o encerramento de um processo devido à falta de memória no sistema.
- Foi reativada, embora considerada obsoleta, a possibilidade de uso de usuários e grupos não do sistema nas regras do udev (OWNER= / GROUP=) e nas configurações do systemd-networkd (User= / Group=).
- Foi integrado ao systemd-repart a funcionalidade da ferramenta mkfs.xfs, introduzida no xfsprogs 6.17.0, para implantar o conteúdo inicial do sistema de arquivos a partir de um diretório específico.
- As exigências para as versões mínimas foram atualizadas: kernel Linux 5.4 → 5.10 (recomendado 5.14, e para funcionalidade completa — 6.6), libidn → libidn2, Python 3.7.0 → 3.9.0, glibc 2.31 → 2.34, OpenSSL 1.1.0 → 3.0.0, cryptsetup 2.0.1/2.3.0 → 2.4.0, elfutils 158 → 177, libblkid 2.24 → 2.37, libseccomp 2.3.1 → 2.4.0.
- As regras para garantir portabilidade e estabilidade foram reformuladas e simplificadas, reforçando o compromisso de evitar regressões visíveis para os usuários nas interfaces públicas.
Fonte: opennet.ru
