O Init (initialization) é o primeiro processo executado no espaço do usuário após o carregamento do kernel do Linux. Ele tem a responsabilidade de inicializar o sistema, gerenciar serviços e definir o estado operacional do sistema por meio dos chamados níveis de execução (runlevels).
O que é o Init e qual sua função?
O Init é um processo de inicialização fundamental no Linux. Ele é iniciado automaticamente pelo kernel e permanece em execução durante toda a sessão do sistema operacional, sendo responsável por:
- Gerenciar processos de inicialização – Inicia serviços essenciais, como redes, serviços de login e servidores de aplicação.
- Controlar o nível de execução do sistema – Define o estado operacional do sistema, como modo monousuário, multiusuário ou desligamento.
- Monitorar processos filhos – Caso um processo perca seu pai, o Init assume seu controle para evitar processos órfãos.
O Init tradicionalmente segue o modelo SysV Init, que utiliza scripts localizados em /etc/init.d/ para carregar serviços com base em níveis de execução. No entanto, alternativas modernas, como systemd, OpenRC e runit, substituíram esse modelo em muitas distribuições.
Os níveis de execução (runlevels) do Init
No modelo tradicional do SysV Init, o estado do sistema é determinado por runlevels (níveis de execução). Cada runlevel representa um conjunto específico de serviços que devem estar ativos.
| Runlevel | Descrição | Uso comum |
|---|---|---|
| 0 | Desligamento do sistema | init 0 desliga o sistema com segurança |
| 1 | Modo monousuário | init 1 entra no modo de manutenção, útil para reparos |
| 2 | Modo multiusuário sem rede | Normalmente usado em algumas distribuições específicas |
| 3 | Modo multiusuário com rede | Sistema operacional pronto para servidores sem interface gráfica |
| 4 | Reservado para personalizações | Pode ser usado para configurações customizadas |
| 5 | Modo gráfico | Inicia o ambiente gráfico, como X11 ou Wayland |
| 6 | Reinicialização do sistema | init 6 reinicia o computador |
No systemd, esses runlevels foram substituídos por targets, mas os conceitos ainda são equivalentes.
Como usar o Init corretamente?
O comando init permite alterar o nível de execução do sistema. Vamos ver como utilizá-lo corretamente em diferentes cenários.
Quando usar init 0?
O comando init 0 é utilizado para desligar o sistema com segurança. Ele finaliza todos os processos em execução, desmonta sistemas de arquivos e, por fim, desliga o computador.
Exemplo de uso:
init 0
ou
shutdown -h now
Usar init 0 sem salvar arquivos abertos pode levar à perda de dados.
Quando usar init 1?
O runlevel 1 (modo monousuário) é útil para manutenção do sistema. Neste modo, apenas um usuário pode acessar o sistema, sem serviços de rede ativos.
Este modo é útil para:
- Recuperação de senha root.
- Diagnóstico e reparo do sistema de arquivos.
- Resolução de falhas de inicialização.
Para ativá-lo, execute:
init 1
Apenas usuários com acesso físico ao computador devem utilizar init 1, pois ele desativa a autenticação normal.
Quando usar init 3?
O runlevel 3 ativa o modo multiusuário com rede, mas sem interface gráfica. Ele é ideal para servidores e sistemas onde a interface gráfica não é necessária.
Para entrar neste modo:
init 3
Este nível é utilizado para:
- Servidores Linux sem ambiente gráfico.
- Execução de aplicações de rede via terminal.
- Correção de falhas em interfaces gráficas.
Quando usar init 5?
O runlevel 5 é semelhante ao 3, mas com interface gráfica ativada.
Para alternar para o modo gráfico:
init 5
Este nível é utilizado em:
- Sistemas desktop.
- Ambientes gráficos baseados em X11, Wayland ou servidores VNC.
Quando usar init 6?
O comando init 6 é usado para reiniciar o sistema. Ele encerra processos, desmonta sistemas de arquivos e reinicia o sistema operacional de forma segura.
Exemplo de uso:
init 6
ou
reboot
Diferentes versões do Init
Ao longo do tempo, o SysV Init foi sendo substituído por alternativas mais eficientes.
- SysV Init – Modelo tradicional baseado em scripts.
- systemd – Mais rápido, usado na maioria das distribuições modernas.
- OpenRC – Alternativa leve, popular em distribuições como Gentoo e Alpine.
- runit – Minimalista e rápido, comum em distribuições como Void Linux.
Hoje, systemd é a opção mais usada, e ao invés de init 0, init 6, etc., utilizamos comandos equivalentes no systemctl:
systemctl poweroff # Equivalente a init 0
systemctl reboot # Equivalente a init 6
systemctl rescue # Equivalente a init 1
O Init é um componente essencial do Linux, responsável por gerenciar a inicialização do sistema e os processos em execução. No modelo tradicional, os runlevels determinam o estado operacional do sistema, sendo que comandos como init 0 (desligamento), init 3 (modo servidor) e init 6 (reinicialização) são amplamente utilizados para administrar um sistema Linux.
Embora o SysV Init tenha sido substituído pelo systemd em muitas distribuições modernas, o conhecimento sobre init ainda é valioso para qualquer administrador de sistemas.
Se sua distribuição usa systemd, prefira systemctl para controlar serviços e estados do sistema. Mas se estiver lidando com um sistema mais antigo ou minimalista, os comandos init continuam sendo essenciais.
Rogerio Lima (Rogerio Pousada) é especialista em Infraestrutura de TI, Administração de Servidores Linux, Observabilidade (Zabbix Certified Professional / Prometheus / Grafana), Cloud Computing (AWS) e Engenharia DevOps/SRE, com mais de 15 anos de atuação em ambientes de missão crítica.



