Após cerca de três anos de desenvolvimento, foi publicado o lançamento do sistema de inicialização Finit 4.0 (Fast init), desenvolvido como uma alternativa simples ao SysV init e systemd. O projeto é baseado em desenvolvimentos criados por engenharia reversa do sistema de inicialização fastinit utilizado no firmware Linux de netbooks EeePC e que se destaca por seu processo de boot muito rápido. O sistema destina-se principalmente à inicialização de sistemas compactos e embarcados, mas também pode ser usado em ambientes convencionais de desktop e servidor. Exemplos de scripts de implementação foram preparados para Void Linux, Alpine Linux e Debian GNU/Linux. O código do projeto é escrito em C e distribuído sob a licença do MIT.
Finit suporta níveis de execução no estilo init SysV, monitorando a integridade dos processos em segundo plano (reiniciando automaticamente o serviço em caso de falha), executando manipuladores únicos, iniciando serviços levando em consideração dependências e condições arbitrárias, anexando manipuladores adicionais para execução antes ou depois execução do serviço. Por exemplo, você pode configurar um serviço para ser iniciado somente depois que o acesso à rede estiver disponível ou após a inicialização de algum outro serviço, como o syslogd. Cgroups v2 é usado para definir restrições.
Para ampliar a funcionalidade e se adaptar às suas necessidades, podem ser utilizados plugins, para os quais é fornecido um sistema de ganchos que permite anexar um manipulador a vários estágios de carregamento e execução de serviços, além de fornecer vinculação a eventos externos. Por exemplo, plugins foram preparados para suportar D-Bus, ALSA, netlink, resolvconf, hot plugging de dispositivos, verificação de disponibilidade e carregamento de módulos do kernel, processamento de arquivos PID e configuração do ambiente para o servidor X.
O uso de scripts padrão para iniciar serviços criados para SysV init é suportado (/etc/rc.d e /etc/init.d não são usados, mas o suporte para /etc/inittab pode ser implementado através do plugin), bem como Scripts rc.local, arquivos com variáveis de ambiente e configurações de rede /etc/network/interfaces, como no Debian e BusyBox. As configurações podem ser definidas em um arquivo de configuração /etc/finit.conf ou distribuídas em vários arquivos no diretório /etc/finit.d.
O gerenciamento é realizado através das ferramentas padrão initctl e run-parts, que permitem ativar e desativar serviços em relação aos níveis de execução, bem como lançar seletivamente alguns serviços. Finit também inclui uma implementação getty integrada (gerenciamento de terminal e login de usuário), um watchdog para monitoramento de integridade e um modo de recuperação de falhas com sulogin integrado para executar um shell de comando isolado.
Entre as alterações adicionadas na versão Finit 4.0 (a versão 3.2 foi ignorada devido a alterações que quebraram a compatibilidade com versões anteriores):
- O utilitário de reinicialização separado foi substituído por um link simbólico para o initctl, semelhante aos utilitários halt, shutdown, poweroff e suspend.
- A indicação do andamento das operações foi implementada.
- A operação dos comandos “inictl cond set|clear COND” foi alterada para vincular ações a vários eventos. A sintaxe usada para identificar serviços é em vez de vincular a caminhos .
- A implementação integrada do servidor inetd foi removida, onde o xinetd pode ser instalado se necessário.
- Adicionado suporte para cgroups v2 para execução de serviços em cgroups separados.
- Adicionado modo de recuperação de falhas com seu próprio suslogin.
- Adicionado suporte para scripts de início/parada do SysV init.
- Adicionados manipuladores pre:script e post:script que permitem especificar suas ações executadas antes ou quando o serviço for iniciado.
- Adicionado suporte para env:file com variáveis de ambiente.
- Adicionada a capacidade de rastrear arquivos PID arbitrários.
- Adicionada a capacidade de iniciar tarefas e serviços usando caminhos relativos.
- Adicionada opção "-b" ao initctl para executar ações em modo não interativo (modo em lote).
- O watchdog integrado foi substituído por uma versão separada do watchdogd.
- Adicionado um plugin para carregar automaticamente módulos do kernel para dispositivos conectados durante a operação.
- Adicionado plugin para lidar com /etc/modules-load.d/.
- Adicionado suporte para reiniciar serviços automaticamente após alterar as configurações, permitindo que você faça isso sem executar manualmente o comando “initctl reload”. Desativado por padrão e requer reconstrução com "./configure --enable-auto-reload".
- Adicionada a capacidade de registrar operações que afetam a segurança, como alteração do nível de execução, inicialização e interrupção de serviços e falhas de serviço.
- Suporte aprimorado para /etc/network/interfaces.
Fonte: opennet.ru