Como aprendemos, o processo init é o primeiro processo a ser executado durante o processo de inicialização (boot) do Linux. Ele é o pai de todos os outros processos e é responsável por iniciar os serviços essenciais que tornam seu sistema utilizável. Mas como ele realiza isso?
Existem três grandes implementações do sistema init do Linux, cada uma com uma abordagem diferente para gerenciar serviços.
System V Init
O System V init, frequentemente chamado de sysvinit, é o sistema init tradicional do Linux. Ele segue um procedimento de inicialização sequencial definido por scripts. O estado do sistema é gerenciado através de runlevels (níveis de execução), onde cada runlevel (ex: modo de usuário único, modo multiusuário com rede) tem um conjunto específico de serviços para iniciar ou parar. Este foi o padrão por muito tempo no processo de boot clássico do Linux.
Upstart
Encontrado em versões mais antigas do Ubuntu, o Upstart é um sistema init baseado em eventos. Ele se afastou do modelo estritamente sequencial do System V. Em vez disso, o Upstart inicia e para serviços (chamados jobs) em resposta a eventos do sistema, como um dispositivo de rede se tornando disponível. Isso permite tempos de inicialização mais flexíveis e rápidos.
systemd
O padrão moderno para o sistema init do Linux é o systemd. É um sistema orientado a objetivos que gerencia dependências de forma agressiva. Em vez de apenas iniciar uma lista de serviços, você define um estado alvo (como uma interface gráfica), e o systemd trabalha para satisfazer todas as dependências desse alvo, frequentemente iniciando serviços em paralelo para acelerar significativamente o processo de boot.
Temos um curso inteiro sobre Sistemas Init onde mergulharemos em cada um desses sistemas com mais detalhes.