Primeiro lançamento do sistema de inicialização minimalista Nitro

Foi lançado o primeiro release público do projeto Nitro, que desenvolve um sistema de inicialização minimalista com funções de controle sobre a execução de processos. O projeto é desenvolvido por Leah Neukirchen, uma das mantenedoras dos pacotes na distribuição Void Linux. O código é escrito em C e distribuído sob a licença 0BSD.

O Nitro pode ser usado tanto como processo init (pid 1) quanto na forma de um processo não privilegiado, que controla a execução contínua de aplicativos no espaço do usuário e reinicia tarefas em caso de falhas. Ele é compatível com Linux e FreeBSD, podendo ser utilizado em ambientes baseados na biblioteca padrão C Musl. As áreas de aplicação incluem sistemas embarcados, imagens de ramdisks (initramfs), containers (Docker/Podman/LXC/Kubernetes), bem como estações de trabalho e sistemas de servidores. Para gerenciar a operação dos serviços e interagir com o processo init, é fornecida uma ferramenta de linha de comando chamada nitroctl.

Em vez de scripts de inicialização compostos, o Nitro utiliza um modelo baseado na externalização de cada função em um script separado. Para cada serviço na hierarquia /etc/nitro, é criado um subdiretório onde podem ser colocados os seguintes scripts: setup — contém comandos executados antes do início do serviço; run — define o cenário de inicialização do serviço; finish — inclui comandos executados após a conclusão do serviço. Para organizar a manutenção de logs, é utilizada uma ligação simbólica chamada log, que aponta para outro serviço, para onde a saída será redirecionada. Para desativar a inicialização automática do serviço, basta criar um arquivo com o nome “down” em seu diretório, e para ignorar o serviço, deve-se adicionar o símbolo “@” ao nome do diretório.

O autor do projeto destaca as seguintes vantagens do Nitro em comparação com outros sistemas de inicialização:

  • Todo o estado é mantido na RAM, o que facilita o trabalho em ambientes com partições de disco em modo somente leitura.
  • Arquitetura baseada em processamento de eventos, sem utilizar polling.
  • Ausência de operações de alocação de memória durante a execução (todos os buffers são alocados na inicialização).
  • Uso limitado de descritores de arquivo durante a execução.
  • Fornecido na forma de um único arquivo executável autossuficiente e uma ferramenta para gerenciar o sistema.
  • A ausência de estágios de compilação da configuração - o funcionamento do serviço é determinado por scripts simples no diretório associado ao serviço.
  • A presença da função de reinício de serviços após falhas.
  • A existência de um mecanismo de registro, que pode ser ativado tanto por padrão quanto seletivamente para serviços específicos.
  • A capacidade de construir uma cadeia de processamento de logs que abrange vários serviços.
  • A operação não depende da precisão do ajuste dos relógios do sistema.
  • Suporte para inicialização no FreeBSD através de /etc/ttys.
  • Capacidade de compilação em forma de um executável estático em miniatura ao utilizar musl libc.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster