Após cinco meses de desenvolvimento, o lançamento do gerenciador de sistema systemd 251 foi apresentado.
Principais mudanças:
- Os requisitos do sistema foram aumentados. A versão mínima suportada do núcleo Linux foi aumentada de 3.13 para 4.15. É necessário ter um temporizador CLOCK_BOOTTIME. Para a compilação, é necessário um compilador que suporte o padrão C11 e extensões GNU (continuando a usar o padrão C89 para arquivos de cabeçalho).
- Adicionado uma utilidade experimental systemd-sysupdate para a detecção automática, download e instalação de atualizações usando um mecanismo atômico de substituição de partições, arquivos ou diretórios (são usadas duas partições/arquivos/diretórios independentes, uma contendo o recurso em funcionamento atual e a outra sendo usada para a instalação da atualização, após a qual as partições/arquivos/diretórios são trocados).
- Uma nova biblioteca compartilhada interna libsystemd-core-.so foi apresentada, instalada no diretório /usr/lib/systemd/system e correspondente à biblioteca existente libsystemd-shared-.so. O uso da biblioteca compartilhada libsystemd-core-.so permite reduzir o tamanho total da instalação por meio do reaproveitamento de código binário. O número da versão pode ser especificado através do parâmetro ‘shared-lib-tag’ no sistema de construção meson e permite que distribuições forneçam várias versões dessas bibliotecas simultaneamente.
- Implementada a transmissão para os manipuladores OnFailure/OnSuccess das variáveis de ambiente $MONITOR_SERVICE_RESULT, $MONITOR_EXIT_CODE, $MONITOR_EXIT_STATUS, $MONITOR_INVOCATION_ID e $MONITOR_UNIT com informações sobre a unidade monitorada.
- Para unidades, foi implementada a configuração ExtensionDirectories, que pode ser utilizada para organizar o carregamento de componentes de extensão do sistema (System Extension) a partir de diretórios comuns, em vez de imagens de disco. O conteúdo do diretório de extensão do sistema é sobreposto por meio do OverlayFS e aplicado para expandir a hierarquia de diretórios /usr/ e /opt/, adicionando arquivos adicionais durante a execução, mesmo que os diretórios especificados estejam montados em modo somente leitura. O comando ‘portablectl attach —extension=’ também adicionou suporte para especificação de diretório.
- Para unidades forçosamente encerradas pelo manipulador systemd-oomd devido à falta de memória no sistema, garantida a passagem do sinal ‘oom-kill’ e refletido no atributo ‘user.oomd_ooms’ o número de encerramentos forçados.
- Novos especificadores de caminho %y/%Y foram adicionados para unidades, refletindo o caminho normalizado para a unidade (com a resolução de links simbólicos). Especificadores %q para a substituição do valor PRETTY_HOSTNAME e %d para a substituição de CREDENTIALS_DIRECTORY também foram adicionados.
- Em serviços não privilegiados, executados por um usuário comum com a flag "--user", é permitido modificar as configurações RootDirectory, MountAPIVFS, ExtensionDirectories, *Capabilities*, ProtectHome, *Directory, TemporaryFileSystem, PrivateTmp, PrivateDevices, PrivateNetwork, NetworkNamespacePath, PrivateIPC, IPCNamespacePath, PrivateUsers, ProtectClock, ProtectKernelTunables, ProtectKernelModules, ProtectKernelLogs e MountFlags. Essa possibilidade está disponível apenas se os namespaces de usuário estiverem ativados no sistema.
- Na configuração LoadCredential, é permitido especificar o nome de um diretório como argumento, neste caso, será feita uma tentativa de carregar as credenciais de todos os arquivos no diretório especificado.
- No systemctl, o parâmetro "--timestamp" agora permite especificar a flag "unix" para exibir o tempo no formato epoch (número de segundos desde 1 de janeiro de 1970).
- No "systemctl status", foi implementada a flag "old-kernel", exibida se o núcleo carregado na sessão tiver um número de versão mais antigo do que o núcleo base disponível no sistema. A flag "unmerged-usr" também foi adicionada para indicar que o conteúdo dos diretórios /bin/ e /sbin/ não é formado por meio de links simbólicos para /usr.
- Para geradores executados pelo processo PID 1, novas variáveis de ambiente foram fornecidas: $SYSTEMD_SCOPE (execução a partir de um serviço de sistema ou usuário), $SYSTEMD_IN_INITRD (execução a partir do initrd ou ambiente de host), $SYSTEMD_FIRST_BOOT (indicador de primeiro boot), $SYSTEMD_VIRTUALIZATION (indica se está em virtualização ou execução em contêiner) e $SYSTEMD_ARCHITECTURE (arquitetura para a qual o núcleo foi compilado).
- No manipulador PID 1, foi implementada a possibilidade de carregar parâmetros de credenciais de sistema a partir da interface fw_cfg do QEMU ou especificando na linha de comando do núcleo o parâmetro systemd.set_credential. Na diretiva LoadCredential, foi garantida a busca automática de credenciais nos diretórios /etc/credstore/, /run/credstore/ e /usr/lib/credstore/, se um caminho relativo for fornecido como argumento. Um comportamento semelhante foi aplicado à diretiva LoadCredentialEncrypted, que também verifica os diretórios /etc/credstore.encrypted/, /run/credstore.encrypted/ e /usr/lib/credstore.encrypted/.
- Foi estabilizada a possibilidade de exportação em formato JSON no systemd-journald. Nos comandos «journalctl —list-boots» e «bootctl list» foi adicionada a suporte para saída em formato JSON (flag «—json»).
- Novos arquivos de banco de dados hwdb foram adicionados ao udev, contendo informações sobre dispositivos portáteis (PDAs, calculadoras, etc.) e dispositivos utilizados na criação de áudio e vídeo (mesas de DJ, controladores).
- Novas opções «—prioritized-subsystem» foram adicionadas ao udevadm para definir a prioridade do processamento de sistemas (usado no systemd-udev-trigger.service para processar primeiro dispositivos de bloco e TPM), «—type=all», «—initialized-match» e «—initialized-nomatch» para selecionar dispositivos inicializados ou não inicializados, «udevadm info —tree» para mostrar a árvore de objetos na hierarquia /sys/. O udevadm também recebeu novos comandos «wait» e «lock» para aguardar o registro de um dispositivo no banco de dados e bloquear um dispositivo de bloco durante a formatação ou gravação da tabela de partições.
- Um novo conjunto de links simbólicos para dispositivos /dev/disk/by-diskseq/<nr> foi adicionado para identificar dispositivos de bloco por número sequencial («diskseq»).
- Foi adicionada ao arquivo .link na seção [Match] a suporte para o parâmetro «Firmware» para correspondência de dispositivos com uma string de descrição de firmware.
- No systemd-networkd, para rotas unicast configuradas através da seção [Route], o valor padrão do escopo foi alterado para «link» para corresponder ao comportamento do comando «ip route». Na seção [Bridge] foi adicionado o parâmetro Isolated=true|false para configurar o atributo homônimo dos bridges de rede no kernel. Na seção [Tunnel], foi adicionado o parâmetro External para definir o túnel como tipo external (modo de coleta de metadados). Na seção [DHCPServer], foram adicionados os parâmetros BootServerName, BootServerAddress e BootFilename para configurar o endereço do servidor, o nome do servidor e o nome do arquivo de inicialização enviados. servidor DHCP durante a inicialização no modo PXE. Na seção [Network], o parâmetro L2TP foi removido, em seu lugar, pode-se usar a nova configuração Local nos arquivos .netdev vinculados à interface L2TP.
- Foi adicionado um novo unit «systemd-networkd-wait-online@<interface>.service», que pode ser usado para aguardar a ativação de uma interface de rede específica.
- Foi implementada a possibilidade de usar arquivos .netdev para criar dispositivos virtuais WLAN, para os quais foi proposta a seção [WLAN].
- Nos arquivos .link/.network na seção [Match], foi implementado o parâmetro Kind para correspondência de tipo de dispositivo ("bond", "bridge", "gre", "tun", "veth").
- O lançamento do systemd-resolved foi garantido em uma etapa anterior do processo de inicialização, incluindo a implementação do lançamento a partir do initrd quando o systemd-resolved está presente na imagem initrd.
- No systemd-cryptenroll, uma nova opção —fido2-credential-algorithm foi adicionada para escolher o algoritmo de criptografia das credenciais, e a opção —tpm2-with-pin para gerenciar a entrada do PIN na desbloqueio da partição usando TPM. Uma opção semelhante tpm2-pin foi adicionada ao /etc/crypttab. Durante o desbloqueio de dispositivos através do TPM, a criptografia dos parâmetros foi garantida para proteção contra a interceptação das chaves de criptografia.
- No systemd-timesyncd, uma API D-Bus foi adicionada para obter informações dinamicamente do servidor NTP via IPC.
- Para determinar a necessidade de saída colorida em todos os comandos, foi implementada uma verificação da variável de ambiente COLORTERM, além das variáveis previamente verificadas NO_COLOR, SYSTEMD_COLORS e TERM.
- No sistema de construção Meson, uma opção install_tag foi implementada para construção e instalação seletiva de componentes necessários: pam, nss, devel (pkg-config), systemd-boot, libsystemd, libudev. Uma opção de construção default-compression foi adicionada para escolher o algoritmo de compressão para systemd-journald e systemd-coredump.
- No sd-boot, uma configuração experimental "reboot-for-bitlocker" foi adicionada em loader.conf para inicializar o Microsoft Windows com BitLocker TPM.
Fonte: opennet.ru
