Após dois meses de desenvolvimento, foi lançado o sistema de gerenciamento systemd 242. Entre as novidades, destacam-se o suporte a túneis L2TP, a possibilidade de controlar o comportamento do systemd-logind durante a reinicialização por meio de variáveis de ambiente, o suporte a partições de inicialização estendidas XBOOTLDR para montagem em /boot, a possibilidade de inicialização com a partição raiz em overlayfs, além de um grande número de novas configurações para diferentes tipos de unidades.
Principais mudanças:
- O systemd-networkd agora oferece suporte a túneis L2TP;
- No sd-boot e bootctl, foi implementado o suporte a partições XBOOTLDR (Extended Boot Loader), destinadas à montagem em /boot, além das partições ESP, montadas em /efi ou /boot/efi. Núcleos, configurações, imagens initrd e EFI agora podem ser carregados tanto de partições ESP quanto de partições XBOOTLDR. Essa mudança permite utilizar o carregador sd-boot em cenários mais conservadores, onde o próprio carregador é colocado no ESP, e os núcleos carregados e seus metadados estão em uma partição separada;
- Adicionada a opção de inicialização passando para o núcleo a opção "systemd.volatile=overlay", que permite colocar a partição raiz em overlayfs e organizar o funcionamento sobre uma imagem de raiz somente leitura, gravando as alterações em um diretório separado no tmpfs (as alterações nessa configuração são perdidas após a reinicialização). De forma análoga, no systemd-nspawn foi adicionada a opção "—volatile=overlay" para usar funcionalidades semelhantes em contêineres;
- No systemd-nspawn, foi adicionada a opção "—oci-bundle", permitindo o uso de conjuntos de runtime para garantir a inicialização isolada de contêineres que atendem aos requisitos da especificação Open Container Initiative (OCI). Para uso na linha de comando e em unidades nspawn, foi proposta a compatibilidade com várias opções descritas na especificação OCI, por exemplo, para excluir partes do sistema de arquivos, podem ser utilizadas as configurações "—inaccessible" e "Inaccessible", e para configurar o fluxo padrão de saída, foram adicionadas opções "—console" e "—pipe";
- Adicionada a capacidade de controlar o comportamento do systemd-logind por meio de variáveis de ambiente: $SYSTEMD_REBOOT_TO_FIRMWARE_SETUP,
$SYSTEMD_REBOOT_TO_BOOT_LOADER_MENU e
$SYSTEMD_REBOOT_TO_BOOT_LOADER_ENTRY. Com essas variáveis, é possível conectar seus próprios manipuladores de processo de reinicialização (/run/systemd/reboot-to-firmware-setup, /run/systemd/reboot-to-boot-loader-menu e
/run/systemd/reboot-to-boot-loader-entry) или вообще отключить их (при выставлении значения в false); - Na comando "systemctl reboot", foram adicionadas as opções "—boot-load-menu= " e
«—boot-loader-entry=», permitindo escolher um item específico no menu de inicialização ou modo de inicialização após a reinicialização; - Adicionada uma nova opção de isolamento de sandbox «RestrictSUIDSGID=», que utiliza seccomp para proibir a criação de arquivos com sinalizadores SUID/SGID;
- As restrições «NoNewPrivileges» e «RestrictSUIDSGID» agora são aplicadas por padrão em serviços com o modo de geração dinâmica de identificador de usuário («DynamicUser») habilitado;
- A configuração MACAddressPolicy=persistent, aplicada por padrão em arquivos .link, foi alterada para abranger um maior número de dispositivos. As interfaces de pontes de rede, túneis (tun, tap) e links agregados (bond) não se identificam exceto pelo nome da interface de rede, portanto, esse nome agora é usado como base para vincular MAC e endereços IPv4. Além disso, foi adicionada a configuração «MACAddressPolicy=random», que pode ser usada para vincular MAC e endereços IPv4 aos dispositivos de forma aleatória;
- Os arquivos de unidade «.device» gerados pelo systemd-fstab-generator agora não incluem os unidades correspondentes «.mount» como dependências na seção «Wants=». A simples conexão de um dispositivo não leva mais à execução automática da unidade para montagem, embora tais unidades ainda possam ser iniciadas por outros motivos, como parte do local-fs.target ou como dependências de outras unidades dependentes do local-fs.target;
- As comandos «networkctl list/status/lldp» agora suportam máscaras («*», etc.) para filtrar grupos específicos de interfaces de rede com base em seus nomes;
- A variável de ambiente $PIDFILE agora é definida usando o caminho absoluto configurado nos serviços via parâmetro «PIDFile=»;
- Foram adicionados servidores DNS públicos à lista de servidores DNS de backup utilizados quando não é definido explicitamente um servidor DNS principal; servidores Cloudflare (1.1.1.1). Para substituir a lista de servidores DNS de backup, pode-se usar a opção «-Ddns-servers=»;
- Ao detectar a presença de um Controlador de Dispositivos USB (USB Device Controller), o novo manipulador usb-gadget.target é iniciado automaticamente (quando o sistema está operando em um dispositivo periférico USB);
- Para os arquivos de unidade, foi implementada a configuração «CPUQuotaPeriodSec=», que define o período de tempo em relação ao qual é medida a cota de tempo de CPU, definida pela configuração «CPUQuota=»;
- Para arquivos de unidade, foi implementada a configuração "ProtectHostname=", que proíbe os serviços de alterar informações sobre o nome do host, mesmo quando têm as permissões correspondentes;
- Para arquivos de unidade, foi implementada a configuração "NetworkNamespacePath=", que permite vincular o espaço de nomes a serviços ou unidades de socket por meio da especificação do caminho para o arquivo de espaço de nomes no pseudo-FS /proc;
- Adicionada a possibilidade de desativar a substituição de variáveis de ambiente para processos iniciados pela configuração "ExecStart=", através da adição do símbolo ":" antes do comando de execução;
- Para os temporizadores (unidades .timer), foram propostos novos sinais "OnClockChange=" e
"OnTimezoneChange=", com os quais é possível controlar a chamada da unidade ao mudar a hora do sistema ou o fuso horário; - Novas configurações "ConditionMemory=" e "ConditionCPUs=", que definem as condições para a chamada da unidade com base na quantidade de memória e no número de núcleos de CPU (por exemplo, um serviço intensivo em recursos pode ser iniciado apenas se houver a quantidade necessária de RAM);
- Adicionada uma nova unidade time-set.target, que aceita a hora do sistema localmente definida, sem usar a sincronização com servidores externos de horário preciso através da unidade time-sync.target. A nova unidade pode ser utilizada por serviços que precisam apenas da precisão de relógios locais não sincronizados;
- Na "systemctl start" e comandos similares, foi adicionada a opção "--show-transaction", ao ser especificada, exibe um resumo de todos os trabalhos adicionados à fila devido à operação solicitada;
- No systemd-networkd foi implementada a definição de um novo estado 'enslaved', usado em vez de 'degraded' ou 'carrier' para interfaces de rede que fazem parte de links agregados ou pontes de rede. Para interfaces primárias, em caso de problemas com um dos links compostos, foi adicionado o estado 'degraded-carrier';
- Nas unidades .network, foi adicionada a opção "IgnoreCarrierLoss=" para manter as configurações de rede em caso de perda de conexão;
- Através da configuração "RequiredForOnline=" nas unidades .network agora é possível definir o estado mínimo aceitável do link necessário para mudar a interface de rede para "online" e acionar o manipulador systemd-networkd-wait-online;
- No systemd-networkd-wait-online, foi adicionada a opção "--any" para aguardar a prontidão de qualquer uma das interfaces de rede especificadas, em vez de todas, bem como a opção "--operational-state=" para determinar o estado do link que indica prontidão;
- Na .network, foram adicionadas as configurações "UseAutonomousPrefix=" e "UseOnLinkPrefix=", que podem ser usadas para ignorar prefixos ao receber
anúncios do roteador IPv6 (RA, Router Advertisement); - Na .network, foram adicionadas as configurações "MulticastFlood=", "NeighborSuppression=" e "Learning=" para alterar os parâmetros de operação da ponte de rede, assim como a configuração "TripleSampling=" para alterar o modo TRIPLE-SAMPLING das interfaces virtuais CAN;
- Na .netdev, foram adicionadas as configurações "PrivateKeyFile=" e "PresharedKeyFile=", que permitem especificar as chaves privada e compartilhada (PSK) para as interfaces WireGuard VPN;
- No /etc/crypttab, foram adicionadas as opções same-cpu-crypt e submit-from-crypt-cpus, que controlam o comportamento do escalonador durante a migração entre núcleos de CPU de trabalhos relacionados à criptografia;
- No systemd-tmpfiles, foi assegurada a manipulação do arquivo de bloqueio antes da execução de operações em diretórios com arquivos temporários, permitindo que, durante a execução de determinadas ações, o trabalho de limpeza de arquivos antigos seja suspenso (por exemplo, durante a extração de um arquivo tar em /tmp, arquivos muito antigos podem ser revelados e não podem ser removidos até que as operações com eles sejam concluídas);
- No comando "systemd-analyze cat-config", foi disponibilizada a capacidade de analisar configurações distribuídas em vários arquivos, como pré-definições personalizadas e de sistema, o conteúdo de tmpfiles.d e sysusers.d, regras udev, etc.
- No "journalctl", foi adicionada a opção "—cursor-file=" para especificar o arquivo para carregar e salvar o ponteiro de posição;
- No systemd-detect-virt, foi adicionada a detecção do hipervisor ACRN e do subsistema WSL (Windows Subsystem for Linux) para posterior ramificação usando o operador condicional "ConditionVirtualization";
- Durante a instalação do systemd (ao executar "ninja install"), a criação de links simbólicos para os arquivos systemd-networkd.service, systemd-networkd.socket foi interrompida no diretório /etc,
systemd-resolved.service, remote-cryptsetup.target, remote-fs.target,
systemd-networkd-wait-online.service e systemd-timesyncd.service. Para criar esses arquivos, agora é necessário executar o comando "systemctl preset-all".
Fonte: opennet.ru
